当前位置:  开发笔记 > 编程语言 > 正文

如何开始程序生成?

如何解决《如何开始程序生成?》经验,为你挑选了7个好方法。

程序生成最近引起了人们的关注(由Spore,MMO等),它似乎是一种有趣/强大的编程技术.

我的问题是这些:

您知道任何使用程序生成技术的中型项目吗?

什么语言/类别的语言最适合程序生成?

你能用程序生成"严肃"的代码吗?(即不是游戏)

Liam.. 115

您应该从一些理论和简单的例子开始,例如中点位移算法.如果您对生成图形感兴趣,您还应该了解一下Perlin Noise.我用这个来开始我关于程序生成的最后一年项目.

分形与程序生成密切相关.

Terragen和SpeedTree将向您展示程序生成的一些惊人可能性.

程序生成是一种可以在任何语言中使用的技术(它绝对不限于诸如C的过程语言,因为它可以用于诸如Java的OO语言和诸如Prolog的逻辑语言).对任何语言的递归的充分理解将加强​​您对程序生成的掌握.

至于"严重"或非游戏代码,程序生成技术已被用于:

模拟城市的增长,以规划交通管理

模拟血管的生长

SpeedTree用于电影和建筑演示


Martin.. 49

程序内容生成维基:

http://pcg.wikidot.com/

如果你想要的不在那里,那就添加它;)



1> Liam..:

您应该从一些理论和简单的例子开始,例如中点位移算法.如果您对生成图形感兴趣,您还应该了解一下Perlin Noise.我用这个来开始我关于程序生成的最后一年项目.

分形与程序生成密切相关.

Terragen和SpeedTree将向您展示程序生成的一些惊人可能性.

程序生成是一种可以在任何语言中使用的技术(它绝对不限于诸如C的过程语言,因为它可以用于诸如Java的OO语言和诸如Prolog的逻辑语言).对任何语言的递归的充分理解将加强​​您对程序生成的掌握.

至于"严重"或非游戏代码,程序生成技术已被用于:

模拟城市的增长,以规划交通管理

模拟血管的生长

SpeedTree用于电影和建筑演示



2> Martin..:

程序内容生成维基:

http://pcg.wikidot.com/

如果你想要的不在那里,那就添加它;)


我不能在这里复制整个维基!没有"必不可少的部分".

3> fishfood..:

程序内容生成现在都是为GPU编写的,因此您需要了解着色器语言.这意味着GLSL或HLSL.这些语言分别与OpenGL和DirectX相关联.

虽然我个人偏好Dx11/HLSL由于速度,更简单的学习曲线和Frank D Luna,OpenGL在更多平台上得到支持.

如果你想直接写入着色器而不必花费相当多的时间来设置OpenGL/DirectX游戏引擎,你也应该查看WebGL.

程序内容始于噪音.

因此,您需要了解Perlin噪声(及其后续单声道噪声).

Shadertoy是学习着色器编程的绝佳参考.我建议你一旦你自己给出了着色器编码就可以实现它,因为那里的代码不是数学上的娇气,但这就是程序内容的完成方式.

Shadertoy是由程序天才Inigo Quilez创建的,Inigo Quilez是在Pixar工作的演示场景的产物.他有一些youtube视频(很好的例子)的实时编码会话,我也可以推荐这些.


你是什​​么意思"程序内容生成现在都是为GPU编写的"?你刚才谈的是草叶之类的东西?你并不是指为游戏生成地图或城市,例如,你呢?
是的,我认为这里的"全部"评论是过度概括,但在景观生成领域(我猜这是最常见的一种),这是一个有用的答案.虽然我无法想象谁会想看某人在视频中键入代码.

4> Mikle..:

我不是这方面的专家,但我可以尝试提供一些答案:

    NetHack和它的brethern是开源的,并且在很大程度上依赖于程序生成级别(地图).链接到它的下载.如果您对景观/纹理/云生成更感兴趣,我建议您搜索Gamasutra和GameDev,其中有很多关于这些主题的文章.

    AFAIK我认为语言之间没有太大区别.你看到的大多数代码都是在C/CPP中,因为它仍然是游戏开发者的官方语言,但你可以使用你想要的任何东西......

    嗯,这取决于你是否有一个可以从这种技术中受益的项目.我看到军队模拟器中使用的程序生成(可以认为是一种游戏,虽然它们不是很可玩:)).

还有一个小小的注意事项 - 我的定义是,如果程序生成是从少量规则或模式产生大量数据和大量随机性的,那么结果可能会有所不同:)



5> beemtee..:

有一本关于这个主题的优秀书籍:

http://www.amazon.com/Texturing-Modeling-Third-Procedural-Approach/dp/1558608486

它偏向于非实时视觉效果和动画生成,但我认为理论和思想可以在这些领域之外使用.

值得一提的是,有一个专业的软件包实现了一个名为SideFX的Houdini的完整程序工作流程.您可以使用它来创建问题的过程解决方案并将其原型化,然后您可以将其转换为代码.

虽然它是一个相当昂贵的包,但它有一个免费的评估许可证,可以用作一个非常好的教育和/或工程工具.



6> Federico Tom..:

如果你想要一个世界发电机模拟板块构造,侵蚀,雨影等的例子,请看看:https: //github.com/ftomassetti/lands

最重要的是,还有一个文明进化模拟器:

https://github.com/ftomassetti/civs

关于有趣资源的博客是:

dungeonleague.com/

它现在被抛弃但你应该阅读它的所有帖子



7> anon..:

程序生成在demoscene中大量使用,以在小的可执行文件中创建复杂的图形.Wright甚至会说他在制作Spore时受到了demoscene的启发.这可能是你最好的起点.

http://en.wikipedia.org/wiki/Demoscene


我发现demoscene是一个难学的地方.
推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有