GLBasic forum
Codesnippets => Code Snippets => Topic started by: Scott_AW on 2010-Oct-15
-
I was somehow interested in world generation, while playing Dune 2000(its free now) and wasting time. Then I had a bunch of thoughts that eventually led me to world generation.
I'll save you from the chain-like tangent that brought me to this....
Anyway I first started looking it, checking out perlin noise. Now I kind of get it, but then not enough to feel comfortable using. So I started looking for, then found a nice alternative. Unfortunatly I can't recall the link, but it had a nice few sentences that described how you can generate semi-realistic worlds with a simple alogorithm.
You start out with a world array and a stack array for storing positions.
Fill in a few random places with land and water tiles, saving those locations in the stack.
Then scan through the stack, checking 8 direction around of tile and then setting them up either land or water. If the home tile is water, all adjacent tiles turn to water.
Download GK.zip (http://host-a.net/scott_aw/GK.zip)
Code attached at the bottom, references to images in the demo above.
Its not perfect perfect, but I'm sure with a little toying around you can get it to do what you want.
Oh, and add this line after //set grassy areas in sand
// Remove sand from grass
IF world[sx][sy] = 2 AND (range[0] > 1 AND range[1] > 1 AND range[2] > 1 AND range[3] > 1) ; world[sx][sy] = 3 ; CONTINUE ; ENDIF
*10/17/10
Heres a more recent screenshot/demo, I plan on uploading the updated code sometime soon.
Download GK2.zip (http://host-a.net/scott_aw/GK2.zip)
(http://i206.photobucket.com/albums/bb140/scott_aw/genworld.png)
Photoshopped the mini map into that.
[attachment deleted by admin]
-
What would be interesting is to use a Perlin-like algorithm with a very low noise level as a first pass, then have this algorithm clean it all up. Looking at your screen shot there are obvious patterns so it currently isn't really as random as it should be -- assuming that's due to the random number generator and not a fault in the algorithm.
Another possibility is to see whether the Mersenne Twister PRNG (http://www.glbasic.com/forum/index.php?topic=2821.0 (http://www.glbasic.com/forum/index.php?topic=2821.0)) as a replacement RNG makes any difference to the output.
Pretty cool though what you've got there. Generated content has long been an interest of mine.
-
that loooooks reaaaaly interesting! congrats!
-
Still needs some touching up, I'll wait til it produces a little better.
Might try it with other map generation types.