Ch01.简介

Julian Togelius, Noor Shaker, and Mark J. Nelson

前言

欢迎阅读《游戏中的程序化内容生成》一书。据我们所知,这是第一本关于游戏中的程序化内容生成的教科书。据我们所知,这也是该研究领域的第一本全书篇幅的概述。我们希望您发现它有用,无论您是在课程中学习、独自学习还是研究人员。
我们写这本书有两个原因。第一个原因是我们三个人都在研究游戏中的 PCG,我们想要一个很好的概述。由于我们来自不同的方法背景,我们意识到许多研究人员并不了解其他社区已经开发的方法。例如,使用逻辑编程的研究人员和使用进化计算的研究人员可能不知道其他类型的算法也适用于同一问题。来自计算机图形学的研究人员甚至可能不知道人工智能方法正在用于解决 PCG 问题。由于游戏中的 PCG 刚刚开始被视为自己的研究领域,这并不奇怪,但表明需要这样一本书。
第二个原因是我们在哥本哈根 IT 大学教授一门关于 PCG 的课程(实际上,简称为“游戏中的程序化内容生成”),当时我们三个人都是该校的教员。当这门课程于 2010 年开始时,它可能是世界上第一个此类课程。当然,没有教科书可以教它,所以我们用学术论文编写了一个教学大纲,大部分是最近的。随着我们在随后几年的课程教学,教学大纲逐渐成熟,我们觉得我们已经准备好将我们的讲座内容变成教科书了。
在编写本书时,我们以现有课程的结构为基础。事实上,这本教科书的初稿是 2013 年秋季课程第四次迭代的一部分。每章的草稿在相应的讲座之前完成,并作为讲义的讲义分发。这确保了教科书的完整草稿在一个学期内完成,也许更重要的是确保了这本书的设计目的是用作教科书。不幸的是,为每一章添加润色和定稿需要更长的时间,这解释了为什么这本书没有在 2014 年出版。然而,我们相信为这本书增加的工作时间是值得的,因为最终的产品比那些早期的草稿好得多。
正如您将看到的,本书并未严格按照方法或应用领域进行划分。大多数章节都介绍了领域和方法。这遵循我们如何构建我们的 PCG 课程,我们这样做是为了使课程更具吸引力和更容易教授:新方法与有趣且相关的领域一起引入,证明了它们为什么实际上有用,并且可以用作设置实验室练习以进一步试验这些方法。
我们很早就决定让研究领域的许多最活跃的人参与进来,尤其是那些写过我们最初教授课程时所依赖的论文的人。因此,大多数章节都是与其他研究人员合着的。这可确保我们拥有与每章主题最相关的专业知识。
如上所述,本书的主要目的之一是作为教科书。它作为一套课程笔记的起源也有助于确保这本书经过“实战考验”并准备好教学。特别是,本书可用作研究生或本科高级课程的主要课程教材,内容涉及游戏中的程序化内容生成。假设学生熟悉基本的人工智能概念(特别是启发式搜索以及逻辑和机器学习的基本概念),并且学生有一些游戏开发和使用游戏引擎。
这本书可以通过多种方式用作课程文献。一种是每节课都以特定章节为基础,并从与该章节相关的文献中分配几篇最近的论文作为该周的补充阅读。然后可以将每章末尾的作业用作该周的作业,并且可以在课程结束时进行传统的纸笔考试。组织此类课程的另一种方式,更接近于哥本哈根 IT 大学的原始课程的教学方式,可能是利用学期的前半部分进行强化讲座,每周涵盖两章。然后将下半学期用于小组项目。2 最后,您可以随时使用本书的部分内容,例如,如果您想在更大的游戏 AI 课程中教授 PCG。大多数章节都是相当独立的,最重要的依赖于前两章,它们建立了核心概念和术语。因此建议从第 1 章和第 2 章开始,即使只使用本书的部分内容。
本书附有一个网页 pcgbook.com,其中包含书籍章节的数字版本,以及示例讲座幻灯片、相关邮件组和会议的链接以及其他补充材料。我们欢迎对新的补充材料(例如您自己的演讲幻灯片)添加到网站的建议。我们更新的联系信息也可以在这里找到。
当然,在任何一本书大小的工作中,都需要大量其他人的帮助。我们首先要感谢本书各个章节的合作者和共同作者。我们也非常感谢 PCG 课程的学生,他们忍受了本书的各种草稿版本,以及我们的实际讲座,并且在许多情况下提供了非常有用的反馈。 其他几位同事提供了有用的反馈或以其他方式提供了帮助; 这份名单包括Steve Dahlskog, Amy Hoover and Aaron Isaksen。

本章介绍了程序化内容生成领域和这本书的内容。我们从定义关键术语开始,比如游戏内容和程序化生成。然后我们举了一些使用PCG方法的游戏的例子,概述比较重要的PCG方法并且提供了一些不同PCG方法的分类方式。PCG的应用和方法可以用多种方式来描述,比如另一种方式从设计的角度来看待。本章以本书的剩下的内容的总览结束。

