设为首页收藏本站

塞爱维(CIV)文明联盟

 找回密码
 注册
楼主: CCX_CX_D

[原创] BTS3.19下文化侵略的理论基础(另外本贴欢迎各种文化问题)(理论基本完成)

[复制链接]
发表于 2011-2-16 16:05:54 | 显示全部楼层

回复 #17 CCX_CX_D 的帖子

小龟辛苦了 。既然找到了相应的代码,事情就好办了。代码高手们互相印证一下。如果这个问题太麻烦,不妨另开一贴。这个问题跟你的帖子的主题也不是特别相关,别给你搞跑题了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-16 22:41:00 | 显示全部楼层

回复 #21 daiqiang 的帖子

突然发现我自己把函数看错了,还怪别人,反思中

结论已经改了,这下合理很多,可以参考一下了

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-19 15:19:27 | 显示全部楼层

基础知识1补充:格子文化所有者详细判定过程

格子文化所有者的用途:如果格子上没有城市,文化所有者即为格子的所有者;如果格子上有城市,城市的所有者是格子的所有者,但此城市所在格的文化所有者不同将导致城市叛乱。

可以看到,研究一下格子文化所有者的判定过程还是很有意义的,整个文化所有者判定都是在CvPlot::calculateCulturalOwner()中完成的,以下是函数详解:

一般来说,格子的文化所有者是有任何城市的文化影响范围覆盖本格、尚且存活、格子文化最多的玩家
怎么讲呢,就是首先所有国家都是由城市组成的,每个城市都有一个文化影响范围,所有城市的文化范围合起来就是一个玩家的文化影响范围。玩家只能控制在自己的文化影响范围下的格子(听起来蛮合理的吧)。如果玩家在战争中丢了一个城市,那么同时也丢掉了该城市的影响范围,于是显然也控制不了该城周围的格子了。
明白了玩家的文化影响范围,那么如果一个格子在多个玩家的影响范围内怎么办呢,那么显然格子文化最多的玩家就是文化所有者。
至于为什么强调尚且存活呢?这纯粹是编程原因:某国灭了之后在世界的文化是不消失的,只是变成不显示了而已。不过对于玩家来说,灭国的玩家没有文化,自然不抢文化所有者了。

如果格子上有城市,那么格子的文化所有者的判定就到此结束了。
如果这是一个普通的格子,那么还有下面两个判定:
上面判定的那个文化最多的玩家如果有同队或者宗主国,而且这个格子也在他们的影响范围下的话,大家会根据优先度一起抢这个格子:
首先,这个格子如果在宗主国组队某城的21格内,无条件让给宗主国组队。如果此格在宗主国组队里两个不同玩家的21格内的话,这个哥根据到玩家城市的距离获得以下优先度iPriority(0的地方是城市):
// - | 4 | 3 | 4 | -
// -------------------------
// 4 | 2 | 1 | 2 | 4
// -------------------------
// 3 | 1 | 0 | 1 | 3
// -------------------------
// 4 | 2 | 1 | 2 | 4
// -------------------------
// - | 4 | 3 | 4 | -
格子优先度最小的玩家获得该格的所有权(虽然很怪,但程序这么叫的,我也没办法),如果优先度一样的话给城市ID靠前的(这个差不多就是本城21个不能抢同队队友9格的原则)

如果没有宗主国的话,同队国家之间无条件让给同队的21格,如果都在21格内,抢格子的原理和上面宗主国同队抢格子原理是一样的,只不过如果优先度一样的话,格子属于文化最高的玩家

另外一个判定就是如果一个格子不属于任何玩家,但周围4个格子都属于同一玩家的话,这个格子自动属于该玩家,即使本格不在该玩家的文化范围内(说白了就是国土不会漏一个格的“洞”)

例子见下楼

