Ok, I see you’re poking around. Cool. I have no plans yet for mapgen5 but I have some experiments where I learn new techniques that I might be able to use.
- icons, stylized rendering[1]
- webgl particle simulation[2]
- placing natural resources like oil and gold[3]
- marking territories/nations[4]
- exploring irregular grid point algorithms[5]
- using percolation algorithms to make cave systems[6]
- adding label annotations to maps[7]
- hexagon tiling of a sphere[8]
- healpix tiling of a sphere[9]
- square tiling of a sphere[10]
- voronoi on a sphere[11]
- procedurally generating a planet sphere[12]
- procedurally generating a dungeon on a sphere[13]
I’d like to have more interesting terrain: chasms, cliffs, bays, lakes, estuaries, river deltas, plateaus, etc. I’d like the angle of repose of snow (which varies by temperature!) to affect whether mountain tops are rocky or snowy. It would also be interesting to add features on top of the map: towns, roads, nations, trade routes, natural resources, etc. I think drawing bushes and trees would make things look much more interesting.
In mapgen4 I pushed myself to use a very small procedural generation “budget”. The entire simulation (elevation, mountains, valleys, evaporation, wind, rain, river flow) and the entire 3d rendering had to fit within 1/30th of a second. I recalculated everything from scratch every time you painted even a pixel. In optimizing that code I made it much less flexible, and much harder to work with. For mapgen5 I think I’d like to have a much larger “budget”, maybe 1 second or more, so that I can run much more interesting procedural generation algorithms, make the code much more flexible so that it can be adapted for use in many projects, and make the maps much larger (mapgen4 uses 25,000 polygons but I’ve tested as many as 600,000).
For more procedural generation inspiration, I want to read more papers from the “two Erics”:
- Eric Galin[14]
- Eric Guerin[15]
Graphics:
- Switch from WebGL1 to WebGL2 (widely available as of 2022, but not when I wrote mapgen4 in 2017)
- improve rendering with something like https://shadedrelief.com/realism/
- Switch from srgb rendering to linear rgb rendering
- Add pan and zoom
- Make the render work at many scales, not only the specific scale in mapgen4
- Add font rendering, from my 2024 experiments