Oct 28 2007
While cleaning my music studio last weekend I came across a cork-board containing a large strange looking map:
This map really takes me back. In fact, rewind over 10 years back to the Ultima Online closed beta in 1997. I had managed to get accepted into the beta and was REALLY excited to play the game. When the beta CD arrived in the mail I dropped everything and immediately installed it on my computer.
After a bit of trouble connecting to the server my first foray into in a MMO began. The game was everything that I had hoped for and more. Issues such as jerky lag and frequent server disconnects seemed trivial in the face of being able to explore Britannia online.
After a few weeks of game play I decided to take a closer look at the game files on my hard drive. Hacking around in program files is something I often did (and still do) to see what’s there and possibly what I might be able to change. Viewing the files in a binary file editor was a little like exploring a new dungeon because you never knew what you might find.
It was fairly obvious from viewing the game that it used a tile based map system. This meant that the game world consisted of a large grid of tiles that made up the terrain seen by the player. Each tile was a small graphical picture around 16×16 pixels in size and represented a piece of the world (e.g., grass, water, part of a road, etc). The tiles were used primary to represent the ground and objects such as bridges and buildings were rendered separately on top of it.
I eventually found a set of files that appeared to be map data. I could tell when viewing the files in a binary editor that the data was structured and seemed to contain patterns that repeated along certain boundaries. After some analysis I determined that the tiles in the map were organized into cells of a particular size (e.g., 8×8) and those cells were organized into thousands of map segments. There was some weirdness with element ordering within a cell versus a segment that took some time to sort out.
After working out the details of the map data format I started thinking about how I could render the data in a useful way. I first wrote a program that would display small segments of the map on the screen. That was useful, however I really wanted to see it all at once. To that end, I wrote a program that would generate a a huge JPEG image file containing the entire world map. The size was something like 4K x 6K pixels which was fairly large for a personal computer to handle at the time.
To generate the image file I utilized some C code published by the Independent JPEG Group that could write JPEG files. The JPEG format is fairly complex and getting this code to work properly on Windows required some work. Eventually I got it working and the result was a giant image of Britannia! From there, I printed out the image across 12 sheets of 8.5 x 11 paper and taped the entire thing together to make the map seen above.
The map provided many hours of directed exploration where I journeyed to find something in-game that I saw on the map. One interesting thing was that some of the special dungeons were located in the lower right corner of the map. You couldn’t sail a ship there because the in-game world wrapped before going that far east.
I experimented with modifying the local map data on my hard drive to see what would happen in-game. For example, I added a bridge between the mainland and the city of Moonglow, which was on an island to the East. Although I saw the bridge on my screen in the game, the server would snap me back to the mainland after a few seconds of running on the bridge. As expected, the server validated movement and would not allow me to run across water. Oh well, I had to try. :^)
For the next few months I watched the message boards and Usenet to see if anyone else had reverse engineered the Ultima Online map. There was no mention of it anywhere and I was left with the dilemma of whether or not I should share the map with people online. I ultimately decided to keep it to myself because I didn’t want to potentially undermine the online game play by publishing an exact map of the entire world.