[ 本帖最后由 CCX_CX_D 于 2011-2-19 17:36 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-19 17:35:24 | 显示全部楼层
例1:

这是端午接力的一张图,我方(sword,俄罗斯)打下了法国的里昂。可看到,尽管这个格子里法国的文化是最高的,但是由于这个格子不在法国任何一个城市的文化范围内,法国无权控制。阿拉伯的巴格达的文化范围为3,正好覆盖了这个格子,所以阿拉伯是“有任何城市的文化影响范围覆盖本格、尚且存活、格子文化最多的玩家”,是这个格子的文化所有者


例2:

这是某次联机时的图,我方是葡萄牙、高丽、法国的组队。图中所示的格子在葡萄牙可英布拉城的21格之内,但不在高丽任何城的21格内,因为是同组队,“同队国家之间无条件让给同队的21格”。所以尽管高丽符合“有任何城市的文化影响范围覆盖本格(釜山是3格范围)、尚且存活、格子文化最多的玩家”,这个格的格子的文化所有者却属于葡萄牙

例3:

这图是和上图在同一时刻截的,不过这个格子是同队的21格冲突,需要按照优先度解决。优先度如图所示,葡萄牙的拉各斯在红圈格子的优先度最小,所以葡萄牙无视该格同队的高丽文化,成为此格的文化所有者

无条件让给宗主国非常常见,就不举例了。填空格的情况极少见,而且字面上挺清楚了,所以也不举例了。

[ 本帖最后由 CCX_CX_D 于 2011-2-19 20:16 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-19 18:41:46 | 显示全部楼层
做了点实验,改了第一部分例中的部分数据,现在答案应该是精确到个位了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-22 02:52:57 | 显示全部楼层

基础知识2:暴动、叛变、与镇压

上一篇:基础知识1:文明4里的两个文化概念

本文主体在复述狗汪的《【翻译】关于文化转向和反乱力、驻留强度》  [3],加入了一些3.19的改动和对这些原理应用的讨论

暴动与叛变的判断:(CvPlot::doCulture [9])
  • 暴动出现条件:城市所在格子的文化所有者(“有任何城市的文化影响范围覆盖本格、尚且存活、格子文化最多的玩家”,具体见23楼-基础知识1补充) 不同于 城市所有者。
    另:城市暴动期间不会再次暴动(即不会延长也不会叛变)。
  • 第一次随机:10%概率(REVOLT_TEST_PROB [5])
    BTS3.19增加了对MOD的支持,允许一种叫叛乱保护RevoltProtection的晋升,叛乱率公式为10%*同格上叛乱保护晋升最高的兵的叛乱保护率(CvCity::getRevoltTestProbability [7])。不过由于非MOD游戏没有任何晋升有叛乱保护效果,所以概率恒为10%
  • 第一次随机过了的话蛮族都市直接叛乱,有玩家控制的城市需要第二次随机:“乱数生成一数值(范围是:0~反乱力)、再用此数值去和驻留强度做比较。乱数大于驻留强度则发生反乱。” [3]
  • 暴动效果:“该都市的驻留部队HP减半。反乱中都市机能停止、文化半径变成0。” [3],野蛮人单位全灭。另外暴动的城市有可能发生叛变。
    如果城市文化暴动但没有叛变,暴动回合数为2 + 反乱力 * 3 / 100
    其中2是BASE_REVOLT_OCCUPATION_TURNS [5],3是REVOLT_OCCUPATION_TURNS_PERCENT [5]
  • 叛变:蛮族都市叛乱必反叛(即使开了“城市不会因文化影响而叛离”也会反叛),其他城市叛变需要同时满足以下3点:
    没有开启“城市不会因文化影响而叛离”
    没有拥有过此城市,或者开启了“征服的城市会叛离”
    城市已经经历过1次(NUM_WARNING_REVOLTS [5])文化暴动
    注意:只有此处的暴动(或可称为文化暴动)会计数并最终导致文化叛变,城市因为其他原因暴动(比如间谍)不增加计数器也不会导致叛变。
综上,小野城只要我方格子文化高,每回合10%的概率,最终一定能得到。一般城市的叛乱率是(10%*(1-驻留强度/反乱力)) ,需要2次,如果驻留强度>反乱力则一定不会暴动和反叛

反乱力(城市文化力量)的计算:(CvCity::cultureStrength [7])
 基准值是1。此数值再追加2个加成。一个是都市过去最大人口数X2。另一个是和都市相邻的格子之中为反乱者母国的领土数量X时代系数。例如远古是1、古典是2、未来是6。实际使用数值是把全部残存的文明时代平均起来舍去小数点。
 靠上述所得到的数值还要再加算别的计算要素。第1个是都市的文化值比。(2-支配者文化/反乱者文化)。两者互相抗衡的话几乎是1、反乱者压倒性多数的话接近2。第2个是国教。反乱方文明的国教如果有传播进来的话反乱力变成2倍。有支配者国教的话变1半。所以双方的国教都有的话相杀后成为1倍。

反乱力=(1+都市过去最大人口X2+相邻格子的敌方领土数量X时代系数)X文化系数X国教系数

公式没有变化,不过原文说错了两个地方:一是文化修正看的是城市所在格子的文化比值,与该城市文化无关;另一个是远古到未来是7个时代,而且游戏内部的时代是从0开始的(远古=0、古典=1、中古=2、启蒙=3、工业=4、现代=5、未来=6),所以此处是时代+1,还有特别强调下这是游戏的时代不是玩家的时代,即“当前所有还存活的玩家时代数的平均值,再取整得到对应的时代”,具体请参考[10]中的第9部分

所以公式实际上是:
反乱力=(1+城市曾达到过的最大人口*2+相邻8格的叛乱方领土数量*(游戏时代+1))*文化系数*国教系数
文化系数=1 + (叛乱方格子文化 - 所有者格子文化 + 1)) / (叛乱方格子文化 + 1)
国教系数=(1+城市拥有叛乱方国教) * (1-0.5*城市拥有所有者国教)


为MODDer注:[5]中影响后两个系数的定义的常数是:
文化系数=1 + (叛乱方格子文化 - 所有者格子文化 + 1)) / (叛乱方格子文化 + 1) * REVOLT_TOTAL_CULTURE_MODIFIER/100
REVOLT_TOTAL_CULTURE_MODIFIER=100
国教系数=(1+城市拥有叛乱方国教*REVOLT_OFFENSE_STATE_RELIGION_MODIFIER/100) * (1+城市拥有所有者国教*REVOLT_DEFENSE_STATE_RELIGION_MODIFIER/100)
REVOLT_OFFENSE_STATE_RELIGION_MODIFIER=100
REVOLT_DEFENSE_STATE_RELIGION_MODIFIER=-50

驻留强度(城市文化防御力)的计算:(CvCity::cultureGarrison [7])
驻留军强度以1为基准加算上去。驻留在都市的军队无视国籍都会增加驻留强度。支配者和反乱者在战争中的话强度变成2倍。

公式没有变化,兵种的驻留强度在BTS3.19里有些变化,以下是更新的表格[11]:
强度        单位名称
3        勇士
4        弓兵 斧兵 矛兵 战车 投石车 抛石车
5        剑士 弓骑兵 象兵
6        链槌兵 长枪兵 长弓兵 弩兵 骑士
7        火枪兵 掷弹兵 加农炮 胸甲骑兵
8        来福枪兵 火枪骑兵 反坦克步兵
9        机关枪兵
10        步兵 防空步兵 攻击直升机 火炮
11        防空导弹车 
12        海军陆战队 坦克 伞兵 自行火炮
16        机械化步兵 主战坦克
☆UU的驻留强度和一般单位相同
☆只有陆军战斗单位可以防止反乱

----------------------------
例1:
启蒙钢炮一波流,我方打下一AI的首都,AI投降。这个首都非常好,不想还,不过受到小弟其他城市的文化影响,总暴动,应该放多少部队镇压呢?

