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
You can see some examples here https://docs.google.com/spreadsheets/d/1G8AZf2tBOtGYr5AEKis7_AZYpJ1_T18LFYp_mi_rikY/edit#gid=1019219400 and https://pastebin.com/raw/W9zgH3pN
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.
![](https://i0.wp.com/cosmicheroes.space/blog/wp-content/uploads/2023/02/image-5.png?resize=525%2C550&ssl=1)
![](https://i0.wp.com/cosmicheroes.space/blog/wp-content/uploads/2023/02/image-6.png?resize=525%2C393&ssl=1)
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.