Nw BBS 壬天堂世界

 找回密码
 注册
搜索
热搜: 资料集合
查看: 1918|回复: 11
收起左侧

[转]一大学生对魔兽争霸的分析论文!

[复制链接]
发表于 2005-12-10 00:00:32 | 显示全部楼层 |阅读模式
摘要:通过对魔兽争霸中兵种各种数据的分析,建立系统的性能评估函数,并对一般战争模型在该游戏中的应用及相应修正,进行了阐述。

  关键词:即时战略游戏 电子竞技 战争模型 魔兽争霸

  电子竞技作为新兴的一项体育运动,已受到社会各个阶层越来越多的关注,但目前,电子竞技选手水平的提高,都还仅仅停留在感性“经验”的层面,对电子竞技的理性研究的力度远远不够。以数学的角度对各种电子竞技项目进行剖析,显得尤为的必要,本文以时下最
  流行的电子竞技项目——魔兽争霸为例,用数字化的理性分析为基础,对电子竞技的本质问题,做作了初步的探索。

  1.魔兽争霸兵种数字化分析

  1.1资源消耗
  在现实的战争中,各种战略物资,例如:飞机,大炮,弓单Yao等,都涉及到大量不同的资源消耗,比如说:钢材,燃油,电力等等,作为即时战略游戏的魔兽争霸,本质就是对现实战争的一种数字化的抽象与模拟,该游戏的进行也是紧紧围绕着资源的采集,消耗,分配而展开的

  魔兽争霸中将资源简化成了三个量:金子,木材,人口。分别用G,W,F,来表示,生产游戏中的任何一个作战单位都要消耗相应的资源,这个资源的消耗量就用一个三维向量Z=(G,W,F)来表示,例如生产NE(暗夜精灵族)的一个Archer(弓箭手)就需要消耗130的金子,10的木材,2的人口。那么,决定它的资源向量就为Z=(130,10,2)
  对于金子(G)和木材(W)来说,在整个游戏过程中,都发挥着彼此无法替代的作用,它们是两个完全独立的量,故将他们看作线性无关的两个量,而最后一个人口(F)却可以用(G,W)组成的有序实数对来表示,其对应关系是由各个种族形成人口的建筑来实现的,上面的叙述或许过于抽象,下边就举一个实例来说明这样一种对应关系。
  NE的一个月井提供10个人口,而建造月井的资源消耗量为(G,W)=(180.40)=10人口,由此可以得到NE1人口=(18.4),这就是所说的对应关系,通过这个方法就可以把表示某个兵种的资源消耗的三维向量简化成而维的,具体计算过程如下:

  1.1.1 ZArcher=(GArcher,Warcher,FArcher)=(130,10,2)

  FNE=(GNE,WNE)=(18,4)

  ZArcher=(GArcher,Warcher)+2FNE
  =(130,10)+(36,8)
  =(166,18)

  由于四个种族提供人口的建筑的资源消耗量不尽相同,所以响相应的就有四个转化公式,如下:

  1.1.2 NE1人口=FNE=(18,4) Z=Z绝对资源消耗量+n FNE (n∈正整数)

  UD1人口=FUD=(15,5) Z=Z绝对资源消耗量+n FUD (n∈正整数)

  Hum1人口=FHUM=(13.3,3.3) Z=Z绝对资源消耗量+n FHUM (n∈正整数)

  Orc1人口=FORC=(16,4) Z=Z绝对资源消耗量+n FORC (n∈正整数)

  (注:Z绝对资源消耗量就是不考虑人口因素时,该兵种对G,W的需求量)

  利用上述这四个公式就可以将游戏中的任何一种兵种的资源消耗向量,由三维的转化成二维的,直观的反映了该兵种的资源消耗情况,同等情况下,资源消耗量少的兵种显然是首选,因为这以为着可以用尽可能少的资源生产尽可能多的作战单位.

  1.2 战斗力

  实际战争中,各种作战单位的效能是不尽相同的,这种差异就表现在该单位在战场上的存活能力以及对敌方的杀伤能力,例如:一辆坦克无论是在存活能力还是杀伤力都远远大于单个的步兵.然而,这种差异是很难度量的,魔兽争霸就将这种差异抽象成如下的几个数据:

  攻击力值:该数据反映了作战单位对敌方的杀伤力,数值越大则表明该单位对敌方单位的杀伤力越强,体现战斗威力的强弱,该数值用AP表示
  单位的血值:该数据反映了作战单位所能承受攻击的能力,数值越大则表明该单位所能承受敌方攻击的能力越强,这也就意味着在战斗中能存活更长的时间,该数值用HP来表示
  攻击间隔时间:即战斗单位从上一次攻击结束到下一次攻击开始的间隔时间,数值越大说明该单位的攻击速度越慢,越小则说明攻击速度越快,是对攻击频率的一种抽象模拟,该数值用Cooldown(c)表示

  (注:魔法单位还由MP值,此处暂不考虑)

  魔兽争霸就是通过这些方式,将现实战争中无法度量的效能抽象出来,转化成游戏中可以度量的数据,再将其赋予游戏中一些相应的虚拟单位,这种思想方法贯穿了整个游戏的始终,构成了游戏的框架和基础.我们可以通过这些数据,对某个具体兵种的战斗效能有一个直观的了解.
  并且可以得到这样一个计算,某个兵种战斗力的的公式:
  1.2.1
  P=HP2.AP/c
  ( 注:具体推导方法,见文章后半部分)

  通过这个公式所得到的数据,就被称为:战斗力,显然,对于游戏中的任何一个兵种,可以得到相应的战斗力数据.并且,这个数据可以直观的说明某个兵种在战斗中发挥的效能大小.同等情况下,战斗力数值大的兵种,显然是首选!
