• 1885阅读
  • 5回复

Experience(经验)获得的详细计算流程 [复制链接]

上一主题 下一主题
 
发帖
4422
金钱
748
91币
0
信誉
0
资产
0 IST
在线时间
1314 小时
注册时间
2007-11-01
最后登录
2022-05-14
只看楼主 倒序阅读 使用道具 楼主  发表于: 2008-05-29 18:59:14
关键词: 暗黑
By Go_Limyh (SB_GL)

本帖出自:HOLY Clan及暗黑品网


现在已经有很多关于经验值计算分配的帖子,但是大多是根据blizzard官方主页直接翻译的。不够详尽和准确。

第一步:计算怪物基础exp1;
第二步:引入游戏人数的影响—
Exp2=基础exp1+基础exp1*(游戏内人数-1)/2;
第三步:引入结盟因素——
exp bonus=Exp2 * [1+89/256 * (同一区域内在Exp分配范围内结盟玩家数 - 1)];
第四步:分享exp—
Exp3=Exp bonus*CLVL/(同一区域内在Exp分配范围内所有玩家CLVL之和)
第五步:个人exp获得—
Exp=Exp3+Exp3*(神殿即50%+%exp物品提供)/100
第六步:Exp惩罚


注意:1.这里blizzard公布的恒定35%的partybonus是错误的,准确的说应该是每多一个玩家就多89/256≈35%;
   2.Exp分配范围为在怪物死亡地点2个屏幕以内.

------------------------------------------------------------------------
二.Exp惩罚--等级差惩罚
由上经过第五步计算而分配到各个char的经验值Exp依角色等级和怪物等级差距乘一个百分比:
5级以内100%,6-10级5-100%,10级以上5%。
国内大部分的翻译版本到此为止,那么实际每差一级会差多少经验呢。

见下表:
若CLVL<25
CLVL-MLVL   exp%
 0-5      100
 6       81
 7       62
 8       43
 9       24
10或10以上   5

MLVL-CLVL   exp%
 0-5      100
  6       88
  7      68
  8       36
  9       15
10或10以上   2

若CLVL>=25
CLVL-MLVL   exp%
 0-5      100
 6       81
 7       62
 8       43
 9       24
10或10以上   5

MLVL-CLVL   exp%
0-99            (CLVL/MLVL)
------------------------------------------------------------------------
三 Exp惩罚--级别惩罚
Exp在经过等级差惩罚后,再根据人物相应的Level乘上对应的ExpRatio,进行级别惩罚

Level   ExpRatio(单位 1/1024 )
0      1024
1      1024
2      1024
3      1024
4      1024
5      1024
6      1024
7      1024
8      1024
9      1024
10    1024
11    1024
12    1024
13    1024
14    1024
15    1024
16    1024
17    1024
18    1024
19    1024
20    1024
21    1024
22    1024
23    1024
24    1024
25    1024
26    1024
27    1024
28    1024
29    1024
30    1024
31    1024
32    1024
33    1024
34    1024
35    1024
36    1024
37    1024
38    1024
39    1024
40    1024
41    1024
42    1024
43    1024
44    1024
45    1024
46    1024
47    1024
48    1024
49    1024
50    1024
51    1024
52    1024
53    1024
54    1024
55    1024
56    1024
57    1024
58    1024
59    1024
60    1024
61    1024
62    1024
63    1024
64    1024
65    1024
66    1024
67    1024
68    1024
69    1024
70    976
71    928
72    880
73    832
74    784
75    736
76    688
77    640
78    592
79    544
80    496
81    448
82    400
83    352
84    304
85    256
86    192
87    144
88    108
89    81
90    61
91    46
92    35
93    26
94    20
95    15
96    11
97    8
98    6
99    5
[ 此贴被岁月的记忆在2008-05-29 19:04重新编辑 ]
发帖
4422
金钱
748
91币
0
信誉
0
资产
0 IST
在线时间
1314 小时
注册时间
2007-11-01
最后登录
2022-05-14
只看该作者 沙发  发表于: 2008-05-29 19:02:15
关于exp 封顶情况的解释

在d2的各种数据计算中,对单个数据会有不同的上限。
一般来说是4294967295(或者十六进制的FFFF FFFF)和2147483647(或者是十六进制的7FFF FFFF)。
任何游戏计算中的中间数据都不能突破这种上限。
Peter Hu(应该是游戏开发人员)在代码中增加了大量的检测函数以确保数据在超过最大上限的时候停留在最大值而不是造成溢出。


由此我们来看看kb的情况:
hell baal exp1=4536276
8pp game下,exp2=4536276*(1+7/2)= 20413242
考虑最多的exp bonus情况,exp3= 20413242*(1+89/256*7)=70090780
还是远远小于2147483647,怎么解释在kb时出现的exp封顶呢?

这是因为在游戏中,由于在十六进制表达下,除法的计算与乘法相比要消耗很多的时间。
所以系统通常优先执行乘法运算,然后将部分除法的除数相乘后再做一次总的除法,从而减少游戏计算的时间。
只有一种情况例外,即除数是2的若干次方的情况下。此时在十六进制意义下相除只是简单的右移。


回头再来看游戏对于kb exp的计算。
monstats.txt
hell difficulty Baal, Exp(H)=6460
monlevel.txt
L-XP(H) for a level 99=70221
所以hell baal exp1=6460*70221%=4536276

但是再考虑到上面所说的情况,真实的计算过程应该是
6460*70221=453627660,而除以100的计算被推后。
如果在exp计算中起作用的上限是7FFF FFFF(2147483647)的话,是可以在3-4 pp game中达到的。
因为在exp计算中,真正的上限和乘除法的计算序列是未知的,所以无法准确的得出不同情况下kb的exp封顶人数。

关于pet经验的获得:
一个级别为X的pet杀死某怪物所得的经验等于同级别的玩家杀死该怪物应该获得的经验值。
玩家或者玩家的随从(如nec的骷髅,dru的狼)杀死怪物时,pet 获得经验为应得经验的1/3。
pet一次最多只能获得从当前级别升级所需的全部经验的1/64。
pet升级所需经验计算
experience_function(level) = (Exp/Lvl) * (level+1) * level ^ 2
其中level为pet当前级别:
Exp/Lvl可在下表中对应查找(CF hireling.txt)

                            Normal Nightmare Hell
Rogue Scout, Fire            100      110    120
Rogue Scout, Ice              105      115    125
Desert Warrior                110      120    130
Eastern Sorceror, Fire        110      120    130
Eastern Sorceror, Lightning  110      120    130
Eastern Sorceror, Cold        120      130    140
Barbarian                    120      130    140


由此我们可以看到除了力量,敏捷,技能级别等等因素之外,从普通雇佣的pet比地狱雇佣的pet的另一好处:升级所需的exp少(不过,从低级升到跟地狱难度佣兵相当的等级需要大量的时间)

发帖
4422
金钱
748
91币
0
信誉
0
资产
0 IST
在线时间
1314 小时
注册时间
2007-11-01
最后登录
2022-05-14
只看该作者 板凳  发表于: 2008-05-29 19:09:54
占楼,上传几个附件
附件: 武器攻击速度计算器.rar (161 K) 下载次数:1
附件: 技能计算器.rar (761 K) 下载次数:87
离线疯婆子
发帖
483
金钱
665
91币
0
信誉
0
资产
0 IST
在线时间
213 小时
注册时间
2007-11-22
最后登录
2016-02-17
只看该作者 3楼 发表于: 2008-05-29 19:21:56
占楼 
离线疯婆子
发帖
483
金钱
665
91币
0
信誉
0
资产
0 IST
在线时间
213 小时
注册时间
2007-11-22
最后登录
2016-02-17
只看该作者 4楼 发表于: 2008-05-29 19:22:32
继续 
发帖
5603
金钱
8435
91币
1
信誉
0
资产
0 IST
在线时间
538 小时
注册时间
2008-03-16
最后登录
2024-05-19
只看该作者 5楼 发表于: 2008-06-02 17:02:43
你也UP?
快速回复
限100 字节
 
上一个 下一个