by Daniel Achterman
http://altdevblogaday.com/2011/11/29/the-craft-of-game-systems-part-2/
欢迎回来!我上一篇文章(原文/译文)大致介绍了我在游戏系统设计上的做法。我先鉴别出我认为游戏策划都应该去鉴别的游戏设计目标,然后将系统分解并各个击破。这篇文章我将会用我自己的经验来给大家介绍如何设计强大而灵活的游戏系统,主要是面向 RPG 游戏和策略游戏,以及一些小贴士。
回顾
让我们先回顾一下系统设计的原则,如何有效的设计一个游戏系统。一个系统应该是:
- 可理解的:系统的各个部分,以及这些部分如何互相交互,应该都是可以被理解的。
- 一致的:规则和内容应该在游戏的各个地方都表现一致。
- 可预测的:策划们应该能够很容易的在新的假设下预测旧的系统如何工作。
- 可扩展的:对于系统,应该要做到很容易的增加新的规则和内容的类型。
- 优雅的:系统应该能用简单的组件来搭建复杂的系统。
游戏系统的三个组件分别是:参数,规则,内容。设计一个游戏系统最让人担忧的部分是设计开头。我建议将任务分为以下几个步骤:
- 选择游戏使用的参数
- 在游戏需要的范围内,仅可能简单的设计规则
- 定义参数如何在游戏中使用
- 尽可能复杂的设计游戏内容
- 在需要的时候,增加参数,系统,以及内容的类型
让我们一起更仔细的看看这些步骤。
选择游戏参数
选择参数的重要法则是关注于那些对游戏可玩性有着重要影响的参数。很清楚的表达游戏可玩性非常重要——它是形成你需要的参数的标准。如果你的 RPG 游戏具有不同的战斗类型,那么要做一个数据统计来让玩家了解他们的角色是如何战斗的。星际争霸具有两种类型的资源,那是因为何时开始采气是玩家的重要决策,并对游戏性有着重大影响。
- 从角色的统计数据着手。玩家是通过他们的角色的视角来审视游戏的。所有其他的游戏内容都围绕着它们是如何影响角色,比如道具,技能树,研究开销。
- 从基本状态的简单数字着手。仅创建那些能够定义角色行为的数据来完成基本的游戏性。复杂的数据并非是一个有趣游戏的必要条件。
- 去除无关紧要的参数。当玩家不能选择防御类型时,那么就不要设计“物理防御”和“魔法防御”。单独一个“防御值”就够了。
- 做的透明。理想情况下,玩家应该能够通过名字直接得知名字背后的含义。“护甲”和“体力”对当今的玩家来说就是可理解的。“攻击能量”和“THAC0”这种就很难理解。
塞尔达传说就是一个使用了最简单,最透明的设计的典范。角色唯一的数据就是“生命值”,由那些小红心表示。
经典的参数最小化、透明化的设计例子 |
创建简单的规则
规则定义了你的参数是如何工作的。为了保证系统可理解和可预测,针对你的游戏设计尽可能简单的规则来满足可玩性。比如,很多游戏完全没有护甲带来的伤害减免的算法。在龙与地下城中,护甲仅仅是降低你被击中的可能性,而魔兽世界中对于伤害减免的公式则要复杂的多,但这也是为了让那些高护甲的物品变得有存在的必要。
- 保持公式的简单。公式应该尽量用乘法和加法,尽量避免指数和对数的算法。这让玩家更容易理解,也让你自己更容易控制游戏。
- 不要用单一一个参数来表达多个意思。如果“体力”同时影响了攻击力和生命值,那么他会在不同的情况下变得难以理解,并且在你调整数值时也会变得更困难,因为它涉及到多个不同的问题。
好的规则设计对于游戏系统非常重要。创建一个规则来满足游戏的所有需要,同时还做到简单并且优雅的话,是个很大的调整。
创建渐进的参数
渐进的参数反映了游戏过程中数据的变化。比如,在 RPG 中,角色属性的增加使得玩家能够获得更好的伤害,更好的防御道具。在策略游戏中,高级建筑物都带来更大的收益,也有更高的开销。
渐进的形式,对游戏平衡来说很重要。要做一个平衡的游戏,相关参数应该保持一致的增长率,比如玩家角色在战斗中的攻击力和怪物的血量。高等级的东西通常由多个参数共同组成,比如防御,武器伤害,角色状态等。理解参数是如何互相作用的,以及它们是如何渐进增长的,是制造一个可预测、可扩展的游戏系统的关键。
- 按照你希望的角色成长的过程,定义增长比率。有些状态在角色升级时可以自然提升(生命值,核心属性),而有些则是随着获取到更好的物品来提升(防御值,武器伤害)。
- 使用最简单必要的渐进过程和公式。数值可以做成线性的,二次的或者是指数级的,或者做更加夸张的组合。挑一个适合你的并且最简单的来使用。
- 把相关的数值做成类似的增长率。比如,怪物的能量和玩家角色的能量应该同时增长,当然怪物的能量和怪物提供的经验值也是这样。不要把一个做成线性的,另一个做成二次,否则你的游戏将会不平衡。
- 避免变更规则。如果武器伤害在 1 级到 10 级的时候依照某个比率,而 11 级到 30 级的时候依照另一个比率,那样则不太好。避免做出一些不匹配的想法,关注于一个一致的系统。
增长的类型
关于数值的增长有很多类型,通常用到的有线性,多项式/三角函数,以及指数级。
线性增长是最简单的一种,公式结构是 Ax+B,增长率是个常数,容易理解。我一般尽可能多的用这个形式。它的缺点是随着 x 的增加,固定的这个差值会变得越来越不重要。当你有 10 个护甲值时,增加 5 个护甲是很棒的事情,而如果你有 500 个护甲值时,增加 5 个护甲则无足轻重了。
最常见的多项式的增长是二次多项式,它的结构是 Ax^2+Bx+C,随着 x 的增加,变化率也在增加。它很常见是因为它是两个线性增加的乘积。比如,如果怪物的金币掉落是随着等级线性增加的,而玩家升级所需要击杀怪物数量也是线性增加的话,那么玩家每次升级通过击杀怪物获得的金币就是一个二次方的增长了。
指数增长的结构是 C*A^x。它们刚开始增长缓慢,后来异常迅速。这个方式很难用,因为它后期爆发的过快,但是它有着非常有趣的数学特性,使得它很适合某些特定的系统,比如经验值的增长。
创建有趣的、可管理的游戏内容
游戏内容才是真正发生魔法奇迹的地方。内容包括很多,从武器,到玩家技能等。重要的原则是把内容尽可能的设计的丰富有趣。
内容可以做的简单,或者做的丰富。比如,一个物品可以带有增加 1% 的暴击属性,这个是简单的,它的效果对玩家来说是直接,显而易见的。有比如,一个物品可以在角色做出暴击后的 5 秒内增加 50% 的攻击速度,这就比较复杂了,它的价值并非显而易见,它和角色的暴击率相关。
- 从简单的做起,不断的增加内容的类型。不要直接把想法幻化成一个美丽的自定义装备组件系统。应该从最简单的开始做起,随着系统搭建的过程,只有在需要的时候,才去构建新的内容类型,参数等并为它们定义互相交互的行为。
- 确保你自己先简单为内容做一下演算。比如,2 点的强度或者 1% 的暴击率会改变什么?这些都是简单内容的例子,并且估计一下调整平衡时可能的变化。
- 为玩家能够做什么做出决定。在暗黑破坏神二中,大量的物品都影响角色状态,比如强度,敏捷等。但增加技能等级的功能只出现在少数物品上。
- 不要让玩家过度的控制。高自由度只能让玩家觉得这个游戏琐碎。所以别让玩家有机会做这些事情。在魔兽世界中,所有史诗级的物品都在核心数值上做提升,比如敏捷和耐力,但是玩家几乎没有其他任何方式在这些数值上做更多的堆积。
大家都想让设计变得可迭代,但是实际上这点很难做到。也许你们团队里的程序和美术忙于做引擎和设计原画,而你有足够的时间来写下庞大的设计文档来细化整个游戏。你必须抵制这个行为!不要比实际游戏做更多很远的不切实际的设计。找一个方式去把你的设计原型化,无论是用一个简单的引擎,或者 Flash,或者 XNA,甚至是卡牌,并且把这个原型设计摆到实际测试过程中。它将会在后来的开发进程中起到很好的作用。
内容的复杂度和平衡的代价
内容越是简单,就越是能够用数学的方式来平衡游戏。如果内容复杂并且变化多样,就很难用数学来衡量它,并且需要更多的游戏测试来反馈游戏,并调整游戏。
复杂丰富的内容能够给玩家提供一个更有深度,更有趣的游戏体验,如果你们的团队有这个资源来做大量的平衡工作,那么你的内容应该尽量做得丰富有趣。如果只有你自己,那么你应该知道自己的极限,并保持内容的复杂度。
最后:参考
我收到一个来自读者的邮件,希望提供更多游戏系统相关的书或者文章,我很愿意在这里给大家一些参考。
我个人认为 Magic: the Gathering 的 Mark Rosewater(@Maro254)是目前互联网上做的最好的游戏系统设计。他的很多专栏都和 Magic 相关,不少都是在通常意义的游戏设计上是很有深度的文章。比如,这个好设计的十个原则的一部分。
Ian Schrieber(@IanSchreiber)在多个设计领域写了一些在线教程。这里有游戏平衡的一个章节。更新:对于游戏平衡,他写了整个教程。在 gamebalanceconcepts.wordpress.com。
如果你也想推荐文章的话,请跟帖评论,邮件我,或者 Twitter 我。