人气 418

[随笔/杂谈/经验/分享] MMORPG数值策划的设计架构 [复制链接]

cgsd 2014-1-21 19:03:31

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

一、游戏设计之初

    数值策划在游戏设计之初位于模型建立者的角度。拿到游戏设计概要及系统分析后,数值策划该做什么样的工作,以及需要注意哪些部分呢? 本文中笔者将与大家分享自己在MMORPG的数值设计过程的经验。

    数值设计,前期最关键的不是如何去平衡那些数值,而是要思考如何设计整体的数值架构,才能更好地对游戏进行宏观及微观的控制。在本文中,笔者也将详细阐述MMORPG从设计之初到制作成型中所需要注意和控制的地方,让你可以尽快成为一名合格的数值策划。 而平衡性等话题则是属于微观控制范围,本文不进行详细论述。

数据模型建立

    系统建模与优化是游戏策划尤其是数值策划的一项主要工作,策划需要具有较强的系统思维能力与一定的数学建模能力,还要具备基本的优化理论。主要知识需求为系统分析与集成、系统优化、数学建模、模型分析等。

    数据模型其实就是由两个东西组成,第一个是数据,第二个是数据之间的关系。首先,必须考虑游戏中需要用到哪些数据?生命、经验、金钱、任何一个怪物的攻击……这些都算是数据,然而数据之间还必须有对应的关系,例如主角的生命与怪物的攻击,等级攻击的差别公式,各种不同的属性等等,其实就是存在一个对应关系,关系如何才能合理?就是数据平衡关键所在。

    数据模型建立至少要注意这几个问题:简单化原则,数据类不宜太多,否则会把这一块的难度大大加大了,能用一个数据做到的东西,如果你用两个数据,则会增加很多的对应关系,这个时候需要顾及的东西更多,更难以做到平衡。

数据模型的对应关系确立以后,需要画出对应的函数图像,标注其中涉及的常量、变量。必要的时候,还需要画出数值流向图,最典型就是经济平衡中的金钱流动图以及各种角色属性的对应图。在进行数据模型设计的时候,所有的系统都是一个整体,必须充分考虑其中任何一点可能存在的关联,如果把各个系统数据独立开来,在后期非常容易出现问题。在做完数据模型之后,则要进行整体的数据分析,数据统计和数据分析对于产品相当重要,同时也是游戏数值策划的主要工作,其需要具有敏锐的数据敏感性、具有扎实的概率论与数理统计、数值分析等数学基础。该方向主要工作内容为游戏的系统(玩法)数据统计、游戏的系统(玩法)数据分析、游戏系统设计的数值演算等。

1.核心数值确定

    在我们设计游戏各种核心公式之前,首先必须制定人物的各种数值项目。这部分范围很广,从各种属性到攻击力、命中率,第一第二属性等等都属于人物数值部分。笔者一般采用“关系树”的方式来整合。使用这一结构首先要找到树的根,也就是所有数值共同参考与依据的项目。接下来,由树根衍生出几个重要的节点,再由这些节点衍生更多的枝节。

    让我们先以MMORPG为例,显然以人物等级作为关系树的根是最适当不过的。因为在游戏里,等级的意义基本上代表一个人能力强弱的评判。由等级衍生出来的第二层节点,就是人物的基本属性,笔者一般设定的基本属性包括力量、智力、敏捷、体质、幸运等等。基础属性将根据各自不同的游戏有着不同的定义方法。 在笔者设计的游戏中,只选择五种作为第二层节点,以避免分枝过于庞大。其中幸运为特殊的隐藏属性,而其他的四种基本属性分别是力量、体质、敏捷、智力,并以此来区别物理攻击与魔法攻击。节点选出来之后,只要把剩下来的数值项目依照相应的属性相关挂在节点下面,并进行相应的对照,这株互相纠结的关系树就完成了。

    数值基础属性及项目将可以为以下细分项
    第一属性项:力量,敏捷,体力,智力,幸运等
    第二属性项:基本属性所对应的附属属性
    力量——最小攻击力,最大攻击力,负重,附加攻击力等
    敏捷——命中率,躲闪率(魔法躲闪与命中)等
    体力——当前生命值/最大生命值/物理防御等
    智力——当前法力值/最大法力值/魔法防御等
    第三属性项:各种不同的对应系技能攻击及防御系数等等
    在设计完第二属性之后,则应该就可能出现的数值项目进行细化和整理并进行列表,以方便以后进行函数图对比,推荐使用EXCEL。

