程序生成最近引起了人们的关注(由Spore,MMO等),它似乎是一种有趣/强大的编程技术.
我的问题是这些:
您知道任何使用程序生成技术的中型项目吗?
什么语言/类别的语言最适合程序生成?
你能用程序生成"严肃"的代码吗?(即不是游戏)
Liam.. 115
您应该从一些理论和简单的例子开始,例如中点位移算法.如果您对生成图形感兴趣,您还应该了解一下Perlin Noise.我用这个来开始我关于程序生成的最后一年项目.
分形与程序生成密切相关.
Terragen和SpeedTree将向您展示程序生成的一些惊人可能性.
程序生成是一种可以在任何语言中使用的技术(它绝对不限于诸如C的过程语言,因为它可以用于诸如Java的OO语言和诸如Prolog的逻辑语言).对任何语言的递归的充分理解将加强您对程序生成的掌握.
至于"严重"或非游戏代码,程序生成技术已被用于:
模拟城市的增长,以规划交通管理
模拟血管的生长
SpeedTree用于电影和建筑演示
Martin.. 49
程序内容生成维基:
http://pcg.wikidot.com/
如果你想要的不在那里,那就添加它;)
您应该从一些理论和简单的例子开始,例如中点位移算法.如果您对生成图形感兴趣,您还应该了解一下Perlin Noise.我用这个来开始我关于程序生成的最后一年项目.
分形与程序生成密切相关.
Terragen和SpeedTree将向您展示程序生成的一些惊人可能性.
程序生成是一种可以在任何语言中使用的技术(它绝对不限于诸如C的过程语言,因为它可以用于诸如Java的OO语言和诸如Prolog的逻辑语言).对任何语言的递归的充分理解将加强您对程序生成的掌握.
至于"严重"或非游戏代码,程序生成技术已被用于:
模拟城市的增长,以规划交通管理
模拟血管的生长
SpeedTree用于电影和建筑演示
程序内容生成维基:
http://pcg.wikidot.com/
如果你想要的不在那里,那就添加它;)
程序内容生成现在都是为GPU编写的,因此您需要了解着色器语言.这意味着GLSL或HLSL.这些语言分别与OpenGL和DirectX相关联.
虽然我个人偏好Dx11/HLSL由于速度,更简单的学习曲线和Frank D Luna,OpenGL在更多平台上得到支持.
如果你想直接写入着色器而不必花费相当多的时间来设置OpenGL/DirectX游戏引擎,你也应该查看WebGL.
程序内容始于噪音.
因此,您需要了解Perlin噪声(及其后续单声道噪声).
Shadertoy是学习着色器编程的绝佳参考.我建议你一旦你自己给出了着色器编码就可以实现它,因为那里的代码不是数学上的娇气,但这就是程序内容的完成方式.
Shadertoy是由程序天才Inigo Quilez创建的,Inigo Quilez是在Pixar工作的演示场景的产物.他有一些youtube视频(很好的例子)的实时编码会话,我也可以推荐这些.
我不是这方面的专家,但我可以尝试提供一些答案:
NetHack和它的brethern是开源的,并且在很大程度上依赖于程序生成级别(地图).链接到它的下载.如果您对景观/纹理/云生成更感兴趣,我建议您搜索Gamasutra和GameDev,其中有很多关于这些主题的文章.
AFAIK我认为语言之间没有太大区别.你看到的大多数代码都是在C/CPP中,因为它仍然是游戏开发者的官方语言,但你可以使用你想要的任何东西......
嗯,这取决于你是否有一个可以从这种技术中受益的项目.我看到军队模拟器中使用的程序生成(可以认为是一种游戏,虽然它们不是很可玩:)).
还有一个小小的注意事项 - 我的定义是,如果程序生成是从少量规则或模式产生大量数据和大量随机性的,那么结果可能会有所不同:)
有一本关于这个主题的优秀书籍:
http://www.amazon.com/Texturing-Modeling-Third-Procedural-Approach/dp/1558608486
它偏向于非实时视觉效果和动画生成,但我认为理论和思想可以在这些领域之外使用.
值得一提的是,有一个专业的软件包实现了一个名为SideFX的Houdini的完整程序工作流程.您可以使用它来创建问题的过程解决方案并将其原型化,然后您可以将其转换为代码.
虽然它是一个相当昂贵的包,但它有一个免费的评估许可证,可以用作一个非常好的教育和/或工程工具.
如果你想要一个世界发电机模拟板块构造,侵蚀,雨影等的例子,请看看:https: //github.com/ftomassetti/lands
最重要的是,还有一个文明进化模拟器:
https://github.com/ftomassetti/civs
关于有趣资源的博客是:
dungeonleague.com/
它现在被抛弃但你应该阅读它的所有帖子
程序生成在demoscene中大量使用,以在小的可执行文件中创建复杂的图形.Wright甚至会说他在制作Spore时受到了demoscene的启发.这可能是你最好的起点.
http://en.wikipedia.org/wiki/Demoscene