总起

最近入手一本神书——《人工智能与游戏》,它介绍了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 程序化内容生成 介绍相关推荐

  1. 读书笔记 PCG in Games 程序化内容生成3 构造性方法,针对地牢式关卡

    总起 本文主要基于Procedural Content Generation in Games第三章介绍构造性方法,他们的主要用途在于地牢和关卡,这些方法能在极短进行生成,并且不会进行评估或重新生成. ...

  2. 读书笔记 PCG in Games 程序化内容生成2 基于搜索的方法

    总起 本文主要基于Procedural Content Generation in Games第二章介绍PCG领域最重要的方法之一--搜索方法,而其中进化算法是我们主要使用的方法之一. 关于PCG i ...

  3. 读书笔记 PCG in Games 程序化内容生成4 分型、噪声和代理,地形生成

    总起 本文主要基于Procedural Content Generation in Games第四章介绍地形生成,给游戏角色提供可以站立的地面. 关于PCG in Games之前的笔记可见: 第一章读 ...

  4. 《机器学习实战》萌新读书笔记 ② — — 第三章 决策树 内容提要、知识拓展和详细注释代码

    目录 引入: 什么是决策树? 决策树相较KNN的优势? 决策树的运作方式? 决策树模型的优缺? 决策树的构造: 构造思路 信息增益 划分数据集 递归构造决策树 绘制决策树树形图 Matplotlib注 ...

  5. R语言实战-读书笔记(第1 章 R语言介绍)

    *R语言实战所有学习笔记,如涉及侵权,请联系撤稿.* **标题号与书中标题号对应** R语言实战 第1章 R语言介绍     1.2 R的获取与安装         R可以在CRAN(Comprehe ...

  6. 读书笔记 | 《推荐系统》

    读书笔记 | <推荐系统> 引言 协同方法背景下常见问题如下 1.如何发现与我们要推荐的用户有着相似偏好的用户? 2.如何衡量相似度? 3.如何处理还没有购买经历的用户? 4.如果只有很少 ...

  7. 程序的加载和执行(三)——《x86汇编语言:从实模式到保护模式》读书笔记23

    程序的加载和执行(三)--读书笔记23 接着上次的内容说. 关于过程load_relocate_program的讲解还没有完,还差创建栈段描述符和重定位符号表. 1.分配栈空间与创建栈段描述符 462 ...

  8. 故事工程学:人工智能和程序化叙事生成

    引言 程序化叙事生成(Procedural Narrative Generation)是程序化内容生成(Procedural Content Generation)的一个子概念.程序化内容生成代表着一 ...

  9. 《TCP/IP详解卷1:协议》第3章 IP:网际协议(2)-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

最新文章

  1. iOS 高可控性日历基础组件 - SKCalendarView 的使用和实现思路的分享
  2. 使用ffmpeg实现转码样例(代码实现)
  3. 【CyberSecurityLearning 附】Docker 初识
  4. [CQOI2015]任务查询系统
  5. Selenium - 简介
  6. 【机器学习】对于特征离散化,特征交叉,连续特征离散化非常经典的解释
  7. POJ 2389 Bull Math(水~Java -大数相乘)
  8. leetcode403 青蛙过河
  9. 使用注解配置spring如@Compnent、@Service、@Consroller、@scope和@value的使用
  10. 侧栏广告 image flash
  11. Attention Please
  12. linux puppy 安装软件,小芭比linux下载
  13. JavaSE基础笔记——File概述、方法递归、字符集、IO流
  14. 【AirSim】Windows下搭建AirSim
  15. linux 查看发行版本
  16. Sqlmap是什么以及使用方法
  17. oracle 如何完全删除干净
  18. CNN2019.11.22
  19. Ubuntu20.04 添加右键新建文件
  20. 【Netty之旅四】你一定看得懂的Netty客户端启动源码分析!

热门文章

  1. 好用的工具/everything/wireshark/apowersoft/audacity/mediainfo/diskgenius/elecard sreamEye等
  2. YOLOv5训练数据提示No labels found
  3. win10未能配置dhcp服务器,win10系统登录服务器时提示DHCP无法启动的解决方法
  4. Flutter SQLite使用
  5. 汇编语言--学生管理信息管理--输入输出排序柱状图展示
  6. ARIMA模型进行销售数据预测
  7. vue.js 时间戳转换日期格式
  8. 为什么python证券接口通达信系统中没有接口?
  9. img图片和路径用途
  10. sklearn中的k折交叉验证