I have started looking at adapting this for HexDescribe type reasons.
For example: – https://github.com/bluetyson/Map-Generation/blob/main/src/map.py
https://chgowiz-games.blogspot.com/ is working on a epic random generator for a campaign you can read about at his blog – using HexDescribe https://campaignwiki.org/hex-describe
Borrowing his business classifications for an example for the Map-Generation software:
The output for this program is GeoJSON, so thanks to QGIS – which is great open source software.
closeup example
Randomly perturbed Voronoi generation seems to work well for the random wanderiness of towns or cities that spring up.
The original code has churches, monasteries and Cathedrals. Pretty sure our D&D type games don’t need that sort of building type overload.
As well as GeoJSON – it has a viewer script that is basically QTing a PNG, so your usual plt.savefig() before that will get you that version of the output, saved, too. Need to make one that is labelled – maybe a geopandas .
Converting this to perl directly would take a bit of work – no higher level geospatial apis like shapely around there, so would have to redo in gdal directly :- https://metacpan.org/pod/Geo::GDAL. Probably easier to wrap, for fun.
Alex has made some adjustments to his Alpine algorithm for TextMapper to get better desert terrain – e.g. Australian. Lots of generic rpg maps assume European type things – e.g. cool to cold, whereas Australia is temperature to equatorial, in general.
A program that can generate cities and towns, medieval Voronoi style. Along with a viewer that can produce graphcis the base output is json, which gives you vector data to use with other things. Very nice!
Sample city
Here is an example of a possible configuration for the city to be generated:
city = City(10000, 10000, has_walls=True, has_castle=True)
tools.json(city, '/generated_city/city.json')