小夏姬吧 关注:25贴子:3,342
  • 3回复贴,共1

【~簿】分析魔兽世界经验值系统

取消只看楼主收藏回复

一、怪物经验值
1.Solo经验值
1.1 同级怪物与标准经验值
当人物等级和怪物等级相同,而且独自杀掉一个普通怪物(非精英、非召唤、非副本怪物)时,获得的经验值可以用下式表示:
BXP=45+5*CL (大陆怪物)
BXP=235+5*CL(外域怪物)
上式中,CL指人物等级,而且这儿怪物等级(ML表示)=人物等级(CL表示)。独自杀死同级怪物获得的经验值,我称之为此等级的标准经验值,下面有时候没有说明而直接说“某等级经验值”,那么也指这个标准经验值。
1.2 怪物名称的颜色和等级
怪物和人物等级的不同,会显示为不同的颜色,以表示此怪物相对于人物的难度。怪物一般显示为骷髅、红色、橙色、黄色、绿色和灰色6个“难度”等级。前面5个难度的等级差异,很容易确定,列式如下:
骷髅:ML≥CL+10
红色:ML≥CL+5
橙色:CL+3≤ML≤CL+4
黄色:CL-2≤ML≤CL+2
绿色:GML<ML≤CL-3 (GML指灰名怪物等级)
怪物名称显示为灰色时,也就意味着人物杀死这个怪物不会获得经验值。灰名怪物和人物的等级差异,并不是固定的,而是与人物等级呈如下函数关系:
GML=0 (CL∈[0,5])
GML=CL-(Floor(CL/10)+5)(CL∈[6,39])
GML=CL-9   (CL∈[40,70])
1.3 等级差异与经验值修正系数
杀死高于人物等级的怪物,获得的经验值如下:
XP = MXP*(1+0.05*(ML-CL)), 这里CL<ML≤CL+4
当怪物等级比人物等级高5级或者更高时,获得的经验值,依然等同于杀死高人物4级的怪物。即使是杀死比人物等级高10级的精英怪物,也不能获得更多的经验值。所以MXP*1.2,是杀死高级怪物能过获得的经验值上限。
杀死比人物等级低的怪物,获得的经验值相应变少,获得经验值如下:
XP =MXP* (1-(CL-ML)/ZD) GML<ML<CL
上式中的ZD不是一个常数,其数值如下:
ZD=5  CL∈[1,7]
ZD=6  CL∈[8,9]
ZD=7  CL∈[10,11]
ZD=8  CL∈[12,15]
ZD=9  CL∈[16,19]
ZD=11 CL∈[20,29]
ZD=12 CL∈[30,39]
ZD=13 CL∈[40,47]
ZD=14 CL∈[48,51]
ZD=15 CL∈[52,55]
ZD=16 CL∈[56,59]
ZD=17 CL∈[60,70]
为了后面的计算方便,这里把杀死不同等级怪物获得的经验值,统一表示为:
XP=MXP*DLM
这里DLM是等级差异修正系数,根据以上的说明,那么DLM的值,可以表示如下:
DLM=1.2 当ML≥CL+4
DLM=1+0.05*(ML-CL) 当CL≤ML≤CL+4
DLM=1-(CL-ML)/ZD 当GML<ML≤CL
DLM=0 当ML≤GML
对于以上公式的推导的详细测试数据,可以参见附录1:Solo经验值表。以上公式,以及附表,都部分参考了Greenman的“Solo 经验值表”。Greenman对于Solo经验值公式的推导,作出了很大贡献。不过Greenman原表中的数据,在TBC开放之后,很大部分已经失效。 具体可看附表中关于“GML”和“ZD”这2个参数的历史改变说明。
1.4 精英怪物和副本怪物的经验值
用UnitClassification函数能返回5个值:世界Boss、稀有精英、精英、稀有、普通。稀有精英和精英怪物的经验值,是普通怪物的2倍;稀有怪物的经验值和普通怪物一样;世界Boss的经验值现在还无法确定。
杀死副本怪物获得的经验值,是杀死世界相同怪物获得的经验值的1.25倍,也就是杀死副本精英怪物获得的经验值是标准经验值的2.5倍。
2.队伍经验值分配
2.1 二人队伍经验值分配
二人队伍经验值分配情况,也可以作为5人队伍经验值分配的一种特殊情况来看。不过由于其相对简单,所以这里先讨论。
我们来看人物等级分别为CL1和CL2(其中CL1≥CL2)的2个玩家组成的队伍,杀死一个等级为ML的怪物,2个玩家分别获得的经验值情况。
设2个玩家的基本经验值分别为BXP1和BXP2,对于此等级怪物的等级差修正系数分别为DLM1和DLM2,其中玩家1获得的经验值如下:
GXP1=BXP1*(CL1+2)/(CL1+CL2+4)*DLM1
玩家2获得的经验值如下:
GXP2=BXP2*(CL2+2)/(CL1+CL2+4)*(DLM1+DLM2)/2
(以上2式,也可以表述为GXP1=MXP1*(CL1+2)/(CL1+CL2+4),GXP2=1/2*(CL2+2)/(CL1+CL2+4)*(MXP1*BXP2/BXP1+MXP2),这里MXP1、MXP2分别表示2个人物单独杀死此怪物时的经验。)
我们以7级玩家和5级玩家组队为例,他们Solo 1-7级怪物的经验值如表:
              7               5
  怪物等级    组队   SOLO      组队    SOLO
  1        0     0        3     14
  2        0     0        6     28
  3        9     16       12     42
  4        18    32       18     56
  5        27    48       25     70
  6        36    64       28     73.5
  7        45    80       32     77
