设为首页收藏本站

塞爱维(CIV)文明联盟

 找回密码
 注册
查看: 3124|回复: 29

[转帖] 战斗过程详解

[复制链接]
发表于 2008-8-28 17:39:13 | 显示全部楼层 |阅读模式
今天刚看到的,觉得写得真不错,转一下!同时也比较细致清楚的解释了先攻是怎么回事。

概述
战斗其实就是两个数值之间的较量,攻击方的力量A和防守方的力量D。这两个数值
受到各种情况的修正,比如树林给予50%额外的防御加成,将会修正防守方的力量D。
一旦修正后的A和D被用来计算胜率,以下的公式将对双方都生效,不管谁是进攻方
,谁是防守方。

每个单位初始都有100点HP,并且在战斗后损失一定量的HP。一旦HP在战斗中
降至0,这个单位就会死亡。如果一个力量3的弓箭手在战斗中损失了40点HP,战斗结束
后他的力量会降至3*(1-0.4)=1.8。如果这个弓箭手开始战斗时只有2.5的力量,他还是
有100点HP,如果这次也损失了40点HP,战斗结束后他的力量会降至2.5*(1-0.4)=1.5。
战斗是一轮一轮进行的,每一轮都会掷一次骰子,由A和D决定谁赢得这一轮。输掉
的一方将会失去部分HP。之后进行下一轮的战斗。一旦某一方的HP降至0或负数,战斗结
束并且这个单位被消灭。

先攻给予一个“自由”轮。这意味如果某一方有两次先攻,这两轮仍然如同原先一
样战斗,但是如果先攻方输掉了这轮他不会受伤,而赢了他可以对对方正常造成伤害。
撤退对于胜率没有影响,它只发生在进攻方将要死亡的一轮。
如果一个单位有5-7的先攻,那么它究竟有几次先攻?
(这一段原文比较繁琐,我翻译得简单一点)
每个单位实际上有两个相关的参数:确定先攻和先攻机会。
先攻=确定先攻+先攻机会
所以5-7的先攻就是在每次战斗中选取一个5-7之间的随机数作为先攻次数。
一旦战斗开始,第一个要检查的是对方是否拥有免疫先攻能力,如果没有,先攻正
常运作。
接下来要检查对方是否也拥有先攻,如果也有的话,两者先攻的差将会在战斗计算
被应用。比如一个6次先攻的部队面对一个2次先攻的部队,相当于前者拥有4次先攻。

基本公式
修正值
攻击方和防守方会从一些升级(比如1级战斗+10%力量)和位置(比如树林给防守方
50%防御加值)得到奖励。这些加到单位的基本数值上,基本数值是指受伤时的力量(如
果单位受伤的话)。一旦修正后的力量计算出来后,我们把攻击方数值叫做A,防守方叫
做D,之后计算伤害时就只需要这两个数值了。
举个例子,一个受伤的2.5力量的弓箭手有一级战斗(+10%),并且在树林中防守(
+50%),那么D=2.5*(1+10%+50%)=2.5*1.6=4

回合
决定每一轮成功的机会只是掷一个骰子。攻击方赢得这一轮的概率是A/(A+D),防守
方相对地是D/(A+D)。
每一轮都会造成一个固定量的伤害。这个伤害从开始时总的100点HP中减去,伤害的
数值由双方的力量决定(见下)。如果上面的D=4的弓箭手被一个A=6的弓骑兵(先不考
虑先攻的因素,所以选用一个免疫先攻的兵种)攻击,在一轮中被击中造成的伤害是24
点,这轮结束后弓箭手还有76点HP。
一轮造成的伤害
一轮造成的伤害的基本值是20点,也就是1/5的HP,但是双方的A和D也会影响各自造成的伤害。
进攻方对防守方一轮造成的伤害是:20*(3*A+D)/(3*D+A)
防守方对进攻方一轮造成的伤害是:20*(3*D+A)/(3*A+D)
结果会被四舍五入成整数。所以,弓箭手一轮对弓骑兵的伤害是20*9/11=16,而弓
骑兵一轮对弓箭手的伤害是20*11/9=24。

可能的命中数
因为每一击都会造成固定的伤害,这就是说一个单位在死亡之前接受的命中数也是
固定的。这个数值只取决于A和D的对比。
还举上面的例子,弓箭手一次受伤24点,也就是说它会在第5次被命中的时候死亡。
4次之后它只剩4点HP,第5次是致命的。
类似的,弓骑兵一次受伤16点,第7次被命中将会死亡。
因为这个数值已经确定,最终影响结果的只取决于双方的命中数。

