Friends

Open source incubator extraordinaire

Get your game on
The BUILD Engine

What did Duke Nukem 3D, Shadow Warrior, Redneck Rampage, and a host of other first-person-shooter games from the mid-90s have in common? They all used the BUILD engine as their core. When customized with behavioral scripting routines that were specific to each particular game, the BUILD engine provided a tremendous amount of performance and flexibility to game developers.

The success of the engine comes largely from it's optimized assembly-based software renderer. It was incredibly fast at low screen resolutions and was only limited by video card fill rates at higher resolutions. In addition, a level-editing tool was derived from the BUILD engine code base, allowing game developers to avoid the hassle of developing additional tools.

When it was announced that Ken Silverman was going to release the source code to the BUILD Engine, I thought Ryan Gordon was going to explode. He began tearing into the codebase in an effort to port the BUILD Engine to Linux. Since I was sharing an office with him at the time, I offered to help Ryan with the port here and there. After sifting through a lot of assembly code that was optimized for a 16-bit DOS environment, I gained a renewed sense of appreciation for the world of 32-bit protected mode memory addressing. The world of NEAR and FAR memory pointers is a scary one.

After a few weeks of tearing through the asm and implementing some graphics primitives (mostly algorithms pulled directly from Michael Abrash's Graphics Programming Blackbook), I stopped working on the port. It has since been completed by Ryan and many other volunteers.

The derived level editor Duke Nukem 3D using the Linux BUILD Engine Spiral staircase rendered by the BUILD Engine

You can see more information on the BUILD Engine here:

  • The port's main web site
  • Official BUILD Engine source code page
  • The Linux port of Duke Nukem 3D that uses the ported engine



  • All materials copyright 1997-2009 by Andrew Henderson. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later.