以下我们来展示一下怎样用Machinations 示意图来模拟一个简单游戏的机制。我们使用的案例是经典街机游戏《吃豆人》(Pac-Man),我们将会把模拟这个游戏的过程分解成六步,并在Machinations 示意图中逐个实现它们。首先,我们会找出游戏中最重要的资源。然后,我们会逐项模拟游戏的各个机制。为了便于区分,我们会为每种主要机制指定一种颜色。

最后。我们会把这些机制结合起来。构成《吃豆人》游戏的完整机制示意图。

  必须强调的是,我们在这里仅仅是实现了一个近似的模拟,并没有原封不动地将《吃豆人》重现出来。比如,我们在模拟时将鬼怪离开房间的频率设置为固定的,每五个时间步长就有一个鬼怪离开房间。但在实际游戏中,推断鬼怪离开房间时机的算法比这复杂。尽管我们也能够将这样的算法模拟出来,但这会导致示意图过于繁复。毕竟在这个案例中,我们的目的是教你怎样使用Machinations 框架,而不是分毫不差地把实际游戏复制一遍。

游戏中的资源

  我们将使用下面几种资源来模拟《吃豆人》的机制。

  • 豆子(dots)。游戏的迷宫中散布着很多豆子,玩家必须控制吃豆人把它们所有吃掉才干过关。这里的豆子是一种有形资源,玩家必须所有消灭掉它们才干获胜。

    豆子的数量是固定的,不会随着游戏的进行而产生,除非玩家进入下一关。

  • 大力丸(power pills)。

    每一个关卡中都有四个大力丸,吃豆人吞下它们后,就能获得吃掉鬼怪的能力。大力丸是一种稀少的有形资源,玩家必须合理加以利用。跟豆子一样。大力丸在游戏中也无法产生,而仅仅能被消耗掉。

  • 水果(fruits)。

    迷宫中有时候会出现水果。吃豆人吃下水果能够获得额外分数。

  • 鬼怪(ghosts)。游戏中有四个鬼怪,它们会满迷宫追逐玩家控制的吃豆人。鬼怪可能所处的位置有两个:一个是迷宫中央的“鬼怪房间”(Ghost House),还有一个是迷宫中。当一个鬼怪离开房间进入迷宫后。它就開始追逐玩家。鬼怪也是一种有形资源。(注意:资源并不总是有利于玩家的东西。)

  • 生命(lives)。

    游戏開始时,吃豆人拥有三条命。这个游戏中的生命是无形资源。一旦玩家损失掉全部生命,游戏就会结束。

  • 危急度。为了模拟出鬼怪追逐玩家所产生的结果,我们定义了一种叫做危急度(threat)的抽象资源。当危急度越过某个界限时。就表示吃豆人被鬼怪抓住。并损失一条生命。

    注意,我们并没有模拟迷宫本身的形状(Machinations 没法做到这一点),而仅仅是模拟游戏可能处于的状态。以及资源的流动情况。

  • 分数(points)。吃豆人每吃下一个豆子、水果或鬼怪,就会将它们消耗掉,并获得一定分数。这个游戏的目标就是尽可能多地获取分数。分数是一种无形资源。

  以上就是《吃豆人》游戏经济中全部较为明显的资源。

为了模拟游戏机制。我们首先将环绕着这些资源构建出一系列系统。注意。危急度这样的资源是我们为便于模拟游戏机制而创造出来的。我们对这样的资源的模拟方式是主观性的,这并非游戏原本的构建方式。

豆子

  我们首先模拟一种简单机制:吃豆人吃下豆子。并将它转化为分数。

这样的机制能够用两个池和一个转换器表示出来,如图5.24 所看到的。我们用一个含有50 个资源的池代表迷宫中的豆子。再用一个初始为空的池来储存分数。此外,我们设置了一个结束条件,规定当玩家吃掉全部豆子后就算过关。图中代表吃豆子这个行为的转换器是交互式的。每点击它一次,就表示吃掉一个豆子。