1.3 机动性
  一般意义上的机动性指的是物体的在给定空间的移动能力,但是,在魔兽争霸中,各个兵种除了自身的移动速度外,还有一定的攻击距离,必须把这两个因素综合起来考虑,单纯的一个量是不能说明问题的.与其他情况类似,魔兽争霸中各个兵种的移动力和攻击距离也都被赋予了相应的数据,
  用s表示移动速度,用l表示攻击距离.魔兽争霸中的机动性用字母j来表示,规定j=s.l。

  举例:huntress(NE的女猎手) s1=35 l1=22
  Archer(NE的弓箭手) s2=27 l2=50
  则:j1=s1.l1=35*22=770
  j2=s2*l2=27*50=1350
  显然,j1
  1.4 时间
  简单的列举数据是无法说明问题,因为时间t也是一个至关重要的因素,只有把所有的数据与时间综合起来,才能对某个兵种有个全面的评估,在这里,可以把时间也视为一种资源,从游戏开始到最后战斗结束的这段时间,对于游戏各方都使绝对公平的.如何在相同的时间里,使自己的实力强过对方呢?并且取得最终的胜利,时间t的分配就显得尤其重要了.

  1.5兵种评估函数
  对于衡量每个兵种效能的四中主要指标(Z,P,j,t),显然p和j都与兵种能力成正比,而Z和t却与其成反比,根据这样的关系,建立一个较系统的兵种评估函数:

  X=p*j/|Z|*t

  通过该函数,魔兽争霸中的任何一个兵种就能得到相应的数值,简单的进行比较就可以得出最优选择.

  各种族最优兵种:(略)

  NE:.............UD................
  Hum:............Orc...............
