The Indie Stone’s current favourite thing ever is undoubtedly Blindcoder’s Map Project. A bird’s eye map of Muldraugh and environs that you can zoom and pan around – 7542 screenshots lovingly stitched together and served up to the community through programmer cleverness.
Blindcoder’s real name is Benjamin Schieder, a programmer from Berlin who got involved with PZ when he bought the game after Ctrl-Alt-Del did their Kate and Baldspot comic. With the aid of notable contributors like Raspu, Gammelnoob, Szary_Optymista he’s brought Muldraugh to the masses.
We also thought we’d prod him a little and answer our questions. This is what happened.
Hello! So what inspired you to start the PZ map project?
I got the inspiration from a hobby I picked up recently – photography. I was working on stitching together a panorama image out of a few pictures I’d taken when I got the idea to do the same with PZ’s Muldraugh. I thought: this should be much easier than photos as it’s ‘only’ isometric. Boy, was I wrong about that!
My first idea was to simply share the finished map file as one big image over BitTorrent. But then kenperkins from the #projectzomboid IRC channel suggested that I provide it as a map that would zoom and pan – which would make it much more accessible.
How do you go about creating the map?
Well, at first I was trying to use a windows program called Autostitch – which would have been perfect for this. Unfortunately though, it couldn’t do planar images and always turned into a “fisheye” set of pics. So after a bit back-and-forth, and around 2 weeks of scripting, I set up a few Linux shell scripts using the Imagemagick toolkit to find the correct offsets of the images and then started stitching them together.
I hit another roadblock when I exceeded the maximum dimensions of a JPEG image though – 65000×65000 pixels. At that point I had to work with smaller tiles (25600×25600) to keep performance at an acceptable level.
Right now, when I get a new set of screenshots, the process is:
a) Manually find the correct 25600×25600 pixel tile into which the first screenshot belongs.
b) Run the first script to calculate the offset of this screenshot relative to the 25600×25600 pixel tile. This takes around 5 to 15 minutes, depending on how little “uncharted black” is on the tile.
c) Run the second script to calculate the offset of screenshot 2 relative to screenshot 1, of screenshot 3 relative to screenshot 2, …, of screenshot n relative to screenshot n-1. This takes around 5 seconds per screenshot.
d) Run the third script to stitch together all the screenshots on the respective tiles they belong to. This can take anywhere from 5 minutes to several hours, depending on the number and size of screenshots. The longest it took so far was 2.5 hours for 750 screenshots.
e) Finally create the map tiles using another script I created for this purpose. I tried using existing programs, but they couldn’t handle the sheer size of the complete map image!
Did you realise how big the PZ map was when you took up the gauntlet?
Not at all! I realised it was BIG but by no means would I have guessed the dimensions in pixels to be as enormous as it is!
At the time of writing the current mapsize is 179200×128000 pixels, or 22.9376 gigapixels, and I have only mapped the parts where you can find buildings.
Are you in this for the long haul? Will you map the wilderness in-between, and West Point and the military camp when the game gets there?
I definitely plan to extend the map to include at least all the interesting parts and when that is done, map the less interesting parts. Or whatever people are sending my way.West Point and the military camp will definitely go into the map, otherwise it would be lacking the most interesting parts!
How many people are visiting the map online? How much data are you moving?
From go-live on June 6th to June 30th I had 6,222 unique visitors requesting 2,041,224 tiles transferring 56.07 GiB. There was a peak on June 25th and the traffic has been nearly constant at 4 to 5 GiB daily. Luckily it’s only static files, so there’s almost no load on the server. The 25600×25600 tiles on my harddisk (backed up to Google Drive) currently weigh 3.0 GiB as lossless PNG files. The tiles for the website weigh 1.2 GiB as lossy JPG files and currently number at 117,708 files.