Up a Level
Fantasy Worlds, Google, and Maps

I've been somewhat frustrated with my map of Creation along with the other worlds I'm greatly interesting in making maps for. The map of Creation looks pretty good, but it continues to fail me in that I can't get the level of detail without making the entire map so large that my computer is simply unable to handle it. According to what I found, Creation is suppose to be 13,200 by 8,266 miles in size. My map of Creation, which uses the same sizes as stephenls' map, is 3,840 by 2,303 pixels. If I increase the dimensions by 4 I would get roughly 1 pixel per mile of Creation. At the expense of pretty needing a 4 GB machine to handle the sheer amount of raw data. I found a way that gets around this that lets me add on data as I go without needing me to do a 1px/mile detail.

Naturally, building a fantasy map on a 1 pixel/mile basis is beyond the limitations of my computer. However, like Oblivion, Creation is rather packed with a sheer amount of data. It seems that every hundred miles or so, something interesting is placed there. I was hoping that I could manipulate the SVG to allow for higher-detail maps, to let me do the Sepia Throne processing without breaking stuff too badly. However, my skill in SVG, coupled with the limitations of my tools, makes that a bit more difficult to swallow. In fact, I'd pretty much have to write a system from scratch just to handle it.

I love maps and I wanted to succeed. While playing Oblivion, I found a Google Map of Oblivion. Now, I've also seen World of Warcraft maps of the same type. So, I got this idea of how to create a map of Creation using Google Map's API and then add the cities and interesting events that way. An hour of research and I think I figured out how.

I'll start with a high-level map (i.e. the one I created) and basically remove the locations from the map. Since the part I'm most proud of is that, its a pretty good start. Google Map tiles are always 256x256px, I'll scale the map around a bit until its fits in nice 256px square tiles. At the most basic of systems, this is a Zoom 0 (Z0) map. I could probably throw that together in a matter of days, and I plan to get a working version done fairly soon.

The next level zoom (Z1) is a bit harder. Each Z0 tile will be 4 Z1 tiles for a x2 zoom. I need to have valid data everywhere, but I want to be able to replace the data at a specific point with more detail as I go. So, if I decide to redo one section, I can focus on that section, make the changes and not worry about the rest of the map. Ideally, I'd start at the lowest possible level, Z1 at first, combine the four tiles that make up that tile. In effect, combine them into a 512x512 image and scale it down to 256px square.

I need data at that point. So, the initial seed will basically take the Z0 tiles and split them into four Z1 tiles. Once these are created, I won't need to split them again. The processing part will be to write a shell script/perl program (in all likelihood) that takes the Z1's and combines them back up in Z0. That way, if I make a change to a Z1 tile, it will be merged into the appropriate Z0 tile. So, I'd have two zoom levels that lets me change Z1 and see the changes in Z0 once I write a program.

Z2 is pretty much the same. Split the Z1 into four parts as an initial seed, then use the same program that handles the Z1 to Z0 processing to do Z2 to Z1. Then, call the Z1 to Z0 combinations. In all, I could zoom down as far as I want, if I'm willing to do the extra processing work.

That would handle the graphical data. The markers and stuff are relatively simple. It is just an XML file and that is the point I can use data from the books and stephenls' map to generate the values. The hard part is getting the graphics working properly.

I think it could work and would handle the problems I'm having with my current map.