设为首页收藏本站

塞爱维(CIV)文明联盟

 找回密码
 注册
查看: 82952|回复: 80

[原创] [2012-12-20]文明五外交随笔(暂停更新,等资料片后完成)

[复制链接]
发表于 2012-11-9 04:34:52 | 显示全部楼层 |阅读模式
前面楼层只写结论,代码附后

一、如何避免成为一个扩张狂:
1.城数小于4
2.距离AI有一定距离(根据AI不同)
3.对于这个AI已经见到的其他玩家,你的城数小于所有玩家(除了这个AI)平均城数*1.5
4.军力与AI相当

二、如何有效提升军力:
1.尽量造骑兵单位(高移动高力量)
2.尽量留老兵(高晋升)
3.存钱,够2000块可以提升一倍军力
4.多造兵王道
5.放个蛋蛋(我突然明白老爹为啥那么喜欢蛋蛋了,人家这是为了和平啊! )

三、影响AI对你的看法两三事
1、间谍告密,AI会喜欢死你的,同样原谅AI间谍行动AI也会很喜欢你。
2、不要去相信老是对你提要求的AI,因为无论你选哪个AI都会讨厌你,这种情形两个字可以形容:找茬
3、早期不要把节操卖给战狂,除非你想死很快。战狂知道你具体位置是一件很危险的事情。
4、如果你想当好人,不要去动AI保护的城邦
5、铁三角(三方互相宣友)+共同敌人(谴责同一玩家)+共同作战是这个世界上最靠谱的基友关系
6、如果想做世界公敌,请对自己朋友宣战(背刺具有非常高的代价,仅次于占领首都)
7、扔蛋蛋比占领首都还让AI讨厌
8、如果AI认为你是扩张狂,请随时留意你的军队。扩张狂引起AI的反感等同于AI谴责你的效果
9、宗教和政策在特定时代会起到很大的效果,尤其是后期政策,不在一条政策树上的人怎么可能在一起(感谢 landice指正!)
10、有些时候还一些破城给AI未尝不是一件好事。
11、大军拍地的效果仅次于谴责~

四、有关宣友和谴责
在宣友和谴责里面,其实AI自身初始数值对于AI行为影响很大:
以宣友为例粗看了一下,老爷爷以8的宣友意愿荣居榜首,而小白女王橘子头紧跟其后,这四个应该都是很好宣友的。
而二哥阿提拉宣友意愿只有3,要真心珍惜一个向你宣友的二哥!
此外很意外的是,畏惧这个态度是对宣友无条件接受的(当然你们要见面超过20回合)。或许这一点可以利用一下,找时间自己看看为嘛AI会畏惧你。

谴责比虽然阈值是18但是有关于第三方态度,所以经常会有AI组队谴责你就不足为奇了(所谓群嘲)。尤其是被大BOSS谴责的时候(其他AI谴责你的意愿会最多+3)。
而要求和你宣友AI谴责你所谴责过的人(尤其是世界公敌而且谴责过了你)对增进AI关系非常有效(要求谴责+3 谴责朋友+4 )。

五、交易两三事
1、能不用回合金就不用回合金,回合金是所有交易类型里面唯一会被打折的东西,同时也不要去换AI回合金,因为AI对自己回合金看的很重
2、不要干卖10个铝给AI的傻事!战略资源数量单次交易大于5没有任何意义
3、可以通过交易看出AI对的的看法,但是得不到AI对你的基本态度(参看附表)
4、如果卖城,请把城里可以卖掉的建筑都卖掉再给AI,这不会影响AI的交易价值
5、如果卖城最好先还一座小城给他(还比卖值得),然后第二座和这座城相邻的城市价值会大大增加(距离修正\好感度修正)!
6、这一代挑拨AI进行战争基本没有门槛,其中挑拨基础价值是由AI对目标玩家是否具有战争计划和时代决定,但是如果AI本身没有对目标玩家有战争计划的话,挑拨代价会非常高。
7、同样条件下挑拨二哥的成本可能只有甘地的一半,尽量挑拨战狂打蘑菇/石头
8、如果你挑拨AI,你和他关系越好,打折越明显(最多打五折),同样的,AI同目标玩家的关系越大,打折越多,不过如果AI卖给你奢侈品是208的话,是要额外出25%的钱的(这个非常奇怪,如果是敌人之类的反而没这个debuff,不过如果是这种情况,你手里面的钱在AI那里也是不值钱的,所以不需要额外加成吧)。
9、如果看到AI大军压境,不如挑拨一下这个AI和你距离近的邻居(比如拍脸党),很可能你的邻居会帮你逃过一劫!


详细分析传送门:红色是最新更新
2#、扩张的原罪
2#、AI对你的态度/看法
2#、AI宣战机制
3#、AI对于战争对象的选择
3#、AI对于战争价值的评估(待完善)
3#、军力/经济实力/战争伤害计算
5#、AI对玩家看法(Opinion)变化
6#、有关谴责和宣友
7#、AI交易价值浅析(金钱,回合金,资源,城市)
8#、挑拨AI战争的代价
11#、XML研究--有关AI的外交性格
11#、AI对玩家的态度和看法对奢侈交易价格影响图表
11#、Civilization V G&K AI对于主要文明的采取的态度倾向
11#、Civilization V G&K AI对于内政建设以及胜利方式上的偏好
11#、Civilization V G&K AI对于军事单位使用以及建设的偏好

