您的位置:网站首页 > 源码评测 > 正文

源码评测以《魔兽世界》为例教你反推游戏的战斗公式

类别:源码评测 日期:2014-12-18 15:32:34 人气: 来源:
ee4ee.com,繁华的反义词是什么,java面试宝典2013,灵魂战车2qvod,永辉供应商系统,一刀斩到你桃花开,海蓝刀锋,穿越之丑妃来仪,dnf鹰吉在哪,宫原华音,ben10异形群体,德拉诺之主,好色的哈姆雷特,他们生活的世界好看吗,旅行者的苔原猛犸象,掉脑袋机械舞原理,www.33titi.c,东莞石甜甜,ba169航班,三角梨在线制作,崔事班的故事,dms003,天籁之音ova3,邱会作回忆录,txt,legal,high11,碧天如水夜云轻,美知广子猝死图片,瑞安党建网,总裁前夫放了我,田源发型,童爱玲长孙皇后,天之裂片bug,末世执行者,阿碧的结局,龙腾宇内有声小说,竭尽全力造句,美女也愁嫁主题曲,www.96xp.com,tokyo,hot,n0,糗事百科红糖哥,香港ipad3价格,www.747474.c,开封电视台招聘,租妻成婚全集,重庆市北碚区邮编

  通常来讲,游戏的数据表现形式,绝大多数都是黑箱式的,除去获得公开的数据,通过适当或者不太适当的途径获得源码或者策划案之外,大多数时候,也只能依靠反推这个方案了——反推的可行性评估通常基于:

  A,大多数战斗系统或者其他系统,通常都依靠具体的算法和公式为核心

  B,公式和算法通常不会特别复杂,在网络游戏时代,计算战斗过程和结果通常放在服务器端进行,为了应付海量战斗造成的负担上升,算法势必以简单高效为要求

  C,在一个游戏的生命周期内,其底层系统的核心公式通常不会大幅变动(通常可能发生变动的时间是大幅度的更新如游戏资料片,或出现某些不可调和的问题或 bug 时)

  而反推方案的可执行,对执行者的素质要求是:

  1,对输出输出端的所有数据,结果,一般现象和特殊现象有足够的认知和了解

  2,能够构思,建立,验证简单数学模型的能力

  3,能够在游戏中建立测试,对模型进行反复的评估和验证的条件,或者有方法获得用于验证的大量数据样本

  4,最好拥有相关游戏开发的经验或游戏系统的深入了解

  好,下面是具体的例子了:我首先会想起的正是《魔兽世界》(以下简称为 WOW),而且是 60 级年代的,最有趣的那个 WOW。

  那个时候,整个艾泽拉斯的玩家还沉浸在“我操这个游戏好屌”的情绪中,开发方也极少透露出和游戏相关的各种数据,但是仍然有大量的玩家在探求数据系统的奥秘,试图探求黑盒的内部,并且取得了辉煌的结果,更棒的是,他们的结果都后来直接或间接地被证明是正确的。

  第一个故事:

  骰子和百分比之桌(Attack table)——这个问题争论之久涵盖了整个 60 时代,焦点是说,一次普通的可能造成命中,暴击,闪避,招架,格挡,碾压,偏斜还有未命中等等不同的结果——魔兽世界为了凸显即时战斗的多样话和不可预知结果的特性,在一个平砍上就做了这么多的文章。这些数据各自被命中率,暴击率,闪避率,招架率,格挡率(均为百分比数据)和等级差影响,那么这一大堆数字应该看哪个,数学预期到底是怎样的呢?

  艾泽拉斯的民科数学家们,已经因为分成了两个阵营分明的派系,各自有不同的说法:

  多次骰子派认为,每个百分比都是一个的 100% 中的占比;结果的出现是先用随机数决定是否命中,再用随机数决定是否招架,再用一次随机数决定是否暴击……

  单次骰子派即认为,所有百分比都是同一个 100% 中的占比,一次骰子决定结果

  但是后者比较容易遭受质疑的是,显然某些极端情况下,这些百分比的数值之和已经远大于 100 了,因此看起来这个算法就不能成立了

  直到蓝色帖子发布:

  Info on crit and hit chances 2006-08-25 09:54 Aeus

  The way WoW calculates crit rate is over ALL attacks. Crit rate is not based on hits only. In other words, if you have a 5% crit rate, that 5% chance includes misses。

  单 Roll 派才恍然大悟,提出了 Table 制算法——也就是当各种攻防双方各种非命中数据上升时,就好像向一个桌子上摆入更多的杯子,当杯子多到装不下的时候,名叫普通命中的那种被率先挤出去。

  接下来的一大串巨量 combat log 袭来,大量数据证明了这个算法是符合实际情况的,这就很好的解释了大部分现象;其次,部分实验者又用用等级差和装备差,以及利用各种技能产生的极端数据,又一一验证了这个桌上被挤出去的优先顺序列。

  而 elitistjerks 的 Vulajin,一位深思熟虑的盗贼,对于这一结果在物理技能在 PVP 方面的表现存疑,通过超过 50 天,数万次的背刺试验,得到了技能是于平砍的计算方式,是两次骰子的形式来决定结果的结论:Backstab: Two Rolls?

  到了 70 年代,elitistjerks 的 Lactose,一个疑心病很重的猎人,对于猎人的远程物理是否遵循 Attack Table 的一次骰子方式进行了验证,用豪华装备加上极端测试,积攒了数千行有效 combat log,统计并再次验证了远程也完全遵循 Attack table 的结果。

  到此,这个复杂的问题得到了的解决,而之后的 WOW 版本中,更通过减少了碾压和偏斜的发生,进一步简化了平砍的 Table 相关算法:显然从开发者的角度评估,如果能够实现相似的结果,显然一次骰子的算法,要高效于多次骰子,但如果没有确实的公式,算法和规律加以验证,那么终究难以具有足够的力。

  骰子与装备第二个故事:

  道具(装备)哪家强?(Item level)——这个问题更是伴随了 WOW 多半游戏历程,直到”装等“概念已经深入,成为普及观念,也成为衡量一个玩家价值的直接标准(从某种意义上讲我并不喜欢这点)的时候,”两件不同的装备,究竟哪一件更好“这个问题,才基本上不再有人争论。

  但在游戏的早期,大家对装备的概念只有紫的比蓝的好,蓝的比绿的好;到了 60 级中后期,Raid 开始普及紫装的时候,问题就出来了,同样是“60 级”的紫装,到底哪个会更好呢?或者“抢了人女朋友还要不要抢龙人盾呢?”

  在 Addon(各种插件)的同时,WOW 也提供了大量的 API 给开发者调用,其中关于道具,可以取得一个叫做 Item level,也就是物品等级的值,但是这个值,普通玩家不能看到(Patch 3.2 之前),只能通过“物品使用等级”来判断,但是问题如上,到了满级就看不出哪个更屌了——从 60-95 的史诗装备,都标注为“最低使用等级:60”。

  对应的在这里:[翻译]物品等级机制

  Hyzenthlei 一位牛头人萨满,自己琢磨啊计算啊,得到了一个公式

  方程

  下面是经过对 WOW 物品生成的规则进行了很多方程的尝试后得出的结论:

  ItemValue = [(StatValueXStatModX)^1.5+(StatValueYStatModY)^1.5+ …]^(2/3)/100 (X,Y 代表属性的数值,^是指数)

  在这个方程里你要注意到:

  1)它很简单(我害怕那些复杂到搞笑的东西),但并非象所有属性相加那么简单。这意味着物品平衡并非要用一些乱七八糟极为复杂的东西,一些简单的数值就能描绘出这种平衡的方法。

  2)每个属性在公式中的表现都是他本身的 1.5 次方。这样它不会增长得太快,但又可以更好地平衡超高的单独属性。举个例子,一件物品可以有 +29 力量或者 +18/19 力量 / 耐力,这两种情况下物品的 ItemValue 大致上相等(数值足够相近到同等 ilvl 的程度)。

  3)把这些属性的 1.5 次方加起来以后得出的值再化为它本身的 2/3 次方,这能使 ItemValue 不会螺旋型上升。经过这些改变之后,物品的 ItemValue 将基于 ilvl 线性上升。

  严格来说我看到“螺旋形上升”就已经想不明白是怎么个意思了,但是,这一条 Item Value(简写为 IV 清晰的解释了道具等级,道具带来的属性提升,属性的价值,这就意味着,除了极少数明显数值错误的道具之外,对于”我应该如何选择道具,能够使自己的数值成长更多“这个问题的答案已经非常清晰了:获得 ILV,并计算出他的价值就是了。

  我在 60 年代末期,大家还不知道 ILV 是什么概念的时候,就做了一个 addon,核心公式和界面都是抄的,但是增加了几个实用方便的功能:

  1,自动观察每一个视野内的玩家,记录他们的 IV 总值,并存在本地,查询的时候可以进行排名

  2,自动观察队友,一键生成一个 IV 总值列表合计

  3,在装备对比的时候直接显示 IV 和 IV 差值

  其中 1 只要把号在主城挂几个小时,基本就能掌握服务器平均 raid 进度,而第二个功能,在 60 级末期刚刚开始有 20 人野团的时候,这玩意能一下判断出整个团队的硬件状况;第三个则是省了你琢磨换还是不换的问题。

  第三个故事:

  OT 到底该怨谁,神秘的系统(Threat)——这曾经是最让每一个 Raid Leader 头痛的问题,到底是个什么机制,为什么有时候风平浪静,有时候 OT 一波接一波。

  相对于前几个问题,你至少还能看到黑箱输入的所有数据和输出数据;而值我们即无法直观看到输入数据,输出数据也只有一个——OT 还是没有 OT。

  因此,这个反推的难度要高太多了,直到整个 60 年代即将结束的时候,Kencos research on threat这篇帖子的发布,才宣告系统的面纱已经被完全揭下。

  作者 Kenco 和几个朋友,建立了一个简单的设想,即普通的平砍 = 增加,在这个基础上,测出了著名的 0.5(治疗有效值的 0.5 倍相当于产生),1.1/1.3 等几个极为关键的数值(当某个单位的值超过当前目标,近战为 1.1,远程为 1.3 倍时,则发生 OT),的工作原理(瞬间获得相同于最高目标的等量,并强制目标转向)等等,加上对极为含糊的数据描述(产生“大量”“额外的”“较低的”)作出了数据测评,使得玩家头一次有一种拨云见日的感觉。

  在那之后的一段时间内,各种 Tank 职业对于如何制造的技巧大幅增加,而 DPS 们也在如何不 OT 的情况下尽可能增加输出有了良好的理解。

  这一直接影响就是到 70 年代开荒卡拉赞时代,插件就已经普及,控制的难度对于 Raid leader 就是件直观明白的工作了:“那个暗牧少用震爆,马上 OT 了!”。

  系统是 WOW 从 Ever Quest 借鉴并沿袭最为理想的设定之一,其黑箱程度如上所述,在各个系统中也是最高,但仍然被破解了。

  在整个 WOW 的游戏历程当中,类似的情况非常多,例如护甲的加值和减伤效果的推演,和玩家之间的 Arrgo 关系的等等

  既然题主还问了“其他公式”,我们就再讲两个 WOW 以外的故事

  第四个故事:

  谁有利,谁不利——格斗游戏发展到现在阶段,最大的问题不是反应够快不够快,连招练得是不是熟,而是对策是否丰富,而对策是否丰富完全依赖于你对每个角色的数据掌握是怎样的——

  数值差而(硬直差)有利不利翻译过来就是“在你打了我一下,我防住了 / 我了”的情况发生后,谁可以先动的数据,这个数据决定了先发制人还是后发被人制,可以说了解硬直差的人在实战中将有巨大的优势,,强择,确反都靠它了!

  我们强调一下:这个数据表只有一个角色全表的 1/3 长,每个角色的数据条数在 70-120 不等,每条至少记下来发生,硬直,命中硬直差和防御硬直差和值吧 5 条吧,这样每个角色只需要大概其记 400-600 个数据,某些不常用可能不用特别记,平均算 200 个吧,街霸 4 这样 40 来个角色的,需要记的总数据可能也就一万不到,全数据则在两万条上下)

  而在早年,没有提供这种数据的时候,怎办呢……我们的玩家以有些老土的方式,完成了人肉测量:选择两个(起跳速度)相同的角色,你踢我一下,我防住了,然后大家都拉住上,这样大家都会在硬直结束的时候跳起来,然后把这段情况录下来,用视频工具逐帧播放:

关键词:源码评测
0
0
0
0
0
0
0
0
下一篇:没有资料

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

CopyRight 2002-2012 技术支持 源码吧 FXT All Rights Reserved

赞助合作: