How to Create a Dynamic Procedural Generated World (With different biomes for each)

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By StraightUpGruntled

Hey, so I’ve been working on this problem for a game I am currently working on for quite a while. Many people say that procedurally generated worlds should load all at the beginning, then chunks should be used to show and hide the area of the map. That doesn’t work for my game, cuz the player could jump from planet to planet at any time, and I don’t want a long loading screen for each new world the player comes across. Thus, it generates terrain on the spot in chunks of size 10x10 tiles in a 3 chunk radius around the player. Not super related to the possible solution to this question, but something I would note.

I am currently using Open Simplex Noise to create maps. I have two profiles of noise, one for altitude and one for moisture or temperature. This works great for static planets with each having the same biomes and sizes. However, I want dynamic biome sizes.

The current system I have takes a massive dictionary of biomes, and picks biomes that work with the planet’s randomized temperature. Each biome in that dictionary having its own dictionary of data, such as it’s tile indexes, and the temperature range it can survive in, altitude ranges, etc. What I need is a way to set all of the ranges every time a new world generates. I know how to store this info once I find a solution, I just need help with the initial generation algorithm. Also, I have the system for choosing the biomes that work for the world in a list called biomes_applied, so that list can be used to reference the BiomeIndexes list that has the reference to all the biomes in the game.

Any ideas on how to program a system like this? I know it’s quite a dense question, but I really am stuck. I get that with noise generation, I can just check for example if the 2d noise value at a given tile is < -5, for example, we place ocean tiles. But how would I go about coding a system that creates both altitude and moisture value ranges that fit together and make sense, so that way there are no empty tiles with no biome values, and there are no overlapping biomes?

Thanks to anyone willing to answer this in advance! It’s a hard question.

I know it’s been a while since this post was made, but two month later, I am still struggling to find a good way about doing this. I’m trying my best to find ways to generate biomes and then a variable being able to track what biome I am currently in. The best I can think of is to check the players position and what tile is there and determine from which biome that tile belongs. I also don’t know how to do anything like biome blend or stuff like that. Does anybody know how to do these things?

StraightUpGruntled | 2020-06-06 18:20