Parallelised Worlds
A downloadable tool
Parallelised Worlds is a python based terrain generation tool to create consistent and detailed worlds.
Generates heightfields for terrain maps. Heightfields are continuous and fully procedural.
Source code available at https://github.com/EddieMcT/Map_Generator/
Notebook version can be found at https://colab.research.google.com/github/EddieMcT/Map_Generator/blob/main/Parallelised_world_demo.ipynb
Parallelised Worlds are, as the name would suggest, entirely made in parallel. This means that every step in the calculations is fully deterministic, using basic arithmetic and a lot of fractal noise, with no simulations or random processes involved after setting initial parameters. Each point is calculated entirely independently of the others, and any number of maps can be made of a world at different zoom levels, locations, and resolutions without discontinuities.
This calculation starts with an approximation of tectonic plates as voronoi cells, samples using jittered coordinates to create fractal coastlines, then blends between these to create boundaries and mountain range, before using a new implementation of Dendry noise (Gaillard et al. 2019) to add rivers.
Currently the script (main.py) operates by reading parameters from world_parameters.yaml and imaging_parameters.yaml before sampling a grid of coordinates. An interactive version is included at the end of the notebook, which can be run locally (recommended) or on Google Colab. Future plans include allowing for different sampling methods (ie spirals or other uneven patterns with baked-in LOD), further testing of the gpu implementation with cupy for other operating systems, and assorted design improvements. Heightfield outputs are automatically normalised and saved as uint16 pngs, in order to make optimal use of bit depth in game engines such as Unreal Engine. Values to undo normalisation are stored with image names in order to allow automated corrections.
This has been a passion project since 2020 and has slowly grown out of a love for DnD maps and other generators made for my home games. It has, in that time, also served as a continuous source of inspiration to learn more about programming and about the natural world. For the 2025 DirtJam I've included Dendry noise, made the project (hopefully) more user friendly, and overall improved the workflow. Dendry is the newest addition and subject to a lot of change in the future, particularly with regards to the way that the multiple length scales are blended together and the way in which world details inform river layouts. For performance reasons, all animations are made without dendry, and visualisations are created in Blender.
Generative AI and other disclosures.
Generative AI (chatGPT and Copilot via VSCode) assisted with code creation only. Dendry noise is based on a paper by Mathieu Gaillard et al. and is my own interpretation of this method.
Updated | 24 days ago |
Status | In development |
Category | Tool |
Author | Edward_McT |
Tags | Generator, Procedural Generation, Tabletop role-playing game |
Code license | MIT License |
Links | GitHub |
Download
Install instructions
Download includes a .zip of all source files. Requirements for python environment are included in requirements.txt. Using cupy on GPU (tested for nvidia gpus on WSL and Windows via notebook only) will considerably improve performance. Requirements for notebook may differ from requirements for the rest of the library due to display elements (ongoing development).
When running main.py, information will be read from world_parameters.yaml and imaging_parameters.yaml before generating the image. Optionally, custom arrays of coordinates to sample can be provided in a csv (untested) in order to use non-square-grid sampling strategies eg for LOD.
For performance reasons it is advised to initially set Dendry noise aka river scale to 0 at it is computationally intensive. This can be added back in once other features have been decided on.
Development log
- Notebook and interactive mode39 days ago
- Post dirtjam bugfix61 days ago
Leave a comment
Log in with itch.io to leave a comment.