程序生成

Procedural generation

本文关键字:程序生成      更新时间:2023-09-26

我对使用php生成过程映射感兴趣,它可以是静态的。我只需要让自己走上正确的道路……我读了很多关于它的文章,并且明白我需要使用噪声生成来获得基本的地图形状。那之后呢?我将使用32x32的简单贴图。通过php是否可能/有效?

考虑使用Perlin或OpenSimplex噪声。

你既可以自己实现,也可以简单地使用库:

https://github.com/martinlindhe/php-noisegenerator

你可以使用这个库生成一个数组的高度图:

$perlin = new 'NoiseGenerator'PerlinNoise(3000);
$width = 100;
$height = 100;
$octaves = array(64, 16, 4, 2);
$noise = array();
for ($y = 0; $y < $height; $y += 1) {
    for ($x = 0; $x < $width; $x += 1) {
        $num = $perlin->noise($x, $y, 0, $octaves);
        $raw = ($num / 2) + .5;
        if ($raw < 0) $raw = 0;
        $noise[$x][$y] = $raw;
    }
}

现在你已经填充了噪声数组,你可以在你的前端使用JS或任何你想要的颜色来表示它。我会让你弄清楚这方面的细节,但本质上,在你的高度图中找到你的数字范围,并确定不同类型地形的阈值。

我写了一个教程关于生成高度图和渲染他们使用噪音在这里:https://plaxdev.wordpress.com/2017/05/04/procedurally-generating-islands/

这篇文章不使用PHP,只使用JavaScript,但是如果你在JS中渲染highightmap背后的想法是包含在这篇文章中,如果你正在努力。