[ 本帖最后由 sweetrryy 于 2013-6-11 15:33 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2012-11-9 04:35:03 | 显示全部楼层
扩张的原罪:Are you a reckless expander?
在外交里面,AI对于扩张狂的外交惩罚非常的大(具体后面分析),简单说,AI对你的战争倾向会增加1.6倍。那我们首先来看,怎么才能叫做一个扩张狂呢?
直接贴结论(以下条件优先级逐渐降低):
1.城数小于4没事~
2.跟AI距离不近(不近这一个级别前面还有邻居这一个级别)没事(具体领袖应该和XML相关)~
3.对于AI已经见到的其他玩家,计算平均城数,如果你的城数小于平均城数的*1.5 没事
4.军力与AI相当(这个应该也和xml相关),没事

AI对你的态度:
分为以下七种
  1. WAR:战争
  2. HOSTILE:敌对
  3. DECEPTIVE:虚伪
  4. GUARDED:隄防
  5. AFRAID:畏惧
  6. FRIENDLY:友好
  7. NEUTRAL:中立
复制代码
对于每一个态度都有一个计数器,每一轮这一计数器都要重新计算,并且选择结果最大的为显示出来对你的态度(虚伪会显示为友好)。
当然对于WAR状态除外:同四一样,五的WAR也分两种类型:有准备的战争和偷袭。有准备的战争是AI先预先将你选做对手。而偷袭是(待补充)。
在选你做对手的过程中他会将态度假装为第二高的那个态度,但是如果他谴责过你,那么如果第二高的态度是友好的话则选择中立作为对你的态度。直到备战完成向你宣战。(关于这一部分后详)。
另外,每个领袖对别人的态度都有一个基准增长值,每回合都会将这个增长值加到现有计数器中(这可以解释甘地为什么是好人但是大汗老是看你不顺眼以及人妖为什么虚伪)。

AI对你的看法
  1. MAJOR_CIV_OPINION_UNFORGIVABLE:不可原谅的(最坏敌人)
  2. MAJOR_CIV_OPINION_ENEMY:敌人
  3. MAJOR_CIV_OPINION_COMPETITOR:竞争者
  4. MAJOR_CIV_OPINION_NEUTRAL:中立
  5. MAJOR_CIV_OPINION_FAVORABLE:喜爱
  6. MAJOR_CIV_OPINION_FRIEND:朋友
  7. MAJOR_CIV_OPINION_ALLY:盟友
复制代码
这几个状态在游戏中不显示,但是会非常大的影响到ai对你显示出来的态度,因为每回合都会根据这个值来改变AI对你态度的计数器。
同时在决定战争对象的时候也会有所影响,对于这部分看法的改变机制,后详

AI宣战机制(不考虑城邦 草稿)
结论:
防止AI宣战:
1.和AI搞好关系,你只要不是AI最差关系那个人,那么权重里面*2就不会起作用,使得AI选择你做目标概率降低,并且在第二轮判断中,关系够好也可以直接过关
2.提高自身军事评价(后详),不言而喻,提升军事评价使即使和AI关系很差的时候也不会被宣战,因为第二个判断过不了


每回合AI都会对其余对手进行宣战判断,决定是否宣战。
第一阶段:获得宣战优先级(void CvDiplomacyAI::MakeWar())
首先,AI会获得一个对于每个对手的宣战权重iWeight
iWeight初始值为GetWarProjection()+1
其中GetWarProjection取值:
  1. 没想法:WAR_PROJECTION_DESTRUCTION=0
  2. 计划落空:WAR_PROJECTION_DEFEAT=1
  3. 计划僵持:WAR_PROJECTION_STALEMATE=2
  4. 计划未知:WAR_PROJECTION_UNKNOWN=3
  5. 计划很好:WAR_PROJECTION_GOOD=4
  6. 完美计划:WAR_PROJECTION_VERY_GOOD=5
复制代码
(GetWarProjection)函数后详,但是大概是根据双方军力比和经济比值进行计算的。
此后获得的iWeight乘上(1+AI到当前对手的距离)
此后如果判断对对手看法为MAJOR_CIV_OPINION_UNFORGIVABLE,则iWeight乘上2
对于大文明这个权重还要乘10保证优先比城邦进行宣战判断
此后根据算出来的权重依次判断是否对这一对手进行宣战。

第二阶段:判断是否进行宣战
进入这个阶段后,首先进行价值判断,若已经在战争状态则不再宣战(另外还有一个条件也是直接返回,但是含义不明)。
接下来
1.获取AI对当前对手的态度
如果MAJOR_CIV_APPROACH_WAR(战争,注意这个不一定是宣战)或者 MAJOR_CIV_APPROACH_DECEPTIVE(虚伪)则AI是准备想打战的(bWantToAttack=true)
2.然后从军事AI类(GetMilitaryAI)决定是否进行偷袭(pOperation)。
根据以上两个条件:
如果不决定偷袭且对于目标AI并没有针对你聚集军队(存疑 IsMusteringForAttack函数)。而且如果AI准备打此对手,
    则将其战争状态设置为准备战争(SetWarGoal(eTargetPlayer, WAR_GOAL_PREPARE))。
如果决定可能偷袭(此时不判断军队聚集)而且AI是准备打仗的(bWantToAttack=true)。则判断继续判断以下两点:
    1.是否针对此玩家聚集军队(IsMusteringForAttack(eTargetPlayer))
    2.是否进行偷袭且AI的军队是否已经赶到目标玩家处(有一个衡量函数,当超过85时则说明集结完毕)
          满足以上两个条件:则开战(有个问题,如果只从这部分代码来看似乎没有机制能够阻止AI一回合宣战多个AI~有可能是在MilitaryAI中控制)
如果决定偷袭但是AI已经不准备打仗了(bWantToAttack=false)
    则放弃战争准备(SetWarGoal(eTargetPlayer, NO_WAR_GOAL_TYPE))且停止针对这一对手的军队集结

[ 本帖最后由 sweetrryy 于 2012-11-12 21:42 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-9 04:35:18 | 显示全部楼层
AI对于战争对象的选择(WarProjection):
每一轮AI都会对所有其他文明进行一个战争准备的判断:
WarProjections具体值见上。而这个WarProjection在DoUpdateWarProjections()函数中由一个计算的iWarScore的值决定。
具体算法:
  1.        
  2. iWarScore >=100  eWarProjection = WAR_PROJECTION_VERY_GOOD;
  3. iWarScore >=25   eWarProjection = WAR_PROJECTION_GOOD;
  4. iWarScore <=-100 eWarProjection = WAR_PROJECTION_DESTRUCTION;
  5. iWarScore <=-25  eWarProjection = WAR_PROJECTION_DEFEAT;
  6. iWarScore <=0    eWarProjection = WAR_PROJECTION_STALEMATE;
  7. 其余:                 eWarProjection = WAR_PROJECTION_UNKNOWN;
复制代码
进行完以上算法后,还会进行一个GetPlayerTargetValue的判断,应该是战争价值判断,如果价值判断结构是Bad,则如果eWarProjection大于WAR_PROJECTION_GOOD(计划完美)则全部改为WAR_PROJECTION_STALEMATE(计划僵持)。
最后还要记录此AI对于玩家的LastWarProjection

战争价值的评估(GetWarScore)重要!
这一点上AI会将你的军力/经济实力和自己军力/经济实力进行比较。
首先是判断对手是不是扩张狂(见第一点)
    如果是
  1. iWarScore+25
复制代码
对比军力:
将对方军力和己方军力做对比,对比的结果改变iWarScore的值
  1.        
  2. STRENGTH_PATHETIC:iWarScore+100
  3. STRENGTH_WEAK:    iWarScore+60
  4. STRENGTH_POOR:    iWarScore+25
  5. STRENGTH_AVERAGE: iWarScore+0
  6. STRENGTH_STRONG:  iWarScore-25
  7. STRENGTH_POWERFUL:iWarScore-60
  8. STRENGTH_IMMENSE: iWarScore-100
复制代码
军力简单说其实是你所有单位的力量的和(后面详说根据单位不同而用不同。这里只是MilitaryStrength,似乎对于城市的建筑以及科技不算),所以高力单位很吃香。
对比经济实力(注释中数值是默认数值,实际mod中可以改)
将对方军力和己方经济实力做对比,对比的结果改变iWarScore的值
  1. STRENGTH_PATHETIC:iWarScore+50
  2. STRENGTH_WEAK:    iWarScore+30
  3. STRENGTH_POOR:    iWarScore+12
  4. STRENGTH_AVERAGE: iWarScore+0
  5. STRENGTH_STRONG:  iWarScore-12
  6. STRENGTH_POWERFUL:iWarScore-30
  7. STRENGTH_IMMENSE: iWarScore-50
复制代码
而经济的衡量其实不是金钱(金钱反而会影响军力,后面详述)。而是总人口,总人口越多则经济力量越强。

战争对己方的伤害(GetWarDamageLevel)
评估战争对己方造成伤害
  1. WAR_DAMAGE_LEVEL_NONE:     iWarScore+0
  2. WAR_DAMAGE_LEVEL_MINOR:    iWarScore-10
  3. WAR_DAMAGE_LEVEL_MAJOR:    iWarScore-20
  4. WAR_DAMAGE_LEVEL_SERIOUS:  iWarScore-30
  5. WAR_DAMAGE_LEVEL_CRIPPLED: iWarScore-40
复制代码
战争对对方的伤害(GetOtherPlayerWarDamageLevel)
  1. WAR_DAMAGE_LEVEL_NONE:     iWarScore+0
  2. WAR_DAMAGE_LEVEL_MINOR:    iWarScore+5
  3. WAR_DAMAGE_LEVEL_MAJOR:    iWarScore+10
  4. WAR_DAMAGE_LEVEL_SERIOUS:  iWarScore+15
  5. WAR_DAMAGE_LEVEL_CRIPPLED: iWarScore+20
复制代码
经过以上判断,如果当前AI已经处于战争状态很久
  1. iWarScore-min(20,处于战争回合数/3)
复制代码
最终返回iWarScore

军力/经济实力/战争伤害计算:

军力计算PlayerMilitaryStrength
  1. 玩家军力=所有单位的军力之和*min(2,(1+金钱数^0.5/100)。
复制代码
单位军力计算:
  1. 单位军力=基础军力*单位等级^0.3*(当前血量/总血量)
复制代码
基础军力计算
  1. 近战单位(包括陆军海军):基础军力=基础力量^1.5
  2. 远程单位:基础军力=基础远程力量^1.45
  3. 海军远程单位:基础军力=基础远程力量^1.45/2
复制代码
此后计算移动力加成
  1. 基础军力=基础军力*移动力^0.3
复制代码
特殊单位
  1. 导弹:基础军力=基础力量/2
  2. 核弹:基础军力=4000(cool!)
复制代码
晋升影响(累加效果):
  1. 增加50%提升力量的基础军力:城市攻击 增加基础攻击力 增加基础防守力
  2. (比如10力单位,晋升对城市攻击+20% 则其增加的基础军力为:10*0.2*0.5)
  3. 增加25%提升力量的基础军力:对地形加成(攻击/防守)晋升 对地貌加成(攻击/防守)晋升 特定兵种类型相克(例如枪兵)领域加成(国境内)
  4. 增加12.5%提升力量的基础军力:对特定单位加成
  5. 增加25%原有力量的基础军力:空投能力
  6. (10力单位升级空投后 其增加的基础军力为10*25%=4)
  7. 增加20%原有力量的基础军力:闪电战
  8. 减少20%原有力量基础军力:需要架设后发射(攻城类)
  9. 减少25%原有力量的基础军力:无法攻击单位(攻城锤)
复制代码
经过以上步骤我们就可以得到单位的基础军力

经济实力计算
异常简单~
  1. 经济实力=5+总人口
复制代码
AI对军事/经济实力的对比
基础公式
对比值=对方军力(经济实力)*100/己方军力(经济实力)
特殊之处:
对于军力:两个值需要加上一个基准值30
对于经济:如果自己为0(理论是不可能的)则固定为500
对比结果(军事和经济阈值是一样的可以替换 其实那个数字是百分数,250代表2.5倍)
  1. iEconomicStrength >= 250 eEconomicStrength = STRENGTH_IMMENSE;
  2. iEconomicStrength >= 153 eEconomicStrength = STRENGTH_POWERFUL;
  3. iEconomicStrength >= 120 eEconomicStrength = STRENGTH_STRONG;
  4. iEconomicStrength >= 83  eEconomicStrength = STRENGTH_AVERAGE;
  5. iEconomicStrength >= 65  eEconomicStrength = STRENGTH_POOR;
  6. iEconomicStrength >= 40  eEconomicStrength = STRENGTH_WEAK;
  7. else                         eEconomicStrength = STRENGTH_PATHETIC;
复制代码

[ 本帖最后由 sweetrryy 于 2012-11-9 21:46 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-9 04:35:39 | 显示全部楼层
战争伤害评估

[ 本帖最后由 sweetrryy 于 2012-11-10 21:32 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-9 04:35:51 | 显示全部楼层
AI对玩家看法(Opinion)变化
这一个代码里面非常复杂,但是对我们判断来说是很重要的,我会详细分析每一项后然后再总结结论。
每回合AI会针对每个玩家进行判断,同态度不同,这个判断是不累加的!
获得一个iOpinionWeight。根据这个值决定AI对你的看法,具体数值为:
  1. iOpinionWeight >= 50  MAJOR_CIV_OPINION_UNFORGIVABLE 不可原谅的
  2. iOpinionWeight >= 30  MAJOR_CIV_OPINION_ENEMY        敌人
  3. iOpinionWeight >= 10  MAJOR_CIV_OPINION_COMPETITOR   竞争者
  4. iOpinionWeight >= -10 MAJOR_CIV_OPINION_NEUTRAL      中立的
  5. iOpinionWeight >= -30 MAJOR_CIV_OPINION_FAVORABLE    喜爱的
  6. iOpinionWeight >= -50 MAJOR_CIV_OPINION_FRIEND       朋友
  7. else                  MAJOR_CIV_OPINION_ALLY         盟友
复制代码
其中盟友这一状态还是是组队游戏的AI态度。
而iOpinionWeight计算则是一个非常复杂的过程。

iOpinionWeight的计算
注意:数值是越小越好

好事
  1. CiviliansReturnedToMe     还单位[-20*m]#
  2. Resurrected               复活文明[-200]
  3. LiberatedCities           还城[-60 -50 -30]##
  4. Embassy                   建立大使馆[-1]
  5. ForgaveForSpying          原谅间谍行动[-10]
  6. TimesIntrigueShared       分享情报[-m*20]###
复制代码
#:
##:分别对应还1,2,3城
###:
评论:
早期还单位还是很加很多好感的,如果能还邻居一个单位可以保证一段时间内安全无虞
由于不累加,建立大使馆加好感很有限只有1.所以不要早期把节操卖给战狂,因为根据AI开战的规律,只要他的部队没有集结到攻击目标(集结完成度要大于85),所以开战概率会很低。
间谍告密碉堡了,大家多多告密把!


要求AI不做事情
  1. NoSetterRequest           不建城[+20]
  2. StopSpyingRequest         停止间谍行动[+20]
  3. DemandEverMade            要求[+20]
  4. TimesCultureBombed        文化炸弹(大军坐地)[+30]
  5. ReligiousConversionPoints 转化AI城市宗教[+m*2]#
复制代码
#:
评论:
大军坐地效果跟宣战差不了多远了~
要求贡品这个是可以累加的么?如果是岂不是可以挑衅AI宣战

宗教&政策
  1. HasAdoptedHisReligion     AI信奉你的宗教[-5*m]
  2. HasAdoptedMyReligion      你信奉AI宗教[-3*m]
  3. SameLatePolicies          采取同一政策[-5*m]
  4. DifferentLatePolicies     不采取同一政策[+5*m]
复制代码
m是时代修正系数
评论:
据landice结论,m系数变化非常大,例如对于现代政策修正系数为6,所以宗教/政策还是非常影响关系的!
链接


不遵守承诺
  1. BrokenMilitaryPromise             玩家违背对AI作出的军事承诺[+40]
  2. BrokenMilitaryPromiseWithAnybody  玩家违背其对其他任何玩家军事承诺[+15]
  3. IgnoredMilitaryPromise            玩家忽视AI对其要求的军事承诺[+15]
  4. BrokenExpansionPromise            玩家违背对AI作出的扩张承诺[m 最大+20]#
  5. IgnoredExpansionPromise           玩家忽视AI对其要求的停止扩张承诺[m 最大+15]##
  6. BrokenBorderPromise               玩家违背对AI作出的边界承诺(买地块?)[m 最大+20]###
  7. IgnoredBorderPromise              玩家忽视AI对要求的边界承诺(买地块?)[m 最大+15]####

  8. BrokenAttackCityStatePromise      玩家违背对AI作出的不攻击城邦的承诺[+40]
  9. BrokenAttackCityStatePromiseWithAnybody 玩家违背作出的不攻击城邦的承诺[+15]
  10. IgnoredAttackCityStatePromise     玩家忽视AI对其要求的不攻击城邦的承诺[+15]

  11. BrokenBullyCityStatePromise       玩家违背对AI作出的不勒索城邦的承诺[+20]
  12. IgnoredBullyCityStatePromise      玩家忽视AI对其作出的不勒索城邦的承诺[+10]

  13. BrokenNoConvertPromise            玩家违背对AI作出的不转化AI城市的承诺[+8]
  14. IgnoredNoConvertPromise           玩家忽视AI对其作出的不转化AI城市的承诺[+4]

  15. BrokenSpyPromise                  玩家违背对AI作出的不进行间谍活动的承诺[m xml]
  16. IgnoredSpyPromise                 玩家忽视AI对其要求的不进行间谍活动的承诺[m xml]

  17. BrokenCoopWarPromise              玩家违背对AI作出的共同作战的承诺[+20]
复制代码
评论:
不遵守承诺处罚普遍很大,所以除非你已经不想跟这个AI搞关系了所以还是最好不要违背承诺~
当然很烦的是就算你是忽略AI承诺惩罚也是很大,所以如果一个AI频繁对你挑这挑哪儿,基本别想跟他搞好关系了

保护城邦承诺
  1. AngryAboutProtectedMinorKilled   玩家使得自己保护的城邦被灭[+40 40+10]#
  2. AngryAboutProtectedMinorAttacked 玩家使得自己保护的城邦被攻击[+20 +15 20+15 15+15]##
  3. AngryAboutProtectedMinorBullied  玩家使得自己保护的城邦被勒索[+20 +15 20+15 15+15]###

  4. AngryAboutSidedWithProtectedMinor    在AI勒索或者攻击玩家保护城邦的时候,玩家站在城邦的一边[+5]
复制代码
评论:
打AI承诺保护的城邦基本就等同于同AI宣战了!
具体细节还需要看代码,但是可以看到惩罚都很高

友谊声明
  1. DOFAccepted        接受宣友[-35]
  2. DOFWithAnyFriend   接受AI的朋友宣友[-15]
  3. DOFWithAnyEnemy    接收AI的敌人宣友[+15]
复制代码
评论:
宣友期间AI很少会打你不是没原因的,如果存在铁三角宣友,基本来说是安全的,因为这个宣友的加成已经是-50了

谴责
  1. DenouncedUs        玩家谴责AI[35]
  2. DenouncedThem      AI谴责玩家[35]
  3. DenouncedFriend    玩家谴责AI的朋友[15]
  4. DenouncedEnemy     玩家谴责AI的敌人[-15]
复制代码
评论:
如果铁三角联盟存在一个共同敌人,恭喜你,AI真的就是你个铁哥们儿!

关于背叛
  1. 统计对于全部玩家:
  2.     AI谴责自己的朋友[+15]/AI被自己朋友谴责[+35]/AI对自己朋友宣战[m]/AI被自己朋友宣战[+60]
  3. 这四个值的最大值
复制代码
评论:
背刺代价竟然如此之大,果然还是少背刺好~

交易相关
  1. RecentTrade        最近交易[m 最大-30]
  2. CommonFoe          对共同敌人作战[m 最大-50]
  3. RecentAssist       最近帮助(??)[m xml]
  4. GaveAssistanceTo   曾经给予帮助(?)[+20]??
复制代码
评论:
最近交易那个估计加的不多,而且粗看了下代码,对于那个AI的忘性很大~
共同敌人作战很给力!超过宣友!!
最后两个有点不明,待研究

其他
  1. RecklessExpander   扩张狂[+35]
  2. NukedBy            蛋蛋[+100]
  3. CapitalCapturedBy  占领首都[+80]

  4. PaidTributeTo      完成进贡[+30]

  5. LandDisputeLevel     领土争议[30 20 10 -6]
  6. WonderDisputeLevel   奇观    [20 15 10 0]
  7. MinorCivDisputeLevel 抢城邦  [30 20 10 0]
  8. WarmongerThreat      战争狂  [x/2 x小于5则为0]

  9. TimesRobbed          劫掠?[+20*m]
复制代码
评论:
扩张狂就是一个悲剧,就算你要爆铺最好也别被认为是扩张狂,扩张狂其实另外一个潜台词就是你丫造兵太少了。军事为上军事为上!
蛋蛋威武啊!比占领首都还威武我去~
别以为勒索AI不掉好感~
抢邻居奇观还是有风险
抢城邦(如何才能算是抢城邦)的最高惩罚等于宣战了快~
最后一个不懂,劫掠?


[ 本帖最后由 sweetrryy 于 2012-11-11 11:31 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-9 04:36:04 | 显示全部楼层
有关谴责和宣友
AI宣友机制
开战不能宣友
见面小于20回合不能宣友
如果正在计划针对这个玩家的战争或者对这个玩家态度为敌视:则不能宣友
如果态度为畏惧,则总是接受宣友
如果对于这个玩家的看法为不可原谅或者敌人,则不能宣友
如果互相之间谴责则不能宣友

设置一个权重:
  1. 获得AI乐意宣友的程度(0~10之间)
  2. 计算态度加成
  3.    虚伪(DECEPTIVE): +3
  4.    提防(GUARDED):   -1
  5.    友好(FRIENDLY):  +3
  6. 计算看法加成
  7.    竞争者(COMPETITOR): -3
  8.    喜爱的(FAVORABLE):  +2
  9.    朋友(FRIEND):       +5
  10.    同盟组队游戏(ALLY):  +10
  11. 加上随机值(1~5)
  12. 大于12则接受宣友
复制代码
AI谴责机制(IsDenounceAcceptable)
开战不能谴责
设置一个权重:
自身原因:
  1. 获得AI愿意谴责的程度(0~10之间)
  2. 计算态度加成
  3.     敌视(HOSTILE):+6
  4.     畏惧(AFRAID): -10
  5. 计算看法加成
  6.     不可原谅的(UNFORGIVABLE):+10
  7.     敌人(ENEMY):+5
  8.     竞争者(COMPETITOR): +2
  9.     喜爱的(FAVORABLE):  -10
  10.     朋友(FRIEND):       -25
  11.     同盟(ALLY):         -50
  12. 如果开战:+2
复制代码
第三方原因:
  1. 遍历所有玩家:
  2.     首先对于第三方,如果与当前AI开战(或者有战争计划)或者敌对(HOSTILE),则不考虑第三方意见
  3.     如果我们的邻居(NEIGHBORS)对当前玩家开战:+1
  4.     如果第三方谴责了玩家且第三方相比AI军力更强,则根据军力强弱增加权重(+0~3)
  5.     如果第三方和AI是朋友且谴责玩家则+4
  6. 加上随机数(0~5)
  7. 如果是朋友要求谴责 +3
复制代码
最终权重大于等于18则谴责

[ 本帖最后由 sweetrryy 于 2012-11-12 22:48 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-9 04:36:16 | 显示全部楼层
交易价值计算专题

AI交易浅析
可供交易物品

  1. 回合金
  2. 地图?
  3. 资源(奢侈/战略)
  4. 开边
  5. 共同防御
  6. RA
  7. 贸易协定(未使用)
  8. 永久同盟
  9. 投降
  10. 停战
  11. 和平协议
  12. 第三方战争
  13. 第三方和平
  14. 第三方禁运(未使用)
  15. 大使馆
  16. 友谊声明(在人类玩家之间)
  17. 城市
复制代码
交易概念引入
这里需要引入一个抽象的概念,iValue,在AI眼里所有自己提供给别的玩家的物品都是有一个iValue的,在AI自己计算的时候iValue的值就是你实际付出的价值(或者说 金钱),人类玩家视作无任何修正的玩家。即人类手里的钱1金=1iValue。
注意!以下讨论除非特别提出,否则都是讨论的AI拿出某种东西(钱,奢侈品,GPT)的时候这种东西的价值!


钱到底值多少钱
首先分析最简单的现金交易,AI手里的钱和我们手里的钱到底有什么区别?
首先,无论是你提供给AI的现金或者AI提供给你的现金都会被态度和看法这两个点修正:
  1. 态度修正值M1:
  2. 敌视(HOSTILE):150
  3. 提防(GUARDED):110
  4. 其余100

  5. 看法修正值M2:
  6. 不可原谅(UNFORGIVABLE):200
  7. 敌人(ENEMY):140
  8. 竞争者(COMPETITOR):115

  9. iValue=金钱*态度修正*看法修正/(100*100)
复制代码
同时在实际AI间交易中,AI会考虑折衷值,即对于这笔钱计算与之交易AI眼中的iValue并且取平均。

回合金值多少钱
回合金态度态度修正和看法修正同金钱一样
但是在处理之前需要打折。
也就是说
  1. 玩家提供给AI的GPT的价值=GPT*回合数*0.8
复制代码
但是
  1. AI提供给玩家的价值=GPT*回合数*0.8*1.4
复制代码
  1. iValue=GPT*回和数*1.12*(态度修正*看法修正)/(100*100)
复制代码

1

资源值多少钱

资源分为两种,奢侈资源和战略资源
对于奢侈资源
  1. baseValue=数量*提供快乐度*时间*2
复制代码
这就是240的来历:1*4*30*2=240
同时,如果这一奢侈资源为唯一资源:
baseValue*3
但是(对于荷兰)如果奢侈资源卖掉后还有剩余快乐则
baseValue/2
这也是为啥荷兰可以360买独有奢侈的原因


对于战略资源

首先判断对于自己这个资源是不是已经过多了
判断公式是:
  1. 需要资源个数=min(5,max(AI拥有城数-提供资源个数,0))
复制代码
这个式子说明,战略资源最多一次交易卖5个,多余5个对AI来说是没有交易价值的
然后判断这个资源是否过期:
如果没过期则
  1. baseValue=需要资源个数*持续回合*1.5
复制代码
这就是45的来历 1*30*1.5=45
同样地,在获得baseValue后,需要加上态度与看法修正
  1. 初始修正值iModifier=0
  2. 看法修正值:
  3. 不可原谅(UNFORGIVABLE):1000
  4. 敌人(ENEMY):400
  5. 竞争者(COMPETITOR):175
  6. 其余100

  7. 态度修正值:
  8. 敌视(HOSTILE):+300
  9. 提防(GUARDED):+150
  10. 畏惧(AFRAID):200
  11. 中立(NEUTRAL):+100
  12. 朋友(FRIENDL):200
  13. (注意朋友和畏是直接改成200)
复制代码
最后价值计算为
  1. iValue=baseValue*iModifer/200
复制代码
返回iValue

城市能卖多少钱
城市的基本价值由三个方面决定:人口,地块数目,地块资源(很奇怪和建筑无关,而且事实上代码注释里面关于这个的吐槽)
注意:基本价值计算是同时适用于人类和AI的城市的!
  1. 基本价值=人口基本价值+地块基本价值+地块改造价值+资源价值
复制代码
基本价值计算
人口
  1. 人口基本值=400+人口*200
复制代码
基本地块价值
首先获得对于这个玩家的单个地块基本价值(goldPerplot)
这个单个地块基本价值很奇怪
  1. 单个地块基本价值=(50+5*购买地块数)*修正值
复制代码
(注意购买地块数这个地方,搜索所有代码只有赋值为1的个代码段,故前面括号值据推测应该在这里恒定为55,存疑)
修正值包括:政策/奇观(吴哥窟)/UA(存疑)
最终
  1. 基本地块价值=(城市地块数-7)*单个地块基本价值
复制代码
需要去除移民坐下的7块地

地块改造价值
  1. 地块改造价值=城市改造地块数*单个地块基本价值*25/100
复制代码
地块资源价值
  1. 轮询所有地块
  2. 如果当前地块具有奢侈资源
  3.    资源价值+=奢侈带来快乐*剩余回和数*2
  4.    (剩余回合数=max(120,游戏最大回和数-当前回和数))
  5. 如果是AI的城市且城市具有AI唯一快乐资源
  6.    资源价值+=奢侈带来快乐*剩余回和数*4
  7. 如果当前地块具有战略资源且非过期战略资源
  8.    资源价值+=资源数目*60*150/100
复制代码
其他修正

对于AI自己拿出来的城市的iValue,还需要额外的加成
对于有世界奇观的城市则:
    基本价值*2
然后获取对于当前玩家的战争计划程度决定修正值
  1. WAR_PROJECTION_DESTRUCTION:100
  2. WAR_PROJECTION_DEFEAT:     180
  3. WAR_PROJECTION_STALEMATE:  220
  4. WAR_PROJECTION_UNKNOWN:    250
  5. WAR_PROJECTION_GOOD:       400
  6. WAR_PROJECTION_VERY_GOOD:  400
  7. AI城市价值=基本价值*修正值/100
复制代码
对于人类玩家城市的iValue则:
  1. 遍历自己城市,获得离目标城市距离最近的城市距离iBestDistance,且这个iBestDistance不小于5
  2.     人类城市价值=基本价值/(iBestDistance-5)
  3. 如果结果小于100
  4.     人类城市价值=100
复制代码

[ 本帖最后由 sweetrryy 于 2012-12-8 13:10 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-9 04:37:27 | 显示全部楼层
交易价值计算专题

挑拨AI战争代价
首先获得AI初始战争意愿(定义在XML里面:MAJOR_CIV_APPROACH_WAR 字段)
如果这个AI是自己且意愿小于4:
则战争价值ItemValue=100000(这个表示基本不可能挑拨成功)
此后,获得对其的战争计划(WarProjection),对目标玩家看法(Opinion),对挑拨的玩家的看法(Opinion)
  1. 战争计划修正:
  2.   WAR_PROJECTION_GOOD ItemValue=400
  3.   WAR_PROJECTION_UNKNOWN ItemValue=600
  4.   WAR_PROJECTION_STALEMATE ItemValue=1000
  5.   其余 ItemValue=50000

  6. 时代修正:
  7.   +当前时代序数*50

  8. 战争意愿修正:
  9.   ItemValue*(1-10*(5-战争意愿)/100)

  10. 对目标玩家态度修正:
  11.   MAJOR_CIV_OPINION_UNFORGIVABLE *0.25
  12.   MAJOR_CIV_OPINION_ENEMY *0.5
  13.   MAJOR_CIV_OPINION_COMPETITOR *0.75

  14. 对进行挑拨玩家的态度修正
  15.   MAJOR_CIV_OPINION_ALLY *0.5
  16.   MAJOR_CIV_OPINION_FRIEND *0.75
  17.   MAJOR_CIV_OPINION_FAVORABLE *0.85
  18.   MAJOR_CIV_OPINION_COMPETITOR *1.25
复制代码

[ 本帖最后由 sweetrryy 于 2012-12-8 13:13 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-9 04:48:03 | 显示全部楼层
发现占楼不够
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-9 05:08:26 | 显示全部楼层
占个代码楼:

[ 本帖最后由 sweetrryy 于 2012-11-13 09:31 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-9 05:45:07 | 显示全部楼层
AI相关数据
外交性格

鸭梨你城邦竞争度只有3?我确定我没看错?你UA拿来干嘛??然后果然是年轻气盛,外交都是胡来的吧?
别以为人家大黑拿把剑就不是文化人,人家奇观竞争度可是排名第二
阿提拉是最纯粹的战狂,阿提拉还是最吝啬的人,同时最不喜欢宣友
凯撒竟然城邦竞争度这么高,没想到
铁相不仅最爱谴责人话还不少,跟这家伙真是难搞关系,但是这家伙的外交平衡度是最高的,同时如果真的是铁相铁哥们儿,被背刺概率很低的,另外铁相还很厌恶战狂
布狄卡么,好平淡没啥亮点,关键指数都偏低啊,看来不怎么会做人
大波妹也是个话痨,但是强在各处平衡,外交应该如鱼得水
大流士铁哥们,忠诚度高,但是依然是四代的石头风范,不爱宣友也不爱谴责人,胜利竞争度也高,一副大boss相
狄多不是变得更狡诈了么?从数据上看不出来啊
小白爱城邦,外交手腕也好,非常厌恶战狂
甘地大好人又来了,最低胜利竞争度,最高宣友意愿最高忠诚度,这不是蘑菇是啥,但是尼玛为啥奇观竞争度竟然只有3?你锤子用来干嘛去了~
大汗战狂一枚,但是要是大汗铁哥们人大汗还是不会背刺的~跟大汗当朋友比阿提拉靠谱点,不过大汗外交平衡不太好,怪不得常年一人单挑天下
蓝牙真的才是没啥亮点啊~我都不知道吐槽啥好
宣友哥要宣友自然外交平衡是高的,但是为嘛他的宣友意愿不高呢~
大财主也是一个爱奇迹的主,大财主还是一个好人,最不喜欢谴责人了
为啥海华沙奇迹竞争度只有4?不科学啊,常年在他首都都会发现大量奇迹啊~话说这也是个铁哥们儿,而且话蛮少~而且还慷慨~不错不错
伊莎mm果然不忠诚啊,除了几个战狂就他最低了,被mm背刺可别怪人家噢~
内裤神经啊,谴责意愿高宣友意愿也高,忠诚也高,这就注定了内裤顺风的时候左右逢源,逆风的各种悲剧,内裤很讨厌战狂
大妈,有女儿就是不一样城邦竞争度那是蹭蹭的高啊~大妈也很讨厌战狂
砍二爷,那就不多说了嘛,不爱宣友那是一定的,但是他是所有战狂的好基友,也是最好的战友,同时砍二是最不喜欢修奇迹的AI,你说人家不爱造奇迹,又爱帮你打人还是最好基友你说这样的砍二你们都要黑!真是丧心病狂!
破伦也蛮有意思,最差的外交平衡,最低忠诚度,很低的宣友和谴责意愿,同时还是话痨,你真是石头战狂两相宜
尼布甲尼撒嘛,又是一个奇迹狂,同时话那是非常的多啊
为啥小日讨厌?看忠诚度就知道了,背叛朋友速度那是蹭蹭的啊~不过意外的是这家伙外交平衡度不错,同时话也很少
卡帕尔也算是一个奇迹狂然后比较胆小怕事,其他没啥了
啪嚓么和卡帕尔差不多
最大奇迹狂出现!拉美继四以后再次夺得最强奇迹狂的称号!
为啥人妖很讨厌?其实是因为你们太暴力,作为最高战狂厌恶度的人妖,其实算是一个好人,不怎么爱谴责,忠诚度也高同时对朋友也很大方,但是就是话太多
棒子竟然是最忠诚的?我的狗眼。。。。然手棒子确实很爱宣友,也不爱谴责人,跟大好人有的一拼
小黑也是巨讨厌战狂,其余数据中规中矩了
羊肉串大叔为啥老是铺城铺不开,且不说人家都觉得这货是扩张狂,他自己还很爱谴责人,活该你坐不大
女王很爱造奇迹,很爱宣友,但是是一个大话痨!最多话的就是她!多话意味着外交关系部好搞~
花生也是和平爱好者,各项数据均衡,一般坐不大但是也不会被群嘲
橘子头一看就是好人相,高的宣友意愿以及高的忠诚度注定了他手里唯一的资源都会成为玩家抢购对象~
武mm一看数据真是不可爱,最低忠诚度还有很高的吝啬度而且话很多,同时不爱宣友爱谴责人,唉这么傲娇可不行啊~

Civilization V G&K 单个奢侈品交易价格和态度关系
根据代码整理了一下,注意这里AI对你的态度可能不是真实态度,但是看法一定是真实看法。


Civilization V G&K AI对于主要文明的采取的态度倾向
这只是一个基准值,在每局游戏中每个AI的态度基准值会加上一个随机值保证随机性


Civilization V G&K AI对于内政建设以及胜利方式上的偏好


Civilization V G&K AI对于军事单位使用以及建设的偏好


[ 本帖最后由 sweetrryy 于 2012-12-20 22:29 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2012-11-9 06:36:48 | 显示全部楼层
又是第一名 哈哈哈
回复 支持 反对

使用道具 举报

发表于 2012-11-9 07:29:20 | 显示全部楼层
甚好
回复 支持 反对

使用道具 举报

发表于 2012-11-9 08:20:57 | 显示全部楼层

回复 1# 的帖子

按照代码,如果你兵力比他高也是行的
就是说至少势均力敌
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-9 08:44:45 | 显示全部楼层

回复 14# 的帖子

这个地方关于兵力有详细的计算方法~
慢慢写吧 看的总比写的快~
另外没怎么看过xml所以其实还是有些茫然
回复 支持 反对

使用道具 举报

发表于 2012-11-9 10:11:39 | 显示全部楼层
XML比代码简单多了
回复 支持 反对

使用道具 举报

发表于 2012-11-9 10:28:29 | 显示全部楼层
整个CC都坑坑洼洼得了
回复 支持 反对

使用道具 举报

发表于 2012-11-9 14:53:14 | 显示全部楼层
靠!这么深奥
不与你为伍=。=
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-9 14:57:30 | 显示全部楼层

回复 18# 的帖子

不要这样好吧~
回复 支持 反对

使用道具 举报

发表于 2012-11-9 15:00:45 | 显示全部楼层

回复 19# 的帖子

哈哈哈哈
那我不说话了~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|塞爱维(CIV)文明联盟    

GMT+8, 2024-4-20 06:42

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表