Build Engine

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Build engine»)
Перейти к навигации Перейти к поиску
Build Engine
Логотип программы Build Engine
Тип Игровой движок
Разработчик Кен Сильверман
Написана на Си
Операционная система DOS
Аппаратная платформа MS-DOS
Лицензия код от автора — под собственнической BUILDLIC.TXT[1]
Сайт advsys.net/ken/build.htm
Логотип Викисклада Медиафайлы на Викискладе

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

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

Технические характеристики[править | править код]

Сектора[править | править код]

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

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

Порталы[править | править код]

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

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

В 2,5-мерном движке этот метод оказался лучше BSP-дерева по таким причинам:

  • Сектора можно двигать и вращать. Пускай это движение очень ограниченно (движение возможно только в пределах одного сектора) — даже это прогресс по сравнению с Doom’ом. Что привело к очень «живому» миру — горизонтальные «лифты» (повсеместно во 2 части Duke Nukem 3D — Lunar Apocalypse), вагон метро (Duke Nukem 3D — уровень Rabid Transit), разрушаемые объекты (Blood) и т. д.
  • Doom разбивает стены (linedefs) на сегменты (segs). Портальный движок никогда не делит стены на части — что приводит к более высокой скорости рендеринга на сложных сценах. К тому же, сложность невидимых частей уровня никоим образом не влияет на производительность рендерера. На машинах класса Pentium-100 можно свободно запускать Duke Nukem 3D в разрешении 640×480 — ни один порт Doom’а на такое не способен.
  • Наконец, в портальном движке предварительные вычисления минимальны — а значит, пользователь может редактировать уровень в трёхмерном режиме.

Воксели[править | править код]

Поздние версии движка позволяли заменять изображения в игре на трёхмерные объекты, сделанные из вокселей. Эта возможность появилась слишком поздно для того, чтобы использовать её в Duke Nukem 3D, но была использована в других играх. Blood использует воксели для оружия, патронов, улучшений, и различных украшений (таких как надгробия на уровне Cradle to Grave).

Несколько лет Кен работал над движком Voxlap, берущим за основу воксельную технологию.

Комната над комнатой[править | править код]

Некоторые игры на движке Build engine использовали трюк с объединением пола и потолка у двух секторов. Создание таких конструкций во время редактирования уровня было затруднено, поэтому часто сектора перемещались во время загрузки уровня (что упрощало расчёты, выполняемые движком для отрисовки). Технология комната-над-комнатой применялась в Shadow Warrior (смещение секторов во время загрузки карты) и Blood (без смещения). Сама технология не была заложена в движок, до неё додумались создатели уровней.

Дальнейшее развитие[править | править код]

20 июня 2000 года Кен Сильверман открыл исходные коды движка Build Engine.

Версия 2.0 (первый и единственный официальный релиз) EDuke от Мэтта Сетлера (порт для запуска Duke Nukem 3D под современными операционными системами) был отослан в 3D Realms (исходники Duke Nukem 3D и EDuke были по-прежнему в закрытом доступе). Работая с бета-версией 2.1, Мэтт пытался встроить исходники Build в исходники Duke, но проект был закрыт, прежде чем появились отлаженные публичные версии. Несколько команд, занимавшихся тотальной конверсией игр на Build, решили работать прямо с исходниками Build Engine Кена, а не исходниками Duke. Позже, в результате работы появился редактор mapster. Долгое время портирование движка Build на многозадачные операционные системы было затруднено из-за необходимости очень больших участков памяти компьютера, которых не было в многозадачных ОС. Проблема решалась подключением виртуальной памяти.

Исходные коды Duke Nukem 3D[править | править код]

1 апреля 2003 года 3D Realms опубликовали исходные коды движка Duke Nukem 3D, несмотря на то что на протяжении длительного времени утверждали, что этого никогда не случится. После этого очень скоро появились порты Icculus и JonoF. Стало возможно без проблем играть в Duke Nukem 3D на GNU/Linux, Windows NT и других платформах, и интерес к портам усилился.

Порт icculus.org[править | править код]

