type
status
date
slug
summary
tags
category
icon
password
PCG(Procedural Content Generation)内容动态生成 - 游戏分析 - Keep Talking and Nobody Explodes - 学习笔记
原书名称: Procedural Generation in Game Design
作者:Tanya X. Short & Tarn Adams.
Tanya X. Short是Kitfox Games的总监兼设计师,该工作室开发的比较出名的游戏有Moon Hunters, Shattered Planet, Dwarf Fortress, Boyfriend Dungeon等。而Tarn Adams则是Dwarf Fortress的开发者之一。他们在对PCG系统的研究上都有着自己独特的理解和想法。他们所著的这本书中包含了许多成功的应用了PCG系统的案例,也介绍了各种各样内容动态生成的算法。有着计算机背景的同学会更容易理解本书中的内容,没有的同学也可以从本书中学到游戏内容生成的各种思路。
该书的第12章,主要讲述了PCG在Keep Talking and Nobody Explodes (中文翻译 继续说就不会炸) 这款游戏中的应用。要想大致了解PCG是什么可以参考我之前的文章的开头部分。
首先简单介绍一下Keep Talking and Nobody Explodes这款游戏。这是一个双人合作类的拆炸弹游戏,其中一人扮演拆弹专家Expert,另一人则扮演拆弹手Defuser。Defuser需要做的是根据expert的指令,在规定时间内拆除炸弹。而expert需要做的是阅读《拆弹文档》,里面记录了一系列的规则,然后根据这些规则去推出炸弹上密码的答案。限制条件是Defuser是不能去查看文档的,而Expert同样也不可以去看炸弹,游戏的理想状态是两名玩家隔一个较远的距离游玩。两个人在游玩过程中需要一直交流来分享信息,而这也是游戏最有趣的一点(话虽如此,我偷偷单人既看文档也看炸弹上的谜题推了一些关卡,已经觉得很有趣了,要是两个人忙的满头大汗之后炸弹还是爆了,那估计节目效果也是满满的)。
至于这一章设计者分享的游戏运作逻辑,在我看来只能说讲的很笼统,只能说是大概提供了一个设计的方向。深层次的逻辑,随机性是如何解决的之类的没有讲的很细致。但即便如此,也能够看出该游戏设计的精妙。
炸弹分两面,根据关卡难度一面最多包含6个模块,每一个模块包含一个谜题。该游戏的一个亮点是谜题非常多样性且随机。最简单的谜题可能是剪特定颜色的线。比较复杂的谜题可能有走迷宫,解摩斯电码等。
最简单的关卡的炸弹仅包含3个模块,而最复杂的则是全部模块均被谜题填满,即包含11个谜题+1个固定的倒计时模块。想要了解谜题设计的可以参考以下链接:
B站也有很多这个游戏的投稿,搜索“继续说不会炸“就可以搜到很多。
先解释几个概念:
谜题:模块中包含的问题。如有的谜题需要玩家剪断特定颜色的线,有的需要玩家根据指示灯按下按钮。
模块:炸弹中组成部分。炸弹一面,包含最多6个模块,除去一个倒计时模块之外,其他模块需要玩家进行交互。
炸弹的属性:这里特指炸弹本身的属性,而非模块中的谜题。例如炸弹的序列号和电池数量。
Query: 解除谜题的条件 - 例如:如果最后一根线是黑线且序列号末位为奇数,则剪断第四根线。那么加粗部分则是query。
Solution: 解除谜题需要玩家进行的操作。上面的例子中,剪断第四根线则是solution。
比较通用的Procedural Generation (内容生成)
在使用pcg设计这个游戏时,首先要考虑的两点:随机性和游戏难度。随机性是为了确保该游戏能够给玩家带来丰富多样的谜题,通过随机引线的数量,颜色,或是按钮上面的符号,指示灯的颜色,炸弹上的序列号或电池数量等参数。而游戏由于包含很多个关卡,所以游戏的难度应当是逐渐递增的。所以设计师根据谜题的难度,主要是谜题被解出所需要消耗的时间和谜题的类型,来调整各个关卡所包含的谜题种类和数量。
Procedural Logic (生成逻辑)
这一种设计比较容易理解,且在多数游戏中都可以通用。因此,作者提出了另一个不太通用的设计方式:通过pcg来生成游戏规则。该游戏比较特殊,需要一位玩家去实际操作游戏中的炸弹,而另一位玩家则只能查看《拆弹手册》而不能接触到炸弹。因此,在制作过程中需要确保《拆弹手册》和电脑上的游戏规则是完全相同的,不然出现了玩家正确阅读手册反而引爆炸弹的尴尬现象。如果从程序的角度理解,游戏的制作遵循了data-driven method,即通过控制一套相同的数据,改变模版,来输出一套pdf格式的《拆弹手册》,同时也输出一款基于unity的游戏。
《拆弹手册》和游戏中的生成逻辑由相同数据生成
紧接着,设计师分享了游戏中几个谜题的设计方式,其中一个例如摩斯电码:
该游戏中单词与无线电频率的对照表
游戏中摩斯电码是通过短量或长亮的指示灯显示的。值得注意的是《拆弹手册》中特意强调了每个字母的间隔和每个单词之间的间隔,通过指示灯不亮的长度来反映,让玩家们更容易理解。4到5个字母的单词是最合适的难度,既不会让玩家觉得过于难于记忆,也能够享受到解谜成功的乐趣。设计师有谈到,原本可以通过分析单词之间的相似度来调整游戏难度,但由于拆弹手和专家本就存在的交流障碍,并没有选择继续增加单词的差异性。
另一个例子,通过Venn图,作者表明在设计谜题过程中要考虑可能产生的谜题数量。我很喜欢这个图,可以帮助玩家理清思路,也方便设计师设计逻辑。该图总共包含4种参数,而每种参数都有yes or no两种答案,则总共存在16种排列组合的可能性。这还是仅仅对于一条导线来说,通常这个谜题会包含4到5条这样的线,这样谜题的复杂度和随机性都可以得到保证。这样复杂的图再结合游戏中炸弹“滴滴”声音的催促,玩家会感到紧张,但同时又要仔细查看图片和注释,这样游戏的氛围感也上来了。
venn图:通过4种不同的判定方式决定是否该剪断对应的线
除此以外,不得不谈一谈游戏中的rule-based system,通过公示来确定问题与答案。例如挑一根电线剪断的谜题,如果单纯通过列举,什么第一根线是红色,第二根线是黑色,第三第四第五->剪断第一根线,这样的话排列组合的方式则有几千种,那一本规则书怕是没有个三四十页是写不下来的。为了解决这一问题,设计师提出通过以下公式控制谜题与解决方法的生成关系:
query and/or query = solution
所以至此,谜题的解题规则便已基本确定:query + query -> solution
以下两个图是谜题的判定条件和解决办法的伪代码。text used in manual指的是《拆弹手册》中记录的信息,function used in game指的源代码中函数的名称。
谜题的判定条件伪代码
谜题的解决办法的伪代码
那么现在炸弹上谜题生成的基本规则有了,接下来就是考虑如何优化来规则满足以下两个属性:
- Solvability. 谜题必须是可解的。同时每一个的难度需要进行调整,确保5分钟内解决完所有谜题是完全可行的
2. Difficulty. 一个炸弹上所有的谜题需难度不一或类型不一。有的特别考察玩家的记忆能力,有的则考察逻辑推理能力等。
Query的组合
query会需要玩家同时去考虑模块中谜题的信息,和炸弹的一些属性信息。前一类信息处于炸弹的正面或反面,而后一类信息处于炸弹的侧面。前者需要玩家点击模块放大查看,后者则需要玩家转动炸弹。不同的信息获取方式丰富了游戏多样性。而且由于玩家无法同时观察到这两类信息,也增加了玩家的记忆压力,使游戏难度提升。
Weighted Solution Approach
在最初的测试中,游戏中的所有规则以及解决方案都是随机的,但这也造成了相同谜题出现在同一个炸弹上的可能性增加,这会削减游戏的趣味性和多样性,因为设计师想要玩家尝试使用各种不同的思维方式拆解炸弹,而非“一招鲜,吃遍天“。因此设计师们想了一个方法,每当一个query被选中后,这个query的类似query的比重在后续谜题的生成中会降低,但同时出现的概率并没有削减到0。出现的概率少,则玩家在一个关卡遇到相同谜题时会有一种“哦!太巧了!直接剪黑线就过啦!”的心态,他们以为他们发现了捷径,但当结果错误时,他们又会继续质疑自己的记忆。这做为游戏中的一种惩罚,也是为了让拆弹手和专家之间相互交流,以确认正确的解决方式。
Avoiding the Impossible
query与solution需要存在限制确保问题是可解的。拿剪导线谜题举例,如果只是随机生成query与solution,那么很可能会出现极端的情况,例如如果有多于一条蓝线,同时没有蓝线,则剪掉最后一根蓝线。这对游戏体验的破坏是巨大的,因此加了条限制即相同颜色的线的query无法同时出现在同一个query里面,但这同时也移除了一些有效的query,例如:如果有多余1条的蓝线和少于5条的蓝线,则xxx。但设计师们觉得这些有效的query的移除对整体游戏的影响并不大,第一是仍存在大量的排列组合,第二是颜色的多样性也能确保游戏的多样性。
Putting it All Together
为了确保谜题的规则总是有效,且面对同一个谜题时,不会同时有多个规则可供玩家选择,游戏中对规则进行了限制:
- 如果有多条规则同时对一个谜题生效,则排在最前面的优先生效。
- 使用“否则”,来逐渐筛选适应的规则。
- 根据规则的描述准确程度对其进行分类。降低过于精准定位的规则的出现频率,例如“如果没有红线,则剪断第二根线”。提高较需要玩家思考的规则出现频率,例如“如果有不止一根红线且序列号末位为奇数,则剪断最后一根红线”。
总而言之,Keep Talking and Nobody Explodes是一款在pcg方面设计非常巧妙的游戏。不仅是每一关的谜题都是随机生成的,而且规则也是可以进行生成的。这给予了这款游戏后期,仅仅通过修改部分数据,来大改游戏的玩法的可能性。这不仅需要策划们的思维缜密,程序方面的代码也需要确保结构清晰易懂。阅读完本章后很配合制作这个游戏的Steel Crate Games。
- Author:憨憨周周
- URL:https://www.hanhanzhouzhou1998.com//article/cf6be67b-3da6-433f-9886-4cfebee66128
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts