如何开始程序生成?

时间:2020-03-06 14:56:51  来源:igfitidea点击:

程序生成最近已受到关注(Spore,MMO等),并且似乎是一种有趣/功能强大的编程技术。
我的问题是:

  • 我们知道使用程序生成技术的任何中型项目吗?
  • 哪种语言/哪类语言最适合程序生成?
  • 我们可以对"严重"代码使用过程生成吗? (即不是游戏)

解决方案

程序生成在演示场景中大量使用,以在一个小的可执行文件中创建复杂的图形。威尔·赖特(Will Wright)甚至说,他在制作《孢子》时受到了恶魔般的启发。那可能是我们最好的起点。

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

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

  • NetHack和它的brethern是开源的,在很大程度上依赖于过程的级别(图)的生成。链接到它的下载。如果我们对景观/纹理/云生成更感兴趣,建议我们搜索Gamasutra和GameDev,其中有很多关于这些主题的文章。
  • AFAIK我认为语言之间没有太大区别。我们看到的大多数代码都将使用C / CPP,因为它仍然是Game Developers的官方语言,但是我们可以使用任何我们想使用的东西...
  • 好吧,这取决于我们是否有一个可以从这种技术中受益的项目。我看到了在陆军模拟器中使用的程序生成(可以被认为是一种游戏,尽管它们不是很容易玩:)。

请注意,如果程序生成是指通过少量规则或者模式以及大量随机性生成大量数据的任何东西,那么结果可能会有所不同:)

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

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

Terragen和SpeedTree将向我们展示过程生成的一些惊人的可能性。

程序生成是一种可以在任何语言中使用的技术(由于它可以在Java等OO语言和Prolog等逻辑语言中使用,因此它绝对不限于C等程序语言。)对任何语言的递归都有很好的理解,可以增强我们对过程生成的理解。

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

  • 模拟城市的增长,以规划交通管理
  • 模拟血管的生长
  • SpeedTree用于电影和建筑演示中

程序内容生成Wiki:

http://pcg.wikidot.com/

如果我们想要的东西不在那儿,那么添加它;)