但需注意,这个转换器的输入端的资源流动速率是存在随机性的。每次点击后,资源并不一定会发生流动。在游戏中,剩余的豆子越多,吃到豆子就越easy。一開始。吃到豆子的几率是100%,但每经过一个迭代(即吃掉一个豆子),这个几率就下降1%。这反映出了玩家在迷宫中边移动边吃掉一个个豆子时所遭受到的挑战。


注意:在实际的《吃豆人》游戏中,每关有240 颗豆子。我们之所以简化到50 个,是为了缩短游戏的长度。

  在实际游戏中。当吃豆人沿着一条未曾探索过的道路前进时,它吃到豆子的概率是100% ;而当它在一条走过的道路上前进时。它吃到豆子的概率是0%。

为了近似地表现出这样的机制。我们规定,吃豆子(Eat Dot)转换器每被点击一次,成功吃到下一个豆子的概率就减少一些。

我们在模拟方案中将豆子被吃掉的概率初始设置为100%。并为它设置了一个标签改动器。这个改动器连接着豆子(Dots)池,使该池产生的变化能通过标签改动器影响到这个概率。假设豆子(Dots)池中的豆子数量在进入下一个时间步长时发生了改变,这个变化就会与状态通路的标签值相乘。最后导致资源通路标签百分数发生变化。

当一个豆子被吃掉时(比如豆子数量从50 个下降到49 个),豆子(Dots)池的资源就降低了1 个,将这样的变化与“+1%”相乘。就得到“−1%”。从而降低了下一个时间步长中成功吃到豆子的概率。

小提示:在上述样例中,成功吃到豆子的概率是逐渐减少的。而控制这个概率的状态通路的标签却为“+1%”,你是否仍在对此感到不解?记住。状态通路的功能是传达其源节点的变化(将变化量与标签值相乘)。

在这个样例中,变化量始终是负值。因此状态通路传递的也是负值。

  怎样近似地表现出你想构建的机制是用Machinations 模拟游戏时最棘手的问题之中的一个,为此你必须细致思考你所作出的决定的意义。我们在上面的案例中选择了一个我们觉得比較合适的数值。但实际上选择其它值也是能够的。比如,我们能够把成功吃到豆子概率的变化率从1% 改为0.25%,以表示此时玩游戏的是一个高手玩家,这个玩家在大部分时间里都能吃到豆子。在回头路上花费的时间非常少。

  在某些方面。模拟一个新游戏比模拟一个已有的游戏更加easy。当你用Machinations设计一个新游戏时。你能够自由构建不论什么你想要的东西。这个工具最强大的地方就在于你能够不受限制地试验和调整细节,不管多细致都没问题。

水果机制

水果机制(图5.25)与豆子机制类似,但也有一些不同:水果偶尔才会出现,并且假设一段时间内没被吃掉,就会自己主动消失。

我们将一个来源和一个消耗器与代表水果的池相连。以模拟这样的机制。

图中的分数表示每经过20 次迭代,来源就产生一个水果,且每经过5 次迭代,池中的水果就会被消耗掉一个。这意味着水果每20 次迭代会出现一次,并在5 次迭代后消失。此外,我们设置了吃水果(Eat Fruit)这个交互式节点以表示吃下水果的行为,并将这个节点的成功概率设置为50%,以近似地表示出玩家边在迷宫中穿梭,边寻找机会吃掉水果的困难程度。只是,一个水果能够为玩家添加5 分,而一个豆子仅仅有1 分。


注意:在实际游戏中,每一关里水果仅仅会出现两次,而且随着关数的上升,水果提供的分数也会增多。在这里,我们并不模拟多个关卡的情况,因此我们将吃水果的过程调整得更短、更频繁,以便观察它的运作机制。