1.1 什么是程序化内容生成?

你已经开始阅读《游戏中的程序化内容生成》这本书。本书将包含大量的算法和其他的技术内容,还有一些对于游戏设计的讨论。但在开始本书内容之前,我们先搞一些比较枯燥的东西:定义。特别的,让我们先给程序化内容生成下个定义。 PCG是一种使用有限的或者非直接的用户输入来生成游戏内容的算法。换句话说,PCG是一种可以由它本身或者和人类玩家、设计者来共同创造游戏内容的电脑软件。

这里有一个关键术语内容。在我们的定义中内容包含了游戏中的大部分东西关卡地图游戏规则贴图故事道具任务音乐武器载具角色等。游戏引擎本身不在内容的定义之中,另外非玩家角色的行为——NPC AI也不包含在内。这种对游戏内容定义的限制的原因在于,与程序化内容生成相比,关于角色的行为在游戏人工智能和计算智能领域有更多的使用CI和AI的方法在研究。虽然PCG领域大部分基于AI方法,我们想要和在游戏方面的主流AI方法分开,他们常用来让AI来学习如何玩游戏。像其他的定义(除了数学领域那样)那样,我们对于PCG的定义有点武断而且边缘相当含糊的。我们这么认为,但是可能和其他人对于PCG的定义不太一样。比如有些人使用术语“生成方法”来表示我们定义的PCG的一个超集。

另一个重要的术语是“游戏”。众所周知,游戏很难定义(参见Wittgenstein 对此事的讨论 [36]),我们不会在这里尝试。可以这么说,我们所说的游戏是指电子游戏、电脑游戏、棋盘游戏、纸牌游戏、拼图等。重要的是,内容生成系统要考虑到正在生成的游戏的设计、可用性和约束。这将 PCG 与生成艺术和许多类型的计算机图形学等工作区分开来,这些工作没有考虑到游戏设计的特定限制和可用性。 特别是,生成内容的一个关键要求是它必须是可玩的——应该可以完成生成的关卡、爬上生成的楼梯、使用生成的武器或赢得生成的游戏。

术语“程序”和“生成”意味着我们正在处理创建某些东西的计算机程序或算法。 PCG 方法可以由计算机运行(可能需要人工帮助),并且会输出一些东西。 PCG系统是指将PCG方法作为其组成部分之一的系统,例如自适应的游戏或AI辅助的游戏设计工具。 本书将包含大量关于算法的讨论和相当多的伪代码,并且各章附带的大部分练习都涉及编程。

为了使这个讨论更具体,我们将列出一些我们认为是 PCG 的东西:
• 无需任何人工输入即可为动作冒险游戏(如塞尔达传说)创建地下城的软件工具——每次运行该工具时,都会创建一个新关卡;
• 在太空射击游戏中创建新武器以响应玩家集体行为的系统,因此玩家所使用的武器是其他玩家发现使用乐趣的武器的进化版本;
• 一个可以自行生成完整、可玩且平衡的棋盘游戏的程序,可能使用一些现有的棋盘游戏作为起点;
• 游戏引擎中间件,可迅速用植被填充游戏世界;
• 一种图形设计工具,让用户可以为策略游戏设计地图,同时不断评估设计地图的游戏属性,并提出改进地图的建议,使其更平衡、更有趣。

在接下来的章节中,您将找到对上述所有内容的描述。 现在让我们列出一些我们不认为是 PCG 的东西:
– 策略游戏的地图编辑器,让用户简单地放置和移除物品,无需任何主动或自行生成;
– 棋盘游戏的人工玩家;
– 能够集成自动生成的植被的游戏引擎。

其他几位作者已经解决了 PCG 或我们认为部分是 PCG 领域的问题,虽然这个领域还远未完成 [12, 25]。

1.2 为什么使用程序化内容生成?

现在我们知道了 PCG 是什么,让我们讨论使用和开发此类方法的原因。 事实证明,有许多不同的原因。

生成内容的最明显原因可能是它消除了让人类设计师或艺术家生成该内容的需要。人类既昂贵又缓慢,似乎我们一直需要越来越多的人力。自从电脑游戏发明以来,开发一款成功的商业游戏所需的人月数或多或少地不断增加[1这里有一个关于boxed game和mobile game的小讨论]。 现在,数百人在一年或更长时间内开发的游戏很常见。这会导致盈利的游戏越来越少,负担得起开发游戏的开发者也越来越少,进而导致游戏市场的风险降低和多样性降低。在这个过程中需要的许多昂贵的员工是设计师和艺术家,而不是程序员。一家可以用算法取代一些艺术家和设计师的游戏开发公司将具有竞争优势,因为可以在保持质量的同时更快、更便宜地制作游戏。 (这个论点是由传奇游戏设计师 Will Wright 在 2005 年游戏开发者大会上的演讲“内容的未来”中强有力地提出的,该演讲有助于重新激发人们对程序化内容生成的兴趣。)

