《Tiny Dice Dungeon》游戏机制分析

Tiny_Dice_Dungeon_Banner
Standard

《Tiny Dice Dungeon》是Flash游戏的聚集地——Kongregate推出的一款像素风格的骰子RPG手机游戏。游戏的独特之处在于以骰子的点数和来作为伤害,并且还可以通过 roll 骰子来捕获宠物。是RPG元素与随机元素的结合。

笔者大约试玩了一个小时,初步了解了该游戏的核心机制,觉得有些地方还是很值得分析的,特此拿出来分析一下。注意这不是攻略,只是对游戏玩法机制的分析。

 

一、核心玩法

1. 这是一个回合制RPG游戏。
2. 玩家每回合都可以roll自己所拥有的骰子,骰子的点数之和即作为本轮的伤害。
3. 一回合内,玩家可以无休止的roll骰子,伤害会累加,但一旦roll出1点,便会强制miss从而错过该回合进攻机会。
4. 当roll出的点数和恰好等于场上最后一只怪的血量时,可以将其捕获为宠物。(对Boss无效)

核心的游戏玩法就这么多,并且这也是开始游戏的5分钟时间内所表现出来的规则。按照“一个游戏应该尽早把核心机制传达出来”的原则,这应该是核心内容了。(辅助的游戏机制也是存在的,例如roll点数相同则翻倍、不同骰子具有不同属性、每个怪有不同骰子属性build、可以挑选不同的宠物等等,但这些机制起到了增强效果,却并不是本质的。)

回合制RPG元素没啥好说的,比较常见。而伤害完全由随机数所确定这一点,却并不常见。因为适度的随机性会增加游戏乐趣,而完全的随机,很有可能使游戏沦为纯粹看运气的游戏,这是很危险的。所以,应该要有一种内在的机制可以控制住这种随机性,那么这种机制是什么?

这个问题暂且先留给读者思考,下文再具体剖析。分析之前,我们需要先解构一下前面介绍的核心玩法,用一种叫做 Machinations 的图形表示语言。

 

二、Machinations 图

Machinations 是一种创建图表的可视化语言。通过一些特定的符号、标记、连接线等来组建出某种结构,以此来表示资源、能量等的分布、流动等情况。它是一种对游戏机制的抽象,但并不反应游戏的画面、音乐等媒体内容。就好比我们画电路图一样,会画一些抽象的符号表示特定的意思,再将其按照某种结构连接起来,可能实际电路元件的位置排列方式和电路图完全不一样,但其结构是一致的。

Machinations 图的作者 Joris Dormans 在其主页上提供了一个 Machinations Tool,这是一个可以交互的Flash,可以理解为 Machination 语言的简易IDE,网址为 www.jorisdormans.nl/machinations

在 Machinations 图 中,有几种很基本的元素,简要介绍如下:

池和资源(Pools and Resources)

Machinations 图中最最基本的元素是 Pools,它是一种可以存放资源 (Resources) 的容器。Pool 用一个圆圈来表示,而 Resources 则呈现为有颜色的小圈堆叠在上面。当一个 Pool 里有太多的 Resources 时,会标记一个数字来表示当前资源的数目。

Pools and resources

资源连接(Resource Connections)

资源可以通过一种叫做 resource connections 的连线从一个节点运送到另一个节点。这种连线以实线的箭头来表示,从资源起点指向资源终点。

Resource connections箭头上的数字表示流速,即1个单位时间内所流动的资源数目。

 

四种激活模式(Activation Modes)

一个节点(例如资源池等)一般具有四种模式:自动、交互、起始、被动。

在 Machinations 图中,其资源分布等是随着时间变化的,而一个节点的不同模式会影响着它如何随时间而变化。特殊地,对于 Pools 来说,只有当它处于激活状态时,才会产生资源的流动。

Activation Mode

自动模式:每一个时间帧该节点都处于激活状态。

交互模式:当鼠标点击时处于激活状态,响应玩家动作。

起始模式:仅在初始化时处于激活状态。

被动模式:一直处于非激活状态,除非被某些元素所激活。

 

值得注意的是交互模式,它需要交互(玩家点击)才能发挥作用,这提供了一种对游戏机制的很好的模拟。

 

三、解构玩法

1.效果

先来贴一张游戏内截图来阐述游戏的基本玩法。

《Tiny Dice Dungeon》攻击效果演示说明:左下角是玩家的骰子区,点击即可投掷骰子,黄色的"ATTACK 9"是指当前累计伤害,右侧的"TOTAL 9"是本次总伤害,点击右下角"END TURN"即可结束本回合。(那个棕色的骰子是1-2 multipier效果,暂时不用管它)

下面,来尝试在 Machinations 中模拟战斗机制。

 

2.单个玩家模块

