Perlin Noise (Infinite) Biomes?

So I tryed to do something with 2D Perlin Noise (The generation is Infinite) and made some 1024x1024 Images to see how the Biomes and the height fits together.

Seed 1

Seed 2

Seed 3

The third one is quite ok inside the 1024x1024, but the other ones are a little messed up, i mean those small Biomes within a big one isn’t what i want. The Biomes are generated by Using 2 Noise Maps (For Example Tempreture and Climate) and like when the values of both are above 0.5f it’s red, etc. How do i get those Biomes to be “Smooth”?

very cool,

would you be able to give a quick tutorial or write up on perlin noise?

this is an area im very interested in.

thanks!
j.

I think this algorithm might help out as a ‘after-effect’:
http://roguebasin.roguelikedevelopment.org/index.php?title=Cellular_Automata_Method_for_Generating_Random_Cave-Like_Levels

[quote]The basic idea is to fill the first map randomly, then repeatedly create new maps using the 4-5 rule: a tile becomes a wall if it was a wall and 4 or more of its nine neighbors were walls, or if it was not a wall and 5 or more neighbors were.
[/quote]

Okay, But how will this work with infinit biomes?

Good question. I have no clue ;D

I did similar with a “round” world generator I was playing with, I put the world through a few passes of a check for how many points around it. Checking 8 around it would work for smoothing, but not for removing the small biomes. To do that you would need to use a wider area to check.

From my testing, the wider the area, the more small areas are cleaned up, the more times it is run, the smoother the edges. One difference with my generator is that this was done at the end of each step, as my world generator subdivided until it reached full size. ( Square-Diamond algorithm)

Here’s an example of before and after:

https://dl.dropboxusercontent.com/u/62703524/GameDev/WorldGen04.png

https://dl.dropboxusercontent.com/u/62703524/GameDev/WorldGen05.png

As for getting it to work on infinite generation, just don’t perform the smoothing on the outer edge, so there’s always something to sample. Make the border is as wide or wider than your scan range, so you never try to access outside of what’s generated (if 17x17, or 8 radius, then atleast 8)

Of course this isn’t always the fastest ever, so you have to balance accuracy and speed.

Look up voronoi diagram (also cellular noise).
This algorithm helps dividing space in regions, which you could give values according to other noise.

How it looks:

http://upload.wikimedia.org/wikipedia/en/thumb/8/80/Euclidean_Voronoi_Diagram.png/220px-Euclidean_Voronoi_Diagram.png

With this you still could have small places, this could be overcome with some variation of the Halton sequence (fills up space random, but evenly).

Good luck!