鬼怪产生危急度

  关卡開始时。四个鬼怪位于鬼怪房间内,之后它们会以固定的频率进入迷宫中。每经过五次迭代,就有一个鬼怪进入迷宫。

每一个位于迷宫中的鬼怪都会产生1 点危急度,我们用黑色的资源来代表这个危急度,此资源由一个自己主动来源生成。图5.26 描写叙述了这样的机制,在图中。迷宫(Maze)池每经历五次迭代会牵引一个鬼怪。每一个进入迷宫的鬼怪会添加上述来源输出端的标签值。

玩家能够点击躲避(Evade)这个交互式随机门来减少危急度。点击以后,它有50% 概率会触发消耗器,从而消耗掉9 点危急度(假设未能触发消耗器,则躲避门不再进行其它不论什么动作,只是玩家能够重复点击尝试)。我们设定这个概率值时是比較任意的,主要目的是说明玩家不一定总能成功从鬼怪手中逃脱。假设你希望改动这张图,以用它表现一个高手玩家的行为的话,能够把这个概率值调高。


注意:在实际游戏中。推断鬼怪何时离开房间的算法十分复杂。为便于教学,我们对其进行了简化。

此外,鬼怪拥有简单的AI。可自行决定移动路线,这一点在示意图中也没有得到体现。由于图中并未模拟迷宫的布局结构。

被鬼怪抓住并损失生命

  当危急度池中的资源数目超过100 时。就表示吃豆人被鬼怪抓住,此时玩家会失去一条生命。如图 5.27 所看到的。与此同一时候,鬼怪们会回到鬼怪房间,此时玩家假设还有剩余的生命的话,能够又一次開始游戏。

我们用一个自己主动触发器(图中的黑色虚线)来表示这个过程,当代表危急度的资源数目超过100 时,这个触发器就被激活。触发器指向一个重置(Reset)门。这个门又引出三个触发器(图中的绿色虚线)。分别指向一个消耗器(用于消耗一条生命)、一条资源通路(用于将迷宫中的鬼怪送回房间)和还有一个消耗器(用于将危急度清零)。


小提示:注意图中连接到重置门的那条状态通路的标签。这个标签写作“>100”,表示此状态通路是一个激活器。激活器连接着两个节点,当标签条件得到满足后。源节点就激活目标节点,在本例中,激活条件是危急度池中的资源数目超过100。

大力丸

  我们最后要加到示意图中的是玩家吞下大力丸后就能吃掉鬼怪的机制。

我们在图5.28中增加了这样的机制(用淡蓝色表示),这张图完整地展现了游戏的机制全貌。大力丸的数量是有限的,玩家能够点击吃大力丸(Eat Power Pill)这个转换器来使用大力丸,从而将大力丸转换为无敌时间这样的资源。无敌时间是一种抽象资源,会不断自己主动消耗。当玩家处于无敌状态下时。鬼怪不再产生危急度,而且连接到危急度池的消耗器会被激活。同一时候。玩家获得一种新能力——能够反过来吃掉鬼怪。

鬼怪被吃掉后。就会被送回鬼怪房间。同一时候玩家获得五点额外分数。


注意:由于无法模拟迷宫的布局结构,所以我们定义了危急度这个概念,并硬性规定危急度达到100 后玩家就会被鬼怪抓住。只是,与实际游戏一样,我们能够通过躲避鬼怪(点击躲避门)来减少危急度。

完整的机制示意图

  图 5.28 近似地模拟出了《吃豆人》的机制,并且具有一定的可玩性。如前面所说过的那样,我们省略掉了游戏中原有的一些机制,此外还对游戏的其它一些细节进行了变动。被省略掉的这些东西是能够用Machinations 表现出来的。但你并不能通过它们学到新东西,相对地,你却能够通过我们已模拟出的这些简单机制学习到很多重要知识,当中之中的一个就是玩家必须在吃豆子、躲避鬼怪、吃水果这几项任务之间找到一个合理的平衡点。

