
现在我的定义版本是这样的,
游戏中的过程生成是 通过代码 生成用作游戏内容(即资产和物品)的数据 。 简单。
现在,要了解过程生成的一些重要用途,以激发学习过程的努力,
- 程序生成允许我们以最少的资产创建工作,同时提供我们制作的游戏的最大重播能力 ,这在Indie gamedev中非常有意义。 由于时间和资源的限制。
- 与手工制作的东西相比,过程生成允许以多种方式重用资产 ,从而使游戏的尺寸更小,从而为那些不需要下载100GB游戏的游戏玩家提供了更好的选择。
- 最后,它产生了许多效果,例如水波,这些都是不可能用手制作的。 归根结底,它的可能性是无止境的。
最近,我们使用机器学习这一东西来创建内容的能力有了极大的提高,

这是来自Github的Neural Doodle回购图片。 这可以使愚蠢的涂鸦制作出精美的艺术品,因此,请想象一下这可能对游戏开发产生的影响。
但是目前这是一个缓慢的过程,没有太多的优化能力,因此在实际的游戏开发流程中尚需时日,但是机器学习已经开始产生影响。
我们今天将处理两种类型的程序生成,
随机化。
基于规则的随机或突变。
这些并不是准确的名称,但希望它们能帮助您更好地理解。
步骤1,
让我们获取一些资产,创建一个新的Godot项目,并创建一个以Node2D为根的新Scene ,然后保存它。
然后将图标精灵添加到场景中,然后点击它的modulate属性以使其看起来与平常不同。

然后,最终从场景中创建一个图块集,并准备在项目中使用它。
* 确保tileset至少包含2个项目。
另外,请确保保存场景,我们稍后将使用它。
第二步,
现在创建另一个场景并添加一个根(任何节点)和一个TileMap节点。
接下来,只需将我们创建的Tileset添加到TileMap节点,然后将其他所有内容保持原样即可。

而且不用担心颜色不会出现在左侧的“瓷砖选择器”中。
最终会没事的。
第三步
将脚本添加到TileMap节点并开始输入,

创建一个名为grid的新变量。
然后在_ready()中对其进行初始化,以使网格成为保存数据的2D数组 。
使用randi()函数创建所需的数据。
在这里,我们为网格上的每个位置生成随机数,以后可以用来生成内容。我已经将整个事情由17乘17进行了调整,您也可以超越该范围。
步骤3.5,
使用网格生成随机图。

现在点击播放并测试您的代码,

您现在有了一个随机生成的地图。
这次只需为随机化添加一些规则,例如将边缘旁边的所有图块设为黑色,并在出口处随机添加一些孔。

这就是我们得到的结果,

因此,在本教程中,我们学会了创建一个程序室,只剩下随机化和一些非常基本的规则。
将来,我计划创建有关程序生成的更复杂的教程,并使其能够使Godot社区能够使用它来制作令人敬畏的内容,但是前提是该教程在社区中获得好评。
最初发布于 steincodes.tumblr.com 。