当然,威胁要解雇他们并不是将 PCG 卖给设计师和艺术家的方法。 因此,我们可以往好处想:内容生成,尤其是嵌入智能设计工具中,可以增强个人创造者的创造力。 这可以让没有大公司资源的小团队,甚至是业余爱好者,都可以通过让他们不必担心细节和繁重的工作,同时保留游戏的整体控制来创建内容丰富的游戏。

这两个论点都假设我们想要制作的东西类似于我们今天拥有的游戏。 但 PCG 方法也可以实现全新类型的游戏。 首先,如果我们的软件能够以“消费”(玩)的速度生成游戏内容,原则上没有理由让游戏结束。 对于曾经对他们最喜欢的游戏没有更多要清除的关卡、要遇到的角色、要探索的区域等感到失望的每个人来说,这是一个令人兴奋的前景。

更令人兴奋的是,新生成的内容可以根据玩游戏的玩家的口味和需求进行定制。 通过将 PCG 与玩家建模相结合,例如通过测量和使用神经网络来模拟玩家对单个游戏元素的响应,我们可以创建旨在最大限度地提高玩家乐趣的玩家自适应游戏。 同样的技术可以用来最大化严肃游戏(play for learning)的学习效果,或者可能是“休闲”游戏的成瘾性。

使用 PCG 的另一个原因是它可以帮助我们更有创造力。 人类,即使是那些“创造性”天赋的人,也倾向于模仿对方和自己。 通过为给定的内容生成问题提供意想不到但有效的解决方案,算法方法可能会产生与人类创建的完全不同的内容。 在游戏之外,这是一个众所周知的现象,例如 进化设计。

1.3 使用 PCG 的游戏

克服计算机的存储限制是 PCG 技术发展的主要驱动力之一。 1980 年代初期,家用计算机的有限功能限制了可用于存储游戏内容的空间,迫使设计师寻求其他方法来生成和保存内容。 Elite [4] 是解决此问题的早期游戏之一,它通过存储用于程序生成八个星系的种子编号,每个星系有 256 个行星,每个行星具有独特的属性。 另一个早期使用 PCG 的经典例子是 1980 年代早期的游戏 Rogue,这是一款地牢爬行游戏,每次新游戏开始时都会随机生成关卡。 然而,游戏内容的自动生成往往伴随着权衡; roguelike 游戏可以自动产生引人入胜的体验,但其中大多数(例如 Dwarf Fortress [1])缺乏视觉吸引力。

程序化内容生成在商业游戏中越来越受到关注。暗黑破坏神 [2] 是一款动作角色扮演砍杀视频游戏,具有用于创建地图的程序生成,以及物品和怪物的类型、数量和位置。 PCG 是 Spore [15] 的核心功能,其中玩家创建的设计使用程序动画技术进行动画处理。这些个性化的生物随后被用于填充程序生成的星系。 Civilization IV [10] 是一款回合制策略游戏,通过生成随机地图来提供独特的游戏体验。 Minecraft [19] 是一款广受欢迎的游戏,它广泛使用 PCG 技术来生成整个世界及其内容。 Spelunky [39, 38] 是另一个著名的 2D 平台 roguelike 独立游戏,它利用 PCG 自动生成游戏关卡的变化(图 1.1)。 Tiny Wings [13] 是移动 2D 游戏的又一个例子,它具有程序化地形和纹理生成系统,每次重玩时都赋予游戏不同的外观。

1.4 PCG 愿景

正如我们所见,3 年来,程序化内容生成已成为某些已发布游戏的一部分。 在过去的几年里,PCG 的学术研究也激增,来自不同学术背景的研究人员带来了他们的观点和方法来解决游戏内容生成问题。 这导致了许多新方法以及旧方法的变体和组合,其中一些需要进一步研究和开发才能在实际游戏中使用。 本书的章节将介绍近年来研究的许多最重要的贡献。

为了指导正在进行的研究,对我们可能要去的地方有一些愿景是有用的; 这类似于数学和物理等一些研究领域中的“未解决问题”列表。 最近一篇调查论文的作者为程序内容生成定义了三种这样的愿景[31]。 这些是我们用当前技术无法做到的事情,并且可能永远不可能完全按照所述实现,但有助于指出现有技术的局限性,并通过扩展有趣的问题来解决问题。
1.多层次、多内容 PCG 是指内容生成器,对于给定的游戏引擎和游戏规则集,能够生成游戏的所有内容,从而使内容质量高且完美契合。
例如,给定流行的计算机角色扮演游戏 Skyrim 的引擎和规则集,这个虚构的软件将生成背景故事、任务、角色、物品、武器、植被、地形、图形等 成为一个连贯的、可信的新世界和一个有趣的游戏。
2. 基于 PCG 的游戏设计是指创建的游戏不仅依赖于程序性内容生成,而且 PCG 是游戏玩法的绝对核心部分,因此如果你去掉内容生成部分,就不会有 游戏中任何可识别的东西。 在这方面已经取得了一些进展,特别是在 Galactic Arms Race [11] 和 Endless Web [28] 等游戏中,但这些游戏仍然基于既定的游戏类型,并且游戏的核心部分可以在没有 PCG 的情况下运行。
3. 生成完整游戏是指生成器不仅能够生成给定游戏的内容,而且能够生成游戏本身。 这意味着规则、奖励结构和图形表示以及关卡、角色等。在这个方向上已经做了一些工作,主要是为不同类型的游戏生成规则[33、7、20、9], 但是生成的规则到目前为止相当简单。

