Random Map Generator (Work in Progress)
I've been working on a random map generator for the last past days. Yes there are plenty of them already available. Yet it's been in my mind to make one and it's a good programming exercise too.
I've read as little as possible on what has been done prior so I could think afresh. I've come up with two core engines as of now, and neither are really satisfying, although progress is rapid.
The two core engines are based on elevation and seeding respectively. The first one consists in browsing the map and raising each tile depending on its neighbours' elevation. The second consists in seeding random dots around which land is spreading or mountains elevated.
Each have their own pro's'n'con's but the first is my favourite, because it has a much more organic result. Its drawback is that right now I have worked on a top-down, left-right pattern, which shows in the map (because everytime the map has less constraint on the sides it is growing towards, and thus patterns tends to repeat more in those directions). This could be remedied adding some randomness to the direction in which tiles are processed. Also because the way this model works it will be possible to increase the range of elevation details (i.e. from 5 levels to 10 levels or more), which you can flatten (or seemingly flatten) by merging those levels, for instance you can raise water level from level 0 to 3 to increase oceanic surface.
The second allows for much more customisation, but the seeding makes the map look like a bunch of big splotches as land tends to concentrate around the seeds. This one can be fixed too by adding clustering into the seeding. The best way to cluster is to seed a cluster center in a portion of the map (the more clusters, the more portions) and to divide the amount of seeds to be spread around the clusters randomly, yet within the portion. Once the seed are seeded, the spreading takes place, which also has some degree of randomness into it. If the resulting map looks better to you now it's probably because I have worked on it much more, and there are several more effects applied, like cleaning up and smoothing down. These effects can be implemented in the first model too. But if you look at the way this one is designed, you can see there is a repeating splotchy pattern, which I greatly dislike. I would like to see mountain ranges as in the model above. That's perhaps to be fixed with the clustering.
If you have any ideas, comments, questions. Let me know.