2.基础公式设定

    这株关系树是所有核心公式的蓝图,这使得接下来的最复杂工作变得更为清楚。然后是各种公式的拟定与试算。

公式为基础的宏观控制条件,须谨慎思考制定,并与团队同事紧密讨论方能定案

     将人物各种数值定义清楚之后,接下来就是各种公式的计算了。所谓的公式的意义就是正式定义不同属性项目之间的关系,所以在设定公式之前,需先作一次各种成长曲线的函数整理,例如某种成长曲线是大器晚成型的,那就对应二次函数或三次函数的正区间……有了这些整理过后的工具,接下来的工作就是把一条公式所需的各个函数加进来,比如攻击力的计算公式里包含了等级、力量、武器攻击参数、附加值与随机数等。简单拟定公式的模式后,接着就是通过不断的试算来调整系数、使其平衡。

    目前来说,调整公式和数值,有2种比较流行的方法,1种是工具调整,另外一种是读表。

    A. 所谓的工具调整。 就是将公式,对应关系等等通过工具的制作来有效调节。这方面对于程序员要求较高,但是后期对于策划来说,比较简便
    B. 读表法,则是将所有的公式,数值,对应关系值等通过表的形式来填写和读取,制作方法较为简单,但是后期策划则相对容易出错。
    这部分是策划过程中的一个重点,可能要花若干礼拜面对十几条公式与十几万个试验数值,除此之外,与设计、跟踪程序一样,要把调整系数分离出来,以便往后调整平衡度时可以只针对一个系数函数作调整。 因为参数不同。设计游戏的公式,要从需求开始着手。考虑的状况越多,参数就越多,你的公式相对就复杂,也就更难平衡。

其实很多东西都没有绝对的平衡,某些东西从微观上看是平衡,但是从宏观上看,他又有可能破坏了整体。所以设计者要根据对应的游戏世界观及价值观来达到其相对平衡

    实际上这些公式都是为了角色互动所进行制定的。 为什么我们要这么制定呢?其实每个公式都有其制定的思路和方向。 我们之所以这么制定伤害效果和所能得到的经验值,目的是为了让用户在前期多使用物理攻击效果,对游戏尽快入门,升级快从而有可能留在游戏中。 后期让用户大量使用技能攻击效果,并使之多样化,复杂化,让用户觉得有玩点,有兴趣。

二、 游戏制作之中

    在游戏设计之初,我们进行了数据模型的建立、核心数值的确定、基础公式设定3个基本过程。 然而,这样做出来的数值公式等都只是基于我们设计者的初衷,在游戏中能否真正行的通,能否调节,还要看我们下一步的工作。

1.数值期望与可行性

     这里的期望值可以理解成在这个模型下数值可能会达到的最大和最小极限,验证着一个极限的合理范围,则可以为下一步设计做出明确的导向,例如在等级20的生命值,最大最小分别在多少是合理的,将数值放入上一步得出的函数关系式,计算合理范围内的最大和最小极限。

     当然设置这个极限的时候最好多为技术人员考虑一点,例如在数值中避免小数点的出现(浮点运算很耗Server资源),了解一下开发语言中的数据类型,支持的字节多长。

     在设计出数值公式后,进行图表演示,看看是否符合我们的需求和思路

     例如一个经验值公式,我们希望它能越高级,经验值越高,但是不是直线型的,而是呈曲线,前期的数值只是小幅度增高,后期将会大幅度增高。 这样的设计有助于提高玩家的升级积极性,在先期进入游戏的时候能够爽快升级。而到了后期由于则要经过一个阶段的努力才能升级,不过随之而来的奖励也是更多。

