Mapgeneration

Brokenshakles

New Member
Contributor
Wow! This is utterly fantastic, I will definitely want to use this in our DF type game mode, with a few things added on. Plate age, temperature based on elevation, a lot can be done with a number of height maps overlayed on top of each other. Do you think we could simulate the effects of volcanic buildup and glaciation as well?
 

UberWaffe

Member
Contributor
Design
I'm trying to draw up MoSCoW requirements for all incubator threads (First test release, first playable release, full release). In an effort to help the contributors flesh out ideas and importance of features.
Would you like me to do so for this thread?
 

Brokenshakles

New Member
Contributor
Also, i got an idea for "fast" way to calculate the global heatmap:
Code:
for (int y = 0; y < map.height; ++y)
    for (int x = 0; x < map.width; ++x) {
        double height_sum = map[y * map.height + x];
        int di = y < map.height / 2 ? -1 : 1;
        for (int i = map.height / 2; i != y; i += di)
            height_sum += map[i * map.height + x];
        heatmap[y * map.height + x] = 1.0 / height_sum;
    }
On a flat map this would result a hot belt on equator and cold at the "poles". A mountain will block the progress of heat towards the "poles" just like it does now. Finishing touch would be to run an aggressive gaussian blur on the heatmap.

With one simple optimization this method would require just width*height operations per coordinate to get the raw heatmap and after that the blur would require something like blur_width*blur_height*width*height operations to finish it off. For a 512*512 map and 4*4 blur this would mean 512*512+4*4*512*512=4456448 operations i.e. roughly 2 milliseconds (of which 94% comes from the blur). However, i haven't tested the idea in practice so i can't guarantee good results.
A way to make this method a bit more realistic would be to generate some basic climatic patterns/prevailing wind currents and use those to spread/direct the interpolation instead of assuming a perfectly northward current over the northern half of the map, and a similar uniform current over the south.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
I suspect the point to that calculation was max performance, not max realism :)

Although for a world gen step 2 ms is absolute peanuts. I'm okay with it taking, *gasp*, two entire seconds! :D

But would be happy to just have something working and integrated. Can get fancier later :geek:
 

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
Just wanted to share this video showing the process of creating a custom world/map with world machine.
I think its quite interesting which steps are necessary for such results (like different noise types, blending, erosion, ...) and which points are hard to automate (like placing rivers by hand). So, if anyone is ever going to continue this work (@Nym Traveel, I hope to see you back here again ;) ) this might be helpful.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Top