大菠萝2一直是作为MMORPG游戏数值策划的重点研究对象之一。前几年,如果你去目标或其他著名的国内游戏公司应聘,通常第一个问题都可能会问你,是否研究过大菠萝的数值体系?
今天随便温故了下大菠萝的一些公式,提取几则经典放出:
(一)实际的命中率的计算
缩略语:
Hit_Chance:实际的命中率.
A_AR:(Attacker's attack rating)攻击者的命中率。对于人物,可以在状态窗口中看到命中率。
D_DR:(Defender's defence rating)防御者的防御值。对于人物,可以在状态窗口中看到防御值.
A_Lvl:(Attacker's level)攻击者的等级。
D_Lvl:(Defender's level)防御者的等级。
计算公式:
Hit_Chance = A_AR / (A_AR + D_DR) * 2 * A_Lvl / (A_Lvl + D_Lvl)
Hit_Chance 不小于 5% 不大于 95%
(二)获得经验值的计算
未组队玩家的经验计算
25级以下玩家
如果你和怪物的等级相差很小(5汤加火山地图级以内,包括5级),你会得到100%的经验;
如果你和怪物的等级相差6-10级,你得到的经验在5%到100%之间;
如果你和怪物的等级相差很大(大于10级),你只得到5%的经验。
25-69级的玩家
与比你等级高的怪物作战,你得到的经验为:原经验*(玩家等级/怪物等级);
与比你低6-10级的怪物作战,你将得到各种颜代表的意义5%到100%的经验;
如果怪物的等级比你低超过10生日情侣级,你只能得到5%的经验。
70级以上的玩家
与比你等级高的怪物作战,你得到的经验为:原经验*(玩家等级/怪物等级);
与比你低6-10级的怪物作战,你将得到5%到100%的经验;
如果怪物的等级比你低超过10级,你只能得到5%的经验。
经此计算后,再按照下表进行减值。例如,70级的角只能得到上述计算经验的95.31%
级别 经验值  级别 经验值  级别 经验值
70  95.31%  80  48.44%  90  5.96%
71  90.36%  81  43.75%  91  4.49%
72  85.94%  82  39.06%  92  3.42%
73  81.25%  83  34.38%  93  2.54%
74  76.56%  84  29.69%  94  1.95%
75  71.88%  85  25.00%  95  1.46%
76  67.19%  86  18.75%  96  1.07%
77  62.50%  87  14.06%  97  0.78%
78  57.81%  88  10.55%  98  0.59%
79  53.13%  89    7.91%  99  0.49%
如你所见,高等级的角杀死低等级的怪物的时候只能得到很少量的经验值;同样的,低等级的角杀死高等级的怪物也得不到很多。
不过每杀死一个怪物你至少可以得到1点经验值。
当两个中立玩家攻击同一个怪物的时候会如何?
发出杀死怪物的那一次攻击的玩家将获得经验值。
组队时的经验值计算
当同队的玩家在同一场景中时,杀死怪物的经验值将增加35%(以自动地图为准);然后经验值总和按如下分配:
总经验按照等级在玩家中分配,每一个玩家获得经验的比例与他的等级在总级数中的比例相同。经此分配后的经验值再依角等级和怪物等级乘一个百分比:5级以内100%,6-105-100%,10级以上5%。因此,高等级的角在杀低等级的怪物的时候只能得到很少的经验值,而低等级的角与高等级的角组队的时候,也不会像以前那样获得高得离谱的经验。那些怪物只有他的队友能对付得了,而他们几乎只能在旁边看着。(暴雪可能希望这个设定能减少Leech的行为-虫子注)
最后,只有在怪物死亡地点2个屏幕以内的玩家可以获得经验值。
在组队时会有额外的经验值加成么?
会的。
在噩梦或地狱难度中死亡时经验的减少
在噩梦或地狱难度中,你每次死亡都会失去经验值,但不论如何你的级别都不会降低。你推动的经验值将是你由当前级别到下一级别升级所需的经验的5%(噩梦难度)或10%(地狱难度)。例如,如果你在经验值为1,000,000时达到了N级,达到N+1级时需要的经验值为2,000,000,那么你死亡时减少的经验值将为 (2,000,000 - 1,000,000)5% 10%
捡回尸体时会恢复一定量的经验:在噩梦或地狱难度中,当你死亡的时候会失去一些金币及你的尸体;在D2X的游戏里,如果你在事发当地捡回你的尸体,你会恢复所失去经验的75%(1.09中为50--虫子注)。如果你选择了存储并离开游戏,你将无法取回所失去的经验。
杀死被其他怪物复活的怪物会获得经验值吗?
不,你只有在第一次杀死一个怪物的时候才能得到经验值。
佣兵和召唤兽会偷取你的经验值吗?
不,使用佣兵并不会减少你的经验值。事实上,由于佣兵杀死的怪物的经验值计入你的经验值,你的经验值会有所增加。
在多人游戏中怪物的经验值
怪物的经验值和生命点数会随游戏中玩家的数量而变化。当更多的人加入游戏时,怪物的生命会变多;而当他们离开游戏时,怪物会变得简单起来。(你可以尝试一下在地狱模式中单机玩8人难度,这是最终的挑战。)在多人游戏中怪物的生命值将是原始生命值乘上游戏中的玩家数量,而基础经验值按下述公式计算:
经验值 = X * (n + 1) / 2
X = 基础经验值
n = # 游戏中的玩家数量
在单机或TCI/IP游戏中增加玩家数量:输入“/players X”,其中X的范围在现有玩家范围到
最大玩家数(8)之间。在信息栏中可以设定玩家数量(此方法仅在单人游戏,开放式BattleTCP/IP模式中有效)可以增加怪物的难度,经验值及物品掉落机率。
(三)跑步速度的计算
术语:
Walk_Speed: 走路速度.
Run_Speed: 跑步速度.
FRW: Faster run/walk, 装备增加的走路/跑步速度的总和.
Other_Speed_Bonus: 其它对走路/张雨生资料跑步速度的影响, 包括技能提供的增速和装甲盾牌造成的减速.
盾牌影响:中型甲/中型盾 -5%, 重型甲/重型盾 -10%
走路速度计算公式:
Walk_Speed = 6 * (1 + FRW * 1.5 / (FRW + 1.5) + Other_Speed_Bonus)
圈内人评价郑爽
跑步速度计算公式:
Run_Speed = 3 + Walk_Speed
单位: TU/s
在没有加跑步速度的技能时, 跑步速度与 FRW 关系表如下:
===============================
  Run Speed  轻甲  中甲  重甲
-------------------------------
      8              0    0
-------------------------------
      9        0    6    11
-------------------------------
    10      20    26    33
-------------------------------
    11      44    53    63
-------------------------------
    12      75    87  100
-------------------------------
    13      122  139  159
-------------------------------
    14      191  219  252
-------------------------------
    15      300  350  413
-------------------------------
    16      532  654  829
===============================
(四)格挡率的计算
术语:
Blocking_Chance: 最终的格挡率
Blocking:        装备提供的格挡率总和
Clvl:            人物等级
格挡率计算公式:
Blocking_Chance = Blocking * ( Dexterity - 15 ) / Clvl / 2
Blocking_Chance 不大于 75%
如果人物在移动, Blocking_Chance 要除以3
人物最终格挡率的查看方法: 打开状态窗口(默认是"A"), 将鼠标悬停于防御值上, 将出现一个浮动条显示最终格挡率.
注意, 只有使用盾牌时才有格挡率.
不同的角使用同一个盾牌, Blocking 是不一样的. Pal 最高,Ama/Asn/Bar Pal Blocking 上减5%, Dru/Nec/Sor 10%.
另外, 如果盾牌有"xx% increased chance of blocking", 其显示的格挡率可能出现问题. 比如一个基础格挡60%的盾, 又带20% increased chance of blocking, Blocking 80%, 但盾牌上只显示美好的一天开始了 75% . 计算时仍以 80% 计算.
 
以上几则经典公式都是转载而来。需要特殊说明的是,暗黑破坏神很多公式都是以下两个
公式的变形:
等级影响系数:
Lv_a / ( Lv_a + Lv_b ) * 2
属性衰减公式:
1 - 1 / ( 1 + 属性 / 系数
Replenish Life 公式:
Replenish_Life: 装备提供的恢复生命的属性的总和
Life_Per_Second: 每秒钟恢复的生命值