DOOM: The Engine That Redefined the FPS
I just spent my entire lunch break (and several hours after work) playing the shareware version of DOOM. We thought Wolfenstein 3D was impressive, but John Carmack and the team at id Software have taken things to an entirely different level. The lighting, the non-orthogonal walls, the varying floor heights-it’s a massive leap forward.
The Magic of BSP
How does it run so fast on a 486? The answer lies in Binary Space Partitioning (BSP). Instead of checking every wall in every frame, the engine pre-processes the map into a tree structure. This allows the renderer to quickly determine which surfaces are visible to the player and draw them in front-to-back order.
This "painter's algorithm" approach, combined with a 2D-based map layout (you can't have a room over another room), makes the rendering incredibly efficient.
The WAD System
As a developer, I’m most excited about the WAD files (Where's All the Data?). By separating the engine code from the game data (textures, sounds, levels), id has essentially invited the community to mod the game.
// A glimpse into how a WAD file might be structured
typedef struct {
char identification[4]; // "IWAD" or "PWAD"
int numlumps;
int infotableofs;
} wadinfo_t;
Future Outlook
DOOM is going to change everything. Not just for games, but for our expectations of what a PC can do. We're going to see a flood of clones, but I doubt many will match the sheer technical elegance of this engine. Also, watch out for "Deathmatch"-I suspect office productivity is about to take a serious hit as people start playing this over their local networks.
Aunimeda develops mobile and PC games - from casual hyper-casual titles to mid-core games with complex progression systems.
Contact us to discuss your game project. See also: Game Development, Mobile Game Development