您的位置:首页 > 其它

如何用Machinations示意图来模拟《吃豆人》的游戏机制?

2014-05-07 16:44 316 查看
下面我们来展示一下如何用Machinations 示意图来模拟一个简单游戏的机制。我们使用的案例是经典街机游戏《吃豆人》(Pac-Man),我们将会把模拟这个游戏的过程分解成六步,并在Machinations 示意图中逐个实现它们。首先,我们会找出游戏中最重要的资源。然后,我们会逐项模拟游戏的各个机制。为了便于区分,我们会为每种主要机制指定一种颜色。最后,我们会把这些机制结合起来,构成《吃豆人》游戏的完整机制示意图。

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

游戏中的资源

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

豆子(dots)。游戏的迷宫中散布着许多豆子,玩家必须控制吃豆人把它们全部吃掉才能过关。这里的豆子是一种有形资源,玩家必须全部消灭掉它们才能获胜。豆子的数量是固定的,不会随着游戏的进行而产生,除非玩家进入下一关。

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

水果(fruits)。迷宫中有时候会出现水果,吃豆人吃下水果可以获得额外分数。

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

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

危险度。为了模拟出鬼怪追逐玩家所产生的结果,我们定义了一种叫做危险度(threat)的抽象资源。当危险度越过某个界限时,就表示吃豆人被鬼怪抓住,并损失一条生命。注意,我们并没有模拟迷宫本身的形状(Machinations 没法做到这一点),而只是模拟游戏可能处于的状态,以及资源的流动情况。

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

  以上就是《吃豆人》游戏经济中所有较为明显的资源。为了模拟游戏机制,我们首先将围绕着这些资源构建出一系列系统。注意,危险度这种资源是我们为便于模拟游戏机制而创造出来的。我们对这种资源的模拟方式是主观性的,这并不是游戏原本的构建方式。

豆子

  我们首先模拟一种简单机制:吃豆人吃下豆子,并将它转化为分数。这种机制可以用两个池和一个转换器表示出来,如图5.24 所示。我们用一个含有50 个资源的池代表迷宫中的豆子,再用一个初始为空的池来储存分数。此外,我们设置了一个结束条件,规定当玩家吃掉所有豆子后就算过关。图中代表吃豆子这个行为的转换器是交互式的,每点击它一次,就表示吃掉一个豆子。但需注意,这个转换器的输入端的资源流动速率是存在随机性的,每次点击后,资源并不一定会发生流动。在游戏中,剩余的豆子越多,吃到豆子就越容易。一开始,吃到豆子的几率是100%,但每经过一个迭代(即吃掉一个豆子),这个几率就下降1%。这反映出了玩家在迷宫中边移动边吃掉一个个豆子时所遭受到的挑战。



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

  在实际游戏中,当吃豆人沿着一条未曾探索过的道路前进时,它吃到豆子的概率是100% ;而当它在一条走过的道路上前进时,它吃到豆子的概率是0%。为了近似地表现出这种机制,我们规定,吃豆子(Eat Dot)转换器每被点击一次,成功吃到下一个豆子的概率就降低一些。我们在模拟方案中将豆子被吃掉的概率初始设置为100%,并为它设置了一个标签修改器,这个修改器连接着豆子(Dots)池,使该池产生的变化能通过标签修改器影响到这个概率。如果豆子(Dots)池中的豆子数量在进入下一个时间步长时发生了改变,这个变化就会与状态通路的标签值相乘,最后导致资源通路标签百分数发生变化。当一个豆子被吃掉时(例如豆子数量从50
个下降到49 个),豆子(Dots)池的资源就减少了1 个,将这种变化与“+1%”相乘,就得到“−1%”,从而降低了下一个时间步长中成功吃到豆子的概率。

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

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

  在某些方面,模拟一个新游戏比模拟一个已有的游戏更加容易。当你用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工具中构建出来的话,我们就可以通过实际运行它而体会到这个游戏的一些策略性:当你吃下大力丸后,你可以选择猎食鬼怪以获取分数,也可以选择利用这个无敌时间去吃掉剩余的豆子,以更快地过关。

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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: