I started this project by creating a world map. The thought behind this being; during the fifty or so thousand years these inhabitants have lived on this world, the physical geography would not have changed much, but would influence the way cultures formed. I didn't want to go too in depth on this concept of geography influencing culture, but I wanted to at least have a framework for the larger themes in each culture. Building styles and resources are two major things relating to geography that could impact societies.
The major problem this brought up was what I would have to do to transfer this world into Unreal Engine 5, my game engine of choice. The first component of this problem was the size the map would have to be. While I would love to have full continents and several countries and cultures on each, as I did my research, I realized my computer wouldn't be able to handle such a large map being loaded into memory. I'm not really sure why in UE5 the entire heightmap has to be in the RAM especially with world partition, but I ended up deciding to create just one country instead. This choice informed the scope of the project, and is another benefit I saw from starting with the full map. Perhaps one day I will be able to create the world in it's entirety.
The second component of the problem was how to create the heightmap itself. I love the idea of having realistic terrain, but I had to be able to manually chose where mountains and plains and valleys would go. The two reasons for this being: I needed the region I chose to create to accurately match the world map, and also because of the importance geological features have in regards to gameplay and the perception of the size of the world. In other words, I want the world to feel very large despite only being 8.13 km to a side. I had briefly given up on the idea that I could impart any kind of realism on the terrain via specialized tools (see: below) but I thought it would be easy to sculpt a terrain in UE5 by hand, especially considering the built-in plugins they have available for shaping water bodies. However, due to the size of the map, the lag after completing a brush stroke was a dealbreaker for me.
The reason both having realistic terrain and also being able to place features manually are in conflict is thanks to pricing restrictions in heightmap or --as they call themselves-- "world" generation software. High end, sufficiently powerful heightmap generation software costs hundreds of dollars. I needed realistic erosion functions and the ability to create terrain material masks based on the erosion and slope, among other things. The only program of this kind I was able to find that allowed you to art direct the placement of landscape features was WorldMachine, but I'm not sure how this works or if other programs are capable of doing that because researching outside of "best free terrain generation software" was a waste of time since I can afford nothing.
Then one day the heavens decided to bless me, and e-on software's VUE came into my life. Basically and heavily simplified, e-on went out of business a few moths ago (iirc) and decided to release their software to the public for free. This software is advertised to have been used in huge studio productions for things like movies; I believe Kung Fu Panda even used VUE for it's world gen. This fact alone ended up being a problem itself, since it seemed like e-on was mostly B2B and not many people outside the industries that used it would have the software. Therefore, there is VERY little information online about how to use VUE in particular, and I had to learn it by digging around in the software.
Eventually, I ended up being able to acquire a basic sense for the program from the SCRAPS of information I was able to find online, and learned how to generate a heightmap from a noise generator and erosion node in VUE's heightmap graph editor. But still I didn't know how to get the mountains and valleys and plains where I wanted them. Then, a thought that had been brewing in my subconscious surfaced in my mind; I could use Blender to generate one. I had a vague understanding at the time that one could create heightmaps from meshes for the purpose of displacement or parallax mapping in PBR materials, and I realized I could use the Blender sculpt tool to sculpt the terrain lag-free and render a heightmap from that, which I suspected --due to the comprehensive and professional nature of VUE-- would accept the importing of a heightmap made externally. It's not a very elegant process, but it is perfectly fine for me, and I don't even have to pay a penny.