Ventures of an ex indie game developer

Doom prototyping

Came back from a business trip to Bangalore, India last weekend, but still decided I needed a longer break from book-writing, and thought I would try prototyping some fun game. Quake was the one I wanted to try, I thought... until I had made a minimal Python hack to extract pak0.pak, fetch hip1m1.bsp and I started surfing for screenshots on Quake I to see what it looked like.

I quickly realized that I wasn't at all interested in doing that. It was Doom (I) I wanted! I can still recall the sound of that elevator going up and down whenever I want. It was love at first sight, and that first "real 3D" game stole a piece of my heart.

There was one particular constraint of Doom that made the levels fantastic: there could only be one floor level and one ceiling level per X and Y coordinate, which meant you had to build elevated platforms, like lofts, in the map. And the elevator would always have to placed in front of a platform, it could never be underneath it, which gave a tremendous flow to the gameplay and an unprecedented sense of direction.

Anyway, I quickly threw away the pak0.pak extractor and started looking at Doom1.WAD and E1M1. The format must seem quirky to most people these days, as it's not based on vertices and polygons, it's vertices, lines, sides, segments and a bunch of other crap that I simply ignored.

As a first experiment I generated the floors and imported them into Trabant (my 3D game prototyping "IDE"). Half of them are upside down, the other half look all but easy to modernize-retrofit into some type of Box World which would be a better fit for Trabant I guess.


This is exactly how rapid 3D game prototyping should work: after 1.5 hours (including the Quake throwaway) I'm not struggling with OpenGL, arbitrarily chosen data structures in C code, decoding raw data from disk, linker errors, memory allocation, crashes, implementing controls, adding collision physics or bugs in my logic. Instead I'm moving around in the prototype, looking at the map; and with a minimal change-compile-retry turnaround of less than a second.

This shit makes me proud - Trabant is nothing less than a totally awesome tool!

About the author

Mitt foto
Gothenburg, Sweden