即将到来的章节中描述的大部分工作都可以被视为朝着这些愿景中的一个或几个方面取得进展,但是,正如您将看到的,还有很多工作要做。 同时,重要的是要记住,为更狭义的任务开发生成器同样值得。

1.5 PCG 解决方案的理想特性

我们可以将 PCG 方法的实现视为内容生成问题的解决方案。 内容生成问题可能是在 50 毫秒内生成看起来并不完全奇怪的具有低细节水平的新草, 也可能是在经过数天的计算时间后为游戏机制生成一个真正原创的想法,或者可能是在设计师编辑游戏中的项目时在后台线程中将它们打磨完美。 解决方案的理想(或要求)属性对于每个应用程序都是不同的。 唯一不变的是通常需要权衡取舍,例如 在速度和质量,或表现力/多样性和可靠性之间。 以下是 PCG 解决方案的常见理想属性列表:
• 速度:对速度的要求变化很大,从毫秒到数月的最大生成时间,取决于(除其他外)内容生成是在游戏过程中完成还是在游戏开发期间完成。
• 可靠性:一些生成器没有逻辑约束,而其他生成器能够保证它们生成的内容满足某些给定的质量标准。 这对于某些类型的内容比其他内容更重要,例如没有出口或入口的地牢是灾难性的失败,而看起来有点怪异的花朵看起来有点怪异,这不一定会破坏游戏。
• 可控性:经常需要内容生成器在某种意义上是可控的,以便人类用户或算法(例如播放器自适应机制)可以指定要生成的内容的某些方面。有许多可能的控制维度,例如人们可能会要求一块光滑的长方形岩石,一辆可以急转弯并有多种颜色的汽车,一个能引起神秘感并奖励完美主义者的关卡,或者一个偶然性无关紧要的小规则集。
• 表现力和多样性:通常需要生成一组多样化的内容,以避免内容看起来像是对一个乏味主题的微小变化。在非表达性的极端情况下,考虑一个关卡“生成器”,它总是输出相同的关卡,但随机改变关卡中间的一块石头的颜色;在另一个极端,考虑一个“关卡”生成器,它完全随机地组装组件,产生毫无意义且无法播放的关卡。衡量表现力本身就是一个不平凡的话题,设计在不影响质量的情况下生成多样化内容的关卡生成器就更不简单了。
• 创意和可信度:在大多数情况下,我们不希望我们的内容看起来像是由程序内容生成器设计的。与人工创建的内容相比,生成的内容可以通过多种方式看起来是生成的。

1.6 PCG的分类

随着现在可用的各种内容生成问题和方法,分类有助于拥有一个可以突出方法之间差异和相似之处的结构。 在下文中,我们介绍了最初由 Togelius 等人提出的 PCG 分类法的修订版。 [34]。 它由多个维度组成,其中一个单独的方法或解决方案通常应该被认为位于该维度两端之间的某个连续统一体上。

1.6.1 在线与离线

PCG 技术可用于在线生成内容,当玩家在玩游戏时,允许生成无穷无尽的变化,使游戏无限可重玩,并打开了生成适合玩家的内容的可能性,或在开发过程中离线生成的可能性。游戏或游戏会话开始之前。在生成环境和地图等复杂内容时,使用 PCG 生成离线内容特别有用。使用在线内容生成的示例可以在游戏 Left 4 Dead [35] 中找到,这是一款最近发布的第一人称射击游戏,通过分析为每个玩家提供动态体验。使用 PCG 技术 [3] 动态地改变玩家行为并相应地改变游戏状态。
NERO [30] 是使用 AI 技术让玩家为一队虚拟士兵进化实时战术的一个例子。 Forza Motorsport [17] 是一款赛车游戏,非玩家角色 (NPC) 可以离线训练以模仿玩家的驾驶风格,然后可以用来代表玩家驾驶。离线内容生成的另一个重要用途是内容的创建和共享。一些游戏,如 LittleBigPlanet [16] 和 Spore [15] 提供了一个内容编辑器(在 LittleBigPlanet 和 Spore Creature Creator 的情况下为关卡编辑器),允许玩家编辑和上传完整的生物或关卡到中央在线服务器,在那里他们可以被其他玩家下载和使用。

1.6.2 必要与可选

PCG 可用于生成完成关卡所需的必要游戏内容,也可用于生成可丢弃或交换为其他内容的辅助内容。必要内容和可选内容之间的主要区别在于必要内容应始终正确,而可选内容则不成立。可选内容的一个例子是第一人称射击游戏中不同类型武器的生成或超级马里奥兄弟[21]中的辅助奖励项目。必要的内容可以是《超级马里奥兄弟》中关卡的主要结构,也可以是进入下一关所需的某些物品的集合。

