# Build Engine

Il Build Engine, noto anche e semplicemente come BUILD, è un motore grafico creato da Ken Silverman nei primi anni '90. Successivamente è stato utilizzato della 3D Realms, e poi concesso in licenza ad altre case come Capstone Software, Monolith Productions e GT Interactive.

## Storia
### Proto-BUILD e versioni preliminari

Dopo aver osservato il rivoluzionario Wolfenstein 3D engine di John Carmack, in azione su Wolfenstein 3D, Ken Silverman, che all'epoca era ancora minorenne, decise di mettersi al lavoro su un suo motore grafico. Nel 1992, Ken aveva già concepito buona parte di quel motore che un giorno sarebbe diventato il BUILD, e lo aveva posto come base del suo videogioco Walken, poi rinominato Ken's Labyrinth e pubblicato dalla Epic Games nel 1993.
In agosto, dello stesso anno, mentre Silverman frequentava l'Università Brown, riuscì ad entrare in Apogee Software e a continuare il suo sviluppo sul BUILD. Per via del fatto che Apogee era al corrente che John Carmack fosse al lavoro sul Doom Engine, utilizzando il linguaggio C, suggerì a Silverman di adattarsi di conseguenza e di cambiare il linguaggio del BUILD da BASIC a C, con conseguente riscrittura di buona parte del codice.

### Nasce il BUILD Engine definitivo

Nel 1994 Ken si ritrovò in un vicolo cieco con il BUILD in quanto, a causa dei recenti cambiamenti di scrittura, il motore grafico generava una sproporzionata quantità di bug che non permettevano una buona resa. Un prezioso aiuto arrivò a Ken proprio da John Carmack, che nel corso di una telefonata gli suggerì di adottare una tecnica del Doom Engine, possibile da replicare sul BUILD, che costruiva il mondo di gioco in "settori" (sectors) con proprietà specifiche e ben definite; il consiglio si rivelò azzeccato e Silverman poté continuare il suo lavoro, risolvendo i problemi e perfezionando ulteriormente il BUILD.
Buona parte del restante lavoro sul motore grafico, eseguita tra la fine del 1994 e i primi mesi del 1995, riguardò il netcode per il gioco in rete, oltre a ultimi ritocchi e features grafiche aggiuntive che avrebbero reso il BUILD in un certo senso anche diverso, se non più avanzato, rispetto al Doom Engine di Carmack. I primi giochi ad essere pubblicati con in uso il BUILD, seppure non spinto al massimo, furono William Shatner's TekWar e Witchaven, entrambi rilasciati nel settembre 1995; tuttavia il gioco che avrebbe veramente sfruttato il BUILD, fino a spremerlo, fu il fiore all'occhiello di Apogee: Duke Nukem 3D, rilasciato nel gennaio 1996.
Il codice sorgente del BUILD è stato divulgato il 20 giugno 2000 da Ken Silverman; mentre quello di Duke Nukem 3D fu reso pubblico il 1º aprile 2003.

## Tecnologia
### Caratteristiche tecniche principali

