谁动了我的大排——维护费释疑(02/16新增城市维护费部分)
作者:sukadi
以前,公司的政策是员工午饭全部公司掏钱,所以不管好吃不好吃,几乎所有人都定12块的盒饭;现在公司改规矩了,每人发10块钱,自己定饭,结果是有钱人照吃12块的大排饭,还在供房子的就只吃6块钱的菜饭了。
文明里的扩张也是同样的情况。4里引进维护费之后,扩张就不再是0成本的,c3c里bc1000前暴铺50个城市的策略显然不再适用。所以这篇的目的就是希望和大家探讨维护费这个扩张成本。
civ里的维护费大致分3部分:政体开销(civic upkeep)、城市维护(city maintenance)和军费(unit maintenance)。我们接下来就分别讨论。
所有的讨论都基于1.52版本。
第一部分
政体开销
1. 影响政体开销的外部因素。
城市数量m。很简单,有几座城m就是几。
总人口n。就是所有城市人口的和。如果首都3人口,2个副城各1人口,n=3+1+1=5
组织属性o。领袖有组织属性,o=0.5;否则o=1
难度修正d。deity, immortal, emperor, d=1; monarch, d=0.95; prince, d=0.9; noble, d=0.8; warlord, d=0.7; chieftain, d=0.6; settler, d=0.5。
显而易见,对于每一局,o和d是不变的。在制度不变的情况下,影响政体开销的只有城市数量和总人口。
2. 影响政体开销的内部因素
政体开销主要是由制度本身的维护费等级决定的。(地球人都知道)
制度一共有4个等级,无(no), 低(low), 中(medium), 高(high)。对应于影响政体开销的因素——城市数和人口数——的制度调整参数c和p在不同维护费等级有不同取值。
反映城市数量的制度参数c。no, c=0; low, c= 0.4; medium, c=0.5; high, c=0.6。
反映人口数量的制度参数p。no, p=0; low, p=0.08; medium, p=0.12; high, p=0.16。
(1.09中,c分别为0, 0.2, 0.4, 0.6; p分别为0, 0.05, 0.10, 0.15)
3. 政体开销的公式
如果你能够看到这里,并且没有头晕的话,请继续往下看。在此之前,请先回顾一下上面的所有参数,一方面下面需要所有这些参数,另一方面确认你的确没有头晕。
政府制度开销cg
cg = [d * [o * ( [ p * (n ╟ 8) ] + [ c * ( m ╟ 1) ] ) ] ]
法律制度开销 cl
cl = [d * [o * ( [ p * (n ╟ 9) ] + [ c * ( m ╟ 0) ] ) ] ]
劳工制度开销 cb
cb = [d * [o * ( [ p * (n ╟ 10) ] + [ c * ( m + 1) ] ) ] ]
经济制度开销 ce
ce = [d * [o * ( [ p * (n ╟ 11) ] + [ c * ( m + 2) ] ) ] ]
宗教制度开销 cr
cr = [d * [o * ( [ p * (n ╟ 12) ] + [ c * ( m + 3) ] ) ] ]
总政体开销 c = cg + cl + cb + ce + cr
在上面的公式里,[x]表示取小于等于x的最大整数,即向下取整;如果x < 0,[x] = 0。
4. 举例
领袖老秦,diety难度,bc4000建立北京
这时候,d = 1, o = 1, m = 1, n = 1,制度都是低维护,p = 0.08, c = 0.4。
cb = [1 * [1 * ( [ 0.08 * (1 ╟ 10) ] + [ 0.4 * ( 1 + 1) ] ) ] ] = [0.8] = 0
ce = [1 * [1 * ( [ 0.08 * (1 ╟ 11) ] + [ 0.4 * ( 1 + 2) ] ) ] ] = [1.2] = 1
同样,可以得到cg = 0, cl = 0, cr = 1,所以c = 1+1 = 2
如果领袖换成老毛,o = 0.5其他不变,则
ce = [1 * [0.5 * ( [ 0.08 * (1 ╟ 11) ] + [ 0.4 * ( 1 + 2) ] ) ] ] = [0.5 * 1.2] = 0
同样,cr = 0,因此总政体开销为0。
5. ai 的政体开销
同样遵循上述公式,只是d不同。
diety, dai = 0.6; immortal, dai = 0.8; emperor, dai = 0.85; monarch, dai = 0.9; prince, dai = 0.95; noble & -, dai = 1。
6. 一些推论
* 观察 p和c,我们会发现在1.52中,无维护和低维护的差距,等于甚至大于低维护和高维护的差距,因此无维护的制度从维护费角度看有很大优势
* 由于高难度下政体开销不容忽视,因此组织性在高难度下有一定优势
* 由于公式内在的多次取整,组织性减免的政体开销实际大于50%,在早期可能远大于50%
* 由于c > p,所以增加城市数量的影响将大于增加人口的影响,早期多城成本将很高(政体开销只是其中的一部分因素),特别是对于非组织性领袖
* 对于军事派而言,组织性是个很好的属性,侵略+组织应该是上好的组合,可惜……
7. 数据来源
p, c:
civ4upkeepinfo.xml
d:
civ4handicapinfo.xml
参考文献:civic upkeep explained, by roland johansen http://forums.civfanatics.com/showthread.php?t=148840,
更新记录:
01/18/06, 增加参数来源,并修改部分措辞
01/20/06, 修正部分用词第二部分 军费
1. 军费
军费分3部分,普通单位花费(unit cost),军事单位花费(military unit cost),以及军费折扣(handicap)。
普通单位花费 = 总单位数 ╟ 免费单位数
军事单位花费只有在实行和平主义的时候才有,其他情况均为0。在使用和平主义制度下,军事单位花费 = 总军事单位数 ╟ 免费军事单位数。需要说明的是,和平主义下,普通单位花费不是被军事单位花费代替,而是另外增加了军事单位花费。
无论普通单位花费还是军事单位花费,都至少为0,不能出现负数。
军费折扣取决于折扣率h,h和难度有关。deity, h = 0; immortal, h = 10%; emperor, h =20%; monarch, h=30%; prince, h=40%; noble, h=50%; warlord, h=60%; chieftain, h=70%; settler, h=80%。
折扣 = {(普通单位花费 + 军事单位花费)* h },{x}表示取大于x的最小整数,即向上取整。
最终总军费 = 普通单位花费 + 军事单位花费 ╟ 军费折扣
2. 免费普通单位/军事单位数
免费普通单位数取决于总人口n和游戏难度d
d的取值:deity, d = 1; immortal, d = 2; emperor, d=3; monarch, d=4; prince, d=6; noble, d=8; warlord, d=12; chieftain, d=18; settler, d=24
免费普通单位数 = [0.24 * n] + d + 4
免费军事单位数只和总人口有关
免费军事单位数 = [0.12 * n] + 2
3. 家臣制(vassalage)的影响
家臣制只增加免费的普通单位,不增加免费军事单位数。所以如果希望用家臣制来弥补和平主义的高军费支出,效果有限。
家臣制增加的免费单位数 = [0.1 * n] + 5
4. 举例分析
diety难度,领袖无组织性
如果法律制度从低维护的制度改为高维护的家臣制,不考虑取整问题,新增的政体开销为:
(0.16 ╟ 0.08) * (n ╟ 9)
+ (0.6 ╟ 0.4) * ( m ╟ 0) = 0.08 * (n ╟ 9) + 0.2 * m
如果部队数足够多,家臣制减少的军费为0.1 * n + 5
所以总的变化为0.08 * (n ╟ 9) + 0.2 * m ╟ 0.1 * n ╟ 5 = 0.2m ╟ 0.02n ╟ 5.72
因此,经过复杂的计算,得出了广大战争狂热分子都知道的结论:如果部队很多,采用家臣制可以降低总维护费。当然,另外还有新部队+2经验的好处。
5. 补给费
除了军费外,另一个相关的维护费用是补给费。
补给费计算很简单,= [(境外单位总数 - 4) / 2],所以最多可以有5个单位在镜外而不用付补给费。
需要指出的是,境外单位包括所有在境外活动的单位,比如,出去传教的传教士,去海外做生意的大商人等。
6. ai的军费和补给费。
都和难度有关。
不同难度下,ai军费和玩家的比例是:diety, 60%; immortal, 80%; emperor, 90%; monarch, 95%; prince & -, 100%。
不同难度下,ai补给费和玩家的比例是:diety, 10%; immortal, 15%; emperor, 20%; monarch, 25%; prince , 30%; noble, 35%; warlord, 40%; chieftain, 45%; settler, 50%。
所以,想通过送部队给ai让ai穷死的大概要失望了。
7. 数据来源
和难度有关的数据:civ4handicapinfo.xml
和家臣制有关的数据:civ4civicinfos.xml
其他常数:globaldefines.xml
参考文献:unit maintenance explained, by roland johansen
http://forums.civfanatics.com/showthread.php?t=141475
更新记录
01/20/06, 修正部分用词第三部分 城市维护费
城市维护费分2部分,城市距离导致的维护费和城市数量导致的维护费。熟悉c3c腐败计算公式的对这部分应该不陌生。
城市距离导致的维护费
先说明距离的计算方法
以首都为原点,某城市的坐标为(x,y),令x > y > 0
则城市(x, y)的距离t = x + [y / 2]
城市(x, y)因距离导致的维护费md = [d * m * t * (p + 7) / 22]
d 难度修正
m 地图修正
p 该城市人口
城市数量导致的维护费
先说明一个概念,城市排名r。和c3c类似,r按照城市和首都的距离排名,距离一样按照建造先后。
因城市数量导致的维护费 mn = [d * m * ((p + 16) * (n + 1) / 18 + (r ╟ 1) / n]
d 难度修正
m 地图修正
p 该城市人口
n 城市数量
如果计算出mn超过上限,则取上限。