Сборка (игровой движок) - Build (game engine)

Строить
Build engine logo.png
Скриншот движка сборки.png
Снимок экрана, показывающий сборку в 2D-режиме
Разработчики) Кен Сильверман
Первый выпуск 30 сентября 1995 г . ; 26 лет назад ( 1995-09-30 )
Репозиторий advsys .net / Кен / buildsrc /
Преемник Сборка 2
Лицензия Проприетарный
Веб-сайт advsys .net / Ken / build .htm

Build - это шутер от первого лица, созданный Кеном Сильверманом , автором «Лабиринта Кена» для 3D Realms . Подобно движку Doom, движок Build представляет свой мир в двумерной сетке с использованием замкнутых 2D-форм, называемых секторами, и использует простые плоские объекты, называемые спрайтами, для заполнения геометрии мира объектами.

Механизм сборки обычно считается движком 2.5D, поскольку основная геометрия мира является двухмерной с добавленным компонентом высоты, что позволяет каждому сектору иметь разную высоту потолка и высоту пола. Игра показывает, что некоторые этажи могут быть ниже, а некоторые - выше; то же самое с потолками (по отношению друг к другу). Полы и потолки могут поворачиваться вдоль одной из стен сектора, в результате чего возникает уклон. Обладая этой информацией, движок сборки визуализирует мир в трехмерном виде , в отличие от современных игровых движков, которые создают настоящие 3D-среды.

Хотя движок Build получил наибольшую известность в результате использования шутера от первого лица Duke Nukem 3D 1996 года , он также использовался во многих других играх. «Большой тройкой» игр на движке Build обычно считаются Duke Nukem 3D , Shadow Warrior и Blood .

Технические особенности

Секторов

Секторы - это строительные блоки компоновки уровня, состоящие из двухмерного многоугольного контура, если смотреть сверху, причем верхняя и нижняя грани сектора имеют отдельные высоты для создания трехмерного пространства. Следовательно, все стены идеально вертикальны - все, что выглядит иначе, технически является наклонным полом или потолком. Слово комната может использоваться как свободная замена для облегчения понимания, хотя одна комната в игровом мире может состоять из многих секторов, а параллаксное небо может создавать иллюзию нахождения на открытом воздухе. Секторами можно управлять в режиме реального времени; все их атрибуты, такие как форма, высота и наклон, могли быть изменены играми «на лету», в отличие от более раннего движка Doom . Это позволило играм иметь разрушаемую среду, такую ​​как в Blood . Этот метод похож на использование толкающих стен в более раннем названии Apogee Software Rise of the Triad, в котором использовались аналогичные динамические среды.

Разработчики игр, основанных на движке, использовали специальные зарезервированные «спрайты» (игровые объекты), часто называемые «эффекторами секторов» [ sic ], которые при задании специальных тегов (чисел с определенным значением) позволяли дизайнеру уровней создавать динамические Мир; аналогичная информация тегов может быть присвоена стенам сектора и площади пола, чтобы придать сектору особые характеристики. Например, эффектор определенного сектора может позволить игрокам провалиться сквозь пол, если они пройдут по нему, и телепортировать их в другой сектор; на практике это может быть использовано для создания эффекта падения из ямы в большую комнату или создания водоема, в который можно прыгнуть, чтобы исследовать под водой. Сектор может быть снабжен тегом, который заставляет его вести себя как лифт или лифт.

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

Воксели

Более поздние версии движка сборки Кена Сильвермана позволяли заменять выбранные в игре художественные плитки трехмерными объектами, состоящими из вокселей . Эта функция появилась слишком поздно для использования в Duke Nukem 3D , но была замечена в некоторых более поздних играх на движке Build. Кровь использует воксели для подбора оружия и боеприпасов, усилений и конфет (например, надгробий на уровне «Cradle to Grave», некоторых стульев и хрустального шара в «Dark Carnival»). Shadow Warrior еще более продвинулся в использовании этой технологии, с вокселями, которые можно размещать на стенах (все переключатели и кнопки в игре являются вокселями).

В течение нескольких лет Кен работал над современным движком, полностью основанным на вокселях, известным как Voxlap .

Комната над комнатой

Одним из ограничений движка Build является то, что его геометрия уровня способна представлять только одно соединение между секторами для любой данной стены. Из-за этого такая простая структура, как полка с пространством как сверху, так и снизу, невозможна, хотя иногда можно заменить спрайты или воксели. Многоэтажные здания технически возможны, но в таком здании невозможно иметь внешнее окно непосредственно над другим окном или под ним. Кроме того, необходимо будет проявить некоторую свободу в отношении лестниц, лифтов и других способов доступа на каждый этаж.

