- Build engine
name = Build Engine
developer = Ken Silverman
license = Free for non-commercial use [From the source code BUILDLIC.TXT]
website = http://advsys.net/ken/build.htm
The Build engine is a
first-person shooterengine created by Ken Silvermanfor 3D Realms. Like "Doom", the Build engine represents its world on a two-dimensional grid using closed 2D shapes called "sectors", and uses simple flat objects called "sprites" to populate the world geometry with objects. It is generally considered to be a 2.5Dengine as the basic world geometry is two-dimensional with an added height component as each sector may have a different ceiling and floor height, and the ceiling and floor may be angled along one line of the sector. The engine renders the world in a way that looks three-dimensional. However the sizing for perspective only depends on the horizontal distance (most noticeable as the fact that wall vertices are always straight vertical lines on screen). This can cause noticeable distortion when looking up and down and so most "Build" games restrict this to a fairly limited range of angles.
The Build engine allowed for more complex and flexible worlds than "Doom" by virtue of its representation of the world information. Sectors could be manipulated in real-time; their shape, heights, and slope angles being completely variable, without requiring recalculation of rendering information. This allowed games to have destructible environments, such as those seen in Blood.
Developers of games based on the engine used reserved sprites, often called "sector effectors", that when given special "tags" (numbers with defined meanings), would allow the level designer to make a dynamic world that appeared to be 3D. Similar tag information could be given to the sector walls and floor area to give a sector special characteristics. For example, a particular sector effector may let a player fall through the floor if he walked over it and teleport him to another sector. In practice, this could be used to create the effect of falling down a hole to a bigger room or creating a body of water that could be jumped into to explore underwater. A sector could be given a tag that made it behave like a simple elevator or lift. Sectors could overlap one another provided they could not be seen at the same time (if two overlapping sectors were seen at the same time a corrupted display resulted). This allowed the designers to create, for instance, air ducts that appeared to extend across the top of another room (however doing so could be tricky for designers due to the 2D viewpoint used for much of the editing process). More interestingly, this allowed the designer to create worlds that would be physically impossible (e.g. a door way of a small building could lead into a network of rooms that was larger than the building itself). While all these things made the game appear to be 3D, it wouldn't be until later
first-person shooters, like " Quake", that the engine actually stored the world geometry as true 3D information.
Later versions of Ken's Build engine allowed game selected art tiles to be replaced by 3D objects made of
voxels. This feature appeared too late to be used in Duke Nukem 3Dbut was seen in several of the later Build engine games. Blood uses voxels for weapon and ammo pickups, powerups, and occasionally eye-candy (such as the tombstones in the Cradle to Grave level). Shadow Warriormakes even more advanced use of the technology, with voxels that can be placed on walls (all of the game's switches and buttons are voxels) and even a rudimentary 3D enemy mode that can be toggled via the F5 key, and replaces all of the game's enemy sprites with voxels. This is extremely buggy, and seems to be little more than an unfinished test mode.
For several years Ken has been working on a modern engine based entirely on voxels, known as
Room over room
Several Build engine games used a trick involving rendering multiple times to draw two sectors that were joined floor to ceiling. As building the sectors over top of each other was not really feasible due to limitations of the editor, the sectors could either be moved at map load time (which made calculations during the game simpler), or left where they were. The two best known games to use this trick were "Shadow Warrior" (which moved the sectors at map load time) and "Blood" (which did not). This was not a feature of the Build engine but rather a trick that was discovered by game developers.
Build engine games
Though the Build engine achieved most of its fame as a result of powering the classic first person shooter "
Duke Nukem 3D", it was used for many other games. It is usually considered that the "Big Four" Build engine games are Duke Nukem 3D, Shadow Warrior, Blood and Redneck Rampage.
* Games that were built directly on the Build engine.
** "Blood" (1997)
Duke Nukem 3D" (1996)
** "PowerSlave" ("Exhumed" in Europe) (1996)
Shadow Warrior" (1997)
William Shatner's TekWar" (1995)
** "" (1996)
* Games that were based on the "Duke Nukem 3D" code
Extreme Paintbrawl" (1998)
Redneck Deer Huntin'" (1998)
Redneck Rampage" (1997)
Redneck Rampage Rides Again" (1998)
WW2 GI" (1999)
* Unreleased Build games
Legend of the Seven Paladins" (completed but never released, used the Build engine illegally)
** "Fate" (not completed, only a demo exists)
** "" (never released, source code available)
Source release and further developments
On June 20, 2000 (according to his website) Ken Silverman released the Build engine
source code. [ [http://www.advsys.net/ken/buildsrc/default.htm Ken Silverman's Build Engine Source Code Page.] Last accessed July 7, 2008.]
Version 2.0—the first and only official binary release of Matt Saettler's Eduke, a project to improve "
Duke Nukem 3D" for modders—was sent to 3D Realms for packaging. Unfortunately, it was sent just after the release of the build source and hence Duke Nukem 3D was stuck with the build libraries that 3D Realms had used in the original Duke. (Both "Duke Nukem 3D" and "EDuke" were still closed-source at this point.)
With the 2.1 private betas, Saettler worked towards integrating Silverman's build source into the Duke source code, but the project fizzled out before producing anything more than some very buggy private betas. A few total conversion teams for Build games decided to work from Silverman's Build code directly, and an enhanced version of the Build editor known as
mapsterwas also developed.
It was claimed at the time by many on the 3D Realms forums that it would be impossible to port Build to a multitasking OS, as it needed a large contiguous block of memory that wouldn't be available in a multitasking environment. This statement did not hold up to scrutiny, as all modern operating systems use
virtual memorywhich allows apps to get contiguous logical memory without using contiguous physical memory, but conventional wisdom of the time was that porting Build to such an OS was unfeasible.
"Duke Nukem 3D" source release
On April 1, 2003, after several years of claims to the contrary, 3D Realms released the source code to "Duke Nukem 3D". Not long afterwards, both Ryan C. Gordon and Jonathon Fowler created and released ports. It was possible to play Duke Nukem 3D well on the NT line of Windows (including Windows 2000/XP) and on
Linuxand other UnixOperating Systems, and interest in the ports soared.
Ryan C. Gordon (icculus), with the help of others, made the first port of the engine using SDL. The port was first to
Linux, then to Cygwinand finally to a native Windows build using the Watcom C++ compiler, which was the compiler used for the original DOS build. (Despite being compiled with Watcom C++, Build is plain C.) There was some talk of Matt Saettler using this to port "Eduke" to Windows, but nothing came of it.
A second port was made to Windows, and later to Linux, by Jonathon Fowler (JonoF). This port didn't have network game support until much later, and then only worked with two players.
The task of updating the Build engine to a true 3D renderer was taken on by Silverman himself. In the [http://jonof.edgenetwork.org/modsuppt/jfduke3d/releasenotes.html release notes] for JFDuke3D, he wrote:
"When 3D Realms released the Duke Nukem 3D source code, I thought somebody would do a OpenGL or Direct3D port. Well, after a few months passed, I saw no sign of somebody working on a true hardware-accelerated port of Build, just people saying it wasn't possible. Eventually, I realized the only way this was going to happen was for me to do it myself."The Polymost renderer allowed for 3D hardware-accelerated graphics using
OpenGL. It also introduced "hightile," a feature that made it possible to replace the game's original textures with high-resolution replacements in a variety of formats.
Polymost has been utilized in Jonathon Fowler's JFBuild, JFDuke3D, JFSW, and ports derived from their codebases.
The source for Eduke 2.0 was released, but it took a while because some people had problems compiling the archived source. This was merged with the JonoF port of Duke Nukem 3D, and many features from 2.1 and various other Eduke branches were added by TerminX to make "Eduke32". Another port based on the icculus code, "Wineduke", has since died off, leaving Eduke32 the only Eduke port still in development.
Source for the last private beta of "Eduke" 2.1 (which never made it to a release version) was also released soon after the EDuke 2.0 source.
Eduke contained the code from "Nam" and "WW2 GI" so these could probably be made to work with it without too much effort, but there do not seem to be any current projects that do so. The "Transfusion" project aimed to re-create "Blood" in the
DarkPlacesengine, but as of 2006, this project is far from complete.
Shadow Warrior" source was released on April 1, 2005, and JonoF released a port of it on April 2, 2005. However, he [http://jonof.edgenetwork.org/forum/viewtopic.php?t=308&highlight=shadow admitted] that he had access to the "Shadow Warrior" source code about a week before its release.
The source codes of "
Witchaven", " Witchaven II", "Tekwar" and " Corridor 8" have also been released. The legal status of these releases, however, is unclear.
* [http://advsys.net/ken/build.htm Ken Silverman's Build Engine Page]
* [http://www.francoz.net/doc/duke3d/ Full Build Tutorial and Duke Nukem 3D]
* [http://icculus.org/BUILD/ Icculus build engine page]
* [http://jonof.edgenetwork.org/index.php?p=build Jonathon Fowler's Build Engine Page]
* [http://jonof.edgenetwork.org/index.php?p=jfduke3d JonoF's Duke Nukem 3D Port (JFDuke3D)]
* [http://dmoz.org/Computers/Programming/Games/3D/BUILD_Engine/ Category at ODP]
* [http://pcgtw.retro-net.de/index.php?id=games:fate Page with information on the unreleased game 'Fate']
* [http://www.proasm.com/sw/swp.html Port by ProAsm based on Jonof's JFSW]
* [http://blood.wiki-site.com/index.php/Build Build on The Blood Wiki]
Wikimedia Foundation. 2010.