4 ms·
I've always thought on-the-fly terrain generation for persistent worlds was a tricky approach, because once you ship the game and have player-created structures
by ericbarrett 5y ago
I've always thought on-the-fly terrain generation for persistent worlds was a tricky approach, because once you ship the game and have player-created structures (bases, etc.), it's difficult to improve the algorithm. You're locked in, so to speak. As a game designer, you have three choices: call it done for the lifespan of the game; change it and disrupt the player base, maybe retconning with some kind of "apocalypse" event; or introduce algorithm versioning for new regions, meaning original areas will look more dated and simplistic as time goes on.
With instanced games like Minecraft, it's less of a problem, because players can choose when to move to a new world and get the advantages of new terrain algorithms.
Maybe not the end of the world (ha ha) but it's an interesting design issue and I'm curious how various teams will handle it.
- enriquto 5y agoYou can use versioned seeds to have place for future versions of the generation algorithm.
- vidarh 5y agoAs far as I understand Minecraft stores the chunks a player visits so that if the generation changes the chunks you've already visited stays, and it becomes an issue of solving boundaries. I don't know what Minecraft does there, but a plausible method would be to generate past the boundaries, and apply some merging process to make it mesh somewhat predictably if the generation changes. An idea I'd love to see implemented (maybe someone has) is to apply a time element to the generator function where things change towards whatever the generator expects. E.g. new types of trees start growing, desert spreads or recedes etc. You may want to then make player-placed blocks more resistant, but otherwise apply transformation functions to slowly migrate the terrain. You can apply that more aggressively to chunks the player rarely if ever visits. E.g. erode land that's too high. have trees grow etc. Some features then certainly will be noticeably "wrong" - e.g. a mountain suddenly growing - so maybe you make exceptions and just try to eat away at the differences you can plausibly change. Even if you can't change everything, you can at least try to use it to make things blend better. Couple it with running the old generator slightly further out from the user and you can mark those chunks as "unseen" and much more aggressively blend faster there. The more finegrained info you store about what the player has actually seen, the more aggressively you can apply this.
- shrx 5y ago> As far as I understand Minecraft stores the chunks a player visits so that if the generation changes the chunks you've already visited stays, and it becomes an issue of solving boundaries. I don't know what Minecraft does there... Last time I've played in a world spanning multiple Minecraft versions, there were clear discontinuities (steep cliffs, minor water and lava floods) between areas that used different generators.