Build Engine
# Build Engine

Build Engine é um motor de jogo do gênero tiro em primeira pessoa desenvolvido por Ken Silverman em 13 de abril de 1993. Ganhou notoriedade quando a empresa Apogee (atualmente 3D Realms) lançou Duke Nukem 3D, o seu primeiro jogo utilizando a sua tecnologia.
No total foram desenvolvidos 13 jogos entre 1995 e 1999.

## Informações Técnicas
### Perspectiva

O ambiente do jogo é representado em uma perspectiva tridimensional, porém, a maioria dos objetos encontrados nele são bidimensionais, genericamente denominados sprites. Por conta disso, a engine é comummente denominada uma "engine 2.5D".
O método de renderização utilizado é o Ray Casting, mesmo método utilizado em vários motores de jogo da época.

### Setores

Os setores são as salas do cenário onde os jogadores e demais objetos do jogo existem e se movimentam.

### Sector Effectors

São objetos pré-programados inseridos no editor de cenários, utilizados para criar todos os efeitos apresentados durante o jogo. Há uma lista de funções pré-definidas que podem ser utilizadas.

### Room Over Room

O Room Over Room é uma técnica desenvolvida para renderizar salas sobrepostas.
A versão da engine que foi utilizada para Duke Nukem 3D apenas suportava essa técnica se o jogador não pudesse ver os diferentes níveis ao mesmo tempo. Já a versão da engine que foi usada para Shadow Warrior e Blood utilizam uma forma um pouco diferente deste recurso. As salas teriam que ser desenhadas em lugares diferentes do mapa e depois uma enxergaria a outra.

### TROR

Recentemente foi criado uma técnica chamada TROR, acrônimo de True Room Over Room, onde as salas não precisariam mais ser desenhadas em outros lugares do mapa, mas sim exatamente uma sobre a outra, permitindo o mesmo efeito utilizado nas versões de Shadow Warrior e Blood.

### Voxel Sprites

São objetos compostos por vários pixels em uma grade tridimensional. O nome vem da combinação de "Volume" e "Pixel". Desta forma é possível renderizar objetos tridimensionais formados por vários pixels em tempo real.
Quando este recurso estava pronta para uso, já era tarde demais para ser usado em Duke Nukem 3D. Por conta disso, apenas os jogos posteriores o utilizaram.

## Jogos

Jogos que foram desenvolvidos diretamente utilizando o motor de jogo Build engine:
* Legend of the Seven Paladins (1994) (Foi finalizado mas não chegou a ser comercializado)
* Witchaven (1995)
* William Shatner's TekWar (1995)
* Duke Nukem 3D (1996)
* Witchaven II: Blood Vengeance (1996)
* PowerSlave (PC version) (1996)
* Blood (1997)
* Shadow Warrior (1997)
Jogos baseados no código fonte de Duke Nukem 3D:
* Redneck Rampage (1997)
* Redneck Rampage Rides Again (1998)
* Redneck Deer Huntin' (1998)
* NAM (1998)
* Extreme Paintbrawl (1998)
* World War II GI (1999)
* Yume Nikki 3D
Jogos que nunca foram finalizados:
* Corridor 8: Galactic Wars
* Fate

## Anos posteriores
### Polymost

Com o passar do tempo, a renderização estava se tornando ruim com o avanço da tecnologia. Os computadores mais novos não conseguiam reproduzir com desempenho satisfatório alguns jogos da Build Engine.
A tarefa de atualizar o mecanismo de compilação para um render 3D moderno foi assumida pelo próprio Silverman. Nas notas de lançamento para JFDuke3D, ele escreveu:
Graças ao Polymost, permitiu-se uma aceleração 3D usando OpenGL de auto desempenho.
Ele também introduziu hightile, um recurso que tornou possível substituir as texturas originais do jogo por texturas de alta resolução em uma variedade de formatos, além da substituição de objetos 2D por modelos 3D utilizando os modelos MD2 e MD3 da quake engine.
O render Polymost tem sido utilizado em JFBuild, JFDuke3D, JFShadowWarrior, Eduke32 e portas derivadas de suas bases de código.

### Polymer

Em 1º de abril de 2009, foi anunciado na comunidade de Eduke32 um novo método de renderização com suporte à Shader Model 3.0 chamado Polymer.
Na primeira impressão, os membros da comunidade pensaram ser uma piada de 1º de abril, porém logo foi disponibilizado para uso.
Estas são algumas algumas das principais melhorias do Polymer:
* Iluminação dinâmica em tempo real por pixel (Per-pixel dynamic lighting)
* Mapeamento de luz e sombra em tempo real por pixel (Per-pixel dynamic shadows)
* Mapeamento em relevo/superfícies refletivas (Normal and specular mapping)
Apesar de seus avanços, o Polymer não possui desempenho satisfatório. O alto consumo de memória causa perda de desempenho na GPU.