首先要明确的就是不开“征服的城市会叛离”,这城市不会叛回去,不过天天暴动无产出也受不了,毕竟增加了其他城市的城市数量维护费。无暴动要求驻留强度>反乱力,下面分析:
假设我方工业时代,敌方全部启蒙时代,那游戏时代是启蒙(=3)。因为小弟无条件给宗主让21格,所以周围8格都不是反叛方控制。我们几乎没有格子文化,假设城市拥有双方的国教,最高到达过15人口。
反乱力=(1+15*2+0*(3+1))*文化系数(全敌方文化=2)*国教系数(双方抵消=1)=62
想要镇压住这个城市,需要62/7向上取整=9个火枪兵或者掷弹兵;如果有来福了,需要8个来福;用长弓的话需要11个……真的是需要一大堆兵……不过话说如果对方宗教自由的话,需求只有一半,所以很容易满足;如果我方是宗教自由而对方有国教的话,放16个来福还不如直接放弃不用管了,反正叛乱概率只有10%……
另外如果是连续暴动的话,由于城市周围8格都不在手上,反乱力=126,镇压几乎是不可能的事。
结论:战争期间,除非我方有国教而敌方无国教,否则大城市的镇压非常困难。要么把文化范围覆盖此城的城市全打下,要么把城还掉(当然因为暴动中的城市的奇迹也有全国作用效果,所以因此留着也无所谓)


例2:
假设在未来时代,我方在敌方一个城市9格的格子文化都超过了60%,这个城市的叛乱率如何呢?

假设敌我双方都有国教,且都出现在城内,城市最高人口15(大城市应该都20+了,不过给低一点能普适)
反乱力=(1+15*2+8*(6+1))*(1 + (60% - 40%)) / (60%))*国教系数(双方抵消=1)= 87*1.33*1=116
敌方城内只需要116/16向上取整=8个机械化步兵就能完全防御……悲剧
如果我们有办法能让城内只剩一个机械化的话,(10%*(1-驻留强度/反乱力)) =8.62%……平均11.6回合暴动一次,23回合后50%概率叛变
结论:只要能把城里杀的剩一个兵就有希望

----------------------------
参考:
[3] 《【翻译】关于文化转向和反乱力、驻留强度》 作者 gowang
[5] \Civ4\Beyond the Sword\Assets\XML\GlobalDefines.xml
[7] \Civ4\Beyond the Sword\CvGameCoreDLL\CvCity.cpp
[9] \Civ4\Beyond the Sword\CvGameCoreDLL\CvPlot.cpp
[10] 《文明游戏机制拾遗》 作者 Khyron
[11] \Civ4\Beyond the Sword\Assets\XML\Units\CIV4UnitInfos.xml

