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.
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
|