当中,吃水果这项任务与游戏其它部分的关联性较低。水果能添加玩家的分数,但除此之外就没有其它作用了。这使新手玩家能够安心地放弃水果,将注意力放在吃豆子和躲避鬼怪上。

而大力丸则是一种重要资源。必须精打细算地使用。

  假设这个《吃豆人》机制示意图不是画在纸上,而是在Machinations工具中构建出来的话。我们就能够通过实际执行它而体会到这个游戏的一些策略性:当你吃下大力丸后。你能够选择猎食鬼怪以获取分数,也能够选择利用这个无敌时间去吃掉剩余的豆子,以更快地过关。

注意:在实际游戏中,大力丸的持续时间和吃掉一个鬼怪后获得的分数都会随着关卡的推移而发生改变,这里我们并未模拟多个关卡的情况,因此我们简化了这些要素。




版权声明:本文为博主原创文章,未经博主同意不得转载。 举报
  • 本文已收录于下面专栏:

相关文章推荐

游戏机制新设计工具(Machinations)工作原理

(本文为游戏邦/gamerboom.com编译,拒绝不论什么不保留版权的转载,如需转载请联系:游戏邦) http://gamerboom.com/archives/58940/ 在全部游戏设计的概念中,游...
  • kenkao
  • kenkao
  • 2015-04-08 14:29
  • 1372

Ernest Adams总结50个最伟大的游戏创意

作者:Ernest Adams 50年曾经,William Higinbotham用一个示波器和一些模拟电路制作了第一款电子游戏。尽管自那以后,游戏已经发生了翻天覆地的变化。但今天的AAA游戏大...

快乐之道:游戏设计的黄金法则

如喜欢本书,请购买正版。 外界评价     《快乐之道》阐述了一些最基础的原理。它们不仅适用于游戏,也适用于全部的娱乐。更好的是,这本书用一种清晰、富有洞察力而且饶有情趣的风格做到了这一点!对于任...
  • tiewen
  • tiewen
  • 2015-07-01 11:03
  • 6429

原文是:机器人project师学习计划

这是知乎上的一个大牛级的人物写的,我感觉这也不仅仅适用于机器人project师 ,适用于全部的计算机专业的学生学习之路。

很具有指导意义。 作者:YY硕 链接:https://zhuanlan.zhihu.c...

Android 上百实例源代码分析以及开源分析

首先 介绍几本书籍(下载包中)吧。 01_Android系统概述 02_Android系统的开发综述 03_Android的Linux内核与驱动程序 04_Android的底层库和程序 05...

HDU 3085 Nightmare Ⅱ(双向BFS)

题目链接:【HDU 3085】 输入n*m的字符矩阵。矩阵中的M速度是3格/m,G的速度是1格/m,Z是鬼,初始有两个。每秒能够变出非常多的分身Z(变出的分身在下一秒钟仍然能够变出无数个分身),占据跟Z...

5个层面解构游戏的设计标准

来自:http://www.cocoachina.com/game/20151116/14212.html 如有侵犯,请来信oiken@qq.com 制作出一款很成功的游...
  • oiken
  • oiken
  • 2016-03-24 20:34
  • 1195

创意改变世界 盘点50个最伟大的游戏创意

50年曾经,William Higinbotham用一个示波器和一些模拟电路制作了第一款电子游戏。尽管自那以后,游戏已经发生了翻天覆地的变化。但今天的AAA游戏大作的成功也部分归功于数年曾经就存在的设...

u3d 镜面反射的效果

建议用ps新建一个rbg为106,106,107的淡黑色图作为这个东东的材质,透明度为40% Shader "Custom / newMirror " { Properties { ...

网络游戏实时动作同步方案手记(1)

by AKara 2010-09-07 @ http://blog.csdn.net/akara @ akaras(at)163.com--------------------------------...
  • 微博
    微信
    QQ
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多仅仅同意输入30个字)