Несколько игр с движком Build (а именно Shadow Warrior , Blood и Redneck Rampage ) работали над этим, отображая «область просмотра» в другом секторе через дополнительный проход рендеринга. Эта техника, называемая « комната за комнатой» (ROR), кажется игроку безупречной. В дополнение к расширенному диапазону вертикальных конструкций, ROR часто использовался для придания водоемам полупрозрачных поверхностей. ROR никогда не был особенностью самого движка сборки, а скорее был «уловкой», созданной разработчиками игр. Уловка, использованная в Duke Nukem 3D, чтобы обойти это, как и в случае с его непрозрачными подводными участками, заключалась в том, чтобы просто быстро перенести игрока в другой регион карты, созданный для его имитации, подобно лифтам из Rise of the Triad .

В 2011 году в EDuke32 была добавлена ​​функция, называемая истинное пространство над комнатой (TROR), которая позволяет размещать несколько секторов вертикально, так что стена каждого сектора имеет собственное соединение, что позволяет создавать вертикально неограниченные конструкции. Разница между ROR и TROR заключается в том, что секторы TROR физически перекрываются в данных карты и редакторе (что упрощает создание и визуализацию), а не рисуются из разных мест с использованием порталов просмотра, следовательно, истинное пространство над пространством. TROR - это особенность исходного порта EDuke32, а не игровая особенность или уловка.

Создавайте игры на движке

Игры, созданные непосредственно на движке сборки
Игры, основанные на 3D- коде Duke Nukem
Невыпущенные игры на движке сборки

Разработка

Движок Build был, по сути, проектом Кена Сильвермана, который выполнял один человек, хотя он консультировался с Джоном Кармаком в начале проекта.

Релиз исходного кода и дальнейшие разработки

20 июня 2000 г. (согласно его веб-сайту) Кен Сильверман выпустил исходный код движка Build под проприетарной лицензией.

Первые дни

Версия 2.0 Matt Saettler в EDuke , проект улучшения Duke Nukem 3D для моддеров , был отправлен в 3D Realms для упаковки вскоре после выхода из источника сборки, в результате чего Duke Nukem 3D предварительно встроенные библиотеки, 3D Realms использовал с оригиналом Герцог. (И Duke Nukem 3D, и EDuke на тот момент все еще оставались закрытыми.)

С частными бета- версиями 2.1 Saettler работал над интеграцией исходного кода сборки Silverman в исходный код Duke, но проект провалился, прежде чем произвести что-то большее, чем несколько очень глючных частных бета-версий. Несколько групп полного преобразования для игр Build решили работать напрямую с кодом сборки Silverman, и была также разработана расширенная версия редактора сборки, известная как Mapster.

В то время многие на форумах 3D Realms утверждали, что будет невозможно перенести Build на многозадачную ОС, поскольку для этого требуется большой непрерывный блок памяти, который не будет доступен в многозадачной среде. Это утверждение не выдержало критики, поскольку все современные операционные системы используют виртуальную память, которая позволяет приложениям получать непрерывную логическую память без использования непрерывной физической памяти, но общепринятое мнение того времени заключалось в том, что перенос Build на такую ​​ОС был невозможен.

Релиз исходного кода Duke Nukem 3D

1 апреля 2003 года, после нескольких лет утверждений об обратном, 3D Realms выпустила исходный код Duke Nukem 3D под лицензией GPL-2.0 или более поздней . Вскоре после этого и Райан С. Гордон, и Джонатон Фаулер создали и выпустили исходные порты игры, включая движок сборки. В Duke Nukem 3D можно было хорошо играть в линейке NT Windows (включая Windows 2000 / XP), а также в Linux и других операционных системах Unix , и интерес к исходным портам резко возрос.

icculus.org порт

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

JonoF порт

Второй порт исходного кода был сделан Джонатоном Фаулером (JonoF) для Windows, а затем и для Linux и Mac OS X. Этот порт, JFDuke3D, изначально не имел поддержки сетевых игр, но был добавлен позже в процессе разработки.

Полимост

Задачу обновления движка сборки до полноценного 3D-рендерера взял на себя сам Сильверман. В примечаниях к выпуску Polymost он написал: «Когда 3D Realms выпустила исходный код Duke Nukem 3D, я думал, что кто-нибудь сделает порт OpenGL или Direct3D. Что ж, по прошествии нескольких месяцев я не увидел никаких признаков того, что кто-то работает над настоящий порт сборки с аппаратным ускорением, просто люди говорили, что это невозможно. В конце концов, я понял, что единственный способ, которым это должно было случиться, - это сделать это сам ».

Средство визуализации Polymost позволяло создавать 3D-графику с аппаратным ускорением с помощью OpenGL . Он также представил «hightile», функцию, которая позволяла заменять оригинальные текстуры игры на замены с высоким разрешением во множестве форматов. Polymost использовался в JFBuild Джонатона Фаулера, JFDuke3D, JFShadowWarrior и исходных портах, полученных из их кодовых баз.

