A few weeks ago, I started looking into the DomMap random map generator program to take a look at how it works (it's a pretty cool program), and I thought it might be fun to add some features and fixes while I was in there. I had a few ideas and asked Gandalf for some ideas as well, which he was happy to share.
So I've been plugging away at it for a while, having some fun, and it's about time to let some other people besides Gandalf have a crack at it.
I've updated the Version to 2.12 (yeah, I've gone through multiple rounds of changes/fixes with Gandalf beta-testing for me (thanks, Gandalf!).) You can find the zip file with both the source and a Windows executable at:
http://www.dom2minions.com/DomMap/DomMap212.zip
So what's new? I haven't kept an explicit change log of what I've done, but I'll try to remember the notable details...
- Impassable borders option: you can specify a fraction of the province neighbor connections to be made uncrossable (ie: like the Cradle map) to create some bottlenecks and chokepoints. Uncrossable borders are marked with a thicker (2-3x) border. DomMap will ensure that all provinces are interconnected and reachable from each other no matter what fraction of impassable borders you set. Optionally sea-sea borders can also be randomly made impassable.
- The province capital placement algorithm is revamped to be far more able to find islands, peninsulas, and landlocked lakes much more frequently. I've also tweaked the default settings to help with this as well.
- large/small provinces - there are new options to set thresholds for provinces being marked as large or small based on their pixel sizes in relation to the average land or sea province size. Some statistics about land/sea province sizes and the number of large/small provs is now output to the .map file.
- manysite provinces - you can set a fraction of all provinces to be set with the ManySites flag bit, which will cause it to be more likely to contain special sites.
- fixed bug in the random generation code that was causing (in Visual C++ anyway) some odd square map artifacts and was also causing the shadow map shading to not work correctly.
- I also discovered the rand() random number generator isn't so great (at least under VC++), and can only generate 32K different values (no so hot when one large map can easily use 6 million+ random values). I've integrated the "Mersenne Twister psuedorandom number generator" as a superior random number generator (it's not GPL, but it's freely distributable - just need to preserve their copyright notice).
- added new default terrain/border colors chosen by Gandalf
- Sea provinces can now contain land, so tiny islands are not bordered off as unusable islands or converted into sea pixels.
- Fixed some problems with the land/sea border color options not working correctly.
- Fixed a bug that sometimes resulted is a province not being marked #nostart when it should have been.
- borders were stopping 1 pixel short of the map edges - fixed.
- sea provinces can now have special shapes just like land ones do.
- The #terrain lines in the .map file are now annotated with a text comment showing province land/sea type, and its number of land/sea connections, in the form of: L-S2L3 for a land province with 2 sea and 3 land neighbors. This was a request from Gandalf to help people who do further work on the random maps (adding independents, etc).
- added -blank option to create maps with only plains terrain for those that use the random maps as an outline basis to paint their own maps on.
There's probably a few small things I missed, but that's the bulk of it.
You can run DomMap with -help to get a listing of all the command line options. I can help explain them further if anyone want to know what they do. Gandalf has generated a set of small maps with the same random seed but other, different parameters which can help show what some of their effects are. That's at:
http://www.dom2minions.com/~dominion...ojects/DomMap/
Let me know if you have any other questions/problems with DomMap, and I can try to help.
-LintMan
Edit: fixed link to small example maps