基本胜率计算
现在需要的东西都齐全了,就可以开始计算基本胜率。
弓箭手要胜弓骑兵,需要在自己被命中5次之前,先命中弓骑兵7次。也就是说,胜
率是在11轮战斗中至少赢得7次,而每次的胜率都是D/(A+D)=0.4。我们先计算刚好11轮
赢7次的概率,然后按同样的算法计算在11轮中赢8,9,10,11次的概率,然后全部相加
,就是最终的胜率。
概率论中有一个伯努利过程,可以用一连串的事件X0X1..Xn来模拟一轮轮的战斗。
每一个事件发生的概率都是p=D/(A+D)。那么在n=11轮中赢k=7次的概率符合二项式分布
,f(k;n,p)=C(n,k)*(p^k)*((1-p)^(n-k))。这里C(n,k)是二项式系数,用代数式表达就
是(n!)/(k!*(n-k)!)。
把数字带入得f(7;11,0.4)=C(11,7)*(0.4^7)*((1-0.4)^(11-7)) = 0.0701
这是11次刚好赢7次的概率7%
然后同理计算其他几种情况,最终胜率是
f(7;11,0.4)+f(8;11,0.4)+f(9;11,0.4)+f(10;11,0.4)+f(11;11,0.4) = 0.0701 +
0.02336 + 0.00519 + 0.000692 + 0.0000419 = 0.09935
所以弓箭手赢弓骑兵的概率大约是9.9%
然后我们再来看一下如果弓箭手赢了它还会剩下多少力量。在赢的情况下,有70%的
可能性被击中4次,23%被击中3次,5%被击中2次,其余忽略不计。那么加权平均值是0.7
*(100-4*24)+0.23*(100-3*24)+0.05*(100-2*24)=2.8+6.4+2.4=11.64 HP。转化成力量
来看,2.5*11.64%=0.3。它平均只剩下0.3的力量了。这只是假设它获胜,因为90%的情
况下它会输掉。

先攻的作用
假设这个弓箭手有两次先攻,这次进攻他的是一个剑士,力量和弓骑兵一样也是6,
但是没有免疫先攻的能力。
那么,前两轮的战斗和之前不一样,弓箭手如果赢了,会正常造成伤害;如果输了
,不会受到伤害。之后的战斗就和以前一样了。
计算的时候把前两轮分成三种情况考虑,第一种情况是头两轮弓箭手一箭都不中,
出现这种情况的概率是36%,然后接下来的情况就和上面的例子完全一样,0.09935的胜
率。第二种情况是中一箭,发生的概率是48%,接下来就要在10轮中至少赢得6轮,0.194
的胜率。如果两箭都中,发生概率16%,接下来要在9轮中至少赢得5轮,0.404的胜率。
总胜率就是0.36*0.0707 + 0.48*0.194 + 0.16*0.404 = 0.183
这次弓箭手有18.3%的概率获胜。


撤退
撤退只在攻击方的最后一轮生效(防守方不能撤退)。仍然按照通常的战斗进行,
万一攻击方这一轮会被打死时,根据这个兵种的撤退概率随机。如果成功,退回来;失
败就死了。
发表于 2008-8-28 17:44:47 | 显示全部楼层
很多数字。。。。不过从经验中知道,近战对先攻下被击倒的几率不低,假设相同力量。
但是还是不得不说先攻还不如+10%力量好。因为好些单位都对先攻免疫。
发表于 2008-8-28 18:48:02 | 显示全部楼层
话说弓手射爆坦克。。。那个表面数据用式子计算。。。那个。。。弓手怎么射都没可能射得死坦克,而坦克1下就能秒弓手。。。
发表于 2008-8-28 18:52:58 | 显示全部楼层
但事实上文明的世界是“决定性”的而非概率的,在实际已经发生的事情面前,一切概率计算都是苍白无力的。
发表于 2008-8-28 18:55:08 | 显示全部楼层

回复 #3 ztjal 的帖子

當坦克快爆炸的時候,弓手就能戰勝坦克了。
发表于 2008-8-28 19:09:37 | 显示全部楼层
加力长弓手常打不过战车……

可以简单地说力量差距在50%以下一切都有可能发生……