2. 魔兽争霸与战争模型
  2.1一般战争模型
  早在二次世界大战期间,Lanchester就曾经提出了预测战争结果的战争模型,他只考虑双方兵力多少和战斗力的强弱,兵力因战斗减员和非战斗减员而减少,又有后备力量的增援而增加战斗力即杀伤对方的能力,则与单位时间的射击次数射击命中率有关,
  用x(t)和y(t)表示甲乙双方交战时刻t的兵力,可以就看作是双方的士兵人数,并且为了方便研究起见,做了如下三个假设:
  (1). 每一方的战斗减员取决于双方的兵力和战斗力,分别用f(x,y)和g(x,y)表示
  (2). 每一方的非战斗减员率(由疾病,逃跑等引起的)与本方的兵力成正比.
  (3). 每一方的增援率是给定的函数,用u(t)和v(t)来表示.

  由上边可以得到在t时刻关于u(t)和v(t)的常微分方程:

  x’(t)=-f(x,y)-αx+u(t) α>0

  y’(t)=-g(x,y)-βy+v(t) β>0
  若双方发生战斗,我们先分析甲方的战斗减员率f(x,y):当甲方的一个士兵被杀伤之后,乙方士兵攻击目标自然回转移到另一个士兵身上,所以甲方的战斗减员率只与一刚的士兵有关,这里将其简单的设为f和y成正比,则f=ay(a表示乙方平局每个士兵对甲方士兵的杀伤率,即单位时间的杀伤数),将a成为乙方的战斗有效系数,a可以进一步分解为a=rypy,其中ry是乙方的射击率(每个士兵单位时间的射击次数)py是每次射击的命中率.同理,类似的还有g=bx,且甲方的战斗有效系数为b=rxpx,其中rx和px分别是甲方的射击率和命中率,代入前边的模型方程可得:
  x’(t)=-ay-αx+u(t)
  y’(t)=-bx-βy+v(t)
  在实际战争中,由于非战斗减员与战斗减员相比,数字特别小,在建立模型的时候完全可以忽略不计,并且,假设双方都是在没有增援的情况下进行战斗的。记双方的初始兵力分别为x0和y0,则方程可以简化为:

  x’(t)=-ay
  y’(t)=-bx
  x’(0)=x0,y(0)=y0
  由上边的方程可得: dydx =bxay →aydy=bxdx
  对其积分:ay2-bx2=k
  又∵x(0)=x0,y(0)=y0
  代入可得:
  k=ay02-bx02
  由此确定的函数图象是双曲线,如图:

  (略)

  箭头的走向表示着随时间t的增加 ,x(t),y(t)的变化趋势。显然,
  如果k>0时,曲线将与y轴相交,说明,存在某一个时刻t1使得x(t1)=0而y(t1)= 2k/a >0,即当甲方的士兵数为0的时候,乙方的士兵数还是正值。乙方就获得了战斗的胜利。
  如果k<0时,曲线将与x轴相交,说明,存在某一个时刻t1使得y(t1)=0, x(t1)=2-k/b >0, 即当乙方的士兵数为0的时候,甲方的士兵数还是正值。甲方就获得了战斗的胜利。
  如果k=0时,说明,存在某一个时刻t1使得y(t1)=0 ,x(t1)=0。双方士兵数量都成0了,也就是平局。

  2.2魔兽争霸中的战争模型
  魔兽争霸是对现实战争的模拟和抽象,那么战争模型的原理同样适合于它,但并不能直接套用进去,需要对一般战争模型做相应的修正。
  (1)HP反映了战斗中单位的存活能力,用该数值来代替原假设中的士兵数量。
  (2)战斗中,在没有魔法单位存在的情况下,游戏中所有单位的命中率为100%,则战斗的有效系数,就等于兵种单位时间的攻击效果。
  (3)在战斗进行的过程中,增援率和非战斗减员率都可以看作0。
  则原来的模型方程就可以化为:
  HP’甲(t)=-aHP乙(t)
  HP’乙(t)=-bHP甲(t)
  积分之,得aHP2乙-bHP2甲=k
  (注:这就是前边计算战斗力公式的推倒方法,以及为什么用兵种的HP平方作为指标的原因)
  到这个地方,很容易根据一般战争模型的原理,推倒出战斗的结果。

  3,小结
  本文以数学的角度对魔兽争霸进行了较为系统的剖析,把许多“经验”的东西理性化。例如:兵种优劣比较,战斗胜负的原因。尽管,其中所涉及的数学知识还较为浅显,但实践性很强,能为电子竞技选手及爱好者提供一定的借鉴和参考。

  参考文献:(略)
回复

使用道具 举报

发表于 2005-12-10 01:01:49 | 显示全部楼层
这个.......不好意思对魔兽不感冒
回复

使用道具 举报

发表于 2005-12-10 01:40:30 | 显示全部楼层
我抢个椅子........不过抢不抢貌似无所谓.
回复

使用道具 举报

发表于 2005-12-10 10:00:23 | 显示全部楼层
这就是暴风对制作优秀游戏的态度~!
回复

使用道具 举报

发表于 2005-12-10 10:25:39 | 显示全部楼层
这个……是KUSO还是正经……
回复

使用道具 举报

发表于 2005-12-10 16:14:17 | 显示全部楼层
作为论文字数太少 ,难道不知道要10万字以上才叫论文吗
回复

使用道具 举报

发表于 2005-12-10 16:15:15 | 显示全部楼层
晕......
回复

使用道具 举报

发表于 2005-12-10 16:19:12 | 显示全部楼层
原帖由 克罗诺亚 于 2005-12-10 16:14 发表
作为论文字数太少 ,难道不知道要10万字以上才叫论文吗

按你这个标准大学生和硕士研究生都不用毕业了
回复

使用道具 举报

发表于 2005-12-10 16:34:30 | 显示全部楼层
拜了
回复

使用道具 举报

发表于 2005-12-10 16:39:49 | 显示全部楼层
原帖由 fee 于 2005-12-10 16:19 发表

按你这个标准大学生和硕士研究生都不用毕业了


我们的论文要求50页纸以上

一页纸大概是500-800个字
回复

使用道具 举报

发表于 2005-12-10 16:46:48 | 显示全部楼层
原帖由 小毛头 于 2005-12-10 16:39 发表


我们的论文要求50页纸以上

一页纸大概是500-800个字


论文里很多内容都是从网上拷贝的呀
回复

使用道具 举报

发表于 2005-12-10 17:21:05 | 显示全部楼层
天下文章一大抄,还不都是抄来抄去的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|Nw壬天堂世界 ( 京ICP备05022083号-1 京公网安备11010202001397号 )

GMT+8, 2024-5-2 10:41 , Processed in 0.022815 second(s), 3 queries , Redis On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表