2.各种关系的确定

    在确定各种相对的基础公式后,则要开始进行复杂的关系树确定。

    例如经验值之间的关系,物品与角色之间的关系,物品升级对角色,技能,怪物及升级所会产生的影响等等,当然,可能出现的关系很多,我们只取其中一两件来说明。

    以上面的经验值为例。在确定经验值的走向及各项数字之后,我们要做的就是把和经验值有关的项目联系起来。使之成为一个主体。这个联系可能要持续1~2个月的时间进行讨论和调整。 以提升经验值、经验值的奖励、组队奖励、怪物经验值分配等等来进行举例说明:

提升经验

    当玩家积累的经验值达到下一个等级的需求时,则玩家升级。
    经验值计算公式
    得到的经验值=怪物的经验*(玩家对怪物造成的伤害/怪物的最大生命值)*levelDifference
    levelDifference的取值规则:
   奖励最后一击
   玩家给怪物最后一击,可以得到额外的奖励。
   最后一击得到的经验值=怪物的经验*((玩家对怪物造成的伤害/怪物的最大生命值)+3%)*levelDifference
   多人攻击同一怪物
   按照玩家对怪物造成的伤害成比例分配。
   例如:XX怪物的等级为2,经验值为50,生命值为100。1级的玩家甲对它造成40点伤害,9级的玩家乙对他造成60点伤害并杀死了它。
   那么玩家甲得到经验值为50*(40/100)*100%=20
   而玩家乙得到经验值为50*((60/100)+3%)*40%≈12
   一般来说直接取整.

   队友间的经验值分配
   杀死怪物的玩家拿出他所得到的15%的经验值分享给其他伙伴,那么自己就只能得到85%。
   其他队员得到的经验值=(杀死怪物的队员所得到的经验值*15%)*(角色的等级/队伍的等级)
   队伍的等级=所有队员的角色等级的和
   继续上面的例子,玩家甲和乙组成一个队伍:
   玩家甲拿出15%的经验值,即20*15%=3点,那么玩家乙得到3*(9/(9+1))≈2;玩家乙也拿出15%的经验值,即12*15%=1点,那么玩家甲得到1*(1/(9+1))≈0。那么最终玩家甲得到20*85%+0=17点;玩家乙得到12*85%+2≈12点。
        
   我们修改玩家乙的等级,现在玩家乙也是1级的。那么他可以得到50*((60/100)+3%)*100%≈31,然后他拿出31*15%≈4分给玩家甲,自己得到31*85%≈26。玩家甲得到玩家乙分配的4*(1/(1+1))=2,而玩家乙得到玩家甲分配的3*(1/(1+1))≈1。那么最后,玩家甲得到20*85%+2=19;玩家乙得到31*85%+1=27。
        
   备注:如果大家这个公式从目前代入的值来看,总的经验值是有损失的,因为所有除法运算是舍弃小数点以后而取整的。但是从游戏的设计来说,这个损失是允许的,因为组队以后会带来“队友之间不能伤害”以及团队作战的好处。当然,这个办法是否可取,需要在测试时从具体的效果来分析。

经验分配的限定

    不在同一屏幕内的玩家无法共享队友得到的经验值,但是他的等级依然会计算到全队的等级和中,这样就造成了经验总值的损失。
死亡造成经验值损失

   不论是被怪物杀死还是被其他玩家杀死,都会损失到这个经验值所需积累的10%经验值。

   举例:
   玩家有1500点经验值,他在1000点时升到2级,升到3级需要达到3000点。此时他被杀死。那么他损失10%*(3000-1000)=200点。那么他就剩余1300点。
   公式如下:
   损失经验值=10%*(下等级所需经验值-本级所需经验值)
   经验值损失不导致降级
   经验值减少的极限是到本等级所需经验值。即永不低于本等级所需要的经验值。
   举例:
   上例中的玩家又被连续杀死2次,此时减少的经验为3*200=600点,但这将会使他剩余的经验值小于2级的需求,那么就只减少500点。

回复

使用道具 举报

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

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-4-29 20:49 , Processed in 0.067396 second(s), 29 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.