The whole enchilada

RegionMapSo today I did something which I’ve been meaning to do for months;  I put in some quick full-MMORPG visualisation code.

What you’re looking at in this screenshot is almost the entire MMORPG map (there’s a little bit that’s behind the camera or off to one side or the other), viewed from four kilometers up.  Each of the outlined areas is a “Region”, and is (on average) about three square kilometers of terrain (though some are as large as five or as small as one).  In relative terms, an average-sized region here is about the size of World of Warcraft’s Goldshire, and this whole map is approximately the same amount of ground terrain that you’d find in all of World of Warcraft’s original “Azeroth” (including the sea between the two main continents), and far more than you’d find in most other MMORPGs.

This is the first time that I’ve actually seen the large-scale structure of the procedural MMORPG world;  previously, I had always been working with a camera that was primarily concerned with small-scale details, never going much above a few hundred meters, and never venturing more than one or two regions away from where I’d started.  I knew that the rest of the world was there, and had flown over it from time to time, but never really paid it close attention.  However, when viewed from this perspective I have a couple of thoughts:

  1. I had forgotten how important it was to have this “massive” zoomed out view of the world, even though I’ve mostly been focusing on the smaller-scale details for MMORPG Tycoon 2.  Without this massive view, you can’t put your creations into perspective.  So I must keep something like this in the game.
  2. If you go back in the archive to the “roads UI” video, at one point you’ll see me fly around in a debug camera, watching AI developers placing quest monsters.  In that video, even with how far I traveled, I don’t think you ever saw the edge of a region;  that whole video took place inside just one small section of just one of the regions outlined above.  Yowza!
  3. There are a huge number of regions, here.  Far too many.  There are around 40 regions total on World of Warcraft’s two main continents, and there are 225 regions in a max-size MMORPG Tycoon world, like this one.  Now, the MMORPG Tycoon regions do include “impassable water regions” which aren’t counted in WoW’s number, but even with that taken into account, it’s far too many.  40-ish usable regions sounds like a much better (and much less intimidating for the player) number.
  4. At four kilometers up, all the terrain appears to flatten out;  the roughly inverted-bowl-shape of the terrain is completely lost from up here, and even hundred-meter-tall cliffs look completely flat from this altitude.  I had initially hoped that the player would be able to see the basic shape of the terrain from up here, and then move in closer to see details, but now I don’t think that’s going to work;  there simply won’t be enough verticalness to be visible when you’re zoomed out far enough to see the arrangement of regions.
  5. Even with the regions flattening out when viewed from up here, I don’t like the basic shape of the regions;  they look random and haphazard;  not like they’d been designed by someone.  I’m not sure exactly what’s wrong with them, but I’m going to need to find a way to make their layout look more human-designed.  Maybe it’s just an optical illusion, and setting up visible “water regions” to act as boundaries will  help give structure to groups of regions.  Or maybe I should switch from the “stretched grid” approach of defining regions that’s I’m using here, to something more organic, like a Voronoi diagram.  Adding visible water from here will be easier, so I’ll try that first.
  6. I really like having the view from up here be a high-tech vector-style display;  I’ll probably keep it looking a lot like the views seen in MMORPG Tycoon 1 and 1.1, and only switch into the solid, fully-detailed view when you zoom in, rather than try to maintain that sort of look when the player’s way up here.

On an entirely different topic, today I modified the VectorStorm library to automatically drop the frame rate cap from 60fps to 10fps when the program is put into the background or minimised.  Makes it much better behaved with your CPU/GPU resources now, if you want to alt-tab out to check mail or write a blog post or something.  :)