Main menu

Post navigation

Cartography in the land of Ultima Ratio Regum

At long last, here is a full-size copy of a procedurally-generated Ultima Ratio Regum world map! Click to see full size:

KEY:

From top/bottom to centre, the biomes/climates/biospheres/etc are as follows. The light blue ‘x’s denote polar regions; the pale ‘#’s are tundra; the ‘~’s are taiga when sea green, temperate when green, savannah when pale green, desert when orange and tropical when dark green. Trees of each colour designate forests (or, in the desert, oases) of that particular climate. Grey arrows are mountains; bright red are active volcanoes; dark red are dormant ones. Downward arrows are valleys. The lines, obviously, are rivers.

Naturally, the image itself is the focus of this entry. However, here are a few nice, choice, statistics for you all to peruse on this fine winter’s evening:

– The world map is 200×200 squares. Each is itself 200×200 on the ‘actual’ map, thereby creating a total play area of 40,000 x 40,000 squares. This is to say nothing of interiors, dungeons, etc.

– Viewing the map can show you either terrain, or territory. The above map obviously shows terrain; territory is still being worked on. There’s also an accompanying menu to choose what to show and what not – towers, caves, dungeons, forts, shrines, etc.

– You can attempt to fast travel though any square apart from mountains, volcanoes, and valleys. These must be traveled through manually, but there’s a much higher than average number of features in these squares. For instance, towers are most likely to spawn on mountains, while caves are more likely to spawn part way down valleys.

– Currently oceans cannot be traveled through. I’m not sure how boats and aquatic movement will work just yet…

– Rivers are generally frozen over in polar squares. This makes them a lot easier to cross, but obviously much harder to actually get any fresh water from. Rivers also affect the growth of trees in deserts; a good bet for crossing a desert safely is to stay close to a river. While you’ll have access to water, trees, and animals to hunt, there are going to be fiercer creatures around the same food sources too.

– Animal creatures (as in, those that aren’t intelligent and cannot be recruited) only spawn in certain climates. You’ll find Yetis in the snow; giant scorpions in the desert; Behemoths patrolling the deepest valleys; and so on and so forth.

Anyway, enjoy the picture! Shoot with any questions about map generation in the comments.

5 thoughts on “Cartography in the land of Ultima Ratio Regum”

Quite awesome !
My only criticism would be about biome patterns being too much organized as horizontal stripes. It seems latitude impact should be lowered in favor of ground height to get more natural patterns.

What did you end up using for chunking? I think I’ve decided on a garbage-collectable hash that stores a coordinate object on the one side and the map chunk object on the other. When you’re out of range of one chunk (my transitions will be smooth) it will unload (by deleting the only reference in the hash) and load the next one (by adding a new key/value pair to the hash).

On top of that there will be 3 “index” objects to improve lookup speeds, one for each X, Y, and Z.

I’m using a different language with different rules for optimization (I’m sure), but what are you doing to solve this problem?

@ Jice – thanks! Yeah, when viewed at this scale, it does become more obvious. It doesn’t look that way in-game, but I could definitely try and add a bit more variation in there.

@ Xybre – The ‘shelve’ module for Python. It’s going to be tricky making sure things aren’t saved/loaded multiple times over certain squares, or on world map/main map, etc, but it seems to be working well now for the basics. That sounds like a really good system; I considered smooth transitions, but as I say, in a way it’s actually proving better to have distinct squares to cross between : ) – much easier to get entire armies loading/saving at once, rather than parts of an army saving if you move a certain distant from them, or not the whole thing loading if too close, or…

Thanks! Yeah, I think I will try and fiddle with the horizontal banding a bit. Should be easy to do; will probably do it on Wednesday, which I have marked down as a big programming day after a workshop on publication.

I don’t think so. There will probably be swamps (which need adding, I shouldn’t forget), but biomes have no good/evil axis. What turns up in each area depends on the total level of you + allies, where it is, and what civilizations/cultures are around, but not how innately ‘good’/’evil’ they are : )