christianessl/landmap-generation

使用PHP生成像素化的随机世界地图。

1.0.0 2019-02-26 19:28 UTC

This package is auto-updated.

Last update: 2024-09-06 13:35:48 UTC


README

使用PHP生成像素化的随机世界地图。

Code Climate Latest Stable Version Total Downloads Latest Unstable Version License

这是一个简单的PHP实现的陆地地图生成器。它支持生成高度图,设置水位,着色和阴影。输出的结果将以像素风格呈现。

Screenshot

1. 安装

composer require christianessl/landmap-generation.

2. 使用方法

require __DIR__ . '/vendor/autoload.php';

use ChristianEssl\LandmapGeneration\Settings as Settings;
use ChristianEssl\LandmapGeneration\Generator as Generator;
use ChristianEssl\LandmapGeneration\Color as Color;
use ChristianEssl\LandmapGeneration\Color\Shader as Shader;
use ChristianEssl\LandmapGeneration\Enum as Enum;
use ChristianEssl\LandmapGeneration\Utility as Utility;

$seed = 'otters_are_awesome!';
$settings = (new Settings\MapSettings())
    ->setColorScheme(new Color\DefaultColorScheme(new Shader\FlatShader()))
    ->setWidth(500)
    ->setHeight(300)
    ->setWaterLevel(60);

$landmapGenerator = new Generator\LandmapGenerator($settings, $seed);
$map = $landmapGenerator->generateMap();

$image = Utility\ImageUtility::createImage($map);
Utility\ImageUtility::outputImage($image, Enum\FileType::PNG);

3. 示例输出

500x300像素

种子: 'otters_are_awesome!'

60% 水域,平面着色器

Screenshot

30% 水域,平面着色器

Screenshot

60% 水域,详细着色器

Screenshot

60% 水域,无着色器

Screenshot

4. 配置选项

类 MapSettings

类 DefaultColorScheme

类 LandmapGenerator

实现的着色器

待办事项

  • 实现一个用于示例的Perlin噪声算法(比钻石-平方法快得多)
  • 重构和解耦ImageUtility
  • 可能缓存高度图生成(可能作为JSON树?)
  • 将钻石-平方算法移植到GO(在另一个项目中)并添加选项将PHP项目连接到GO库