演讲笔记 适合所有人的实用程序生成 PCG
总起
近期翻到2017年GDC的一篇演讲——Practical Procedural Generation for Everyone,演讲者对PCG技术进行了简单的介绍,比较适合于想要了解PCG技术的人。
本篇文章参考她的演讲和文章进行一个总结,尝试回答以下两个问题:
- 什么是PCG?
- PCG常用的方法?
使用PCG的例子:
- 《我的世界》,生成地形;
- 《无人深空》,生成星球、动植物等;
- 《矮人堡垒》,生成地图、历史、人物等;
- 《Pippen Barr》,生成下象棋时摸胡须的方式;
- 《Mr. Darcy Dance Simulator》,生成Darcy侮辱你的方式
- 《Ultima Ratio Regum》,生成奇怪的博物馆;
- 《Yavalath》,生成游戏规则;
- 生成织物裙子之类、生成艺术品;
- 生成音乐、诗歌。
讨论的PCG三件事情:
- 你想要生成什么;
- 将专家搬到程序中;
- 具体方法。
你想要生成什么
首先确认你想要生成什么,越具体越好,比如生成一个简单多层的公寓模型,而像是生成一部有趣小说这个目标就有些太模糊了。
接下去思考对于生成物来说什么是好,什么是坏。好的部分我们可以设置为生成器的属性,而坏的部分提供了约束,而属性和约束确定了生成物可能性空间。
另一种方法,如果不知道该生成什么,也可以即兴发挥,从一些松散的部分开始,确定它想要生成什么。
将专家搬到程序中
这一步最好请专家共同商讨,深入了解专家在制作这项东西时思考过程,尝试将其搬到计算机程序中。
在设计《孢子》的编辑器时,程序、策划和美术密切合作,以了解美术(动画师)是如何对生物进行建模和处理贴图的。当时他们请了一个迪士尼的动画师,深入挖掘他创造生物时是如何画出形状、如何表现生物的性格等
可以尝试问专家以下几个问题(本体论):
- 他们在制作过程中问过什么样的问题?
- 他们怎样做决定?
- 他们如何在多项选择之间权衡?
- 有什么样的问题是一直在他们脑海中紧记的?
- 他们是怎么命名制作的各个部分的,以及各个部分之间的关系?
一些领域专家编写了一些有争议性的框架来描述他们的工作。比如音乐中的爵士即兴、巴赫风格、和声、流行乐,故事中有英雄叙事、TV Tropes(研究电影、电视剧中桥段),艺术中有黄金比例、色彩和谐和构图规则。需要注意的是没有一个框架是完整的,并且没有保证遵循它们就能做出好的生成器,各种框架可以提供一些指导和灵感。
具体方法
从规则到生成方法
人类,擅长估计、猜测和综合大量关于过去的情况的知识;
计算机,告诉什么做什么,但擅长大量计算。
特别适合构建生成器的方法(生成方法)将赋予计算机以下一些技能:
1.封装知识选项(技能 A)
2.创建一些结构(技能 B)
3.编码选择知识的条件规则 (A2)
4.在结构中增加可变性 (B2)
5.能够根据约束问自己问题(我解决了这个问题吗?)(技能 C)
6种方法:
方法1,Distribution,随机分布方法,随机数、真实是分层和聚集的。
这是最简单的生成方法,你可以将一堆东西散布在时间和空间中。
特点:
- 没有太多整体结构(B);
- 可能选择每个选项(A),有时候会使用加权随机或套牌洗牌(列出所有选项从中选择并在使用后丢弃);
- 条件规则(A2)也可以变得十分复杂,一般会给出固定的参数进行选择。
以RPG为例:
- 游荡的怪物分布在环境中(A);
- 高级怪物出现在更高级别的区域,水怪出现在水中等(A2);
- 战利品有可能从大量战利品中选择的(A);
- 击败高级怪物的情况下可能会获得更高级的战利品(A2)。
音乐和语言使用这种方法效果并不好,因为其结构比较繁重,可以试试基于图块或基于语法的方法,如果其结构非常固定,则可以试试参数化方法。
方法2,Parametric,参数方法。
如果经有了一个相当完善的工件,并且只需要稍微调整一下,可以通过参数的方式。它是一种非常可靠可控的方法!
特点:
- 通过固定的一维数值提供可变性(A);
- 完全没有结构可变性(B2);
更复杂的参数方法形式:
- 使用基于点、基于路径和基于图形的输入,类似Photoshop;
- 《孢子》使用的元球(Metaballs);
- 填充空间和路径的算法,Voronoi模式、Perlin/Simplex 噪声、三角测量算法、3D 挤压或旋转,以及分形地形的菱形正方形算法。
方法3,Tiles,基于图块的,文明、卡坦岛、暗黑破坏神、塔罗牌。
这种方法将问题分解为模块化的、相同大小的图块。
特点:
- 非常适合小规模结构(B);
- 没有什么灵活性(B2);
- 对可能的选项进行了非常严格的封装(A)。
方法4,Grammars,语法,Tracery(作者自己做的语言)、L-System、故事生成器。
特点:
- 可以构建非常深和复杂的结构(B);
- 同时提供了很多的控制(A);
- 其缺点是没有处理约束的方法;
方法5,Interpretive,约束求解器,将数据处理为另外的数据、手部追踪获得运动线、柏林噪声、几何算法、metaballs、分型和数学。
最简单古老的版本就是暴力破解,试图制作每一种可能,直到制作出符合约束的内容,当然通常可以通过某些方式缩短求解的时间。
方法6,Simulations,代理和模拟,粒子生成器、细胞自动机、代理模拟、物理模拟、遗传算法。
许多代理和模拟从自然界中汲取灵感,例如鸟群、进化、细菌、神经元和城市等。
参考
- 《GDC Practical Procedural Generation for Everyone》
https://www.youtube.com/watch?v=WumyfLEa6bU
- 《So you want to build a generator…》
https://galaxykate0.tumblr.com/post/139774965871/so-you-want-to-build-a-generator
演讲笔记 适合所有人的实用程序生成 PCG相关推荐
- 印象笔记,石墨笔记和Effie哪个更适合影评人?
说起影评人,相信有不少人会想起抖音平台中一些影视视频剪辑的大咖,他们拥有者灵活地视频剪辑技巧,懂得为整个影视剧情谋篇布局,剪辑出关键部分,在配上文字解说,瞬间得到了很多观众的一致喜爱,他们拥有了众多粉 ...
- OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC
OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...
- 聊一聊天酬汇适合哪些人吧
作为一名站长,每天都会有 遇到新手来问问题,这几天就有很多人加我,有的是问关于"天酬汇"的,有问的是适不适合网络小白?我是一名宝妈能做不?有什么门坎吗?等问题,所以它的受众人群有必 ...
- 软件测试培训适合什么人学习?
软件测试在互联网行业一直有着非常可观的发展前景,想要学习软件测试技术的人也越来越多,但不是所有人都可以学,都能学会的,小编下面就为大家详细的介绍一下软件测试培训适合什么人学习? 软件测试培训适合什么人 ...
- Python培训班适合哪些人报名学习
学习Python技术有两种方法,一个是自学,一个是报Python培训班进行系统学习,自学肯定是对一些有Python基础的同学比较合适的,那么Python培训班适合哪些人报名学习呢?来看看下面的详细介绍 ...
- 化生政组合能选计算机专业吗,化生政这个组合好不好? 适合哪些人报考
新高考3+3选科模式中,选科组合多达20种,使得家长和同学们在众多选科组合中挑花了眼.那么,化生政组合好吗? 化生政组合优势 1.化学与生物学科组合可选择专业较多 如果有同学日后想要从事医药类行业.或 ...
- 微软电脑适合什么人用_眼膜适合什么年龄段的人使用呢?什么年龄段的人用什么样的眼膜...
很多女人为了保护自己的眼周肌肤都会使用眼膜,不过呢眼膜可不是适合所有人使用的,那么眼膜适合什么年龄段的人使用呢? 18岁以上可以用补水型眼膜 过了十八岁以后的朋友们可以开始用一些眼膜了,但最好选补水型 ...
- 毕竟这个世界互相适合的人太少了
m_strFlagFace="见面" if(m_strFlagFace=="ok") { /*毕竟这个世界互相适合的人太少了,一定要抓住啊*/ try { ...
- 计算机老师能叫少儿编程,少儿编程教师适合哪些人做?需要具备什么能力?
少儿编程教师适合哪些人做?需要具备什么能力?严格上来讲只要是对孩子有爱心,愿意从事少儿教育行业,就适合做少儿编程教师.可能一般人会认为,少儿编程教师需要具备极强的编程能力.其实不然,少儿编程教师只需要 ...
最新文章
- 如何让一滴水不蒸发?
- linux java aptget_apt-get没有安装任何linux服务器
- WCF中的ServiceHost初始化两种方式(宿主)
- 重拾python Day 2
- 第五章 编写主引导扇区代码
- Spring Cloud Alibaba —— Sentinel 入门
- 依赖反转原则(DIP)
- C#可视化编程技术总结:制作可视化窗体软件
- android 华为 imei,华为手机怎么查看IMEI码?华为手机查询IMEI串号两种方法,华为imei...
- 【Opencv综合应用】自制训练集的人脸识别1——拍摄10张人脸图片
- c语言 实现参数值双向传递,基于C语言函数参数传递规律的探讨
- 【PTA-乙级】1019 - 数字黑洞(4种解法)(C/C++)
- frontpage中没有动态HTML效果,[多选] 在frontpage中,应用文字的动态HTML效果时可选择的事件有()...
- 磨金石教育摄影干货分享|风光摄影后期教程:冷色调变暖色调
- Qt 配置使用IPP库
- 归一化互相关(NCC)计算视差图
- 图像分割二十年,盘点影响力最大的10篇论文(含论文和源代码)
- EditPlus中文版+英文版+注册码下载
- IP(Internet Protocol)网际协议
- mysql链接liunx远程服务器