ASHGRID - Procedural Map Generator

bauss jacobbauss at gmail.com
Fri Jul 11 00:06:16 UTC 2025


ASHGRID is a procedural map generator written in D.

It's kind of basic now but it gets the job done.

It can generate various maps and also dungeons.

It has a lot of flexibility in terms of configurations and also 
types can be replaced such as enums for biomes, tiles etc.

https://code.dlang.org/packages/ashgrid

https://github.com/bauss-dev/ASHGRID

Examples

Initialization

```
auto settings = new MapSettings(seed, width, height);
```

Generating a map

```
auto biomes = generateBiomes(settings,
[
     Biome.plain : 0.4f, // 405 plain
     Biome.forest : 0.4f, // 40% forest
     Biome.swamp :  0.2f // 20% swamp
]);

generateWaterBiome!Biome(settings, biomes,
     Biome.water,
     (b) => b == Biome.plain || b == Biome.forest);
generateWaterBiome!Biome(settings, biomes,
     Biome.dirtyWater,
     (b) => b == Biome.swamp);

generateRivers!Biome(settings, biomes,
     Biome.water,
     (b) => b == Biome.plain || b == Biome.forest);
generateRivers!Biome(settings, biomes,
     Biome.dirtyWater,
     (b) => b == Biome.swamp);

auto heights = generateHillHeights(settings);

auto biomeTiles = generateTiles!(Biome, BiomeTileType)(settings, 
biomes, heights, (g,b,h)
{
     auto tile = defaultTileGenerator(g,b);

     tile.height = h;

     return tile;
});
```

Generating a dungeon

```
auto biomes = generateDungeon!Biome(settings, Biome.none, 
Biome.wall, Biome.plain);

auto heights = createCoordinateArray!int(settings.width, 
settings.height);

auto biomeTiles = generateTiles!(Biome, BiomeTileType)(settings, 
biomes, heights, (g,b,h)
{
     auto tile = defaultTileGenerator(g,b);

     tile.height = h;

     return tile;
});
```

How you render everything is up to you and will depend on your 
game engine etc.

You may use the functions createCoordinateArray() and 
getCoordinateIndex() to interact with the final produced map.


More information about the Digitalmars-d-announce mailing list