1.6.3 控制的程度和维度

PCG 的内容生成可以通过不同的方式进行控制。使用随机种子是控制生成空间的一种方法。另一种方法是使用一组参数来控制多个维度的内容生成。在 Minecraft [19] 中生成世界时使用了随机种子,这意味着如果使用相同的种子 [18],则可以重新生成相同的世界。 [24] 中使用内容特征向量来为 Infinite Mario Bros. [22] 生成满足一组特征规范的关卡。

1.6.4 通用与自适应

通用内容生成是指 PCG 的范式,其中内容生成时不考虑玩家行为,与自适应、个性化或以玩家为中心的内容生成相反,后者分析玩家与游戏的交互并基于玩家之前的行为。大多数商业游戏都以通用的方式处理 PCG,而自适应 PCG 最近在学术界越来越受到关注。最近对玩家自适应游戏 PCG 的广泛评论可以在 [37] 中找到。

Left 4 Dead [35] 是在商业游戏中使用自适应 PCG 的示例,其中一种算法用于根据玩家的情绪强度动态调整游戏的节奏。在这种情况下,自适应 PCG 用于调整游戏的难度以保持玩家的参与度 [3]。自适应内容生成也可以与其他动机一起使用,例如生成更多玩家喜欢的内容。在银河军备竞赛 [11] 游戏中采用了这种方法,其中呈现给玩家的武器是根据她以前的武器使用和偏好而进化的。图 1.2 展示了针对不同玩家的进化武器示例。

1.6.5 随机与确定

确定性 PCG 允许在给定相同起点和方法参数的情况下重新生成相同的内容,而随机 PCG 通常不可能重新创建相同的内容。 Elite [4] 中的星系再生是 PCG 确定性使用的一个例子。

1.6.6 建设性与生成-测试

在建设性 PCG 中,内容是一次性生成的,这在类 Rogue 游戏中很常见。 另一方面,生成和测试 PCG 技术在循环中交替生成和测试,重复直到生成令人满意的解决方案。 Yavalath [5] 是完全由计算机程序使用生成和测试范式 [7] 生成的两人棋盘游戏。

1.6.7 自动生成与混合作者

直到最近,PCG 还允许游戏设计师的有限输入,他们通常调整算法参数来控制和指导内容生成,而 PCG 的主要目的仍然是生成可玩内容的无限变化 [39,7,1,2] .然而,已经出现了一种新的有趣的范例,它专注于在设计过程中整合设计师和/或玩家的输入。在这种混合主动范式中,人类设计师或玩家与算法合作以生成所需的内容。
Tanagra [29] 是一个系统示例,其中设计师绘制了 2D 关卡的一部分,并使用约束满足算法来生成缺失的部分,同时保持可玩性。另一个例子是 SketchaWorld 框架 [26],这是一个交互式程序草图系统,用于创建景观和城市景观,设计师可以在其中手动编辑和调整生成的结果,同时保持虚拟世界模型的一致性。 Ropossum [23] 是另一个最近使用 PCG 完成未完成设计的例子,建议修改、处理约束和测试基于 2D 物理的游戏 Cut the Rope [40] 的可玩性。

1.7 PCG 的隐喻

在“程序化内容生成系统”这个短语中,我们已经讨论了“程序化”、“内容”和“生成”这三个词的含义。但是单词系统呢? PCG 系统是执行 PCG 的任何软件的总称。但是这些系统做不同的事情,以不同的方式使用,并且与整个游戏设计过程有着截然不同的关系。一些 PCG 系统试图帮助设计师完成设计过程的一小部分。其他人试图提供一种处理游戏内容的新方法。有些是交互式的;其他人不是。有些旨在进行完全自主的、创造性的游戏设计;其他人旨在自动化设计的常规或常见方面。

为了将 PCG 系统这个广义术语分解为更具体的系统,Khaled 等人。 [14] 提出了四个隐喻来思考 PCG 系统如何与游戏设计过程相关联。一些 PCG 系统是工具:赋予设计师增强能力的工具,就像程序员的开发环境或建筑师的 CAD 系统所做的那样。其他人定义了新的材料种类,允许设计师在新的媒介中工作,就像石头、粘土和激光装置对艺术家来说是不同的材料一样。一些 PCG 系统旨在成为设计师自己,对部分甚至整个游戏进行完全自主的设计,而不是协助游戏设计师。最后,一些系统主要是领域专家,他们拥有广泛的游戏设计知识,可用于批评或改进设计。许多系统可以通过这些角度中的一个以上来观察,尽管很少有人会平等地展示所有这些角度。