Райан Горден (icculus) с посторонней помощью создал первый порт движка с использованием SDL. Изначально это был порт для Linux, после для Cygwin и ещё позднее для чистого Win32 (при сборке использовался компилятор Watcom C++, который использовался и для оригинальной DOS сборки (с точностью до того, что для Windows использовался Watcom C++, а Build написан на обычном C). Шли слухи о портировании EDuke на Windows, но ничего не произошло.

Порт JonoF[править | править код]

Второй порт на Windows и позднее, на Linux от Джонатана Фаулера (JonoF). В отличие от icculus порта, этот порт использует DirectDraw вместо SDL на Windows и работает значительно быстрее. Долгое время движок не поддерживал мультиплеер, потом появилась поддержка мультиплеера только для двух игроков.

Система Polymost (Полимост)[править | править код]

Автор движка взялся за задачу обновления Build Engine до полноценного трёхмерного движка. В примечаниях к релизу JFDuke3D Сильверман пишет:

Когда 3D Realms опубликовали исходные коды Duke Nukem 3D, я думал, кто-нибудь сделает OpenGL- или Direct3D-порт. Через несколько месяцев я понял, что никто не работает над использованием настоящего аппаратного ускорения в Build, люди просто говорят, что это невозможно. Позже я осознал, что единственный способ чего-либо добиться, — это сделать всё самому.

Система отрисовки полимост использует OpenGL для аппаратного 3D ускорения. Также введена технология хайтайл (hightile), позволяющая заменять стандартные игровые ресурсы более качественными в различных форматах.

Полимост был использован в JFBuild от Джонатана Флауера, JFDuke3D, JFSW, и других портов основанных на этой кодовой базе.

Другие порты[править | править код]

Публикация исходных кодов EDuke 2.0 позволила добавить к EDuke возможности порта JonoF и движка Build Engine 2.1, вскоре появился EDuke32, но на сегодняшний день в разработке находится только EDuke.

Исходник последней личной бета-версии EDuke 2.1 (которая никогда не была доведена до релиза) был также опубликован после исходных кодов EDuke 2.0. Также появился порт, основанный на Icculus, имеющий кодовое название wineduke, разработка которого на сегодняшний день не ведётся.

EDuke содержал элементы исходных кодов Nam и WW2 GI, что, возможно, упростило разработку. Также была попытка воссоздать Blood на движке DarkPlaces и назвать Transfusion, но на 2006 год этот порт находится ещё на стадии ранней разработки.

Исходные коды Shadow Warrior были опубликованы 1 апреля 2005 года, и JonoF опубликовал порт на игру 2 апреля 2005 года. Правда, он утверждает, что имел доступ к исходным кодам Shadow Warrior за неделю до их публикации.

Исходные коды Witchaven, Witchaven II, Tekwar и Corridor 8 были также опубликованы. Правда, под вопросом [источник не указан 4957 дней] находится легальность их публикации.

Список игр на движке Build Engine[править | править код]

Игры, написанные на первичном Build Engine[править | править код]

  • The Legend of the Seven Paladins (1994) — выпущена пиратами лишь на территории страны происхождения, КНР, т. к. использовала движок нелегально.
  • William Shatner's TekWar (1995)
  • Witchaven (1995)
  • Duke Nukem 3D (1996)
    • Duke Nukem 3D: Plutonium PAK (1996) — дополнение для оригинальной игры, добавляющее новый эпизод.
    • Duke Nukem 3D: Atomic Edition (1996) — версия с установленным дополнением Duke Nukem 3D: Plutonium PAK, содержащим новый эпизод к игре.
    • Duke!ZONE II (1997) — одобренное разработчиками оригинальной игры дополнение, включающее 3 новых эпизода.
    • Duke Xtreme (1997) — одобренный разработчиками оригинальной игры сборник дополнительных уровней, вышедший позже в официальном сборнике игр серии Duke Nukem: Kill-A-Ton Collection.
    • Duke it Out in D.C. (1997) — одобренное разработчиками оригинальной игры дополнение, добавляющее новый эпизод.
    • Duke Caribbean: Life's a Beach (1997) — одобренное разработчиками оригинальной игры дополнение, добавляющее новый эпизод.
    • Duke: Nuclear Winter (1997) — одобренное разработчиками оригинальной игры дополнение, добавляющее новый эпизод.
    • Duke It's Zero Hour (1997) — бесплатное дополнение, выложенное в сети.
    • Duke Nukem's Penthouse Paradise (1997) — официальный бесплатный уровень-дополнение для Duke Nukem 3D, совместно изданный журналом Penthouse и GT Interactive.
    • Duke Nukem 3D: 20th Anniversary World Tour (2016) — переиздание в честь 20-летия игры, добавляющее новый эпизод, в разработке которого участвовали разработчики оригинальной игры.
  • PowerSlave (Exhumed в Европе) (1996)
  • Witchaven II: Blood Vengeance (1996)
  • Blood (1997)
    • Blood: Plasma Pak (1997) — дополнение для оригинальной игры, добавляющее новый эпизод.
    • Blood: Cryptic Passage (1997) — одобренное разработчиками оригинальной игры дополнение, добавляющее новый эпизод.
  • Shadow Warrior (1997)
    • Shadow Warrior: Twin Dragon (1998) — одобренное разработчиками оригинальной игры дополнение, добавляющее новый эпизод.
    • Shadow Warrior: Wanton Destruction (2005) — официальное бесплатное дополнение, выложенное на сайте разработчика, добавляющее новый эпизод.
  • Target (1998)

Игры, написанные на кодах Duke Nukem 3D[править | править код]

Игры, которые не были выпущены[править | править код]

Примечания[править | править код]

  1. Лицензия на сайте icculus.org. Дата обращения: 16 июня 2008. Архивировано 14 мая 2008 года.
  2. Игры, похожие на Doom - Ликвидатор: 1 и 2. Дата обращения: 11 ноября 2012. Архивировано 24 июня 2016 года.

Ссылки[править | править код]