7级玩家获得的经验值(列2),等于其Solo经验值(列3)乘以(7+2)/(7+5+4)=9/16,5级玩家组队获得的经验值,等于其Solo经验 值乘以1/2*(5+2)/(7+5+4)=3.5/16,再加上7级玩家Solo的经验值乘以1/2*(5+2)/(7+5+4)*7/8。
总体上,组队之后获得的经验值之和,总是小于各自Solo获得的经验值之和,而玩家等级相同时,作为一种特殊情况,两者相等。
2.2 组队经验值奖励以及暴雪的取整算法
三人以上队伍,组队杀死怪物时,还能额外获得一部分经验值奖励。这部分经验值就是组队经验值奖励。组队经验值奖励的系数如下:
  队伍人数   组队经验值修正系数
  1          GM=1
  2          GM=1
  3          GM=1.15
  4          GM=1.30
  5          GM=1.40
这个系数的涵义是这样的,例如3个等级都是3级的人物,杀死一个4级怪物,那么不算队伍奖励的经验值的话,应该是每人获得21点经验值。而组队奖励就是 21*0.15,也就是说,他们每人实际获得的经验值为24。战斗记录中显示为“获得24点经验值(4点组队奖励)。”
这里要提到暴雪在取整时的不同算法问题。在前面的所有经验值的计算中,取整的时候都不是按照四舍五入来的,而是采用这种算法:如果y-0.5<x≤y+0.5 y∈N,那么取整后x=y,也就是说,2.5取整后是2。
而对于队伍奖励经验值,是采用进位法取整的。所以上面的21*0.15就显示为4点组队经验值。而实际获得的经验值,还是按照前一种取整方式,是21*1.15=24,而不是21+4=25。
2.3 三人以上队伍经验值分配
我们来看人物等级分别为CL1、CL2…CLn(其中CL1≥CL2≥…≥CLn,n≤5)的n个玩家组成的队伍,杀死一个等级为ML的怪物的经验值分配 情况。设n个玩家的基本经验值分别为BXP1、BXP2…BXPn,对于此等级怪物的等级差修正系数分别为DLM1、DLM2…DLMn,n个玩家其中等 级最高的玩家1获得的经验值如下:
GXP1=GM*BXP1*(CL1+2)/(CL1+CL2+…+CLn+2*n)*DLM1
玩家n获得的经验值如下:
GXPn=GM*BXPn*(CL2+2)/(CL1+CL2+…+CLn+2*n)*(DLM1+DLM2+…+DLMn)/n
以上关于组队经验值公式的具体测试数据,可以参看附录2。
另外,由于3开是我的电脑能够达到的极限,所以关于4人和5人队伍的测试数据很少,这里希望有心的读者能够在组队而且比较空闲的时候,帮忙搜集一下。而这里列出的组队经验值分配公式,只是无数个可能公式中的一个,所以如果有异常数据,也希望能够提出。
3.非组队合作杀死怪物经验值分配
暴雪为了防止经验值和Loot掠夺,设定了当2个不在同一团队的人物(或者2个不同队伍、团队等),其中一个先攻击了怪物并造成伤害时,那么另一个再制造伤害也无法获得经验值和Loot。
这里我们把先攻击怪物的一方称之为经验值所有者,后攻击的一方称之为协作者。
协作者总是无法获得经验值,而经验值所有者获得的经验值情况,可以分2种情况讨论。
第一种情况,就是协作者对于此怪物的DLM>0,那么处于非组队情况下合作杀死怪物,怪物经验值所有者将获得100%的经验值。例如一个1级玩家先攻击了 1个1级怪物并造成伤害,然后一个2级玩家帮忙杀死了这个怪物,那么2级玩家获得0经验值,1级玩家获得100%经验值,也就是50点经验值。把这儿的1 级玩家或者2级玩家换成队伍,也一样。
第二种情况,协作者对于此怪物的DLM=0,在此中情况下,经验值所有者获得的经验值,要看协作者的协作是输出还是治疗而定。如果协作者输出了部分伤害, 那么所有者获得的经验值按照各自造成的伤害来分配。而在这里,“过量输出”是不被计算在内的。例如51级玩家先攻击某个51级怪物造成2000点伤害,然 后一个不在同一队伍的60级法师三开大火球制造了5000点伤害帮助这个玩家杀死了怪物,那么其经验值分配是这样的:
首先从[ 《魔兽世界生物生命值研究》 ]这儿可以查询到51级怪物的生命值为2980,那么2个玩家的有效伤害,分别为2000和980。而51级玩家杀死51级怪物的经验值为300,所以51级玩家获得的经验值为300*2000/2980。
关于协作者是治疗而且对于怪物的DLM=0的情况,测试数据很少,大致上是当有效治疗量在某个界限之下时,经验值所有者获得全部经验;当有效治疗量大于某 个数值时,经验值所有者获得很少的经验值。这个数值根据有限测试,猜测可能是怪物生命值。当有效治疗量超过怪物生命值时,经验值所有者获得的经验很少,大 致类似和协作者组队获得的经验值。
协作者为7级人物,经验值所有者为2级人物,杀死1级怪物获得的经验值与有效治疗量之间的关系:
  有效治疗量 获得经验值
  12      44
  23      44
  31      44
  35      44
  39      44
  45      8
  52      8