PCG 工具与非 PCG 设计工具一样,旨在改善设计师的工作流程,但 PCG 工具通过添加生成组件来实现。一个常见的例子是 PCG 增强的关卡编辑器。许多游戏引擎中包含的关卡编辑工具已经通过提供专门的编辑和布局关卡方法来改进关卡设计过程,而不是设计师必须使用更通用的工具或完全使用代码进行关卡设计。 PCG 增强的关卡编辑器为传统的被动关卡编辑器添加了一个生成组件。 Tanagra [29] 关卡编辑器生成符合平台游戏节奏模式理论的关卡,设计师可以对其进行修改和添加更多约束,然后重新生成相关部分。这种交替的程序内容生成和人工编辑的模式称为混合主动生成,将在第 11 章中介绍。在本章前面讨论的 PCG 愿景中,“多级多内容PCG”可以看作是使用了一个工具隐喻。

PCG 系统还可以创建新的生成材料,游戏设计师可以操纵和雕刻这些材料以生成内容。一个流行的商业例子是 SpeedTree。从某种意义上说,它是一种将树木设计为电子游戏中风景的工具。但它的做法是将树木变成交互式生成材料:设计师可以点击并拖动它们,添加和移除树枝等,它们看起来总是像一棵树,因为这些树是实时生成的当设计师操纵它们时。第 4 章中讨论的分形景观也是一种程序生成材料,设计师对其进行操作以产生他们想要的景观。对于“基于 PCG 的游戏设计”的 PCG 愿景,恰当的比喻是材料。

程序化内容设计师与人类设计师的互动较少,而是有自己设计内容的雄心。在极限情况下,PCG 设计师变成了一个完全自主的游戏生成器,可以创建新游戏,通常是特定类型的游戏。自动游戏设计的工作仍处于探索阶段,但存在有前途的原型系统 [20,33,7,9]。首席设计师面临的一个关键挑战是,他不仅要设计游戏中的内容,还要设计游戏本身的规则。第 6 章着眼于这些生成规则和游戏机制的系统。 “生成完整游戏”的 PCG 愿景依赖于设计师的隐喻。

程序领域专家是一种稍微不同的系统,充满关于游戏或玩家的知识,并且能够将其应用于评论和修改内容。通常,它会通过成为系统的一部分来应用该专业知识,该系统也可用作工具或设计器。领域专家可能对游戏有纯粹的形式知识,例如是什么让一组特定的规则变得优雅[6]。或者它可能对人类玩家有广泛的了解,能够预测人们在游戏中会做什么,以及他们会发现什么具有挑战性、有趣或无聊。对于基于 PCG 的教育游戏,领域专家可能具有教学知识。例如,分数教学游戏 Refraction 中的程序级别生成受到限制,因此生成的级别满足系统的教学目标 [27]。第 10 章讨论了体验驱动的 PCG 方法,该方法构建了玩家行为和反应专家的 PCG 系统。

1.8 本书大纲

本书由一系列章节构成,由本书的主要作者和每章主题的主要专家共同撰写。大多数章节的组织结构都是为了介绍一系列方法(例如分形或语法)和应用领域(例如植物或地牢)。该方法通常通过应用领域中的示例来介绍,然后本章还讨论了如何将相同的方法用于其他领域,或者如何将不同的方法用于该领域。这种结构的部分原因是 PCG 研究和实践的跨学科性质,其中使用的算法来自许多不同的领域(因此很少相互依赖),游戏设计知识在所有情况下都至关重要。每章都以总结结尾,通常还附有建议的实验室练习。

在第 2 章中,我们介绍了基于搜索的程序内容生成方法,该方法用途广泛,最近已用于大量学术研究项目以及一些已发布的游戏。在基于搜索的方法中,进化算法用于使用达尔文进化原理搜索好的游戏内容。构建基于搜索的内容生成器时的两个主要挑战是评估函数(评估候选内容伪影)和内容表示(定义算法的搜索空间)。虽然本章包含几个基于人工进化的内容生成器示例,但在接下来的章节中还会更多此类示例。

第 3 章讨论了为类 Rogue 游戏创建地下城的具体示例,以及基于导航大部分二维空间的类似关卡——例如,平台游戏或第一人称射击游戏的关卡。描述了用于生成此类级别的许多快速且建设性的算法。其中一些算法来自游戏开发社区,并广泛用于暗黑破坏神等 Roguelike 游戏。其他的,例如元胞自动机,起源于物理学。我们还描述了马里奥 AI 框架,这是一个基于超级马里奥兄弟克隆的关卡生成算法的通用测试平台。

第 4 章介绍了几种具有计算机图形学研究背景的算法,即简单分形算法和其他噪声算法。这些通常用于生成地形和完整的景观,以及云等纹理和特征。虽然这些算法快速可靠,但它们缺乏某些形式的可控性。因此,提出了另外两种生成景观的方法,一种基于搜索,一种基于代理集合。

第 5 章是关于语法的。语法,常见于计算机科学和语言学,被证明对于创建多种类型的游戏内容非常有用。本章从创建栩栩如生的植物的例子开始,这是一种非常常见的 PCG 形式;事实上,近年来有数百款 AAA 游戏以基于语法的程序生成植被为特色。但是语法也可以用于例如水平生成;本章的其余部分详细介绍了如何使用语法为塞尔达风格的动作冒险游戏生成关卡和任务,以及如何进化生成超级马里奥兄弟关卡的语法。

