| | |
|
组别 | 羽林都尉 |
级别 | 讨逆将军 |
功绩 | 121 |
帖子 | 606 |
编号 | 352334 |
注册 | 2009-12-27 |
| |
| | |
|
|
|
![](images/default/agree.gif) ![](images/default/agree.gif) ![](images/default/agree.gif) ![](images/default/agree.gif)
三国志9威力加强版的设计公式和优化方法
三国志9威力加强版的设计公式和优化方法
作者:优化伴侣
本文介绍三国志9威力加强版中的设计公式,同时给出“高难度优化伴侣”对部分设计公式的优化方法。rangzh的《SanIX 程序分析》一文对游戏的设计公式也做了详细分析,推荐大家将两文参照阅读,以获得更加全面的认识。
对公式中的名称和语法作以下规范:
1)对于任务,任务执行方称为“源”,任务目标方称为“目标”
比如,源武将=执行武将,源势力=执行武将的所属势力,目标君主=任务目标的所属君主,等等
对于战斗,进攻方称为“源”,防守方称为“目标”
2)都设=都市/设施
3)采用c语言的语法规范
if (a) b else c : 如果满足条件a, 则执行语句b,否则执行语句c
a ? b : c : 如果满足条件a,则取表达式b的值,否则取表达式c的值
4)特殊函数
min(a,b)=a和b中的最小值,max(a,b)=a和b中的最大值,sqrt(a)=a的平方根
游戏设计公式
--------------------------------------------------------------------------------
0.武将执行力S
设 a=统率/武力/智力/政治,则S分别称为“执行统率/执行武力/执行智力/执行政治”
if (a<60) S = a*2/3
if (60<a<80) S = a-20
if (a>80) S = 2*a - 100
1.军师判断力P
设 a=军师智力
if (a<70) P=60
if (70<a<80) P = a-10
if (a>80) P = 2*a - 90
********************* 优化方法 *********************
if (80<a<90) P = 2*a - 90
if (a>90) P=a
“军师准确判断的智力=110”选项
if (90<a<95) P=a
if (a>95) P = 95 + (a-95)/3
2.登用成功率P
if (e < 50 || (目标武将不是俘虏 && 目标武将的自忠诚度>99)) P=0
else P = (a-b)*0.2 + (c-d)*0.02 + (e-f) + g + h + i - j - 37
其中
a = (目标武将在野 ? 0 : 目标武将与目标君主的相性差),b = 源武将与源君主的相性差
c = 源势力信望,d = 目标势力信望,e = 目标武将对源势力的忠诚度
f = (目标武将在野 ? 70 : 目标武将的自忠诚度) + (目标武将是守城大将 ? 20 : 0)
g = (源武将==刘备 ? 刘备政治 : 0),h = (目标武将是俘虏 ? 30 : 0),i=源武将政治
j = 目标武将情义
********************* 优化方法 *********************
if (c-d<0) 其系数0.02修改为0.08
3.离间成功率P
P = min(40, (7-目标武将情义)*5 + 源武将智力 - 目标武将智力)
4.流言成功率P
P = min(40, 源武将智力 - (目标君主智力 + max(60,目标军师智力))/2)
5.激励成功率P
P = (源武将智力-30)/2 + (源武将会鼓舞吗? : 20 : 0)
6.伪报成功率P
if (目标部队中有武将使用教论) P=0
else P = min(35, (源武将智力 - 目标部队最高智力 + 10)*3/4) / a
其中,a = (目标部队阵型==方圆 ? 2 : 1)
7.扰乱成功率P
if (目标部队==无阵 || 目标部队中有武将使用教论) P=0
else P = min(30, (源武将智力 - 目标部队最高统率 + 10)*3/4) / a
其中,a = (目标部队阵型==方圆 ? 2 : 1)
8.烧夷成功率P
if (目标都设耐久<100) P=0
else P = min(50, 源武将武力 - 目标都设大将统率*2/3 - 20)
9.夺取成功率P
P = min(25, 源武将武力 - (2*目标都设大将统率+30)/3 - 目标都设士兵数/1000)
10.救援成功率P
if (目标部队士兵数 >= 目标部队大将的最大带兵数) P=0
else P = (源武将统率-30)*5/4
********************* 优化方法 *********************
P -= 25
11.赠与成功率P
P = 源武将执行政治/10 + (源势力与目标势力的外交友好度-60) + (赠与资金/200)或者(赠与兵粮/2000)
12.夺取的资金M
M = 目标都设士兵数/80 + [0~50]中间的随机数 + 10
********************* 优化方法 *********************
M = (原夺取资金/512) * (目标军团资金/100)
13.烧夷的耐久N
N = min(源武将执行武力*2/15 + 目标都设耐久*0.02 + [0~5]随机数 - 3, 目标都设耐久-10)
烧兵粮概率 = 3%
烧夷的兵粮 = 目标都设士兵数*源武将执行武力/2000 + [0~99]随机数
********************* 优化方法 *********************
“烧夷增加烧兵粮效果”选项
N = min(源武将执行武力/15 + 目标都设耐久*0.02 + [0~5]随机数 - 3, 目标都设耐久-10)
烧兵粮概率 = 60%
烧夷的兵粮 = 目标都设士兵数*源武将执行武力/1000 + [0~99]随机数
14.都市人口
设 a=总非兵役人口,b=总民心,c=总军事人口=总兵役人口+总士兵数+总伤兵数
则 e=最大流动人口 = a/20
f=总增加兵役 = (a-c)/10w * (a*100)/10
都市非兵役人口 += max(e*都市民心/b-都市非兵役人口/20, 3w-都市非兵役人口)
都市兵役人口 += 都市民心*f/b
********************* 公式说明 *********************
1)a总非兵役人口会在都市之间流动,每次流动的总人口上限=e最大流动人口
都市人口流动的方向由都市民心和都市非兵役人口决定:
1)if (都市民心/b < 都市非兵役人口/a) 人口流出
2)if (都市民心/b > 都市非兵役人口/a) 人口流入
2)a总非兵役人口可能会缓慢增长
如果忽略公式中的“3w-都市非兵役人口”项,则a不会发生变化
“3w-都市非兵役人口”用于限制都市的非兵役人口不低于3w,当这个限制发生作用时,
都市非兵役人口会有额外增量,a也会相应增大,但是这个增量不会超过3w
3)f总增加兵役从a中产生,但是其大小主要由c决定(因为a变化缓慢)
f与c成反比关系:军事人口越多,则兵役增加越慢,反之,则兵役增加越快
4)都市增加兵役人口从f中分配,分配比例=都市民心/b
总之,都市非兵役人口由都市民心决定,而都市增加兵役人口由都市民心和c总军事人口共同决定
注意:都市非兵役人口上限=100w,都市兵役人口上限=50w
15.普攻伤害
1)普攻伤害 = damage(源部队, 目标部队) = min(a*b/1200, 目标部队的士兵数)*(c+100)/100
其中,a = max(1, (源部队攻击力 - 目标部队防御力 + 900)^2/2000)
b = (源部队士兵数 + 目标部队士兵数)/70 + 400
c = 强度系数 = (源部队所属电脑势力 && 目标部队所属玩家势力 ? 电脑强度 : 0)
2)部队攻击力 = 部队攻防基数*2*阵型对部队(或者对守兵)/25
部队防御力 = 部队攻防基数*2*阵型守备力/15 + (部队为都设守军 ? 都设耐久*0.4 : 0)
3)部队攻防基数 = (sqrt(c/d)/6 + 30 + 2*大将统率)*e/10*5/(d+4)*(100+士气)/200
其中,c = min((大将统率*2.5)^2, 士兵数)
d = 攻击程度 : 1=激烈,2=轻微
e = 攻击效果 : 10=状态正常,8=状态混乱,6=状态溃败
********************* 公式说明 *********************
1)部队A与部队B交战时,每天发生两次普通攻击:
A攻击B:A对B的伤害=damage(A,_B_),B对A的伤害=damage(B,A)
B攻击A:B对A的伤害=damage(B,A),A对B的伤害=damage(A,_B_)
因此,普攻伤害只与部队的战斗力有关,而与部队的攻防关系无关。
2)通过软件模拟,我估算出统率、士气和士兵数对部队攻防基数的作用约为65%、25%和10%
3)《SanIX 程序分析》中指出,由于变量a的公式中存在平方的计算,因此,当都设耐久超过某个临界值时,
部队对都设的普攻伤害会随着耐久的增加而增加。
我认为,这里应该是游戏设计上的bug。正确的公式应该如下:
a = max(1, (max(0, 源部队攻击力 - 目标部队防御力 + 900))^2/2000)
********************* 优化方法 *********************
1)“加倍耐久的普防系数”选项 : 耐久的普防系数0.4=>0.8
2)if (源部队阵型==攻城阵型) 源部队阵型的对守兵 *= 1 + (源部队最高攻城熟练度-600)/2000
16.普攻对耐久的损伤D
D = min(都设耐久, max(1, (a + (源部队阵型的对城壁-2)/3 +1)/3))
其中,a = sqrt(源部队最高执行统率*100)*sqrt(源部队士兵数)/3000
********************* 优化方法 *********************
if (源部队阵型==攻城阵型) 源部队阵型的对城壁 *= 1 + (源部队最高攻城熟练度-600)/2000
17.兵法发动机会
《SanIX 程序分析》对“兵法发动概率”作了详细说明,我这里不再赘述。
我只对其中的“兵法发动机会”补充说明一下。
前文提过:部队A与部队B交战时,每天发生两次普通攻击,一次是A攻击B,另一次是B攻击A。
A攻击B时,A产生1次兵法发动机会,B按概率50%产生1次兵法发动机会。
B攻击A时,B产生1次兵法发动机会,A按概率50%产生1次兵法发动机会。
因此,每天,A和B平均都有1.5次兵法发动机会,A和B最多可以发动两次兵法。
********************* 公式说明 *********************
部队的攻防关系虽然不影响普攻伤害,但是影响兵法发动机会,即进攻方比防守方有更多的兵法发动机会。
********************* 优化方法 *********************
部队士气影响兵法发动概率 : 概率50% => (50 + 部队士气 - 80)%
18.兵法联动概率P
P = (max(5*(5-武将相性差), 0) + 25)*(源部队阵型==锥行 ? 3 : 2)/2 + 武将亲密度
其中,武将亲密度按以下方式获得:
if (在武将亲密度表中找到匹配项) 获得表中的武将亲密度
if (武将关系==父子) 武将亲密度=20
if (武将关系==兄弟 && !(袁尚+袁谭 || 曹植+曹丕 || 孙和+孙霸)) 武将亲密度=20
if (主发武将==赵云) 武将亲密度+=10
19.武力型兵法的兵法效果E
if (兵法类别==步兵系 && 目标部队阵型==象兵) E=15
抵挡兵法概率P = (目标部队最高兵法熟练度-源武将兵法熟练度)/20
E = (按概率P抵挡兵法成功 ? 1 : 10)
********************* 优化方法 *********************
if (兵法类别==步兵系 && 目标部队阵型==象兵) E=7
if (兵法类别==骑兵系 && 目标部队阵型==象兵) E=6
20.武力型兵法伤害D
1)D = (主发武将兵法伤害 + 联动武将兵法伤害之和/2) * (兵法伤害加倍 ? 2 : 1)
2)武将兵法伤害 = max(武将执行武力+45,70)*(武将兵法熟练度/2+1000)*兵法威力/1000
********************* 优化方法 *********************
“士兵数和统率影响兵法伤害”选项:
设 源部队士兵数=a,发动兵法武将统率=b,则武将兵法伤害进行如下修正:
if (a<10000) 武将兵法伤害 *= sqrt(a)/100
if (a>10000) 武将兵法伤害 *= (min((max(b,70)-60)*1000, a) + 9w)/10w
“减少远程兵法对设施的伤害”选项
1)远程兵法:弓骑系,弩兵系
2)武将兵法伤害 *= (2000-min(1000, 设施耐久))/2000
21.武力型兵法总伤害S
S = (兵法伤害 + 普攻伤害) * 兵法效果/10 * 状态因子/10 * (强度系数+100)/100
其中,状态因子 = (目标部队状态==无阵/混乱/溃败 ? 13 : 10)
强度系数参见“普攻伤害”中的说明
********************* 公式说明 *********************
总伤害的设计存在bug,正确的公式应该是:
S = 兵法伤害 * 兵法效果/10 * 状态因子/10 * (强度系数+100)/100 + 普攻伤害
22.增加伤兵W
if (部队为都设守军) W = 总伤害*5/10
if (部队为部队) W = 总伤害 * (阵型==方圆 ? 8 : 5)/10
********************* 优化方法 *********************
“减少伤兵率”选项:
if (部队为都设守军) W = 总伤害*5/12
if (部队为部队) W = 总伤害 * (阵型==方圆 ? 8 : 5)/13
23.智力型兵法的兵法效果E
if (兵法==混乱 && 目标部队有武将装备教论) E=0
if (兵法==陷阱 && 目标部队有武将装备破陷) E=0
兵法成功率P = 100 + (源武将执行智力-目标部队最高执行智力-5)*6/5
if (按概率P发动兵法失败) E=0
if (兵法==混乱 && 目标部队阵型==方圆 && 按概率50%发动兵法失败) E=0
减损兵法概率Q = (目标部队最高兵法熟练度-源武将兵法熟练度)/10
E = (按概率Q减损兵法成功 : 3 : 10)
********************* 优化方法 *********************
1)if (兵法==混乱/攻心/幻术/辱骂/妖术 && 目标部队有武将装备教论) E=0
2)兵法成功率P = 100 + (源武将执行智力-目标部队最高执行智力-5)*7/5 - (目标部队有武将习得教论/破陷 ? 20 : 0)
3)E = (按概率Q减损兵法成功 : 5 : 10)
24.智力型兵法伤害
设 S=(源武将兵法熟练度+100)/250+1,M=源武将执行智力,E=兵法效果
1)混乱天数 = min(S+M/20, 10)*E/10 + 1
2)辱骂减少士气 = max(S+M/(10-辱骂威力), 3)*E/10
3)攻心倒向士兵数 = (S+M/(30-攻心威力)+4)*(目标部队士兵数/100)*E/10
4)幻术伤害 = (S+M/(33-幻术威力)+7)*(目标部队士兵数/100)*E/10
5)妖术伤害 = (S+M/(33-妖术威力)+8)*(目标部队士兵数/100)*E/10
6)陷阱伤害 = max(500, (S*2+M/(20-陷阱威力)+13)*目标部队士兵数/100)*E/10
7)鼓舞增加士气 = S*2+M/(15-鼓舞威力)
8)治疗恢复士兵数 = min(部队大将最大带兵数-部队士兵数,min(部队伤兵, a))
其中,a = max(min(S*3+M/(20-治疗威力),100)*部队士兵数/100, 1000)
********************* 优化方法 *********************
1)混乱天数 = min((S+100)/300+M/(40-混乱威力), 10)*E/10 + 1
2)君主/都督在战斗中可随机发动鼓舞
25.俘虏概率P
设 N=进攻部队数,首功部队=进攻部队中功劳最大的部队
if (武将有宝物马) P=0
if (武将在部队阵型的第1排) A = 1.5
if (武将在部队阵型的第2排) A = 1.0
if (武将在部队阵型的第3排) A = 0.5
P = (120-武将执行武力)/3 * N * (首功部队的阵型==鹤翼 ? : 2 : 1) * A
********************* 优化方法 *********************
进攻部队数N按照如下方式进行修正:
a = c = 1
d = 0
for (;;)
if (a>=N) break
d += c
c++
a += c
N = (N+d)/c
26.阻击概率P
P = (源部队阵型==箕形 ? 30 : 0) + (发动兵法武将的弩兵熟练度/100)^2/2
********************* 优化方法 *********************
P = (源部队阵型==箕形 ? 25 : 0) + min(50, 发动兵法武将的弩兵熟练度/阻击概率系数)
其中,阻击概率系数的范围=25~40
27.阵亡概率P
if (武将基本能力>80 || 武将是部队大将) P=0
1)单挑阵亡 : P = min(30, 80-武将武力)
2)阻击阵亡 : P = 武将伤势^2,其中,伤势的取值范围=1~9
3)混战阵亡 : P = min(30, 80 - 武将武力 - 武将在阵型中的排数*15)
28.增加兵法熟练度
1)武将增加兵法熟练度 = add_prof(原始增加熟练度)
武将兵法熟练度 += 精通系数 * 原始增加熟练度
其中,精通系数 = (武将精通兵法类 ? 3 : 1)
2)部队发动兵法时,每个部队武将:add_prof(3)
********************* 优化方法 *********************
1)“动态增加兵法熟练度”选项
精通系数 = min(4, max(1, 5-武将兵法熟练度/200)) / 5.0 * (武将精通兵法类 ? 3 : 1)
2)部队发动兵法时
base = (武将所属玩家势力 ? 3 : 4)
主发武将:add_prof(2*base+2)
联动武将:add_prof(base+2)
其他武将:add_prof(base)
29.增加武将能力概率P
P = 3
********************* 优化方法 *********************
“动态增加武将能力”选项
P = 5-max(武将能力-35,0)/15 + (武将所属玩家势力 ? 0 : 1)
[ 本帖最后由 优化伴侣 于 2013-1-1 22:11 编辑 ]
附件:
SanIX_程序分析[1].rar (2011-3-8 00:12, 213.99 K)
该附件被下载次数 14347
|
|
|
|