Essendo stato concepito dall'osservazione del Wolfenstein 3D engine e Doom Engine, il BUILD si basa prettamente sullo stesso concetto: il motore grafico sviluppa il gioco originariamente su una mappa bidimensionale, che poi in base alla visuale del giocatore e alla distanza di un oggetto, restituisce un rendering 2.5D, molto simile al 3D reale. Rispetto comunque, sia a Wolfenstein 3D che a Doom, il BUILD presenta una tecnica di creazione dello scenario di gioco né basata sul ray casting, né sulla partizione binaria dello spazio (sebbene sia simile a quest'ultima): con il BUILD infatti, il mondo di gioco viene suddiviso in sezioni ma, a differenza della partizione binaria, queste sezioni non sono direttamente connesse tra loro; il motore tiene conto infatti della porzione di mondo in cui il giocatore si muove, senza pre-elaborare quelle successive, in quanto rappresentano sezioni del livello scollegate. La continuità del livello, e lo spostamento tra una sezione ed un'altra, è comunque assicurato da un rendering "a portali": ogni porta predefinita, che consente l'accesso alla sezione del livello successiva, garantisce che al passaggio del giocatore venga istantaneamente creata la porzione di mondo seguente, in modo da far apparire l'intero livello lineare e continuo.
Questa tecnica di "portal rendering" è stata utile al BUILD anche per creare particolari illusioni: normalmente un motore grafico basato su bidimensionalità, come il Doom Engine, non è in grado di applicare il room-over-room, tecnica che permette la sovrapposizione di 2 stanze una sopra l'altra; tuttavia Ken Silverman ha adottato il rendering a portali per eludere questa limitazione e permettere al giocatore di passare da una zona superiore ad una zona inferiore di un livello, come se queste fossero sovrapposte. Grazie al fatto che il BUILD è in grado di processare una stanza alla volta, e che tutte le stanze sono scollegate tra loro, è dunque possibile creare l'illusione di una sovrapposizione anche quando effettivamente questa non si verifica poiché il giocatore, dall'alto verso il basso, non fa altro che teletrasportarsi velocemente da una porzione di livello ad un'altra, apparendo così collegate ma trattandosi in realtà di due strati di mondo slegati tra loro.
Un'altra illusione che il BUILD è in grado di concedere è quella della visuale libera: anche in questo caso, per via della bidimensionalità, non potrebbe essere possibile muovere la visuale sull'asse Y (quello verticale), ma solo sull'asse X (quello orizzontale) come in Doom, appunto; anche in questo caso però, Silverman, ha intelligentemente eluso questa limitazione, semplicemente facendo spostare il fotogramma sullo schermo, al momento in cui il giocatore muove il mouse. In altre parole, in Duke Nukem 3D, non è realmente la visuale del giocatore a piegarsi e a spostarsi, ma è il mondo di gioco stesso che compie una rotazione per dare l'illusione di avere una visuale libera; questo è stato, tra l'altro, uno dei motivi per cui venne attribuito al titolo l'appellativo "3D", dato dal fatto che questa illusione faceva apparire il gioco come tale, nonostante non lo fosse.

### Caratteristiche tecniche secondarie

Potendo lavorare solo su una stanza alla volta, senza dover pre-processare le successive, il BUILD è in grado di concentrarsi esclusivamente sulla porzione di livello nella quale si trova il giocatore ed aggiungere features grafiche che lo rendono ulteriormente superiore al Doom Engine: oltre al poter applicare il texture mapping a pavimenti, soffitti e muri di gioco, con aggiunta trasparenza e traslucenza, è anche in grado di applicare queste due qualità ai singoli sprite; può inoltre creare nel mondo di gioco superfici inclinate perfettamente piane, e non solo scalari. Nelle versioni utilizzate in Blood e Shadow Warrior, è stata aggiunta la possibilità di inserire oggetti voxel.
Il BUILD è in grado di supportare risoluzioni fino ad un massimo di 1600×1200 pixel ed una profondità di colore a 256 livelli; ha inoltre un sistema di adattamento dinamico alla frequenza d'aggiornamento dello schermo, sbloccata e variabile.

## Giochi che utilizzano il Build
### Versione originale

* Legend of the Seven Paladins - (1994)
* Witchaven (1995)
* William Shatner's TekWar (1995)
* Duke Nukem 3D (1996)
* Exhumed (1996)
* Witchaven II: Blood Vengeance (1996)
* Blood (1997)
* Shadow Warrior (1997)

### Basati sullo stesso codice di Duke Nukem 3D

* Redneck Rampage (1997)
* Extreme Paintbrawl (1998)
* NAM (1998)
* Redneck Rampage Rides Again (1998)
* Redneck Rampage: Suckin' Grits on Route 66 (1998)
* Redneck Deer Huntin' (1998)
* World War II GI (1999)
* Ion Fury (2019) (tramite il port EDuke32)

### Non ufficiali o mai pubblicati

* Fate - non completato
* Corridor 8: Galactic Wars - mai terminato