虽然前几章的一些应用领域可能被视为有些外围,但第 6 章解决了生成任何游戏绝对最核心部分的问题:它的规则。我们描述了许多为游戏生成规则的不同尝试,从棋盘游戏到纸牌游戏和街机游戏。其中一些尝试是建设性的,但大多数都是以某种方式基于搜索的。本章还描述了视频游戏描述语言,这是一种为 1980 年代早期的简单街机游戏编码游戏规则的方法——这种语言的一个目的是实现完整游戏的自动生成。

大多数游戏都有某种类型的故事,无论是背景故事还是玩家可以影响的互动故事;故事可以看作是内容,所以第 7 章专门讨论游戏故事的生成。事实证明,几乎所有故事生成方法都基于规划算法。规划是一种经典的人工智能方法,最初是为机器人控制而开发的,现在广泛应用于各个领域。本章还讨论了如何将故事生成与地图生成相结合,从而生成适合所生成故事的游戏地图。

第 8 章重点介绍一种方法,即答案集编程 (ASP)。这是一种逻辑编程加约束满足的形式:内容生成方法加条件用一种称为 AnsProlog 的语言指定,求解器生成与指定条件兼容的所有内容配置。虽然这可能看起来相当抽象和数学化,但最近已经证明某些 PCG 问题可以很容易地以 AnsProlog 形式表示,并且求解器的结果可以解释为游戏内容。这产生了一种用于创建某种形式的游戏内容的高效方法,例如益智类游戏的关卡。

第 9 章回到第 2 章的主题,基于搜索的 PCG,并详述如何表示游戏内容的问题。表示很重要,因为它定义了搜索空间的形状以及可以探索的方式。本章展示了如何明智地选择表示方式可以改变生成内容的风格,以及更有效地搜索更能满足评估功能的内容。示例包括表示为神经网络的花和表示为代理集合的级别生成器。

PCG 的动机之一是它可以实现玩家自适应游戏。第 10 章描述了一个让游戏适应玩家的框架,即体验驱动的 PCG。我们描述了基于从玩家收集的数据创建玩家体验模型的不同方法。

贯穿本书大部分内容的一个主题是程序化内容生成与人类游戏设计师之间的关系可以是多种多样的。 PCG 可以以高度自动化的方式使用,但也可以与设计人员自己的设计选择紧密结合使用。第 11 章明确地探讨了这种紧密耦合,考虑了混合主动系统,其中人类设计师和程序内容生成系统协作生成内容。

最后,第 12 章讨论了 PCG 解决方案在实施后如何对其质量进行评估。

1.9 总结

游戏中的程序内容生成 (PCG) 是使用有限或间接用户输入的游戏内容的算法创建。 PCG 方法的开发和使用有多种不同的原因,包括节省开发时间和成本、增加可重玩性、允许自适应游戏、协助设计师以及研究创造力和游戏设计。虽然 PCG 算法自 1980 年代初以来已在一些商业游戏中使用,但它们通常要么用于外围角色,要么其范围非常有限;目前学术界的研究正试图突破可以产生什么以及可以产生什么质量的界限。理想情况下,PCG 解决方案应该是快速、可靠、可控、富有表现力和创造性的,但在实践中需要在这些属性之间进行某些权衡。 PCG 解决方案可以根据相对广泛的分类法进行分类,这可能有助于确定它们的优势和劣势。另一个理解 PCG 系统的镜头是使用它的隐喻。在这里,我们可以区分将系统用作工具、材料、设计师或领域专家。 PCG 算法来自各种不同的领域,从本书的目录中可以明显看出这种方法论的多样性。

