Answers:
您可能应该从一些理论和简单的示例开始,例如中点位移算法。如果您对生成图形感兴趣,还应该对Perlin Noise有所了解。我用它来开始我关于程序生成的最后一年的项目。
分形与程序生成密切相关。
Terragen和SpeedTree将为您展示过程生成的一些惊人可能性。
程序生成是一种可以在任何语言中使用的技术(由于它可以在Java等OO语言和Prolog等逻辑语言中使用,因此它绝对不限于C等程序语言)。对任何语言的递归都有很好的理解,可以增强您对过程生成的理解。
对于“严重”或非游戏代码,程序生成技术已用于:
现在,程序性内容生成都是为GPU编写的,因此您需要了解着色器语言。这意味着GLSL或HLSL。这些是分别与OpenGL和DirectX相关的语言。
由于速度,更轻松的学习曲线和Frank D Luna的缘故,我个人偏爱Dx11 / HLSL ,但更多平台均支持OpenGL。
如果您想直接进入编写着色器,而不必花费(相当大的)时间来设置OpenGL / DirectX游戏引擎,则还应该签出WebGL。
程序内容始于噪音。
因此,您需要了解Perlin噪声(及其后继产品Simplex噪声)。
Shadertoy是学习着色器编程的绝佳参考。我建议您自己给着色器编码后再使用它,因为该代码不是数学上的用处,但这是程序内容的完成方式。
Shadertoy是由程序天才Inigo Quilez创建的,Inigo Quilez是在皮克斯工作的演示场景的产品。他有一些现场编码会话的youtube视频(很好的例子),我也可以推荐这些视频。
如果您想要世界发电机模拟板块的构造,侵蚀,雨影等示例,请查看:https : //github.com/ftomassetti/lands
最重要的是,还有一个文明进化模拟器:
https://github.com/ftomassetti/civs
关于有趣资源的博客全文为:
dungeonleague.com/
它现在已被废弃,但您应该阅读所有文章
我不是专家,但是我可以尝试提供一些答案:
NetHack和它的brethern是开源的,并且严重依赖于过程的级别(图)的生成。链接到它的下载。如果您对景观/纹理/云生成更感兴趣,建议您搜索Gamasutra和GameDev,其中有很多关于这些主题的文章。
AFAIK我认为语言之间没有太大区别。您看到的大多数代码都将使用C / CPP,因为它仍然是Game Developers的官方语言,但是您可以使用任何您想要的东西...
好吧,这取决于您是否有一个可以从这种技术中受益的项目。我看到了在陆军模拟器中使用的程序生成(可以将其视为一种游戏,尽管它们不是很容易玩:)。
还有一点需要注意的是-我的定义是:如果过程生成是指通过少量规则或模式以及大量随机性生成大量数据的任何事物,那么您的结果可能会有所不同:)
关于该主题有一本非常出色的书:
http://www.amazon.com/Texturing-Modeling-Third-Procedural-Approach/dp/1558608486
它偏向于非实时视觉效果和动画生成,但是我认为这些理论和思想在这些领域之外是可用的。
值得一提的是,有一个专业的软件包可以实现一个完整的过程工作流,称为SideFX的Houdini。您可以使用它来发明问题的过程解决方案并为其原型设计,然后将其转换为代码。
虽然这是一个相当昂贵的软件包,但它具有免费的评估许可证,可以用作非常好的教育和/或工程工具。
程序生成在演示场景中大量使用,以在小型可执行文件中创建复杂的图形。威尔·赖特(Will Wright)甚至说,他在制作《孢子》时受到了恶魔般的启发。那可能是您最好的起点。
最重要的是分析道路,城市,街区和建筑物的结构。找出所有建筑物之间的共同点。看照片,地图,计划和现实。如果这样做,您将比那些将城市建设仅视为计算机技术问题的人们领先一步。
接下来,您应该开发有关如何以微小,不同的步骤创建几何图形的解决方案。您必须定义构成可信城市的规则。如果您要进行3D建模,则必须重新考虑很多已学到的知识,以便计算机在任何情况下都可以按照您的指示进行操作。
为了避免松懈,您应该设置很多操作员,这些操作员仅负责整个过程的一小部分。这使得调试,扩展和改进系统变得更加容易。在下一步中,您应该链接这些运算符并通过更改参数来检查结果。
我看到了太多的“城市生成器”,它们主要由随机形状的盒子组成,上面带有一些窗口纹理:(
(超过10年后...)
过程生成仅意味着使用代码来生成数据,而不是手工制作。例如,如果要生成包含各种树木的森林,则无需手工设计每棵树,因此编码可以更有效地生成变化。它可能是树形图形,大小,结构,位置的生成...
一般有某种互为作用的几个规则,此外,您可以添加一些自己的随机性和逻辑,结合所有这些技术......凡是有点乱,但不是太乱了可以产生有趣的结果。
以下是一些值得注意的技术:
一些以程序生成而闻名的游戏:
有关程序性土地发电的视频教程。
关于游戏过程内容生成的会议,有很多有关以下主题的视频:一切过程
玩得开心。