[ 本帖最后由 CCX_CX_D 于 2011-2-27 00:25 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-25 02:16:12 | 显示全部楼层

手段分析0:总论

通过基础知识2可知,文化侵略的成功取决于两点:
1. 我方城市所在格及周围8格的格子文化增长(以达到“城市所在格子的文化所有者不同于城市所有者”的条件)
2. 敌方城市驻军的减少(以达到驻留强度<反乱力的条件,或者尽量拉大两者差距以增加叛乱率)
下面分别讨论

格子文化的增长手段:
在代码中,格子文化是CvPlot::m_aiCulture,除了读取和初始化外,能改变它的值的只有CvPlot::setCulture函数,充分检查函数调用树后,发现以下为游戏中改变文化的全部手段:
  • P1向P2送城市,清光9格内所有P1的格子文化(CvPlayer::acquireCity --> CvPlot::setCulture)
  • P1解放海外殖民地P2,对于所有转移的格子,清掉P1文化、P2在该格子文化增加到至少和P1原来一样的水平,另外如果P2使用的是一个被灭文明的头像,清光地图上该文明所有的格子文化(CvPlayer::splitEmpire --> CvPlot::setCulture)
  • 城市每回合会增加影响范围内的格子文化(CvCity::doTurn --> CvCity::doPlotCulture --> CvPlot::changeCulture --> CvPlot::setCulture)
  • 事件增加城市文化,会同时增加城市影响范围内的格子文化(CvCity::applyEvent --> CvCity::changeCulture --> setCultureTimes100 --> CvCity::doPlotCulture --> CvPlot::changeCulture --> CvPlot::setCulture)
  • 作弊增加城市文化,会同时增加城市影响范围内的格子文化(CvCity::cheat --> CvCity::changeCulture --> setCultureTimes100 --> CvCity::doPlotCulture --> CvPlot::changeCulture --> CvPlot::setCulture)
  • P1解放P2的城市,P2增加城市文化,会同时增加城市影响范围内的格子文化(CvCity::liberate --> setCultureTimes100 --> CvCity::doPlotCulture --> CvPlot::changeCulture --> CvPlot::setCulture)
  • 间谍渗透城市文化,会同时增加城市影响范围内的格子文化(CvPlayer::doEspionageMission --> CvCity::changeCulture --> setCultureTimes100 --> CvCity::doPlotCulture --> CvPlot::changeCulture --> CvPlot::setCulture)
  • 大艺炸弹增加城市文化,会同时增加城市影响范围内的格子文化(CvUnit::greatWork --> CvCity::changeCultureTimes100 --> setCultureTimes100 --> CvCity::doPlotCulture --> CvPlot::changeCulture --> CvPlot::setCulture)
  • 建立新城市,会同时增加城市影响范围内的格子文化(即9格都+1点文化)(CvPlayer::found --> CvCity::setCulture --> CvCity::changeCultureTimes100 --> setCultureTimes100 --> CvCity::doPlotCulture --> CvPlot::changeCulture --> CvPlot::setCulture)
  • 高级开始里增加城市文化,会同时增加城市影响范围内的格子文化(CvPlayer::doAdvancedStartAction --> CvCity::setCulture --> CvCity::changeCultureTimes100 --> setCultureTimes100 --> CvCity::doPlotCulture --> CvPlot::changeCulture --> CvPlot::setCulture)
可以看到,游戏中可控制的有效地增长手段只有3个:通过城市文化每回合增长、大艺炸弹、间谍渗透
3者分别对应手段分析1~3

地方城市驻军的减少手段:
在代码中,部队是单位,单位死亡是通过CvUnit::kill函数实现的,充分检查函数调用树后,发现以下为游戏中消灭一个单位的全部手段:
  • 占领城市自动消灭城中的DOMAIN_IMMOBILE单位(ICBM)(CvPlayer::acquireCity --> CvUnit::kill)
  • 占领城市自动消灭城中的敌方单位(CvPlot::setOwner --> CvUnit::kill)
  • AI或玩家解散单位(CvPlayerAI::AI_disbandUnit --> CvUnit::kill & CvPlayerAI::AI_doTurnUnitsPostt --> CvUnit::kill & CvUnitAI::AI_* --> CvUnit::scrap -->)
  • 导弹用完后消失(CvUnit::airBomb --> CvUnit::kill)
  • 事件导致部队消灭或受伤后阵亡(CvUnit::applyEvent --> CvUnit::kill & CvUnit::applyEvent --> CvUnit::setDamage --> CvUnit::kill)
  • 渔船造完地格设施后消失(CvUnit::build --> CvUnit::kill)
  • 大科、大军造建筑后消失(CvUnit::construct --> CvUnit::kill)
  • 单位升级后旧单位消失(CvUnit::convert --> CvUnit::kill)
  • 程序开始生成小野兵后所有小野动物会自动消失(CvGame::createBarbarianUnits --> CvUnit::kill)
  • 间谍执行各种任务失败后被灭(CvUnit::destroy --> CvUnit::kill & CvUnit::sabotage --> CvUnit::kill & CvUnit::stealPlans --> CvUnit::kill)
  • 抓住间谍(CvUnit::testSpyInterceptedt --> CvUnit::kill)
  • 钱不够部队强制解散(CvPlayer::disbandUnit --> CvUnit::kill)
  • 大科点科技后消失(CvUnit::discover --> CvUnit::kill)
  • 高级开始里删除一个单位(CvPlayer::doAdvancedStartAction --> CvUnit::kill)
  • 文化暴动会杀掉城内小野兵(CvPlot::doCulture --> CvUnit::kill)
  • 单位死亡延迟到时候消失(CvUnit::doDelayedDeath --> CvUnit::kill)
  • 执行消灭单位或者贿赂单位成功后敌单位消失(给MOD准备的,无MOD的BTS3.19没有这两个任务= =)(CvPlayer::doEspionageMission --> CvUnit::kill)
  • 重新生成地图删除所有单位(CvGame::regenerateMap --> CvMap::erasePlots --> CvPlot::erase --> CvUnit::kill & CvGame::regenerateMap --> CvPlayer::killUnits --> CvUnit::kill)
  • 其他改变地图格子类型的时候删除格子上所有单位(疑似和地图生成器有关)(CvPlot::setPlotType --> CvPlot::erase --> CvUnit::kill)
  • (CvUnit::flankingStrikeCombat --> CvUnit::kill)
  • 移民建城后消失(CvUnit::found --> CvUnit::kill)
  • 伟人开启黄帝时代后消失(CvUnit::goldenAge --> CvUnit::kill & CvPlayer::killGoldenAgeUnits --> CvUnit::kill)
  • 大艺完成文化后消失(CvUnit::greatWork --> CvUnit::kill)
  • 大工加速建筑后消失(CvUnit::hurry --> CvUnit::kill)
  • 大间谍渗透敌人后消失(CvUnit::infiltrate --> CvUnit::kill)
  • 伟人入城后消失(CvUnit::join --> CvUnit::kill)
  • 兵被弹开但没有可去的格子时被消灭(CvUnit::jumpToNearestValidPlot --> CvUnit::kill)
  • 大军附身后消失(CvUnit::lead --> CvUnit::kill)
  • 玩家灭亡时所有单位死亡(CvPlayer::setAlive --> CvPlayer::killUnits --> CvUnit::kill)
  • 貌似玩家变AI时所有单位消失(CvGame::setAIAutoPlay --> CvPlayer::killUnits --> CvUnit::kill)
  • 核弹被拦截或者使用后消失(CvUnit::nuke --> CvUnit::kill)
  • 核弹消灭战斗单位和非战斗单位(CvPlot::nukeExplosion --> CvUnit::kill & CvPlot::nukeExplosion --> CvUnit::changeDamage --> CvUnit::setDamage --> CvUnit::kill)
  • 貌似换公司导致前一个公司职员全灭(CvGame::replaceCorporation --> CvUnit::kill)
  • 单位被俘虏后消失(CvUnit::setXY --> CvUnit::kill)
  • 传教士用完后消失(CvUnit::spread --> CvUnit::kill)
  • 职员传播公司后消失(CvUnit::spreadCorporation --> CvUnit::kill)
  • 送兵,被送的单位消失(CvUnit::trade --> CvUnit::kill)
  • 空战、空袭、海陆战后都会有可能让部队消灭(CvUnit::updateAirCombat --> CvUnit::kill & CvUnit::updateAirStrike --> CvUnit::kill & CvUnit::updateCombat --> CvUnit::kill & CvUnit::updateCombat --> CvUnit::setDamage --> CvUnit::kill & CvUnit::airStrike --> CvUnit::setDamage --> CvUnit::kill & CvUnit::rangeStrike --> CvUnit::setDamage --> CvUnit::kill & CvUnit::resolveCombat (--> CvUnit::changeDamage) --> CvUnit::setDamage --> CvUnit::kill & CvUnit::resolveAirCombat --> CvUnit::changeDamage --> CvUnit::setDamage --> CvUnit::kill )
  • 特定土地(比如核辐射)每回合对部队造成伤害,可能会伤重阵亡(CvUnit::doTurn --> CvUnit::changeDamage --> CvUnit::setDamage --> CvUnit::kill)
太多太乱而且有些我还没有理解。其实乍一看非战争手段貌似无法消灭部队,但是zahlen发现其实“钱不够部队强制解散”这条可以加以利用,也就是强制AI破产解散部队
手段分析4将解释破产解散原理


另外还有一种不用文化暴动但是利用文化得到城市的方法:利用教皇宫/联合国归还城市的提案。这个方法列为手段分析5。
----------------------------
参考:
\Civ4\Beyond the Sword\CvGameCoreDLL\*

[ 本帖最后由 CCX_CX_D 于 2011-3-5 08:11 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-25 04:55:03 | 显示全部楼层

手段分析1:格子受城市文化增长

原理:
通过基础知识1可知:
每回合每个城市的所有者会对其影响范围内所有的格子增加自己的文化,公式为:
城市每回合增加的文化+20* (城市文化等级-该格所属的影响范围)+1

那么城市文化都有哪些来源呢?
每回合城市文化总产出 = 城市基础文化产出*文化产出修正+城市锤子总产出(如果用锤子产文化的话)+城市间谍点总产出(如果关了间谍的话)(CvCity::updateCommerce & CvCity::getCommerceRateTimes100 [7] )

其中城市基础文化产出有
  • 建筑:以下为所有有文化产出的建筑的基础产出。注意除了宫殿和科学院外,所有的建筑文化都会在建成的1000年后翻倍。
    +1        各宗教小庙(有西斯廷教堂的话国教建筑再+5)、纪念碑、方尖碑(UB)、纪念石柱(UB)、图腾柱(UB)、城堡、城防要塞(UB)
    +2        长城、宫殿、红十字会、各宗教学校(有西斯廷教堂的话国教建筑再+5)、各公司总部、图书馆、梯田(UB)
    +3        国家公园、军事学院、剧场、舞榭(UB)、赛马场(UB)、大学、私塾(UB)、露天剧场(UB)
    +4        教皇宫、总统山、摩艾石像群、民族史诗、牛津大学、紫禁城、英雄史诗、各宗教圣地奇观(有西斯廷教堂的话国教建筑再+5)、科学院、伊斯兰学校(UB)
    +5        耶稣巨像、(有西斯廷教堂的国教的大教堂)
    +6        埃菲尔铁塔、大灯塔、大金字塔、奇琴伊察、空中花园、自由女神像、青铜巨像、环球剧场
    +8        吴哥窟、圣索菲亚、大图书馆、巨石阵、桑德雷大学、瑞光大字塔、神谕宣示所、螺旋尖塔、阿尔忒弥斯神庙
    +10        凡尔赛宫、圣母院、宙斯神像、帕特农神庙、摩索拉斯陵墓、泰姬陵、西斯廷教堂
    另外有些事件可能会增加建筑产出。
  • 宗教:有国教的话,国教圣城+5,其他有国教城市+1
  • 领袖:创新领袖+2
  • 专家:艺术家+4,入城的大艺数家+12,有西斯廷教堂的话所有专家再+2
  • 公司:各公司文化产出=资源文化产出 * 资源数量 * 地图修正(CvCity::getCorporationCommerceByCorporation [7])
    资源文化产出[14]:席德寿司+2、创新建筑+3、文明珠宝+4
    地图修正[15]:擂台图 400%、极小图 200%、较小图 150%、标准图 100%、较大图 75%、极大图 50% (因为地图越大资源越多)
  • 文化滑杆:城市 乘以文化滑杆比例
建筑里有西斯廷的国教建筑和世界奇观文化产出比较多,尤其是千年后不可小视,只可惜世界奇观有限,而且一般推掉敌人一圈城市之后就不能靠奇观了;各宗教学校会随科学方法过时,虽然文化效果保留,但新占领的城市就不能再建了。宗教和领袖都加得太少,完全无用。专家的产出也还是太小,大艺下一节会分析。标准图下每个公司的资源一般不难圈到5个,这样就是+45的产出,而且还会随着帝国土地(资源)增长而增长,是比较可观的文化输出。文化滑杆100%下一个小镇就是+7文化,10个小镇就是+70,应该是城市文化的最主要来源,只可惜这不是文化胜利,文化滑杆要和科技以及间谍点平衡,无法达到100%。
总结一下的话,早期边境城多造奇迹并抢下西斯廷教堂,边境城的文化就相当可观,不过新占领的城市无法依靠建筑。公司和文化滑杆是增加文化的主要手段。

城市文化产出修正有
  • 建筑:
    +25%        舞榭(UB)、纪念石柱(UB)
    +50%        好莱坞、百老汇、摇滚名人堂、各宗教大教堂、广播塔
    +100%        冬宫
  • 政策:言论自由+100%
这些建筑除了广播塔和UB统统限定个数,和上面说的一样,抢下敌人边境城市不成问题,不过新占领的城市无法依靠建筑(中国UB所有城能造且不会过时有一点小优势,可惜25%太少了)。言论自由为必选政策,可惜+100%给人感觉还是不够。

分析:
锤子转化文化不是很划算的,因为工业格变成小镇转化成商业更有效(商业本来就高于锤子产出,城市的文化加成一般高于工业加成)。之后我们会很依赖间谍,所以间谍不能禁用。于是城市文化总产出主要还是要看文化产出(说的有点绕,希望大家可以通过对照最上面的公式来理解)。

边境城市文化如果搞好了,工业时代建筑+50(通用建筑、千年奇观、西斯廷国教系列建筑)、公司+45、小镇+35(10个小镇滑杆50%)、言论自由+100%、双宗教大教堂+100%,每回合+400文化应该不成问题,这样对文化范围内的所有格子能有不错的文化压力。
如果新占领下的城市,后期大概可以到建筑+20(通用建筑、西斯廷国教小庙)、公司+45、小镇+35、言论自由+100%、广播塔+50%,每回合+225,就不是很有效了。文化资源变多滑杆拉满的话,每回合+400还是能达到的,不过全国+100%滑杆文化对非前线城市很浪费就是了。

注意这是我方每回合的产出,敌人城市一般在我方影响范围的最外圈,所以城市文化增长即格子文化增长,如果有幸把敌人城市圈到影响范围第2圈,+20的文化奖励也不大;而敌方每回合同样有产出,就算不到100,算上城市9格的文化奖励(5级城市就有20*4=80点),有大概150来点,我方一回合净增加城市格子250点文化,即使想颠覆基础知识1的例1提到的7500文化全裸首都都需要30回合的时间,太慢了,而且推掉边境城后就更慢了。
结论:我们需要更快增加敌方城市所在格子文化的手段

----------------------------
参考:
[7] \Civ4\Beyond the Sword\CvGameCoreDLL\CvCity.cpp
[12] 《高难度下的文化胜利》 作者(译者) 失败男、原作者 jesusin
[13] \Civ4\Beyond the Sword\Assets\XML\Buildings\CIV4BuildingInfos.xml
[14] \Civ4\Beyond the Sword\Assets\XML\GameInfo\CIV4CorporationInfo.xml
[15] \Civ4\Beyond the Sword\Assets\XML\GameInfo\CIV4WorldInfo.xml

[ 本帖最后由 CCX_CX_D 于 2011-2-26 01:46 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2011-2-25 05:15:54 | 显示全部楼层
渐入佳境啊

不过我什么时候提到过"暴动中的城市的部队每回合减血"?
Strike = 罢工
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-25 05:34:20 | 显示全部楼层

回复 #29 zahlen 的帖子

那一段代码我还没仔细读过 看来之前没有读明白你的意思,原来是罢工,没想到,真神战术也!!  
等把后面写完了自然会改那一段
目前后面的计划是 大艺原理、间谍渗透、罢工原理、间谍花费、结论
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-26 03:47:07 | 显示全部楼层

手段分析2:大艺炸弹

[1] 里曾经提到原版大艺极其强大,不过经查BTS3.19的大艺已经废了

原理:(CvUnit::greatWork() [16])
众所周知,大艺炸弹给所在城市+4000城市文化(此为标准速,快速*67%、史诗*150%、马拉松*300%[6]),那么他对城市周围格子的文化又是多少呢?
实际上,大艺炸弹是由20个小炸弹组成的。根据代码,4000文化的大艺炸弹实际上是被分成了20份(GREAT_WORKS_CULTURE_TURNS [5],另外回合数也受到快速*67%、史诗*150%、马拉松*300%的修正),每份200文化,依次对目标城市投放,每次投放后进行一次城市产出为0的格子文化增长。举两个例子可能更容易理解:

例1:
标准速,城市文化为0的城市被炸了一个大艺。标准速下大艺为20份,每份200文化。
  • 投入第1份:城市文化变为200,升为第3级,9格的文化+41 (0+20*(3-1)+1),第2圈格子的文化+21 (0+20*(3-2)+1),第3圈格子的文化+1 (0+20*(3-3)+1)
  • 投入第2份:城市文化变为400,仍然是3级,9格的文化+41=82,第二圈+21=42,第三圈+1=2
  • 投入第3份:城市文化变为600,升为第4级,9格的文化+61=143,第二圈+41=83,第三圈+21=23,第四圈=1
  • 投入第4份:城市文化变为800,此后都会保持在4级,9格的文化+61=204,第二圈+41=124,第三圈+21=46,第四圈=2
  • ...
  • 投入第20份:城市文化最终为4000、4级,9格的文化=1180,第二圈=780,第三圈=380,第四圈=18
于是这就是标准速下一个大艺炸弹对0文化城市以及格子文化的效果(可以理解为最低产出)。如果玩家是基础知识1中例2里的P2,那么那个敌方城市文化只有400,但把格子文化找平需要7541 / 1180=6.4个大艺
结论:大艺炸弹只在冲文化胜利时有用,不要指望大艺推文化边界

例2:
标准速下大艺的最高产出是什么呢?就是城市已经达到6级辉煌的时候扔,此时每小份的格子文化产出为:9格的文化+101、第二圈+81、第三圈+61、第四圈+41、第五圈+21、第六圈+1,重复20次。
于是1个大艺炸弹最高 = +4000城市文化、9格的文化+2020、第二圈+1620、第三圈+1220、第四圈+820、第五圈+420、第六圈+20。

分析:
敌方城市必然在我方城市的第3圈或之后,一般都是第4到第5圈,1个大艺才能换第4圈820点格子文化,而且这需要城市文化6级(5万点= =)。我们之前算一个城市怎么每回合也能+200~400点文化,大艺才省1-3回合,而且大艺本来就少,于是——
结论:大艺炸弹无法作为快速增加敌方城市所在格子文化的手段

----------------------------
参考:
[1] Culture Mechanics Disassembled 作者 DerangedDuck
[5] \Civ4\Beyond the Sword\Assets\XML\GlobalDefines.xml
[6] \Civ4\Beyond the Sword\Assets\XML\GameInfo\CIV4GameSpeedInfo.xml
[16] \Civ4\Beyond the Sword\CvGameCoreDLL\CvUnit.cpp
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-26 05:04:56 | 显示全部楼层

手段分析3:间谍渗透

前提条件:(CvPlayer::canDoEspionageMission 引用 CvPlayer::getEspionageMissionBaseCost 13204行 [18] )
只有一个:该城市所在格子有我方的格子文化(>0就可以)

原理:(CvPlayer::doEspionageMission [18] 13584-13614行)

文化渗透的原理:每通过一次文化渗透,你往对方的城市里增加(5%*城市总文化)那么多的你的文化。
不妨假设对方城市的文化为1000,文化等级为3。那么,
第一次文化渗透,你往该城市增加的文化为1000*5%=50。也就是城市里有1000对方的文化,50你的文化,城市总文化为1050
同一回合,第二次文化渗透,你往该城市增加的文化为1050*5%=52.5,取整得52,此时城市里有1000对方的文化,102你的文化,城市总文化为1102
同一回合第三次文化渗透,你往该城市增加的文化为1102*5%=55.1,取整得55,如此类推……
在城市界面内,无论你渗透进了多少你的文化,都是不会显示的。

以上引用[2](5%的效果由[17]定义),BTS3.19下该结论没变化(其实早期版本由于bug反而达不到上述结论),不过该文之后对格子文化的影响现在已经不一样了。
现在非城市控制方每回合是不会增加城市文化的,但是间谍渗透的任务本身增加格子文化,而且其对格子文化作用的原理和大艺炸弹相同(也是分成20份,一次次投入,每次投入后+格子文化,具体见上一节)!!只不过这次是作用在敌人的城市上。看下面例子:

例1:
标准速,敌方1城市有1万点文化,我方第1次间谍渗透。
城市文化应该增加总文化10000的5%=500,分成20份,每次25点。
  • 投入第1份:我方城市文化25,升为第2级,9格的文化+21 、第2圈+1
  • ...
  • 投入第19份:我方城市文化475,9格的文化21*19=399,第二圈文化=19
  • 投入第20份:我方城市文化500,升为第3级,9格的文化+41=440,第二圈+21=40,第三圈=1
1个间谍就直接对对方9格造成了440点格子文化!

例2:
向例1的城市扔第2个间谍。
城市文化应该增加总文化10500的5%=525,分成20份,每次26点,余5。
城市会保持在第3级,于是每次城市文化+26、9格的文化+41、第二圈+21、第三圈+1。重复20次后,把余数5直接加到城市文化里。
最终我方+525城市文化、9格文化+41*20=820、第二圈+420、第三圈+20。
可以看到,随着我方在敌人城市文化等级的提升,间谍渗透效果大增。

例3:
标准速,如果敌方城市只有100点文化,我方间谍渗透的效果呢?
第1次渗透:城市文化应该增加总文化100的5%=5,分成20份,每次0点,余5。注意:即使每次0点,但依然会走20次的!由于我方的城市文化等级只有1级,所以每次只有9格文化+1,最终我方+5城市文化、9格文化+20
第2次渗透:几乎和第一次相同,不过最后一次我方的城市文化会升为2级,所以最终我方+5城市文化、9格文化+40、第2圈+1
第3次渗透:虽然城市总文化110的5%=5,分成20份后依然是每次0点,余5。但是我方城市文化是2级了,所以每次9格文化+21、第2圈+1,最终我方+5城市文化、9格文化+420、第二圈+20。
可以看到,只要我方在敌人城市文化等级上去了,间谍渗透非常的强。

分析:
上述3例实际上已经证明了间谍渗透的强大,其实每次格子加的文化也不算太多,也就是1-2回合的文化产出,但关键的是间谍可以量产!间谍渗透而且没有文化输出那样建筑数量的限制或是需要前线城市有足够多的小镇,只需要后方城市造的间谍和全国所有城市都能产的间谍点,能够充分利用我方内部城市。另外,间谍的效果直接作用在9格上,对于文化侵略效率很高。
当然话说回来,对于敌人文化少的城市来说,间谍渗透需要很多次,成本有些高,或许不如文化直接推好,不过——
结论:间谍渗透是快速增加敌方城市所在格子文化的有效手段

----------------------------
参考:
[2] 《间谍文化渗透辨析》 作者 西艾薇.L.镜
[17] \Civ4\Beyond the Sword\CvGameCoreDLL\CvPlayer.cpp
[18] \Civ4\Beyond the Sword\Assets\XML\GameInfo\CIV4EspionageMissionInfo.xml

[ 本帖最后由 CCX_CX_D 于 2011-3-5 06:04 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2011-2-26 08:12:08 | 显示全部楼层

回复 #26 CCX_CX_D 的帖子

公式没有变化,兵种的驻留强度在BTS3.19里也没有变化,不过多了几个新兵种,以下是更新的表格[11]:
强度        单位名称
3        勇士
4        弓兵 斧兵 矛兵 战车 投石车 抛石车
5        剑士 弓骑兵 象兵
6        链槌兵 长枪兵 长弓兵 弩兵 骑士 探险家


探险家好像变成0了...我记得当时查代码的时候发现的

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-26 16:07:41 | 显示全部楼层

回复 #33 vampirehdl 的帖子

确实

感谢指出~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-26 16:10:18 | 显示全部楼层
更新了手段分析0:总论,快写吐血了

结果也没有发现什么新手段
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-26 18:03:36 | 显示全部楼层

手段分析4:破产解散部队

原理:
如果非野蛮人玩家在任一回合初的现金为负数那么将会进入罢工状态(同时金钱涨到0)
罢工累计总回合数超过1后,每回合解散罢工总回合数/2(向下取整)的单位,解散过程中如果收入变回正数则终止(CvPlayer::doGold [17])

什么单位会被解散呢?(CvPlayer::disbandUnit [17])
首先载着兵的、能开黄金时代的、生产花费为0的兵不能被解散
然后每城中最后一个能用做压红脸的兵不能被解散(bMilitaryHappiness == 1的)。能用做压红脸的兵是除了侦察兵、探险家、武装直升机所有的地面战斗单位 [11]
最后所有符合条件的兵会计算价值,价值最低的被解散掉
解散价值 = (10000+-0~1000的随机数) * (生产花费*5) * (经验*20) * (等级*100) * (2 如果在城市里且能防御) * (3 如果在本组队的境内) * (兵种的AI任务修正) / (兵种的ExtraCost + 1)
其中兵种AI任务修正
        2 UNITAI_ATTACK, UNITAI_ATTACK_CITY, UNITAI_COLLATERAL, UNITAI_PILLAGE, UNITAI_RESERVE, UNITAI_COUNTER
        3 UNITAI_DEFENSE_AIR, UNITAI_CARRIER_AIR, UNITAI_MISSILE_AIR
        4 UNITAI_ICBM
        5 UNITAI_ASSAULT_SEA, UNITAI_SETTLER_SEA, UNITAI_MISSIONARY_SEA, UNITAI_SPY_SEA, UNITAI_CARRIER_SEA, UNITAI_MISSILE_CARRIER_SEA
        6 UNITAI_CITY_DEFENSE, UNITAI_CITY_COUNTER, UNITAI_CITY_SPECIAL, UNITAI_PARADROP
        8 UNITAI_MISSIONARY
        10 UNITAI_WORKER
        12 UNITAI_SPY
        15 UNITAI_EXPLORE
        18 UNITAI_WORKER_SEA
        20 UNITAI_SETTLE
        25 UNITAI_EXPLORE_SEA
另外兵种的ExtraCost全都是0 [11]

由于解散过程中如果收入变回正数则终止,AI的最低收入又是多少呢?(CvPlayer::calculateGoldRate及其调用的一系列函数)
金钱收入 = 每回合所有城市金钱产出 + 每回合贸易所得 - 总维护费 * (1+通胀)
总维护费由部队维护费、部队补给费、城市维护费、政策维护费、其他花费组成
城市金钱产出的公式比较复杂,但有一点:暴动中的城市产出永远为0

分析:
如果每回合所有城市金钱产出为0,那么金钱收入 = 每回合贸易所得 - 总维护费 * (1+通胀)。AI的每回合贸易所得不可见,很可惜,不过根据经验AI不会卖唯一的资源,所以能得到的钱终归有限;而总维护费由于有城市和内政部分,所以肯定不是0,AI城市越多人口越多,维护费越高,即使是神级的打折毕竟不是0。大帝国资源多能贸易得到的钱多单维护费也高得多,小国家恐怕没有贸易所得。所以所有城市金钱产出为0的时候,AI的金钱收入应该必为负数,解散多少部队都不够。
怎么让所有城市金钱产出为0?暴动!
于是,只要暴动时间足够长,最终每个城市将只剩下一个兵
那么如何暴动?间谍!(好吧,其实间谍暴动每一个城市是唯一选择。因为检查CvCity::isDisorder的调用树后暴动只有5种可能:玩家全国无政府状态(非虔诚换政策换宗教)、事件、新打下的城市、文化暴动、间谍暴动城市。其中间谍转政策对方不会无政府、事件不靠谱、新城市暴动不持续、要是能文化暴动我就不用废话这么多了……)
间谍暴动所有城市就是间谍点花费过高,但不管怎样——
结论:想兵不血刃杀AI的兵,就需要用间谍让他们所有的城市暴动足够长的时间

----------------------------
参考:
[11] \Civ4\Beyond the Sword\Assets\XML\Units\CIV4UnitInfos.xml
[17] \Civ4\Beyond the Sword\CvGameCoreDLL\CvPlayer.cpp

[ 本帖最后由 CCX_CX_D 于 2011-2-26 18:31 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-27 00:14:19 | 显示全部楼层

手段分析补充:间谍成本计算

理论基础见Kyou的这两个帖子 [19][20]:
《间谍问题扫盲》
《间谍任务花费与成功率详解》

经验证,BTS3.19下:(CvPlayer::getEspionageMissionBaseCost & CvPlayer::getEspionageMissionCostModifier [17]、[18])
文化渗透的基础花费还是 3*文化(渗透的文化为该城市总文化的5%)
策动暴动的基础花费现在变成了650
其他花费都是小头,不计了

至于加成:
开边-20%还在,要争取
我方有国教圣地-25%没变,对方异教-15%也没变,我方国教必然有,圣城必须抢到,不过双方异教就不能保证总得到了
敌我文化公式变了,现在是我方城市文化占敌我双方城市文化之和(不再是城市总文化)比例的一半,假设双方城市文化一样,-25%
距离公式现在不太一样了,*(目标与我方首都的距离+最大距离)/(最大距离)。不过距离属于没办法了,虽然能不停地迁都,但同时推的话,距离=地图最大距离的1/4估计是常态,+25%
间谍点总投入公式没变((2 * enemy EP) + your EP) / ((2 * your EP) + enemy EP) ,我方必然占优,保守估计3倍吧,-29%
另外国家安全局要在第一时间拆掉,地方有间谍没办法了
间谍驻守,估计敌人有人防守但没有反间谍,同格必然有己方间谍,每回合被抓率(B+C+D+E)*A/10000 = (6.25+15+0+15)*10=362.5/10000=3.65%,活5回合概率83%,为了-50%间谍点(因为后期文化渗透很贵)是值得的

不算驻扎,加成大概是80%*75%*75%*125%*71%*50%=20%
文化假设一次增加500点,需要300间谍点,暴动是130每城

假设对方10个城,也只需1300点,足够便宜到可以持续让一个甚至两个AI暴动了。
至于文化,我们需要的是格子文化,手段分析3例2中提到的820点格子文化都只需要300点间谍,相当得便宜了。考虑一个极端情况,城市6级文化,一次渗透格子产出2020,需要20万城市文化*5%*3*20%=6000间谍点,有点费了,但6级文化城市应该不多见吧。

话说间谍的锤子花费到底是多少呢?
想用此战术,必须保证首都和敌所有城市用铁路连通,然后假设有20-30格的距离的话,每座城需要的间谍数=(两个走在路上的+六个分别以0%、10%、20%、30%、40%、50%潜伏着的)/存活率/行动成功率=8/96%/64%=13个(任务成功率大概在1-362.5/10000*10=64%左右)
假设对方10个城,前期投入的锤子数=40*13*10=5200锤=37个现代步兵,确实是一比相当可观的数字,估计需要工业现代化才能完成。每回合消耗=40*8*(1-95%*64%)=125锤,属于一般小国可以承受的范围以内
,不过后期根本不看重这40锤了吧,就是一次记得投入大量大量的间谍就好……

另外我们之前假设了双方城市文化一样,这其实也是一比不小的前期投入:
每次的文化增长5%,如果城市原先只有一个国家的城市文化的话,我方追平需要log2/log1.05=14.2次文化渗透,总投入=敌原城市文化*3+,一般是上万的间谍点。具体数具体分析,不过记住需要14.2次……另外间谍损耗是每城市220锤


结论:间谍点在各种减成后足够便宜,手段3和4在成本上可行(不过需要可观的前期投入)

下一篇:手段分析5:教皇宫/联合国归还城市提案
----------------------------
参考:
[17] \Civ4\Beyond the Sword\CvGameCoreDLL\CvPlayer.cpp
[18] \Civ4\Beyond the Sword\Assets\XML\GameInfo\CIV4EspionageMissionInfo.xml
[19] 《间谍问题扫盲》 作者 西艾薇.L.镜
[20] 《间谍任务花费与成功率详解》 作者 西艾薇.L.镜

[ 本帖最后由 CCX_CX_D 于 2011-3-5 07:18 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-27 00:59:41 | 显示全部楼层
理论基本完成,可以回去打战报啦

话说都研究到这个地步了,对于战报真想说一句:“見えたぞ。エンディングが!!”
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-27 01:04:07 | 显示全部楼层
话说本贴貌似总结了除文化胜利攻略外,文明4里所有跟文化相关的东西,如有疏漏,欢迎一切问题

至于文化胜利攻略,我觉得这篇文章写得很不错了《高难度下的文化胜利》
回复 支持 反对

使用道具 举报

发表于 2011-2-27 01:48:03 | 显示全部楼层

回复 #37 CCX_CX_D 的帖子

只要双方的城市中有2种相同的宗教, 就一定能保证双方异教. 到了后期, 即使只有一种宗教也能保证异教.
当然得有耶稣巨像或是虔信领袖, 否则不值.

Trade Routes那个-20%折扣反而更难.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 04:43

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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