Build Engine


Build Engine — игровой движок шутера от первого лица, созданный Кеном Сильверманом для 3D Realms. Как и движок игры Doom, движок Build Engine проецирует игровой мир на двухмерную сетку из замкнутых фигур на плоскости, называемых секторами, и использует простейшие плоские объекты, называемые спрайты, для населения геометрического мира объектами.

Build Engine относится к классу так называемых «2,5-мерных движков», потому как в основе игрового мира лежит плоскость с добавленной компонентой высотой. Каждый сектор может иметь разную высоту пола и потолка, а также разный наклон пола и потолка. В результате рендеринга мир выглядит трёхмерным. Обсчёт перспективы основывается только на горизонтальном расстоянии — поэтому вертикальные линии, соответствующие вершинам, строго вертикальны вне зависимости от угла зрения. Это вызывает значительные искажения перспективы при взгляде вверх или вниз на большие углы в большинстве игр на движке Build.

Сектора — основная составляющая геометрии уровня. С секторами можно работать в реальном времени. Их параметры (высоты, форма, углы наклона) не требуют пересчета при изменении. Это позволяет делать окружение в игре более интерактивным, например разрушаемым (как в Blood).

Разработчики использовали зарезервированные спрайты (секторэффекторы), которым присваивались специальные верхние (hi-tags) и нижние (lo-tags) теги (числа с определённым смыслом), которые позволяли делать мир более динамичным (например двери, взрывающиеся бочки и т. п.). Такие же теги могут быть заданы полу и потолку сектора для придания особых свойств. Например игрок, проходящий по полу со специальными тегами, проваливался вниз и выпадал из другого потолка со специальными тегами. На практике это применялось для создания водоёмов. Сектору могут быть присвоены теги, которые превращают его в дверь или лифт. Сектора могут перекрывать друг друга, чтобы один не был виден из-за другого (если в такой ситуации видно сразу два сектора, то с сильнейшими искажениями). Это позволяло создавать, например, вентиляционные шахты, находящиеся над помещениями (правда это значительно затрудняло дальнейшую работу с этой частью уровня, так как почти всё время разработчик проводит в двухмерном режиме). Также это позволяет создавать невозможные с точки зрения физики, миры (например система помещений в здании, которая больше самого здания). Все эти эффекты делали мир похожим на трёхмерный, пока не появился движок Quake.

Для сортировки плоскостей в Z-порядке Doom использовал BSP-дерево, строившееся каждый раз при сохранении WAD’а. В отличие от Doom, Build использовал механизм порталов.

Отрезки, разделяющие два сектора, объявляются «порталами». Движок сначала рисует сектор, в котором находится зритель, запоминая все порталы. После этого он рекурсивно запускает рендеринг секторов, которые видны сквозь порталы (не трогая того, что уже нарисовано).