[ 本帖最后由 wjjboy 于 2008-8-28 19:11 编辑 ]
发表于 2008-8-28 19:14:12 | 显示全部楼层

回复 #5 德意志帝国 的帖子

那个是弓手WAMBO附身的



满先攻的装甲步兵打没防先法的兵种计起来很有优势,事实也如此。


不过群伤党,无视胜率。
发表于 2008-8-28 20:09:40 | 显示全部楼层
论坛内的精华很像已经有一样的东西了八
 楼主| 发表于 2008-8-28 20:25:10 | 显示全部楼层
原帖由 ztjal 于 2008-8-28 18:48 发表
话说弓手射爆坦克。。。那个表面数据用式子计算。。。那个。。。弓手怎么射都没可能射得死坦克,而坦克1下就能秒弓手。。。


什么弓手爆坦克???
 楼主| 发表于 2008-8-28 20:27:28 | 显示全部楼层
原帖由 scoutzxb 于 2008-8-28 18:52 发表
但事实上文明的世界是“决定性”的而非概率的,在实际已经发生的事情面前,一切概率计算都是苍白无力的。


看来老兄对概率为何物还不太清楚,概率的目的就是统计过去,预测将来,对已经发生的,再去预测当然没有意义。
发表于 2008-8-28 20:50:18 | 显示全部楼层

回复 #10 ddbird 的帖子

说的对,因为事情就是只能分为发生/不发生,以前的已经发生了,所以预测以前是无意义的。
发表于 2008-8-28 20:55:18 | 显示全部楼层
附带补充,貌似一个单位的第一次战斗胜率好像有所不同,不是说数值上低,但是实际上更容易被打败。同样的坦克攻城,初战的剩余血量往往比以前打过仗的要少……
 楼主| 发表于 2008-8-28 21:02:35 | 显示全部楼层
原帖由 dingdingj 于 2008-8-28 20:55 发表
附带补充,貌似一个单位的第一次战斗胜率好像有所不同,不是说数值上低,但是实际上更容易被打败。同样的坦克攻城,初战的剩余血量往往比以前打过仗的要少……


这个不知道,从公式上看,没有把第几次参加战斗作为决定胜负的参数。
发表于 2008-8-28 21:08:18 | 显示全部楼层
有把,一个在林里2回合的满血马里弓,被一个3力普通弓打死了,这概率怎么算的啊?
发表于 2008-8-28 21:11:24 | 显示全部楼层
原帖由 5742235 于 2008-8-28 21:08 发表
有把,一个在林里2回合的满血马里弓,被一个3力普通弓打死了,这概率怎么算的啊?


今天才发生了99.6胜率的部队神奇地被打败了。
 楼主| 发表于 2008-8-28 23:04:39 | 显示全部楼层
最后总结下吧,文明4里面,2个部队打,正常情况下,就是打最多11个回合,每个回合攻方A和防守方D划拳,赢的人,砍对方一下,这下最少去6HP,最多去60HP(初始100HP),具体多少见公式,在A=B时,等于20HP。 划拳的胜负比例,由2个人的加成后力量值决定。(比如A=4,B=2)那么A有66%的概率赢得每次猜拳。
先发就可以多一次猜拳机会,猜拳输了自己不去血,赢了对方去血,就这么简单了。
发表于 2008-8-28 23:08:16 | 显示全部楼层

回复 #16 ddbird 的帖子

这个帖子你在哪里看到转来的
发表于 2008-8-28 23:12:30 | 显示全部楼层
出口转内销 兵法学院好像有的说
发表于 2008-8-28 23:15:07 | 显示全部楼层

回复 #18 西艾薇.Z.周周 的帖子

这帖子很早就有了,而且就在CC发的,我在想LZ为什么又要转一次
发表于 2008-8-28 23:25:54 | 显示全部楼层
文明的战斗没那么复杂,文明百科估计也很少人看。上面写得很清楚,一次战斗最多10轮,不会出现11轮。另外,关于先攻,文明百科也有说明,就是一次战斗中本轮我打你你不还手的意思。如果是1-2先攻,并非说一定发生2次先攻,但是1次肯定是发生的。如果有先攻=10的单位,你战斗100%赢。通过promotion获得先攻的是先攻概率,并不是一定发生先攻的次数,但也决定了总共先攻次数的大小。这就是为什么自身带有先攻属性单位应该优先promote先攻,文明的战斗本来就是拼人品的。我用长弓打掉你坦克,说明我人品好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-3 19:43

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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