I just released a new version after first releasing it 18 months ago. It's been a hard slog to scrounge time as it's not my day job but that's life.
There's a ton of obvious improvements in the future (weather systems, temperature, varying rainfall, ice/snow, more biomes, more plate tectonics, lava, etc) but all suggestions/feedback is welcome.
Especially if you could mod in/script/configure strange flora/fauna, this could be a great tool.
I get this feedback a lot, but I'm unsure what formats would be most useful- there are a lot of different heightmap / GIS formats to choose from.
- you have a limited amount of some mineral or rock that erodes quicker or slower than others, and you need to move water from one location to another.
- there is a magma chamber growing under a mountain. Move the villagers out of harms way / destroy enemies.
- introduce sinkholes: make as many sinkholes as possible within some period.
Speaking of CS, I wish this simulator had heightmap export.
I might gamify it a little bit more, but personally I love the fun that comes from exploring a set of mechanics by yourself without anyone telling you what you're trying to achieve.
My aim is to build a set of simulation mechanics that are accurate enough to teach you a little bit about how the processes work in real life but also responsive enough to let you play around with them and create what you'd like.
https://www.youtube.com/watch?v=gk4hRWD6BT8
I played it on the Xbox 360, but it's on Steam as well. https://store.steampowered.com/app/33460/From_Dust/
I think I've finally found a PC game she's going to be excited by.
(I'm not an accountant, although I have partially trained as one)
It's got big corps and large money management, etc. You can scratch that itch for sure.
The river look too straight. I expected more meanders.
The rivers don't meander in the way that real rivers do- real rivers meander because of differences in flow velocity across the width of the river, but the simulation doesn't run at that sort of resolution. If it did, the area covered would be far smaller.
Now give me something planet scale with basic climate, biosphere, evolutionary models, and a Simpsons "Genesis Tub" approach to Civilization and I might not leave the keyboard days on end.
Maybe think of the experience you want the player to have and then work backwards from that?
The video mentioned that besides the rendering engine, Novalogic also develop their own terrain generation tool, with erosion methods, elevation decay, etc.
Voxel Space (Comanche Engine):
Is it a grid based system underneath? How do you calculate water displacement, is it with a vector field? anything else you'd like to share about the implementation?
My first attempt at creating a simulation of water and erosion before I saw this paper was pretty bad as well.
Yes, it's a grid based system. When you choose map size (e.g. 1024x1024) that's the resolution of the underlying simulation. My refinement of this approach is there is an extra step that "smooths" everything out. The vertex points for rendering are offset depending on how the water flows, which allows rivers to appear to flow at angles other than 90 degrees. Without this, it would either be very blocky or cover a much smaller area- there are other implementations of that paper floating around and the scale is an order of magnitude less, as a river needs to be many grid points across. In my implementation, you can get a nice looking river from a sequence of single points.
The drawback is this complicates a lot of other things. E.g. you can no longer easily tell what the height is at a point on the map is- there is no easy way to know what vertices to interpolate between since they can be offset in different directions. So when rendering trees, there's a whole GPU calculation to produce a separate data layer just to know what height the ground they're sitting on is at. But it's worth it to get a map that covers a big area with a full water flow simulation.
In general terms, the simulation is done as a series of grids of values (called layers, in reality just textures on the GPU) and operations that take some of them as input to generate another. Some layers persist always (e.g. the water flow) and update themselves iteratively. Other layers are produced on the fly when needed, and can be at different resolutions. E.g. you zoom into an area of the map- the water layer is read to determine the biome layer for just that part of the map. The water layer is read to determine the heights layer I talked about previously. Then the biome layer, water layer and heights layer are combined into a trees layer where one grid vertex is one possible instance of a tree. The values represent whether a tree is there, the position of its base, the type of tree, etc.
That's used as input for the rendering system, there's a mesh that uses that trees layer to render all the trees. It's also used as input for the animals system, so the animals walk around the trees, etc. It's basically a big dependency graph of data layers and the operations needed to generate them. Most of the work so far has been building all that tooling and getting it running asynchronously so the game doesn't lag if it takes multiple frames to generate what is needed.
Cool idea and thanks for sharing. I'm definitely going to give it whirl.
As a note, you said it requires a dedicated graphics card but it does seem to work fine on my laptop's integrated graphics (AMD 4500U) and performance was good with at least the default map size.
https://www.lanl.gov/orgs/ees/geodynamics/Wohletz/KWare/Inde...
It seems like it would be a hit.