读书笔记 PCG in Games 程序化内容生成 介绍
Posted 暗光之痕
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读书笔记 PCG in Games 程序化内容生成 介绍相关的知识,希望对你有一定的参考价值。
总起
最近入手一本神书——《人工智能与游戏》,它介绍了AI与游戏相辅相成的关系,并且梳理了整个游戏AI的知识脉络。它可以当成游戏AI目录书籍,薄薄的一本书引用了800多篇文献。
游戏中我们接触到的AI可能更多的是寻路算法(Navigation),而这个话题在这本书中属于玩游戏 -> AI可以怎样地玩游戏 -> 基于规划的方法 -> 传统的树搜索。不过介于市面上已经有很多关于寻路算法的书籍,如《游戏人工智能编程案例精粹》,所以它只是简单介绍了一下并没有展开说明。
接下来我通过这本书,了解到了一本在PCG(程序化内容生成)领域第一本教材书籍——《Procedural Content Generation in Games》。
本篇笔记主要目的是记录读书过程中的重点内容,方便以后查阅。本次内容来源于《PCG in Games》的第1章——PCG的介绍,辅助会参考《人工智能与游戏》的第4章——生成内容。
本人水平有限,如有错误的地方欢迎讨论和指正。
介绍
首先我们定义一下PCG:PCG是基于有限或间接的用户输入的游戏内容生成算法,换句话来说PCG可以自己创造内容,也可以和人类玩家或设计师共同创造。
第一个关键词“内容”,根据我们的定义内容主要包含:关卡、地图、游戏规则、纹理贴图、故事、物品、任务、音乐、武器、载具、角色等。而游戏引擎和NPC AI则不包含在其中。
另一个关键词“游戏”,游戏包含了主机游戏、电脑游戏、桌游、卡牌游戏、猜谜游戏等。
最后两个关键词“程序化”和“生成”,我们使用电脑程序和算法进行创造。
为了让我们讨论更加具体,我们来列举一下我们使用PCG想做的事情:
1. 为类《塞尔达传说游戏》生成一个关卡;
2. 在一个太空射击游戏中生成武器;
3. 生成一个完整的、可玩的、平衡的桌游;
4. 一个可以使用植物快速填满游戏世界的引擎中间件;
5. 在策略游戏中一个让玩家自定义地图生成的图形设计工具,并且对其平衡性和乐趣进行评估。
我们不考虑做以下事情:
1. 一个可以让用户自由添加、删除物件的地图编辑器;
2. 桌游的AI玩家;
3. 一个可以自动生成植被的引擎(这边我的理解是地形自带的功能,而非使用空间算法之类进行生成)。
使用PCG的原因
1. 人类即是昂贵的又是迟缓的,使用PCG可以节约成本;
2. 让美术和策划从无聊的重复中解放出来,专注于必要的细节;
3. PCG方法能够实现全新的游戏类型;
4. 通过测量及使用神经网络对玩家进行建模,可以创建自适应玩家的游戏;
5. 使设计师更能理解设计并具有创造力,通过更好的PCG方法可以更好地理解设计过程,其反过来也能产生更好的PCG算法。
那些使用PCG的游戏
早期的《Elite》、《Rogue》等游戏使用PCG是为了克服存储容量的限制。Roguelike游戏可以自动生成复杂的游戏过程,但它们往往缺乏视觉吸引力。
PCG很快在商业化的游戏中受到越来越多的关注:
1. 《暗黑破坏神》,PCG用于生成地图、道具和怪物;
2. 《孢子》,程序化动画,玩家创建的生物用填充整个星系;
3. 《文明4》,随机地图;
4. 《我的世界》,生成整个世界和内容;
5. 《洞穴探险》,2D平台roguelike游戏;
6. 《翼飞冲天》,2D手游,生成地形和纹理。
(除了最后一个游戏,我基本都玩过。我们可以看到这些游戏使用PCG主要目的是生成关卡和地形,这是在PCG领域最重要的一个方向,当然最近几年其他方向也开始慢慢的受到重视)
PCG的愿景
PCG技术应用于发行的游戏中已经有30多年,而近几年该技术在学术界的关注迎来激增,结果产生了很多新的方法,以及跟旧方法改进和组合,其中有些方法在真正用于游戏之前还需要进一步研究和开发。
我们需要一些愿景来指明方向:
1. 基于PCG内容生成器,根据规定的游戏引擎和规则,能够产生高质量、自恰的游戏内容;
2. 基于PCG游戏设计,PCG作为gameplay的一部分,如果你将PCG生成的内容移除,那么游戏中将不具有任何的可辨识的游戏内容;
3. 生成一个完整的游戏,但现阶段我们只能生成一些简单的游戏规则。
在开发生成器时我们定义一个更具体的愿景是非常值得的。
评估PCG方案
我们可以将PCG方法作为一种解决内容生成问题时的方案,针对不同的应用不同的方案有其所权衡点,比如速度和质量、多样的和可靠的。
几种评估PCG方案的属性:
1. 速度,主要依赖于是gameplay实时生成还是开发阶段进行生成;
2. 可靠性,生成内容可能需要满足某种条件;
3. 可控的,设计师或算法可以具体指定生成哪些内容;
4. 多样性的,从极端角度考虑生成的内容是固定的还是随机的;
5. 创造性和可信度,使内容看上去像是人类创造的。
PCG的分类标准
1. 动态生成和离线生成,动态生成可以生成无尽的变化,而离线生成更适用于生成复杂的环境和地图;
2. 必要内容和可选内容,必要内容必须保证其正确性;
3. 可控性,使用随机种子或一组参数,在《我的世界》中使用相同的种子将会生成完全相同的世界;
4. 体验无关的和体验驱动的,在学术界体验驱动的受到了越来越大的关注,但大部分商业游戏仍然以一种通用的、与体验无关的方式来处理PCG;
5. 随机的和确定的,随机性允许一个算法提供极大的差异,另一方面完全确定的PCG方法可以被视为某种形式的数据压缩;
6. 构造性的和先生成再测试,分型和元胞自动机生成关卡是构造性的,并且只生成一次,而基于搜索方法的则需要先生成再测试,需要迭代多次直到内容足够优秀;
7. 自主生成的和混合主导的,生成过程中是否需要人类设计师或玩家参与。
PCG的象征意义
Khaled提出使用PCG的四种象征意义:
1. 工具,仅作为辅助设计师的一种工具;
2. 材料,成为设计师新的一种材料,一个流行的商业例子是SpeedTree;
3. 设计师,成为游戏设计师本身,现在属于勘探阶段;
4. 领域专家,提供额外的知识,用来评价和提升设计。
本书大纲
第二章,基于搜索方法的PCG,其中来源于达尔文进化论的进化算法是用于寻找合适的游戏内容。
第三章,讨论了一个创建地牢的roguelike游戏,以及2D空间下的导航。一些方法来源于开发者社区,并广泛应用于如《暗黑破坏神》等游戏。其他的,如元胞自动机,起源于物理学。最后,我们也会讨论一下马里奥AI框架用于测试关卡生成算法。
第四章,将介绍来源于计算机图形学的算法研究,即简单分型算法和其他噪声算法,用于处理地形、景观、纹理和云。这些算法快速并且可靠,但缺乏可控性。因此提出其他两种生成景观的方法:基于搜索方法的和基于代理集合的。
第五章,语法,首先介绍了一个创建植物的例子。近年来许多3A游戏使用语法创建植被,当然语法也可以用于创建关卡,本章剩余的部分将介绍使用语法来生成《塞尔达传说》风格的动作冒险游戏的关卡和任务,以及如何进化语法生成《超级马里奥兄弟》的关卡。
第六章,创建游戏规则,从桌游到卡牌游戏和街机游戏,这些尝试有些是构造性的,但大多数都是基于搜索的,本章还将会讨论电子游戏描述语言,一种编码简单街机游戏规则的方法。
第七章,生成游戏叙事,几乎所有方法都来源于规划算法,规划算法是一种来源于控制机器人的经典AI方法,本章还会讨论游戏叙事如何与地图生成相结合。
第八章,ASP(Answer Set Programming),答案集编程,在一种名为AnsProlog语言中指定内容生成方法和条件,求解器将生成满足指定条件的所有内容,用于猜谜游戏的关卡。
第九章,回到第二章基于搜索方法PCG的主题,本章示范了几种游戏内容表达形式的选择,表达形式很重要,因为其定义了搜索空间的形式及搜索的方式,本章将演示如何明智的选择表达形式以生成满足评估的内容。比如花被表示为神经网络,关卡生成器被表示为代理集合。
第十章,介绍经验驱动的PCG,对玩家进行建模。
第十一章,谈及PCG与人类设计师进行合作。
第十二章,讨论如何评价PCG生成内容的质量。
参考
《Procedural Content Generation in Games》
《人工智能与游戏》
以上是关于读书笔记 PCG in Games 程序化内容生成 介绍的主要内容,如果未能解决你的问题,请参考以下文章
读书笔记 PCG in Games 程序化内容生成4 分型噪声和代理,地形生成
读书笔记 PCG in Games 程序化内容生成2 基于搜索的方法
读书笔记 PCG in Games 程序化内容生成2 基于搜索的方法
读书笔记 PCG in Games 程序化内容生成2 基于搜索的方法