How Girls Can Help to Build Up the Empire
- 1 year ago
- 0
- 0
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-дерева по таким причинам:
Поздние версии движка позволяли заменять изображения в игре на трёхмерные объекты, сделанные из вокселей . Эта возможность появилась слишком поздно для того, чтобы использовать её в Duke Nukem 3D , но была использована в других играх. Blood использует воксели для оружия, патронов, улучшений, и различных украшений (таких как надгробия на уровне Cradle to Grave).
Несколько лет Кен работал над движком Voxlap , берущим за основу воксельную технологию.
Некоторые игры на движке Build engine использовали трюк с объединением пола и потолка у двух секторов. Создание таких конструкций во время редактирования уровня было затруднено, поэтому часто сектора перемещались во время загрузки уровня (что упрощало расчёты, выполняемые движком для отрисовки). Технология комната-над-комнатой применялась в Shadow Warrior (смещение секторов во время загрузки карты) и Blood (без смещения). Сама технология не была заложена в движок, до неё додумались создатели уровней.
20 июня 2000 года Кен Сильверман открыл исходные коды движка Build Engine.
Версия 2.0 (первый и единственный официальный релиз) от Мэтта Сетлера (порт для запуска Duke Nukem 3D под современными операционными системами ) был отослан в 3D Realms (исходники Duke Nukem 3D и были по-прежнему в закрытом доступе). Работая с бета-версией 2.1, Мэтт пытался встроить исходники Build в исходники Duke, но проект был закрыт, прежде чем появились отлаженные публичные версии. Несколько команд, занимавшихся тотальной конверсией игр на Build, решили работать прямо с исходниками Build Engine Кена, а не исходниками Duke. Позже, в результате работы появился редактор mapster. Долгое время портирование движка Build на многозадачные операционные системы было затруднено из-за необходимости очень больших участков памяти компьютера, которых не было в многозадачных ОС. Проблема решалась подключением виртуальной памяти .
1 апреля 2003 года 3D Realms опубликовали исходные коды движка Duke Nukem 3D , несмотря на то что на протяжении длительного времени утверждали, что этого никогда не случится. После этого очень скоро появились порты и . Стало возможно без проблем играть в Duke Nukem 3D на GNU / Linux , Windows NT и других платформах, и интерес к портам усилился.
Райан Горден (icculus) с посторонней помощью создал первый порт движка с использованием SDL . Изначально это был порт для Linux , после для Cygwin и ещё позднее для чистого Win32 (при сборке использовался компилятор Watcom C++ , который использовался и для оригинальной DOS сборки (с точностью до того, что для Windows использовался Watcom C++ , а Build написан на обычном C ). Шли слухи о портировании EDuke на Windows, но ничего не произошло.
Второй порт на Windows и позднее, на Linux от Джонатана Фаулера (JonoF). В отличие от icculus порта, этот порт использует DirectDraw вместо SDL на Windows и работает значительно быстрее. Долгое время движок не поддерживал мультиплеер , потом появилась поддержка мультиплеера только для двух игроков.
Автор движка взялся за задачу обновления Build Engine до полноценного трёхмерного движка. В Сильверман пишет:
Когда 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 содержал элементы исходных кодов и , что, возможно, упростило разработку. Также была попытка воссоздать Blood на движке DarkPlaces и назвать , но на 2006 год этот порт находится ещё на стадии ранней разработки.
Исходные коды Shadow Warrior были опубликованы 1 апреля 2005 года, и JonoF опубликовал порт на игру 2 апреля 2005 года. Правда, он утверждает, что имел доступ к исходным кодам Shadow Warrior за неделю до их публикации.
Исходные коды Witchaven , , и были также опубликованы. Правда, под вопросом [ источник не указан 4869 дней ] находится легальность их публикации.