参考

  1. Adams, T.: (2006). Dwarf Fortress, Bay 12 Games
  2. Blizzard North: (1997). Diablo, Blizzard Entertainment, Ubisoft and Electronic Arts
  3. Booth, M.: The AI systems of Left 4 Dead. In: Keynote, Fifth Artificial Intelligence and Interactive Digital Entertainment Conference (AIIDE) (2009)
  4. Braben, D., Bell, I.: (1984). Elite, Acornsoft, Firebird and Imagineer
  5. Browne, C.: Yavalath (2007). URL http://www.cameronius.com/games/yavalath/
  6. Browne, C.: Elegance in game design. IEEE Transactions on Computational Intelligence and AI in Games 4(3), 229 –240 (2012)
  7. Browne, C., Maire, F.: Evolutionary game design. IEEE Transactions on Computational Intelligence and AI in Games 2(1), 1–16 (2010)
  8. Compton,K.,Osborn,J.C.,Mateas,M.: Generative methods. In: Proceedings of the 4th Workshop on Procedural Content Generation in Games (2013)
  9. Cook, M., Colton, S.: Multi-faceted evolution of simple arcade games. In: Proceedings of the 7th IEEE Conference on Computational Intelligence and Games (CIG), pp. 289–296 (2011)
  10. Firaxis Games: (2005). Civilization IV, 2K Games & Aspyr
  11. Hastings, E.J., Guha, R., Stanley, K.: Evolving content in the Galactic Arms race video game. In: Proceedings of the 5th IEEE Conference on Computational Intelligence and Games (CIG), pp. 241–248 (2009)
  12. Hendrikx, M., Meijer, S., van der Velden, J., Iosup, A.: Procedural content generation for games: a survey. Transactions on Multimedia Computing, Communications and Applications 9(1), 1 (2013)
  13. Illiger, A.: (2011). Tiny Wings, Andreas Illiger
  14. Khaled, R., Nelson, M.J., Barr, P.: Design metaphors for procedural content generation in games. In: Proceedings of the 2013 ACM SIGCHI Conference on Human Factors in Computing Systems, pp. 1509–1518 (2013)
  15. Maxis: (2008). Spore, Electronic Arts
  16. Media Molecule, SCECambridgeStudio, TarsierStudios, DoubleEleven, XDev, UnitedFront Games: (2008). Little Big Planet, Sony Computer Entertainment Europe
  17. Microsoft Game Studios: (2005). Forza Motorsport, Microsoft
  18. Minecraft Wiki: Minecraft wiki. URL http://www.minecraftwiki.net/
  19. Mojang: (2011). Minecraft, Mojang and Microsoft Studios
  20. Nelson, M.J., Mateas, M.: Towards automated game design. In: AI*IA 2007: Artificial Intelligence and Human-Oriented Computing, pp. 626–637. Springer (2007). Lecture Notes in Computer Science 4733
  21. Nintendo Creative Department: (1985). Super Mario Bros., Nintendo
  22. Persson, M.: Infinite Mario Bros. URL http://www.mojang.com/notch/mario/
  23. Shaker, M., Shaker, N., Togelius, J.: Ropossum: An authoring tool for designing, optimizing and solving Cut the Rope levels. In: Proceedings of the AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment. AAAI Press, pp. 215 – 216 (2013)
  24. Shaker, N., Togelius, J., Yannakakis, G.N.: Towards automatic personalized content generation for platform games. In: Proceedings of the AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment (AIIDE), pp. 63–68 (2010)
  25. Smelik, R., DeKraker, K., Tutenel, T., Bidarra, R., Groenewegen, S.: A survey of procedural methods for terrain modelling. In: Proceedings of the CASA Workshop on 3D Advanced Media In Gaming And Simulation (3AMIGAS) (2009)
  26. Smelik, R., Tutenel, T., deKraker, K., Bidarra, R.: Integrating procedural generation and manual editing of virtual worlds. In: Proceedings of the Workshop on Procedural Content Generation in Games. ACM (2010)
  27. Smith, A.M., Andersen, E., Mateas, M., Popovic ́, Z.: A case study of expressively constrainable level design automation tools for a puzzle game. In: Proceedings of the 7th International Conference on the Foundations of Digital Games, pp. 156–163 (2012)
  28. Smith, G., Othenin-Girard, A., Whitehead, J., Wardrip-Fruin, N.: PCG-based game design: creating Endless Web. In: Proceedings of the International Conference on the Foundations of Digital Games, pp. 188–195. ACM (2012)
  29. Smith, G., Whitehead, J., Mateas, M.: Tanagra: A mixed-initiative level design tool. In: Proceedings of the Fifth International Conference on the Foundations of Digital Games, pp. 209–216. ACM (2010)
  30. Stanley, K., Bryant, B., Miikkulainen, R.: Realtime neuro evolution in the NERO video game. IEEE Transactions on Evolutionary Computation 9(6), 653–668 (2005)
  31. Togelius, J., Champandard, A.J., Lanzi, P.L., Mateas, M., Paiva, A., Preuss, M., Stanley, K.O.: Procedural content generation: Goals, challenges and actionable steps. In: S.M. Lu- cas, M. Mateas, M. Preuss, P. Spronck, J. Togelius (eds.) Dagstuhl Seminar 12191: Artificial and Computational Intelligence in Games, pp. 61–75. Dagstuhl (2013)
  32. Togelius, J., Kastbjerg, E., Schedl, D., Yannakakis, G.N.: What is procedural content generation?: Mario on the borderline. In: Proceedings of the 2nd Workshop on Procedural Content Generation in Games (2011)
    33.Togelius, J., Schmidhuber, J.: An experiment in automatic game design. In: Proceedings of the 4th IEEE Symposium on Computational Intelligence and Games (CIG), pp. 111–118 (2008)
  33. Togelius, J., Yannakakis, G.N., Stanley, K., Browne, C.: Search based procedural content generation. Applications of Evolutionary Computation pp. 141–150 (2010)
  34. Valve Corporation: (2008). Left 4 Dead, Valve Corporation
  35. Wittgenstein, L.: Philosophical Investigations. Blackwell (1953)
  36. Yannakakis, G.N., Togelius, J.: Experience driven procedural content generation. IEEETransactions on Affective Computing 2(3), 147–161 (2011)
  37. Yu, D.: Spelunky. Boss Fight Books (2016)
  38. Yu, D., Hull, A.: (2008). Spelunky, Independent
  39. ZeptoLab: (2010). Cut the Rope