[Feature Request] Deterministic Erosion options

This is a hurdle I’ve faced in game development across several projects while using World Machine.

I often get to a state late in the development of a terrain, where I need to lock it down on a large scale so that the rest of the dev team can do their work. Then I can noodle some areas of the terrain that need more polish, or move onto a different part of the world that nobody is working on yet.

But every time I render the full terrain out, all the small little erosion lines will shift just a tiny amount. Not enough to mess up big stuff like placement of POIs from designers, but enough to make all my masks no longer aligned with the heightfield. This forces me to reimport the entire world again, texture masks and all, just because I had to change the size of a random lake somewhere on the map.

If erosion could be deterministic, and not randomize in any way, that would be incredibly helpful. It would smooth out production times, and help me work across an entire world in segments, without having to constantly update the entire world across the entire game.

1 Like

I hear you.

This is a thorny problem, as the non-deterministic behavior comes from the multithreading of the Erosion device.

One work-around is to disable device threading in the Program Settings->Build Options page. you’ll immediately find that the Erosion device suddenly produces identical output between two different builds. Of course, performance suffers accordingly. But it might be worth doing in some scenarios.

I have a few experiments in line to try to fix this, but it will take some time, so it’s very helpful to hear that this is a significant issue to your work - it helps me prioritize what gets worked on!


Oh, good tip! I’ll give that a shot. I don’t mind if it takes forever, I usually build overnight anyways.

This is also something I would be interested in. I do have my hacks to work around it, but it would be a nice to have definitely. The rest of the team would love it even more :slight_smile: