Naming conventions for Doom Sprites

In order to make sense of the DEHACKED tutorials I will have on this page It is important to understand the naming convention for Doom sprites.  This is my understanding of how the names work.   If anyone has more information, then please let me know .


The names of sprites in doom have 3 main parts that allow the doom engine to work with them properly.

Part 1 - The Sprite sequence identifier

Every doom sprite starts off with 4 letters.  These identify it as being part of a series of sprites.  All sprites in the same series begin with the same 4 letters.  Eg  The Former human trooper sprites are identified by starting with POSS, the shotgun guy by SPOS, the arachnotron by BSPI, and the Cyberdemon by CYBR.

Part 2 - The sub sprite identifier

After the initial 4 letters, there is another letter that identifies which sub sprite, or stage in an animation sequence, the graphic belongs to.  Eg  POSSA identifies the first walking sprite for the trooper, POSSB is the second frame, POSSC the third and so on.  These letters continue in alphabetical order for the entire series of the sprite's animation.  If the sprite only has one frame, there will only be an A sprite. 

The archvile causes a slight problem because it has so many frames in its attack and resurrection sequences.  Id extended the naming sequence beyond the 26 letters in the alphabet to include a few additional punctuation characters.  Unfortunately these work just fine inside a WAD file, but are illegal file names under DOS or Windows operating systems.  If you are exporting and importing files from the end of the archvile animation, you will need to be careful with your file and internal wad lump names.

Part 3 - The view point identifier

Finally there is a number that identifies which graphic to show depending on where you are viewing the object from.   For things like enemies that can be viewed from a number of different angles they will have the numbers 1,2,3,4,5,6,7 and 8 in their sprite sequences.  1 is used for a front on view, 2 for facing diagonally to the left of the player, 3 side on to the player facing to the player's left, 4 facing diagonally left away from the player and 5 back on to the player.  6 is the facing diagonally right away from the player, 7 side on facing towards the player's right and 8 facing diagonally right towards the player.

Sprites that can only be seen from one angle are far simpler.  Their view point identifier is 0 indicating they will always be seen from that angle (eg pillars, death sequences, power ups etc).


When Id did most of the early enemies they were economising in a number of areas of Doom for various reasons (disk space being one).  One of these areas was the number of graphics included to show the enemy view points.  Some enemies e.g. The trooper has an extension to the naming process.   From what I have described above, the trooper should have the graphic lumps POSSA1, POSSA2, POSSA3, POSSA4, POSSA5, POSSA6, POSSA7 and POSSA8.  These would be the trooper (identified by POSS) frames.  The first sub sprite (identified by A) and all 8 angles (identified by the numbers).

The trooper actually has the following sprite names POSSA1, POSSA2A8, POSSA3A7, POSSA4A6 and POSSA5 (saving on having to produce 3 extra pictures).  Graphics like POSSA2A8 are used by the doom engine in two ways.  If the player can see the enemy from the 2 angle, the graphic is drawn normally.  If the player can see the enemy from the 8 angle, the same graphic is used, but reversed by the engine.  This is why, if you watch carefully, you can see the weapons of various enemies changing hands as they zig zag towards you.

possa.gif (5174 bytes)

Trooper frames.  The above shows POSSA1, A2A8, A3A7, A4A6 and A5

posses.gif (4546 bytes)

And the 4 sub sprites for the walking frames A, B, C, D

cposa.gif (3097 bytes)

The chaingun trooper is a newer, and less symmetrical guy, so has all angles individually drawn.

Some things use the naming convention in slightly different ways.  Some projectiles, and the lost soul reverse the angle naming procedure.  Eg instead of being SKULA3A7 as you might expect, you get SKULA7A3 instead.  In this case the graphic is drawn from the 7 angle and reversed for the 3 viewpoint.  I don't know what the reason for this is.  Perhaps in the early days Id were simply using a different naming convention for flying things and non flying things.

Some things use combinations of sub sprite identifiers.  Eg the Arachnotron's first frames have the format BSPIA1D1.  In this case, the graphic will be used the normal way round, for the first (A) walking frame, and reversed for the fourth (D) walking frame, both when viewed from front on.