The DOOM Zoo

How many times did you want to have a closer look at the beautiful animation sequence for the archvile, only to find that the bastard was rather more interested in terminating you immediately with his deadly flaming spell than in running the catwalk?
The good guys at id spent so much of their time painting faithful renditions of the DOOM monsters, each from eight different angles, that it's a real shame to only be able to see the front view!

So the DOOM Zoo was born. I captured most of the wild beasts and caged them in neat Netscape frames. You can approach them without fear of being attacked and, thanks to a little bit of Java magic, you can have a look at each monster from every angle. See the back of that firing cyberdemon at last!

Monster and sequence index

Tech stuff

For each monster, or rather for each sequence, the corresponding applet must load eight frames. Loading the frames in itself is no big deal, since they're tiny. The real killer is repeating the dreaded "host contacted, waiting for reply" handshake for every one of them. That's where all of the time goes. If you've got a fast link to here and a good dose of optimism, you may try viewing the "summary" pages for the monsters, each of which list all the available sequences for that monster. If on the other hand you want to play it safe, you may instead just look at one animation sequence at the time.
I might improve this matter if I repackage each set of 8 frames into one single file and then ask the applet to load just that and unpick it internally. But I haven't done that yet, so for the moment you'll have to live with what we've got.

More tech stuff, i.e. how it was done

Where do these pictures come from? From the wad file, of course. Each monster is identified by a 4-char sprite name, like BOSS for the Baron of Hell. (It's interesting to note that some of the sprite names are WRONG! For example the demon is called SARG. Check the WAD file yourself with your favourite editor if you can't believe this...) Each sequence of 8 views, representing one position of the monster (walking, firing etc) is identified by a single character appended to the sprite name, like BOSSA, BOSSB and so on. Each frame in the sequence (representing the e.g. firing monster as seen from N, NE, E, SE etc) is identified by a digit from 1 to 8 appended to the sequence name, like BOSSA1, BOSSA2 and so on. Some frames are obtained by flipping other frames; in that case a single file holds two frames and has a combined name like SARGA2A8. (NB: for simplicity, sequences requiring flipping for some of their frames have not been captured into the DOOM Zoo as yet; neither have sequences with funny names like "\" or "[" instead of the more common "A" and "B".)

The Rotator applet is rather simple; in fact it was my first Java program, written at the beginning of September 1995, while Java was still in alpha and Netscape didn't run applets. You could only view it with hotjava. Then the beta came out, and the JDK, and my applet stopped working because of the changes in Java's image handling interface. So it sat there for several months because I couldn't be bothered to convert it. I eventually fixed it, but this wasn't terribly useful because I had only (manually) extracted one single sequence from the WAD, namely a running demon. At last I sat down and wrote some Python scripts that extracted all the sprites (well, the easy ones at least) from the WAD and generated the appropriate web pages to view them (which included looking at the size of the individual gifs to make the cages the right size). So there!


Thanks to id, of course, for making DOOM in the first place. Then to the makers of the free tools I used to put the Zoo together: dmgraph, giftrans, python. And thanks to the Java bunch, too, for a great programming language.

Page meta-written by a Python script.
mkpages v. 1.9 of 1996/05/29 by Frank Stajano