在写专栏之初就想要研究一下程序化生成的流程,现在终于有机会进行一些研究了。
本文目标是:
- 研究程序化生成的概念,建立起初步对程序化的认知。
- 探讨程序化生成的适用范围。以确定要不要深入学习这门技术。
由于程序化生成这个话题非常大,以后我也会时不时加一些相关文章。本篇文章定位是,不需要了解软件的操作,仅仅建立一个概念,对新手非常友好。
第27块拼图 - 程序化生成技术
1. 什么是程序化生成技术
知乎视频www.zhihu.com看一个视频能直观的了解程序化生成技术能够做什么。
在游戏引擎中简单放置一条曲线,就能沿着曲线就能生成一整条立交桥。修改曲线的位置,整座立交桥的位置也跟随曲线变化而变化。
调整几个参数就能实时控制立交桥的形状。从路面的宽度,到路灯的数量和高度,到护栏的位置,到桥墩的数量和粗细,全都能通过参数进行调整。
总结一下的话,程序化生成技术能够根据输入的参数不同,能得到不同的输出。这个输出可以是一个3D模型,或是一个纹理贴图,也可以是一组点,或是一个二进制数据文件。
其实程序化生成技术并不是近几年的新鲜技术,在练习编程时候用程序画菱形,某种意义上也是个程序化生成的应用。输入是菱形的列数,输出是一个字符组成的菱形。
从这个角度看,一个捏脸系统也可以算是一个程序化生成的案例。输入是众多的身体部位参数,输出是一个玩家定制的,个性化的模型。
除此之外,如《我的世界》《饥荒》这样的随机地形,输入是一个随机种子,输出是一个新的地形,包含了资源、怪物和地形信息。
如《以撒的结合》《杀戮尖塔》这样的roguelike游戏,输入是一个随机种子,按照游戏的逻辑输出一个可玩的随机关卡,以达到一个独一无二的体验。