Friday, 4 March 2016

Evolution blob

One of the ideas for my 7DRL is what I call an evolution blob. In that let's say you start your level generation with ocean tile. What's next? It could be probably sand tile, then sand tile could become dirt etc. Each tile would have the next evolution stage or several ones which then could create a branch in the evolution. To avoid everything become the last stage of evolution there needs to be some kind of percentage value for creation and also possibly a proximity check for stuff like creating dirt next to sand, but not next to ocean (where it would erase the sand tiles).

Then "blobs" are created over each other to proceed the tiles in that place to next generation. I don't know how far you can go like that, but at least simple terrain generation should be quite easy. I guess you could create some kind of rooms by applying a room shaped "blob" with extra value to proceed the evolution from natural environment to artificial walls.

I was talking about planning everything to paper, but it didn't work, because I had the kind of ideas that needs to be implemented to see if they work. Beside that I'm trying to think hard what is the role of classes vs. procedural functions, because I want to stay away from classes as much as possible.

1 comment:

Aging Minotaur said...

I'm using a similar idea in Land of Strangers, actually, although I currently only have a couple of climates sketched out. When defining a new "blob" ("superhex" in my scheme), you check the neighbors and calculate which possibilities are how probable. Eg. a neighbor desert tile might increase the chance of more desert, savanna or thorn climate, but straight out forbid that any of its neighbors should be jungle. A nifty side effect is that it gets quite easy to let the game know about continuous regions. And it can be used on a smaller scale, as well, to generate stuff like rock formations in the desert. Go through empty tiles in the landscape after you've put your places of interest, and check their neighbors and maybe put features for variation. From my narrow knowledge, I guess the technique is similar to cellular automata, only without the evolution aspect.

As always,