做好平衡有多难?谈MMO的职业设计
转自:http://www.gameres.com/804893.html
首先要明确个概念:平衡不是在YY好的职业设计基础上去做调整,而是从游戏设计的开始就要打造一套有标准、可调节的游戏设计框架。
1、设计核心战斗的操作方式和玩法
首先需要解决的,是核心战斗的操作方式。
这一步决定了游戏的节奏感和可玩性。
这一步更依赖于策划对游戏目标人群和游戏节奏的理解,也是更依赖脑洞的一步。一个好的方向作为游戏设计的指南针,才能保证游戏开发中不会跑偏,不会南辕北辙。
2、标准职业模型
作为一个从0开始重新设计的项目,一定是从一个标准模型开始,再把每个职业向不同方向进行职业变化的。
这时我们需要一个最中庸的职业设定:一般是半肉近战,有一定伤害,一定AOE,一定的生存能力。并以这个职业为基础进行第3步的数值设定。
3、构建属性价值体系
构建属性价值体系,是指将所有属性统一到一个相同的单位上,建造游戏的基础数值模型:
3.1:需要根据游戏特点,确定大概是加法公式,还是乘法公式;
3.2:根据想要的战斗时长,设定基础攻防比;
3.3:根据游戏的复杂程度来设定血、攻、甲、爆等一级属性。(这里说明下,一级属性不是越多越好的,要合理控制游戏的复杂度。)
3.4:根据一级属性来构建价值相等的二级属性。(敏捷、耐力、攻击强度等)。
一套好的二级属性要尽量保证“一单位的各种不同属性”带来的战斗收益,对于标准职业模型来说是相近的。
(对于1级属性,1攻击力的效果不可能等于1血量,但通过计算,可以保证二级属性性价比基本相同,即1敏捷=a攻击力=b血量=1耐力)
这样做的好处,一是降低玩家的计算成本,可以让玩家直接看属性种类和数值大小就可以,不用像策划一样就计算每种数值的收益。二是降低玩家的理解成本,例如可以将某几种同类型属性合并(暴击 攻击力=敏捷等),降低二级属性的种类数。三是转化后的二级属性也将用作策划平衡数值的标准和参考,例如在做不同职业设定时,可以根据平衡过的二级属性,直接将战士等量的耐力属性替换为敏捷属性,再稍作修正,作为刺客的基础数值模型。这样会比无头苍蝇一样先胡乱设定个数值好的多。)
(当然,二级属性也不一定需要展示给玩家,看游戏取舍)
3.5:将二级属性扩大为游戏内所有特征。
我胡编的啊,暂时管它叫做三级属性吧。
即把游戏内所有的相关特征统一到以2级属性的单位1为标准的数值体系中。例如攻击距离、移动速度、位移技能的距离、AOE效果衰减比、眩晕效果等,都以数值的形式统一到二级属性中的单位1。
这样,我们则可以把每个技能、每种效果都换算为统一的数值单位。
典型的例如《炉石传说》,我们可以清晰的看到它将所有玩法元素统一到以1水晶为单位的价值体系中(与我们的二级属性类似),1血1攻=1费,卡牌本身=0.5费,过牌=2费,战吼=0.5费,亡语=-0.5费等等。
这样做的好处,一是可以在“做职业设定”和“建立职业的基础模型”时更加高效和准确,只需要把此职业的所有二级、三级属性加起来,即可初步评判此职业的强弱,来作为职业平衡的基础参考;二是可以在不调节每个英雄的属性的前提下,通过调节2级属性和1级属性的换算比,直接调整游戏中的大生态平衡:例如调节战斗时长,T和DPS的平衡,法术和物理平衡,近战远程平衡,控制技能和伤害技能的平衡等等。
3.6:计算每个属性的衰减系数。
单个属性随着数值的不断叠加,收益是递减的。
例如作为防战,经常要牺牲攻击去堆血量,这样会导致整体的战斗力(攻击*血量)下滑,在与标准职业的PVP中处于劣势。
为了平衡这一劣势,经常需要让有明显倾向的职业,二级属性总和略大于平衡型职业。
此时我们需要计算每个属性的收益衰减系数,就是血量提升至a倍时,需要把耐力属性乘以一个额外系数。
在每个职业的设计开始前,先把a对应的一系列系数计算出来,将使得职业设计事半功倍。
以上与属性价值体系相关的所有内容,是帮助设计职业时,提供基础属性参考的。在做具体职业设定时,还需根据具体情况进行各职业的修正,也需要根据新的理解回头调整各系数。
4、职业区分和平衡
制定一套可平衡的属性价值框架后,就可以进行职业区分了。
在标准职业模型的基础上做出差异性,进行有倾向性的改动,例如:将部分生存属性1:1替换为进攻属性,再替换一部分进攻型技能,则可以设计出新职业的标准参考模型,并在此基础上通过大量测试,来进行平衡性调整。
在标准模型的基础上,调整的数值占比越大,则职业特性越明显,越难平衡。
具体的差异性要区分到什么程度,则是仁者见仁,智者智障的过程,没有标准可言。可以在前期设定的框架下,无限开动脑洞。只要不至过于影响平衡,都是合理的范围。具体要定在什么范围,还是看你的项目类型和目标人群定位。
所以如果从这个角度来看,其实不存在所谓的同质性问题。只是职业特点和平衡性之间的取舍而已。
职业特点越鲜明,平衡性越差,这是硬币的正反面,如果你试图去兼顾就错了。只要在其中取得一个更适合你的游戏的平衡点即可。
5、动态平衡
如上文所说,绝对的静态平衡是不可能的,除非你不去区分职业。
但绝对的平衡对于游戏来说也是没必要的。我们还有很多方式来平衡玩家的体验。
5.1:用基础玩法的系统设置去平衡职业:
通过自由选择职业,来绕过平衡的难点,是一种常见且聪明的做法。
例如LOL中,虽然英雄的差别还是很大的,但玩家可自由选择英雄这一点,就几乎弥补了大部分的职业不平衡的问题。
当然这在MMO中不太适合,但也可以通过一些方式来实现:例如WOW中的三系天赋/转职功能等。
WOW中,一个职业的三系天赋几乎可以等同为三个不同职业了。完全不同的技能、完全不同的游戏体验,有的职业甚至要培养不同的装备。
WOW的职业选择,看上去是12选1,其实是36选3,这样对平衡性的要求会降低很多。
5.2:通过养成来削弱职业特点
在养成数值提升较大的游戏中,职业间的差距将会被缩小。
5.3:版本动态平衡
如果无法制造绝对的平衡,那为什么不干脆放弃呢。甚至可以通过故意营造版本间的职业强弱变化来形成相对的平衡。
例如版本1中A最强,则版本2出一个针对B的强化装备或技能即可。
形成相对的不平衡,反而容易引起玩家的话题性。并且使玩家在弱势版本中积蓄的势能,在强势版本中得到释放,形成M型体验。
这样做的关键是不要让单个版本持续过久。
此处所说的版本是体验版本,并不是平时很所说的更新版本。通过游戏内的功能,可以在一个更新版本内形成多个体验版本。
例如在线性解锁的副本中,轮流设置每个职业的强势装备,即可一定程度上达到此目的。
总结下,一个游戏的设计中,先基于核心玩法设计一套可平衡、易调整的数值框架和标准模型,在此基础上再进行职业区分,会让游戏设计事半功倍。
做好平衡有多难?谈MMO的职业设计的更多相关文章
- 浅谈Hybrid技术的设计与实现第三弹——落地篇
前言 接上文:(阅读本文前,建议阅读前两篇文章先) 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 根据之前的介绍,大家对前端与Native的交互应该有一些简单的认识了,很多 ...
- 浅谈Hybrid技术的设计与实现第二弹
前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...
- 两年内从零到每月十亿 PV 的发展来谈 Pinterest 的架构设计(转)
原文:Scaling Pinterest - From 0 To 10s Of Billions Of Page Views A Month In Two Years 译文:两年内从零到每月十亿 PV ...
- 浅谈Hybrid技术的设计与实现
前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发 ...
- (转)浅谈Hybrid技术的设计与实现
转载地址:https://www.cnblogs.com/yexiaochai/p/4921635.html 前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hyb ...
- 浅谈Hybrid技术的设计与实现【转】
https://www.cnblogs.com/yexiaochai/p/4921635.html 前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术 ...
- 朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招
朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招 概览 标题中的高并发架构设计是指设计一套比较合适的架构来应对请求.并发量很大的系统,使系统的稳定性.响应时间符合预期并且能在极端的情况下自 ...
- 【Fiori系列】浅谈SAP Fiori的设计美感与发展历程
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[Fiori系列]浅谈SAP Fiori的设计美 ...
- [转]专访企业QQ SaaS团队,谈企业级LNMP架构设计
FROM : http://www.csdn.net/article/2014-08-20/2821302-interview-tencent-b-qq-shuai-wang 对比IaaS和PaaS, ...
随机推荐
- mariadb增量备份
何为增量备份,简单理解就是使用日志记录每天数据库的操作情况,只需要每天把这个日志里的数据库操作还原到数据库中,从而避免每天都进行完全备份,这种情况下,每周进行一次完全备份即可 首先我们需要配置以下ma ...
- vorpal 又一个方便的cli 开发包
vorpal 是一个npm 包,我们可以用来开发专业的cli 程序 简单使用 初始化项目 yarn init -y 添加依赖 yarn add vorpal 简单demo app.js // cons ...
- js中的eval函数另一种实现
js中有一个函数eval可以一段文本改为js代码,本来使用eval也可以达到目的,但自己看了不少资料都不推荐使用eval函数,于是自己就在思考有没有不使用eval的方法? 其实需求很简单,就是把一个 ...
- MySQL中正则表达式
正则表达式是用来匹配文本的特殊的串(字符集合),将一个模式(正则表达式)与一个文本串进行比较 从文本文件中提取电话号码 查找名字中间带有数字的文件 文本块中重复出现的单词 替换页面的URL为这些URL ...
- mysql全备和增量备份以及恢复过程(percona工具)
实验环境 系统环境,内核版本和xtrabackup工具版本 [root@linux-node1 mysql]# cat /etc/redhat-release CentOS Linux release ...
- vue-cli 3.x 使用
vue-cli 3.x 安装:npm install -g @vue/cli vue-cli 3.x 常用命令 vue-cli 3.x 常用命令 命令含义 vue --help vue-cli 3.x ...
- amqp 和 exchange 详细解释
amqp 的 excange 字面意思是一个交换机.他的任务是吧 消息 分配给消息队列. amqp 的 exchange 有三种,分别是 Direct , fanout 和 toppic.三种. ...
- 通过阅读python subprocess源码尝试实现非阻塞读取stdout以及非阻塞wait
http://blog.chinaunix.net/uid-23504396-id-4661783.html 执行subprocess的时候,执行不是问题最麻烦的是获取进程执行后的回显来确认是否正确执 ...
- STL 的 vector 根据元素的值来删除元素的方法
vector 的 erase( ) 只能删除迭代器,所以要想删某种值的元素,需要这样: 假设有一个 vector 叫 vt ,则 vt.erase( remove( vt.begin() , vt.e ...
- JS 判断IE(转)
一.: 之前,js判断的方式都是利用浏览器的useragent字段.通过判断useragent字段里面是否包含有MSIE字段来判断是否是IE系列浏览器,屡试不爽. 但是在IE11之后,微软把自家的IE ...