"Build, the powerful 3D Realms game engine written by Ken Silverman, boasts some of the hottest features available in a 3D game."
Build is the 3D rendering engine used in Blood and its expansion packs Cryptic Passage and the Plasma Pak. It was created by Ken Silverman under contract by 3D Realms (legally called Apogee). 3D Realms used this engine in its games Duke Nukem 3D and Shadow Warrior which used similar game play styles as Blood; Build has also been used in a variety of other games. It was contracted to Monolith Productions when they purchased the rights to Blood and QStudios, who originally bought it from 3D Realms.
The Build engine renders its world on a two-dimensional grid using closed 2D shapes called "sectors" and simple flat objects called "sprites" to populate the world geometry with objects. It is generally considered to be a 2.5D engine, since 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. However the final result is that the world looks three-dimensional due to the way the engine renders it. The version of the Build engine used in Blood also makes use of the voxel technology for weapon/ammo pickups, power ups and occasionally decorations, such as the tombstones in the first level of episode one, "Cradle to Grave".
"I wrote the Build Engine. I visited the team in Redmond 3 times, each for about a week. During those times, I worked closely with the programmers - Nick Newhard and Peter Freese. Those guys also visited Texas in 1995 for about 2 weeks. I was mostly helping them fix bugs related to the engine. I helped them to implement network code. The room over room effect was something I started collaboratively with Nick."
The development of the version of Build used in Blood was mostly conducted by Peter Freese and Nick Newhard in combination with Ken Silverman who visited the QStudios team two times, and once at the Monolith Productions offices. The Blood team also visited him once in Texas in 1995, where he was working with 3D Realms, and Newhard regularly called Silverman whilst he was in his first semester of college. On the split between 3D Realms and Monolith, Silverman commented:
"You would have to ask Scott Miller, George Broussard, or Jason Hall about the specific reasons for the split-up [between Monolith and 3D Realms]. From what I hear, things weren't working out very well - they disagreed on what would make a good game. I visited the Blood team a total of 3 times - the final time was at the Monolith office."
Silverman has stated his final views on the big three games built on the engine thus:
After the source code of many game engines had been released by their respective owners, an intense fan campaign called for the release of the Blood source code (see: Blood Source Campaign)
File types used with the original Blood and its various commercial and fan made add-ons.
Configuration file that stores display, control and other customizable settings information.
Text files are often used for storing background materials, installation instructions, or other pertinent information.
A modem string file for use with network mutliplayer and storing INIT strings.
Initialization file; often used to store information pertinent to structuring episodes, such as level order, names, music, authors, messages, etc.
Launched via the command parameter: "blood -ini example.ini"
Stores sector data for map construction, as well as tagging points and object placements.
Launched via the command parameter: "blood -map example.map"
Stores information pertaining to textures, sprites and so forth.
Used for storing information related to CD audio.
Stores information for real-time animations, such as the menus, help screen and weapon animations; modified in the "Weapons Mod".
Used to store voxel mappings (3D pixels).
A format for storing uncompressed audio.
Stores information for re-playing live game demos. In the early days of the internet, before sharing videos or streams of gameplay was feasible, this is how you shared your gameplay. It store all the player's actions and repeats them, imitating a video.
DAT, TMP, BAK and BME
Stores generic data of any category. TMP is often used for files that are temporarily moved out the way to be replace by others. BAK is often used for files that are modified, a backup is made just in case the modification process damaged the file. BME is often used by mod developer BME for his mod sets.
- 0 = None
- 1 = Stone
- 2 = Metal
- 3 = Wood
- 4 = Flesh
- 5 = Water
- 6 = Dirt
- 7 = Clay
- 8 = Snow
- 9 = Ice
- 10 = Leaves
- 11 = Cloth
- 12 = Plant
- 13 = Goo
- 14 = Lava
- Ken Silverman's Build Engine page
- Build Engine - Wikipedia
- Build Engine - MobyGames
- Build Engine - Giant Bomb
- Build Engine - ModDB
- Build Engine - IndieDB
- Build engine based games compilation - YouTube
- R.T.C.M. - Build Engine and Game Resources
- Duke Nukem 3D: Build Engine Internals - Code Review
- JFBuild website
- The Build Engine Porting Project - icculus.org
- EDuke32 Engine
- Ken Silverman - Videogame Music Preservation Foundation Wiki
Ken Silverman Interviews
- DOS Games Archive
- Pickles Revil
- Strife Stream (2005)
- Classic DOS Games (November 21, 2005)
- The Apogee Legacy (February 27, 2006)
- Blood Wiki (October 23, 2008)
- Videogame Potpourri (May 1, 2012)
- Duke Nukem Forever - What Went Wrong - NowGamer (August 15, 2011)
- Meet the voxel, the pixel’s long-lost cousin, and why it became videogames’ Betamax - Kill Screen (July 24, 2013)
- There's more to graphics tech than resolutions and framerates - bit-tech (June 6, 2014)
- Blood, Sweat & Laughter: The Beauty of the Build Engine - Rock, Paper, Shotgun (April 13, 2016)