EDuke32

Позднее был выпущен исходный код EDuke 2.0, а затем исходный код последней частной бета-версии EDuke 2.1 (которая так и не попала в окончательную версию). Ричард Гобейль (TerminX) объединил исходный код EDuke 2.0 с JFDuke3D, чтобы создать EDuke32 . Другой порт, Wineduke , основанный на коде icculus, с тех пор умер, оставив EDuke32 единственным портом EDuke, который все еще находится в разработке.

EDuke32 также поддерживает игры NAM и WWII GI , поскольку EDuke был основан на коде этих игр.

Полимер

1 апреля 2009 года было обнаружено, что средство визуализации OpenGL шейдерной модели 3.0 было разработано для EDuke32 и названо Polymer в отличие от Polymost Кена Сильвермана . Сначала это считалось первоапрельской шуткой, но позже рендерер был обнародован. Он позволяет создавать более современные эффекты, такие как динамическое цветное освещение и отображение теней в реальном времени, отображение отражений и нормалей , а также другие функции на основе шейдеров в дополнение к большинству функций, добавленных в Polymost за последние годы. Хотя Polymer полностью пригоден для использования, он технически неполный и неоптимизированный и все еще находится в разработке. Разработчики EDuke32 заявили, что после того, как Polymer будет переписан для повышения скорости, он полностью вытеснит Polymost, поскольку он является превосходным средством визуализации и может выглядеть идентично Polymost.

Другие игровые порты

BuildGDX
Разработчики) Александр "[M210]" Макаров
Первый выпуск 12 января 2018 г . ; 3 года назад ( 2018-01-12 )
Стабильный выпуск
1.04 / 13 сентября 2019 г . ; 2 года назад ( 2019-09-13 )
Репозиторий gitlab .com / m210 / BuildEngine
Платформа Джава
Тип Игровой движок
Лицензия Проприетарный
Веб-сайт m210 .duke4 .net

Shadow Warrior исходный код был выпущен на 1 апреля 2005 года в соответствии с GPL-2,0-или-позже лицензии, и JonoF выпустила порт источника его, JFShadowWarrior, 2 апреля 2005 г. Тем не менее, он признал , что у него был доступ к Исходный код Shadow Warrior примерно за неделю до его выпуска. Позже этот порт был разветвлен ProASM для порта SWP.

Проект Transfusion был направлен на воссоздание Blood в движке DarkPlaces , но по состоянию на 2006 год этот проект еще далек от завершения, хотя в нем есть полноценный многопользовательский режим Deathmatch; похожий проект - BloodCM, который воссоздает все созданные Monolith однопользовательские уровни для Blood поверх EDuke32, а также ZBlood, который переносит некоторые ресурсы и уровни Blood в ZDoom .

Также всплыл исходный код Witchaven , Witchaven II: Blood Vengeance , TekWar Уильяма Шатнера и Corridor 8: Galactic Wars . Однако их правовой статус неясен. Полный исходный код альфа-версии Blood также просочился и использовался в качестве ссылки для обратного преобразования порта на Java с использованием LibGDX под названием BloodGDX в мае 2017 года.

Это последовало из предыдущего порта TekWar, выпущенного автором в январе 2016 года, а за ним последовали порты для Witchaven , Redneck Rampage , Duke Nukem 3D , Powerslave , Legends of the Seven Paladins и Shadow Warrior , теперь все вместе называемые BuildGDX .

Еще один порт Blood , названный NBlood , был выпущен в январе 2019 года на основе EDuke32 и предыдущего порта Rednukem создателя для Redneck Rampage . Порт EDuke32 для Powerslave , называется PCExhumed , был выпущен 21 ноября 2019 года.

Исходный порт Raze разветвляет различные порты движка сборки, включая JFDuke3D , SWP , NBlood , Rednukem и PCExhumed , и связывает его с новым базовым сервером , основанным на GZDoom .

Преемник

После нескольких попыток создать преемника Build, Сильверман снова начал экспериментировать с такой идеей в 2006 году. Он использовал эту работу - теперь называемую Build 2 - во время обучения программированию трехмерных игр детей в летнем лагере с 2007 по 2009 год, и работа продолжалась. до 2011 года, когда он потерял интерес к проекту. Он отличается более продвинутой системой освещения, воксельным рендерингом для сущностей и настоящими трехмерными пространствами комнаты над комнатой и, по крайней мере, частично сохраняет обратную совместимость с исходной сборкой. Сильверман опубликовал свои черновики 7 марта 2018 года. Исходный код был опубликован под частной лицензией 8 июня 2019 года.

использованная литература

внешние ссылки