• 注册
  • 关于作者
    企业认证:趣记站长
    关注 6 粉丝 4 喜欢 9 内容 992
    江西省·南昌市
    聊天 送礼
    • 查看作者
    • 角色扮演游戏的升级系统研究

       在一般的角色扮演游戏中,人物的成长是一件相当重要的事,无论是角色扮演游戏或是目前热门的策略型角色

      扮演游戏(简称RSLG),这些升级系统都是游戏的一个重要部份。不过在一般的角色扮演游戏中,人物的升级

      以及成长却有着很多种的处理方式。在本文中,笔者将为各位介绍各种角色扮演游戏中常用的升级方式,并且

      分析各种作法的优缺点。

      在一般的角色扮演游戏中,最常用的升级方式就是乱数式的成长方式。在这种模式中,当一名角色获得升级的

      时候,程式会使用乱数来决定升级的各项指数,也就是说所有的升级数值都不是在控制中,而是依据一个乱数

      表来决定提升的数值。这种升级的方式是如何处理的呢?

      当人物到达升级的标准时,就会进入处理升级的副程式中,在这个副程式中程式会依设计者所定出的一个乱数

      范围,来计算出这名角色所得到的升级指数,然後将这个数值加到需要增加的属性上。

      在这种乱数决定升级的情况下,玩者所能够获得的升级数值,完全是由设计者订定的范围中求出,无论是升级

      的上限或是下限都是在这个范围内,绝对不会有意外的情况发生,就算是设计者如何提高上限与下限,都不会

      改变这些。这种作法虽然可以让设计者很轻松的订出升级的上下限,但是却不能控制升级时的不利因素,那就

      是乱数的成份实在是太高了。若是有一名角色因为运气不好一直只有获得下限的升级数值,那麽它可能会比一

      个一次就获得上限升级数值的角色要弱。举例来说,当这个乱数的范围是一到五的时候,若是角色甲和角色乙

      分别获得上限和下限的升级数值,那麽会发生以下的状况:

      ┏ ┳ ┳ ┓  

      角色甲 角色乙  

      ┣ ╋ ╋ ┫  

      LV1 10 10  

      LV2 15 11  

      LV3 20 12  

      LV4 25 13  

      LV5 30 14  

      LV6 35 15  

      ┗ ┻ ┻ ┛

      各位看看上表,是不是可以看到角色甲在第二级时的数值就已经和角色乙第六级的数值是相同了。由於乱数式

      的升级方式会有这种不公平的情况发生,因此常会使得玩者的努力需要有一些运气的成份在里面;若是运气不

      好,可能原本的努力都无法发挥所要的功效。

      由於乱数式的升级方式有这样的缺点,因此有两种不同的改进办法,首先就是百分比制的升级方式。在这一种

      办法里,角色在升级的时候还是使用乱数来进行,不过在每一个数字的出现比例上却做了一些调整。例如同样

      的升级的范围还是从一到五,但是每一个数字的出现比例调整如下:

      ┏ ┳ ┓  

      数值 出现比例  

      ┣ ╋ ┫  

      1 10%  

      2 20%  

      3 40%  

      4 20%  

      5 10%  

      ┗ ┻ ┛

      各位从上表中可以看到,在这一种处理方式上,每一个数字出现的比例做了一些调整。原本的乱数式中,每一

      个数字的出现比例都是相同的,就以上面的例子来说,每个数字出现比例是百分之二时,因此上限和下限的数

      值比较容易出现,发生不幸的情况比较多;但是在这样子调整後,上限和下限的数值出现的机会就减低了不少

      ,会发生不幸的情况就降低了。

      虽然这样的作法可以降低不幸的发生机会,但是还是无法完全的克服所有的状况,因为还是有可能会发生相同

      的状况,使得玩者陷入属性不佳的情况中。因此另外一种改良的方式~修正值升级方式就这麽出现了。

      其实修正值的升级方式和原本的乱数处理法在计算的时候是完全相同的,只不过是它在升级到一个程度的时候

      ,会来做一次计算并且取出一个修正值,以免玩者因为运气不好无法达到升级的功效。

      在这种作法上,上半部和乱数式的做法完全相同,唯一的不同是下半部的副程式。而这个副程式的作用就是在

      帮一些升级时运气比较不好的玩者取得一点修正值。

      我们就以前面所说的升级的数值是从一到五来做个例子,让玩者每升五级时就可以取得一点修正值。因此若是

      一名角色在五次升级中都只有获得一点的升级值,那麽目前它的数值就是:

      10 + 1 + 1 + 1 + 1 + 1 = 15

      不过在我们的升级表内中等的数值是三,因此当角色升了五级之後,应该可以获得以下的数值:

      10 + 3 + 3 + 3 + 3 + 3 = 25

      这麽说来这名角色因为前五级的升级运气不好,因此少获得了十点的升级指数,所以我们就在这一次把这个缺

      少的数值以修正值的方式补足,从修正值的计算式中可以得出:

      25 - 15 = 10

      就将这个数值加到角色的属性中,让角色不会因为运气太差而有不利的情况。若是角色在升级中都获得比较高

      的数值,那麽修正值就是负的,也就表示不需要有修正值的存在了。

      这种作法完全是为了不让玩者因为升级时运气不好使得属性太低,因此只能算是修正部份数值的作法,虽然不

      能完全解决乱数式的问题,但是可以将不利的因素降低,因此在某些游戏里的确有采用这样的作法。

      除了乱数式的作法外,

      通向DirectDraw之捷径
      利用Directshow开发源Filter,DShow中实现抓图的几种方法,角色扮演游戏引擎的设计原理,关于飞机射击类游戏的设计原理,游戏引擎剖析(十一),游戏引擎剖析(十),游戏引擎剖析(九),游戏引擎剖析(八),游戏引擎剖析(七),游戏引擎剖析(六),游戏引擎剖析(五),游戏引擎剖析(四),游戏引擎剖析(三),游戏引擎剖析(二),游戏引擎剖析(一),渲染状态管理,对2D游戏引擎设计的一些思考,游戏引擎演化史,网络游戏外挂编写初级教程,j2me游戏开发实例讲解
      游戏开发

      还有一种是表列式的升级方式。在这种升级方式中,每一名角色的升级数值都是设计者

      已经订好的,完全不会有任何的变动。它的好处是设计者可以完全掌控所有的升级状况,但是相对的这样子的

      表格需要占掉较多的程式空间。

      举例来说,某个游戏若是采用这种升级方式,那麽在它的记忆体中就需要有这样子的升级表格。若是游戏中有

      七项属性会获得升级,等级共有一百级的变化,那麽基本上它就需要有七百个不同的数值表放在程式中。若是

      一个数值用了两个位元(BYTE),那麽就需要用到1K左右的记忆体。如果说游戏中有四名角色,它们升级情况

      又都是不同,那麽占掉的记忆体就将近有5K了。这麽算起来各位可能觉得不会很多,但是当这种资料越来越多

      的时候,记忆体的消耗也就越来越多,使得程式的空间也越来越小了。

      由於表列式的作法会使得升级的情况比较单调,因此大多数的游戏并不愿意采用这种作法,再加上这一类的作

      法对於记忆体的占用空间也比较高,因此如果不是必要,大多数都不会用这种作法。

      除了以上这些作法之外,还有一种就是指数型的升级方式。这种作法其实就是表列式的改良,因为它将升级的

      表格简化成一个叁数,在升级的时候就依这个叁数来计算能够获得的升级值。现在我就举一个例子来示范。目

      前有一名角色的属性以及升级指数如下:

      o 生命:10 生命指数:10

      o 法力:10 法力指数:10

      o 力量: 3 力量指数: 2

      o 智慧: 2 智慧指数: 2

      o 反应: 2 反应指数: 2

      o 体能: 4 体能指数: 2

      o 运气: 1 运气指数: 3

      那麽当他获得升级的时候,程式就会依这个升级指数来计算升到下一级时的各项属性值。因此在升了一级之後

      ,各项属性的数值就是以下的数字:

      o 生命:20

      o 法力:20

      o 力量: 5

      o 智慧: 4

      o 反应: 4

      o 体能: 6

      o 运气: 4

      用这种作法,在程式内不需要复杂的升级属性表,只需要几个简单的叁数就可以,若是能将各项叁数之间的关

      系加以变化,并作一些运算,那麽可以使升级时的变化更多。举例来说生命的增加和体能有关,或是法力的增

      加和智慧有关,那麽在计算起来时会有比较多的变化,使得整个升级的表现不会太单纯。

      以上这些作法大部份的变化程度都不会很多,没有办法表现出一个人的成长情况。就像我们有时候会形容一个

      人「大器晚成」或是说他「小时了了」这样子的情况都不能表现出来。因此後来又有一种成长曲线的升级方式

      。在这种升级方式中,我们首先要订出几种不同的升级情况。像是:

      A. 平衡成长

      B. 大器晚成

      C. 小时了了

      要达成这种效果,我们需要将升级的总等级数分成几个阶段。我们以一个可以升到一百级的游戏来说,将每十

      级分成一个区块,就可以订出这三种成长情况各要给它多少的数值。

      其实这种曲线式的升级方式,在处理上和指数式的作法差不多,只不过指数式的作法一个人物每一种属性只会

      有一个数值,这个数值是不会改变的。但是在曲线式的作法中,会依不同阶段有不同的升级指数,才可以造出

      不同的成长情况。我们就以一名「大器晚成」的角色来说,这一类的角色在开始成长的比较慢,但是当人物成

      长到一个阶段後,成长的速度就会加快,因此我们可能在前两个阶段只给他们一点的升级指数,後面几个阶段  

      再给他们较高的升级指数,使这名角色会在游戏後期升得比较快。

      反过来说,若是要设计一名「小时了了」的角色,那麽我们在初期可以给他较高的升级指数,但是到了後期就

      要给它较低的指数,如此一来就可以表现出这样的情况。

      事实上,在游乐器中的「光明与黑暗续战篇」就曾经用过这一种作法,使得游戏中的每个角色都有各自不同的

      特色。特别是有些属於大器晚成的角色,曾经因为初期成长的速度太慢而被玩者抛弃,但是後来知道这名角色

      的特性之後,再回过头来训练的这种情况,正是这种曲线式升级的特色。这种作法使得角色除了单纯的数字属  

      性之外,还增加了一些隐藏的特性,会让游戏更有味道。

      如果以笔者个人的喜好来说,我是比较欣赏曲线式的升级方式,因为这种方式比较可以隐藏角色的特色,也不

      会因为数字的变化太过单调而让玩者觉得过死板。比起乱数式的不定性和升级指数式的单纯来说,这一种作法

      可以说是兼具了两种的特色,同时还有全新的表现,是一种不错的升级方式。只惜目前国内的游戏很少使用这

      种作法,大多还是采用乱数式的作法,对於国内玩游戏的玩者来说,实在是有些可惜,因为大家没有办法体会

      到这种作法的优点。

      通向DirectDraw之捷径
      利用Directshow开发源Filter,DShow中实现抓图的几种方法,角色扮演游戏引擎的设计原理,关于飞机射击类游戏的设计原理,游戏引擎剖析(十一),游戏引擎剖析(十),游戏引擎剖析(九),游戏引擎剖析(八),游戏引擎剖析(七),游戏引擎剖析(六),游戏引擎剖析(五),游戏引擎剖析(四),游戏引擎剖析(三),游戏引擎剖析(二),游戏引擎剖析(一),渲染状态管理,对2D游戏引擎设计的一些思考,游戏引擎演化史,网络游戏外挂编写初级教程,j2me游戏开发实例讲解
      游戏开发

    • 0
    • 0
    • 0
    • 49
    • 单栏布局 侧栏位置: