This project naturally separates into three general stages: pre-entity world gen, entity world gen, and “in game.”
Pre-Entity World Gen
Pre-Entity World Gen encompasses everything that occurs on a very long time scale, from billions to tens of thousands of years. This primarily comprises terrain generation and long term climate simulation. This section isn’t very complicated, so I’m lumping it all into my first design arc.
Post-Entity World Gen
Post-Entity World Gen is world gen that may want to utilize an entity-component-system and operates on shorter timescales, from the development of animals over millions of years to, later on, the rise and fall of civilizations.
The Other Stuff
“In game” is what I’ll call everything that happens after world generation, for now. The fun stuff.
I already have most of Arc 0 done. I just have to clean up the graphics for pretty screenshots and write it up nicely. I plan to work on post-entity world gen and the in-game stuff simultaneously, but more on that later.
Arc 0: Pre-Entity World Gen will consist of:
- Tectonic plate generation
- Elevation calculations from plates, faults, and noise
- Rasterization into a tile map
- A climate simulation containing
- Air circulation
- The water cycle
There are several things I’d like to include in Pre-Entity World Gen but aren’t fundamental to Entity World Gen so I’m leaving them for later. These include:
- Ocean current modeling
- Ice sheet formation (and other albedo factors)
- Tectonic plate movement, even including mantle simulation
A final note is that I’m still not sure how I plan to simulate vegetation. I’d like to use the biological systems (including genetics, emergent natural selection, etc.) that will operate within Entity World Gen; however, vegetation has a significant effect on the climate simulation that occurs in Pre-Entity World Gen, primarily transpiration and surface albedo.
Additionally, biome identification is dependent on both the climate simulation and vegetation. Ideally, I would simply have biome labels that would be assigned to areas based on their temperature, elevation, rainfall, and vegetation.
At this point it looks like I’ll push vegetation off into Entity World Gen and ignore the effects on climate simulation, but I’ll continue looking for a better solution.