4.团队经验值分配(略)
团队经验值分配情况,无法测试,暂时从略。


1楼2015-01-19 14:44回复
    二、任务经验值
    1.任务等级与任务的基本经验值
    任务有一个与其等级相对应的“基本经验值”。完成某个等级的标准任务,一般就会获得这个“基本经验值”。所谓标准任务,对于一个泡菜游戏来说,就是那种“杀怪”任务,而且这个任务非精英、非后续。
    任务等级与任务基本经验值的对应关系如下:
      L QXP L QXP L QXP L QXP L QXP L QXP L QXP
      1 80 11 875 21 1650 31 2500 41 3300 51 4900 61 9800
      2 170 12 900 22 1750 32 2550 42 3450 52 5100 62 10050
      3 250 13 900 23 1850 33 2650 43 3600 53 5250 63 10400
      4 360 14 975 24 1950 34 2700 44 3750 54 5450 64 10750
      5 450 15 1050 25 2000 35 2750 45 3900 55 5650 65 11000
      6 550 16 1150 26 2100 36 2800 46 4050 56 5800 66 11300
      7 625 17 1250 27 2200 37 2850 47 4200 57 6000 67 11650
      8 700 18 1350 28 2300 38 2850 48 4400 58 6200 68 12000
      9 775 19 1450 29 2350 39 3000 49 4550 59 6400 69 12300
      10 850 20 1550 30 2450 40 3150 50 4700 60 6600 70 12650
    这里的经验值,在250以下时,以10为单位取整;在250-1000之间时,以25为单位取整;在1000以上时,以50为单位取整。
    上图中的曲线,拐角很多,而且由于取整单位较大,所以暂时无法推测其函数。不过这个表格中的数字,在后面的“发现经验值”部分,将再一次用到。
    2.任务类别和任务生成
    每个任务都是单独定制的,而并非根据公式自动生成,所以有理由相信,每个任务的经验值也是单独定制的,而无法根据某个公式计算得出。但是对于某个任务的经 验值的设定,也并非完全自由的,而是要根据次等级任务的基本经验值乘以某个系数而来。这个系数的值,只有少数的几个:
    10% 一般是引导类对话任务。例如显眼地方的某个NPC1让你去找另一个NPC2接任务,而直接找NPC2也能接到这个任务。
    25% 一般是系列任务中间的对话任务。
    50% 跑路任务、侦察任务、送信任务等。
    75% 一般是精英任务的对话、跑路部分。
    100% 标准任务。
    125% 精英任务,系列任务。
    150% 副本任务,系列任务。
    完成某个等级的一个任务,获得的经验值只有以上7种可能。但是具体是哪一种,只能做出上述大致推测,但是具体到实际情况,由于任务本身的千差万别,无法一 概而论。而且,在计算中所用的“基本经验值”,也并非上表中经过取整后的数据,而是某个“原始数据”,而计算后得出的数值,再次经过取整,所以会有一点误 差。
    以57级任务为例,标准经验值是6000:
    “危难中的船长” 、“悲伤的故事”、“昂贵的模具”这几个任务,能够获得的经验值是600,这几个任务都是和同一个NPC对话后开始任务。
    莫沙彻营地(部落)、羽月要塞(联盟)这2个副本对话任务,能够获得的经验值是1500。
    Desert Recipe(沙虫肉配方的第一步)、兰莎尔拉这几个搜寻类任务,获得的经验值是3000。
    白骨碎片、火羽山(分别为通灵门钥匙第二步、第四步),能够获得的经验值都是4500。
    雷暴和磐石(杀30个怪物)等几个标准任务获得的经验值是6000。
    厄运之槌的几个任务,获得的经验值是7550(之所以不是7500,是因为取整问题),南风村的灵魂那个任务的最后一步“发现过去的秘密”,经验值奖励也是7550。
    57级没有奖励1.5倍经验值的任务。
    3.任务颜色和经验值
    任务也和怪物一样,会显示为红色、橙色、黄色、绿色和灰色5个难度等级。
    自从某个补丁之后,从任务获取经验值变得容易,当任务显示为前面4个难度等级时,都能获得100%经验值。
    官方主页上,有关于任务颜色的说明:
    灰色任务:无价值。你或许根本就不值得接这样的任务
    绿色任务:容易
    黄色任务:一般
    橙色任务:较难
    红色任务:很难
    除了灰色任务,做其他颜色的任务,你都能获得全部经验值。当任务变成灰色时,随着你等级的提升,完成任务获得的经验值越来越少。这是为了防止人们通过做大量超级容易的任务来提升等级。
    任务变成灰色的等级,和怪物变成灰色的等级相同,所以可以参考上面的GML部分。我们把灰色任务的最高等级用GQL表示,那么灰色任务能够获得的经验值如下:
    QXP =任务经验值* (1-(CL-QL)/ZD) CL-ZD+1<QL≤GQL
    QXP=任务经验值*10% QL≤CL-ZD+1


    2楼2015-01-19 14:44
    回复
      三、其它经验值
      1.发现经验值
      发现新的区域时,能获得经验值。这个新区域,值的是小区域,发现大地图例如“东瘟疫之地”,并不会获得经验值,而发现东瘟疫的某个小地图例如“斯坦索 姆”,就能获得经验值。这个经验值的多少,和人物等级、地图等级有关。当人物等级=地图等级时,地图等级和获得经验值的关系如下:
        L XP L XP L XP L XP L XP L XP L XP
        1 5 11 90 21 165 31 250 41 330 51 490 61 970
        2 15 12 90 22 175 32 255 42 345 52 510 62 1000
        3 25 13 90 23 185 33 265 43 360 53 530 63 1050
        4 35 14 100 24 195 34 270 44 375 54 540 64 1080
        5 45 15 105 25 200 35 275 45 390 55 560 65 1100
        6 55 16 115 26 210 36 280 46 405 56 580 66 1130
        7 65 17 125 27 220 37 285 47 420 57 600 67 1160
        8 70 18 135 28 230 38 285 48 440 58 620 68 1200
        9 80 19 145 29 240 39 300 49 455 59 640 69 1230
        10 85 20 155 30 245 40 315 50 470 60 660 70 1250
      稍加对照就可以发现,这个经验值,刚好是“任务标准经验值”的10%,部分数据的差异,也是因为取整造成的。所以只要把任务经验值的曲线图的纵坐标的刻度乘以10%,就是发现经验值的曲线图。
      当人物等级和地图等级的差异在5以内时,开地图能够获得100%的“发现经验值”;当人物等级和地图等级的差异超过5时,获得的经验值减少,修正系数暂时不明。
      2.精力充沛经验值奖励
      处于精力充沛时杀怪能够额外获得部分经验值,这部分经验值为Min(杀怪获得的经验值,精力充沛能够奖励的最大经验值)。例如51级玩家,有100点精力充沛奖励,那么他杀一个51级的怪物,就能获得300+100的经验值。
      精力充沛经验值的奖励上限,为1.5级的经验值(30格)*50%,以30格“双倍经验值”为例,15格是杀怪获得的经验值,15格是额外奖励的经验值。
      在旅馆中休息8小时,获得1格双倍经验,在野外休息24小时获得1格双倍经验值。


      3楼2015-01-19 14:44
      回复
        五、一些应用题
        1.怪物血量、每秒伤害、每秒获得经验值
        考察杀怪获得经验值的速度(XPPS)的话,我们可以发现,主要和这几个参数有关:怪物血量(MH)、每秒伤害(DPS)、怪物经验值(MXP),而且有以下公式:
        XPPS=DPS*MXP/MH
        关于MH,可以参看[《魔兽世界生物生命值研究》 ]。
        这个公式是在怪物数量无限的情况下得以成立的公式,在实际升级中,还要考虑到怪物刷新速度(MPS),也就是说,在野外,能够达到的XPPS还有一个上限,就是MPS*MXP。
        例如西瘟疫的达尔松之泪农场,这个经验值上限就是15万/小时左右。而法师AOE的时候能够保持300DPS的话,每小时能获得的经验值就是300*300/2980*3600=108725,约为10万。
        2.60级时杀大陆怪物合算还是杀外域怪物合算?
        60级大陆怪物的生命值是4120,经验值是345;60级外域怪物的生命值5100,经验值是535。MXP/MH这个数值,前者是0.0837,后者是0.1049。从这个数值来看的话,60级杀外域怪物能够获得的经验值速度,是杀大陆怪物的1.25倍。
        但是上述结论是建立在DPS相同的前提上的,而怪物血量的增加,会使得DPS下降。例如杀一个2个火球就能杀死的怪物,我能保持500DPS,而杀一个需 要5个火球才能杀死的怪物,那么DPS就会下降到300——无法持续输出,需要使用低DPS技能如冰霜新星,需要浪费时间移动拉开距离,偶偶会因为受到伤 害被打断施法。而如果一个怪物需要100个火球才能杀死,那么DPS设置会降到0——我杀不死他。
        而从其他方面推测,也有理由相信外域怪物的伤害、护甲等,也都比相同等级的大陆怪物高。
        当然,精良的装备,可以降低这种因为怪物难度增加而导致DPS下降的影响。也就是说,一个T3级别的玩家,60级时是肯定杀外域怪物合算,而对于一个刚到60级的装备比较糟糕的玩家,杀外域怪物并不合算。
        当然,这儿只是纯粹从获得经验值的角度考虑。而外域能够获得更多的任务经验值奖励,Loot更好等等。
        3.60级玩家带35级玩家刷血色修道院的最佳组队问题
        从经验中我们可以知道,60级玩家带35级小号刷血色修道院升级时,多带一个小号,35级玩家获得的经验值反而增加。而现在我们能够根据组队经验值分配公式来计算最佳组队方案。
        这里我们假设血色修道院的怪物都是39级,能够进入副本的最低人物等级为25。
        2人队,杀死一个39级副本精英能够获得的经验值为:49.33*2.5(其中2.5为副本精英怪物修正系数)。
        那么3人队来看35级玩家获得的经验值情况:
        GXP2=GM*BXP2*(CL2+2)/(CL1+CL2+CL3+2*3)*(DLM1+DLM2+DLM3)/3
        需要考虑的只是(DLM1+DLM2+DLM3)/(CL1+CL2+CL3+6)部分的最大值。
        其中DLM1=0,DLM2=1.2 ,CL1=60,CL2=35已经确定。因而可以推导出,当CL3=25时,GXP3=59.43*2.5为其最大值
        4人队35级玩家获得的经验值为:
        GXP4=GM*BXP3*(CL2+2)/(CL1+CL2+CL3+CL4+2*4)*(DLM1+DLM2+DLM3+DLM4)/4
        当组2个25级玩家时,35级玩家获得的经验值为62.25*2.5,达到最大值。
        5人队35级玩家获得的经验值为:
        GXP2=GM*BXP5*(CL2+2)/(CL1+CL2+…+CLn+2*5)*(DLM1+DLM2+…+DLM5)/5
        当组3个25级玩家时,35级玩家获得的经验值为60.78*2.5,达到最大值。
        所以,当组2个25级玩家,组成一个4人队的时候,35级玩家能够获得最大的经验值。
        4.100小时1-70级的可能性设想
        在非组队合作杀怪经验值分配部分,我们看到了一种最快掠夺经验值的方式,因而可以设想让某个号升到70而/played命令显示的时间少于50小时。当然,这只是一种设想,因为其代价可能是另外40个人每人花掉100小时来支援其升级。
        以50级升到60级为例,如果有20个60级玩家人辅助他升级,就可以采用这样的方式:20人分成4个小组,分别在相邻的4个怪物等级大于52的区域。然 后其中1组聚集怪物,50级玩家造成第一下伤害,然后由这个小组杀死怪物,而此时50级玩家已经在下一个区域对下一批怪物造成了第一下伤害。这样50级玩 家每小时获得的经验,如果本身有AOE技能能够快速造成第一下伤害的话,将会超过50万。


        5楼2015-01-19 14:45
        回复