在战斗界面中的交互其实并不多,一个是选择 roll 骰子(第一次 roll 或继续 roll ),另一个则是用当前的 Attack Point 数来对某只怪发动攻击。同时,界面需要呈现当前 roll 出的值,以及预计的总伤害。

为了使模型清晰,我们做如下简化:

1. 跳过怪物选择步骤,假定目标已确定。
2. 忽略骰子的额外效果及组合效果,这样便和每次只掷一颗骰子等价。
3. 由于技术原因,将自动 miss 改为手动 miss 。

于是便做出如下的 Player 示意图:

TinyDicePlayer Initial这是未运行的界面,双边菱形代表可以操作的按钮,有两个绿色的按钮,分别是Roll和Attack。

当点击Roll时,会触发转化器,“资源”会从Generator被运送至A,这里的“资源”实际上是指攻击点数(Attack Point),其数目由骰子随机生成。

TinyDicePlayer Running1

只要Roll出的数目不是1,Attack按钮就会被激活,此时可以选择继续Roll或者直接Attack。

由于数目太小,我们选择继续Roll,这时便会触发两个动作:一是会生成一个新的随机数到A,二是原来A中的“资源”会被全部运送到B,这表示积累下的Attack Point。

TinyDicePlayerRunning 2此时若选择Attack,那么所有的Attack Point都将转入橙色的C中,进入下一轮的结算。只要新roll出来的数不是1,便可以一直进行下去,否则,所有的Attack Point都将被销毁。

TinyDicePlayer Running3

(该模块源文件下载:TinyDicePlayer.xml ,使用方法见最后附录)

 

3. 整体1vs1模块

以此为构件,我们可以搭出整个战斗场景的模块。如下图所示:

TinyDice Machinations(有些地方是灰色的,代表它当前无法交互。)

这是一个简单的1vs1场景,左边是玩家,右边是怪物,上方是代表回合操作的指示器,下方则是交战的战场。初始时,双方默认有20点的HP,并且蓝方先行。

具体操作和单人模块很类似,不停地Roll不会消耗回合数,而Attack或者Miss则会结束自己的回合。

也就是说,一轮战斗中,你只需要决定自己roll多少下,或者是说,在当前情况下,是继续还是结束。

To Roll, or not to Roll, that's a question.

 

这是一个永恒的话题,同时也贯穿着游戏的始终。如果你能发现这个选择只依赖于当前状态,同时推断出这是个Markov过程的话,你或许能在数学上导出最优的解。但难点在于这是怎么发现的?如何在复杂、随机的过程中,将其模块化、确定化、参数化?这实际上属于建模的范畴。

一旦一个过程被建模了,其运行于背后的机制就会浮现出来。并且,从模型的复杂程度上,也可以看出机制的复杂程度。一个看似很复杂的系统,有可能只是某种单一机制的累赘叠加;而一个看似很容易模仿的游戏,可能背后却是大大小小的机制有机组合后的整体。结构的复杂程度真是令人生畏,我只是管中窥豹罢了。

 

4.随机性的控制

在第一节中提到了这样一个问题:要有一种内在的机制可以控制住这种随机性,那么这种机制是什么?

随机性会失控,一个可能原因是结局对随机事件很敏感。而参照上图,不管是从理论分析、还是实际试玩,你就会发现最后Attack Point的波动范围并没有想象中的那么大。总存在一种策略,使得AP在这种策略下的期望达到极大。(无脑狂Roll策略下AP的期望是0)这限制了上界,而下界也是可以被控制的。同时,由于期望固定,其偏离期望的程度随着试验次数的增多而减弱。越到后期,数值越稳定。

虽然随机性能赋予我们绝地翻盘的能力,但这终究只是孤注一掷的幻想,不能长久。

 

5.可以做更多?

上面介绍的有关随机性的机制其实并不难理解,不通过解构画图的方式也能得出类似的结论。那么,我现在想的是,为何RPG+Dungeon+随机骰子就可以变成一个新的游戏?如果我现在将一些尚未组合过的游戏元素组合起来,可以做一个新的游戏吗?

我的回答是,完全有可能。只是做同样事的人太多了。这需要胆识,也需要运气。

 

四、附录

1. 如何模拟运行本文中提到的Machinations图的例子?

a. 首先打开 Machinations Tool,网址在这里 www.jorisdormans.nl/machinations
b. 从这里下载导出的存档文件(右键另存为):TinyDiceMachinations.xml
c. 在 Machinations Tool 中,点击右侧 File -> Import(I),选择刚才的备份,导入即可。
d. 点击左上角的 Run(R) 按钮,便可以进行交互了。Good Luck!  

2. 想更多地了解 Machinations图,有什么好的方法?

欢迎阅读《游戏机制》一书,从第五章开始,便有详细的讲解。(豆瓣地址