Build Engine — это шутер от первого лица, созданный Кеном Сильверманом , автором Ken's Labyrinth , для 3D Realms . Как и движок Doom , Build Engine представляет свой мир на двумерной сетке с использованием замкнутых двумерных фигур, называемых секторами, и использует простые плоские объекты, называемые спрайтами, для заполнения геометрии мира объектами.
Build Engine обычно считается 2.5D- движком, поскольку базовая геометрия мира двумерна с добавленным компонентом высоты, что позволяет каждому сектору иметь разную высоту потолка и пола. Некоторые этажи могут быть ниже, а некоторые выше; то же самое относится и к потолкам (по отношению друг к другу). Полы и потолки могут навешиваться вдоль одной из стен сектора, что приводит к наклону. Используя эту информацию, Build Engine визуализирует мир таким образом, что он выглядит трехмерным , в отличие от современных игровых движков, которые создают настоящие трехмерные среды.
Хотя движок Build Engine получил наибольшую известность после выхода в 1996 году шутера от первого лица Duke Nukem 3D , он также использовался во многих других играх.
Сектора — это строительные блоки макета уровня, состоящие из двумерного многоугольного контура при просмотре сверху, при этом верхняя и нижняя грани сектора имеют отдельные высоты для создания трехмерного пространства. [2] Следовательно, все стены идеально вертикальны — все, что выглядит иначе, технически является наклонным полом или потолком. Слово « комната» может использоваться в качестве свободной замены для облегчения понимания, хотя одна комната в игровом мире может состоять из многих секторов, а параллаксированное небо может создавать иллюзию нахождения на открытом воздухе. Секторами можно управлять в реальном времени; все их атрибуты, такие как форма, высота и наклон, могут быть изменены «на лету» играми, в отличие от более раннего движка Doom . Это позволило играм иметь разрушаемую среду, например, ту, что можно увидеть в Blood . [2] Эта техника похожа на использование толкающих стен в более раннем названии Apogee Software Rise of the Triad , в котором были похожие динамические среды.
Разработчики игр на основе движка использовали специальные зарезервированные «спрайты» (игровые объекты), часто называемые «эффекторами секторов [ sic ]», которые, при задании специальных тегов (чисел с определенным значением), позволяли дизайнеру уровней создавать динамический мир; похожая информация тегов могла быть задана стенам сектора и области пола, чтобы придать сектору особые характеристики. Например, определенный эффектор сектора может позволить игрокам провалиться сквозь пол, если они пройдут по нему, и телепортировать их в другой сектор; на практике это можно было бы использовать для создания эффекта падения в яму в большую комнату или создания водоема, в который можно было бы прыгнуть, чтобы исследовать под водой. Сектору можно было бы дать тег, который заставил бы его вести себя как лифт или подъемник.
Сектора могли перекрывать друг друга, при условии, что они не были видны одновременно (если два перекрывающихся сектора были видны одновременно, получался эффект зала зеркал ). [3] Это позволяло дизайнерам создавать, например, воздуховоды, которые, казалось, простирались через верхнюю часть другой комнаты (однако, сделать это было сложно для дизайнеров из-за 2D-точки зрения, используемой для большей части процесса редактирования). Это позволяло дизайнерам создавать миры, которые были бы физически невозможны (например, дверной проем небольшого здания мог вести в сеть комнат, больших, чем само здание). Хотя все это делало игры, использующие движок, кажущимися трехмерными, только в более поздних шутерах от первого лица, таких как Quake , который использовал движок Quake , движок фактически сохранял геометрию мира как настоящую трехмерную информацию, делая создание одной области, наложенной на другую область на одной карте, весьма осуществимым.
Более поздние версии движка Build Engine Кена Сильвермана позволяли заменять выбранные в игре художественные плитки на 3D-объекты, созданные из вокселей . Эта функция появилась слишком поздно для использования в Duke Nukem 3D , но была замечена в некоторых более поздних играх Build Engine. Blood использует воксели для подбора оружия и боеприпасов, усилений и приятных глазу элементов (например, надгробий на уровне «Cradle to Grave», некоторых стульев и хрустального шара в «Dark Carnival»). Shadow Warrior использует эту технологию еще более продвинуто, с вокселями, которые можно размещать на стенах (все переключатели и кнопки в игре являются вокселями).
В течение нескольких лет Кен работал над современным движком, полностью основанным на вокселях, известным как Voxlap .
Одним из ограничений Build Engine является то, что его геометрия уровня способна представлять только одно соединение между секторами для любой заданной стены. Из-за этого такая простая структура, как полка с пространством как над ней, так и под ней, невозможна, хотя иногда спрайты или воксели могут быть заменены. Здания с несколькими этажами технически возможны, но такое здание не может содержать внешнее окно непосредственно над или под другим окном. Кроме того, необходимо будет допустить некоторую вольность с лестницами, лифтами и другими способами доступа на каждый этаж.
Несколько игр Build Engine (а именно Shadow Warrior , Blood и Redneck Rampage ) обошли это, отображая «окно просмотра» в другой сектор через дополнительный проход рендеринга. Эта техника, называемая room-over-room (ROR), кажется игроку бесшовной. В дополнение к расширенному диапазону вертикальной конструкции, ROR часто использовался для придания водоемам полупрозрачных поверхностей. ROR никогда не был функцией самого Build Engine, а скорее «трюком», созданным разработчиками игр. Трюк, используемый в Duke Nukem 3D , чтобы обойти это, как и в случае с его непрозрачными подводными секциями, заключался в том, чтобы просто быстро переместить игрока в другой регион карты, созданный для его имитации, подобно лифтам из Rise of the Triad .
В 2011 году в EDuke32 была добавлена функция под названием true room over room (TROR), которая позволяет размещать несколько секторов вертикально так, чтобы стена каждого сектора имела свое собственное соединение, что позволяет создавать структуры без ограничений по вертикали. Разница между ROR и TROR заключается в том, что сектора TROR физически перекрываются в данных карты и редакторе (что позволяет легко создавать и визуализировать), а не рисуются из отдельных мест с помощью порталов просмотра, следовательно, true room over room. TROR — это функция исходного порта EDuke32, а не игровая функция или трюк.
Build Engine был по сути проектом одного человека для Кена Сильвермана, хотя он консультировался с Джоном Кармаком для руководства в начале проекта. [3] Сильверман был нанят 3D Realms на основе его демо для Build. Хотя он продолжал совершенствовать движок после того, как устроился на работу в 3D Realms, по словам Сильвермана, он никогда не объединялся с другими сотрудниками 3D Realms в проекте и никогда не получал указаний адаптировать движок под какую-либо конкретную игру. [2]
20 июня 2000 года (согласно его веб-сайту) Кен Сильверман опубликовал исходный код Build Engine под частной некоммерческой лицензией. [11] [1] Сильверман объяснил, что после того, как id Software создала прецедент, опубликовав исходный код движка Doom , фанаты оказывали на него давление, требуя опубликовать исходный код Build Engine. [2]
Версия 2.0 EDuke Мэтта Сэттлера , проекта по улучшению Duke Nukem 3D для моддеров , была отправлена в 3D Realms для упаковки вскоре после выпуска исходного кода сборки, оставив Duke Nukem 3D с предварительно собранными библиотеками, которые 3D Realms использовали с оригинальным Duke. (На тот момент и Duke Nukem 3D , и EDuke все еще имели закрытый исходный код.)
С частными бета- версиями 2.1 Сэттлер работал над интеграцией исходного кода сборки Сильвермана в исходный код Duke, но проект провалился, не выпустив ничего, кроме нескольких очень глючных частных бета-версий. Несколько команд полной конверсии для игр Build решили работать напрямую с кодом Build Сильвермана, а также была разработана улучшенная версия редактора Build, известная как Mapster.
В то время многие на форумах 3D Realms утверждали, что портировать Build на многозадачную ОС будет невозможно, поскольку для этого требуется большой непрерывный блок памяти, который не будет доступен в многозадачной среде. Это утверждение не выдержало критики, поскольку все современные операционные системы используют виртуальную память , которая позволяет приложениям получать непрерывную логическую память без использования непрерывной физической памяти, но общепринятое мнение того времени состояло в том, что портирование Build на такую ОС было невозможным.
1 апреля 2003 года, после нескольких лет заявлений об обратном, 3D Realms выпустила исходный код Duke Nukem 3D под лицензией GPL-2.0 или более поздней . [12] Вскоре после этого Райан С. Гордон и Джонатан Фаулер создали и выпустили исходные порты игры, включая Build Engine. В Duke Nukem 3D можно было хорошо играть на линейке Windows NT (включая Windows 2000/XP), а также на Linux и других операционных системах Unix , и интерес к исходным портам резко возрос.
Райан С. Гордон (icculus) с помощью других сделал первый порт движка с использованием SDL . Порт был сначала для Linux , затем для Cygwin и, наконец, для собственной сборки Windows с использованием компилятора Watcom C++ , который был компилятором, использовавшимся для оригинальной сборки DOS (несмотря на то, что он был скомпилирован с помощью Watcom C++, сборка — это простой C.) [13] Были некоторые разговоры о том, что Мэтт Сэттлер использовал это для портирования EDuke на Windows, но из этого ничего не вышло. Позже, после выпуска исходного кода, был выпущен порт Duke Nukem 3D . [14] Он также был разветвлен Дэвидом «Rancidmeat» Кенигом как Duke3d_w32, который в свою очередь разветвился на многопользовательские xDuke, hDuke, nDuke и rDuke.
Второй исходный порт был сделан для Windows, а позже для Linux и Mac OS X Джонатаном Фаулером (JonoF). Этот порт, JFDuke3D, изначально не имел поддержки сетевых игр, хотя она была добавлена позже в процессе разработки. После длительного периода бездействия он был выложен на GitHub в 2020 году и получил обновления в 2021 и 2024 годах . [15] [16] [17] Он также портировал тестовую игру Ken-Build. [18]
Задачу обновления Build Engine до настоящего 3D-рендера взял на себя сам Сильверман. В примечаниях к выпуску Polymost он написал: «Когда 3D Realms выпустили исходный код Duke Nukem 3D, я думал, что кто-то сделает порт OpenGL или Direct3D. Ну, через несколько месяцев я не увидел никаких признаков того, что кто-то работает над настоящим аппаратно-ускоренным портом Build, просто люди говорили, что это невозможно. В конце концов, я понял, что единственный способ сделать это — сделать это самому». [19]
Рендерер Polymost позволял использовать 3D-графику с аппаратным ускорением с использованием OpenGL . Он также представил "hightile", функцию, которая позволяла заменять оригинальные текстуры игры на замены с высоким разрешением в различных форматах. Polymost использовался в JFBuild, JFDuke3D, JFShadowWarrior Джонатана Фаулера и исходных портах, полученных из их кодовых баз.
Исходный код EDuke 2.0 был выпущен позже [ когда? ] , а затем исходный код последней закрытой бета-версии EDuke 2.1 (которая так и не вышла в релиз). Ричард Гобейл (TerminX) объединил исходный код EDuke 2.0 с JFDuke3D, чтобы создать EDuke32 . Другой порт, Wineduke , основанный на коде icculus, с тех пор прекратил свое существование, оставив EDuke32 единственным портом EDuke, все еще находящимся в разработке. [20]
EDuke32 также поддерживает игры NAM и WWII GI , поскольку EDuke был основан на коде этих игр.
1 апреля 2009 года было объявлено о разработке рендерера OpenGL shader model 3.0 для EDuke32, названного Polymer , чтобы отличать его от Polymost Кена Сильвермана . Сначала это считалось первоапрельской шуткой, но позже рендерер был обнародован. Он позволяет использовать более современные эффекты, такие как динамическое цветное освещение и отображение теней в реальном времени, зеркальное и нормальное отображение и другие функции на основе шейдеров в дополнение к большинству функций, добавленных в Polymost за эти годы. Хотя Polymer полностью пригоден для использования, он технически неполный и неоптимизированный и все еще находится в разработке. Разработчики EDuke32 заявили, что как только Polymer будет переписан для скорости, он полностью вытеснит Polymost, так как это превосходный рендерер, и его можно сделать идентичным Polymost.
Исходный код Shadow Warrior был выпущен 1 апреля 2005 года под лицензией GPL-2.0 или более поздней , а JonoF выпустил его исходный порт, JFShadowWarrior, 2 апреля 2005 года. [21] Однако он признал, что имел доступ к исходному коду Shadow Warrior примерно за неделю до его выпуска. [22] Порт был оставлен в частично незавершённом состоянии, прежде чем был выложен на GitHub в 2020 году и получал обновления в 2021 и 2024 годах. Более ранняя версия позже была разветвлена Беном «ProASM» Смитом для порта SWP. [23] Порт Icculus Shadow Warrior был начат, но остался альфа-версией. [24] Порт VoidSW от разработчиков Ion Fury и EDuke32 вышел в публичную бета-версию 21 мая 2020 года. [25] Также существует форк более ранней версии под названием IcedSW от Джастина «IceColdDuke» Маршалла. [26]
Проект Transfusion был направлен на воссоздание Blood на движке DarkPlaces [27], но по состоянию на 2007 год этот проект был далек от завершения, хотя в нем есть играбельный многопользовательский режим deathmatch; похожий проект BloodCM воссоздает все однопользовательские уровни Monolith для Blood на основе EDuke32 [28] , а также ZBlood , который портирует некоторые ресурсы и уровни Blood на ZDoom [29] . Проект eRampage пытался создать полную конверсию Redneck Rampage для EDuke32. [30] Тем временем DN3DooM , [31] [32] [33] Shadow Warrior TC , [34] Doomed Redneck , [35] Re-Blood , [36] Re-PowerSlave , [37] VietDoom , [38] [39] [40] [41] и Fatedoom [42] адаптируют эти игры под GZDoom .
Исходный код Witchaven , Witchaven II: Blood Vengeance , William Shatner's TekWar и Corridor 8: Galactic Wars также всплыл. Однако их правовой статус неясен, хотя производные патчи EGwhaven для Witchaven были включены в переиздания игры в Steam и GOG.com . [43] JonoF выпустил порты для Witchaven и TekWar 3 марта 2024 года; [44] с производными портами ETekWar и EWitchaven также прототипированы. [45] Полный исходный код различных альфа-версий Blood также утек с течением времени. [46]
Затем это было использовано в качестве ссылки для иного реверс-инжиниринга порта на Java с использованием LibGDX под названием BloodGDX в мае 2017 года Александром «M210» Макаровым, предыдущим автором BloodCM . [47] Это последовало за предыдущим портом автора TekWar , выпущенным в январе 2016 года, [48] и было продолжено портами для Witchaven , [49] Redneck Rampage , [50] Duke Nukem 3D , PowerSlave , Legends of the Seven Paladins и Shadow Warrior , которые теперь все вместе называются BuildGDX. [51] DukeGDX также поддерживает файлы из издания 20th Anniversary World Tour Duke Nukem 3D . [52]
Еще один порт Blood , названный NBlood, был выпущен в январе 2019 года Алексеем «Nuke.YKT» Хохоловым на основе EDuke32 [53] и предыдущего порта Rednukem создателя для Redneck Rampage (который также поддерживает Duke Nukem 3D и Duke Nukem 64 ). [54] [55] Порт EDuke32 для PowerSlave , названный PCExhumed , был выпущен 21 ноября 2019 года Барри Дунканом (sirlemonhead) с помощью Nuke.YKT. [56] Исходный порт Raze является ответвлением различных портов движка Build, включая JFDuke3D, SWP, NBlood, Rednukem и PCExhumed, и связывает его с новым базовым бэкэндом, основанным на собственном GZDoom разработчиков . [57] NBlood и PCExhumed также были перенесены в JFBuild с целью адаптации к таким платформам, как Amiga , PlayStation Vita и Nintendo 3DS . [58]
После многочисленных попыток разработать преемника Build, Сильверман снова начал экспериментировать с такой идеей в 2006 году. Он использовал эту работу — теперь называемую Build 2 — во время обучения детей программированию 3D-игр в летнем лагере с 2007 по 2009 год, и работа продолжалась до 2011 года, когда он потерял интерес к проекту. Он включает в себя более продвинутую систему освещения, воксельный рендеринг для сущностей и настоящие трехмерные пространства «комната над комнатой», и, по крайней мере, частично сохранил обратную совместимость с оригинальным Build. Сильверман опубликовал свои черновики для общественности 7 марта 2018 года. [59] [60] Исходный код был опубликован под частной некоммерческой лицензией 8 июня 2019 года. [61]
1 апреля 2005 года 3D Realms выпустила исходный код движка SW под лицензией GPL. Время выпуска исходного кода наводит на мысль, что это была первоапрельская шутка; на следующий день появился первый исходный порт под названием JFShadowWarrior, в котором были улучшения JFDuke3D и поддержка Linux.
У меня [JonoF] была неделя форы…
Единственная оставшаяся часть игры — это 4-уровневая демоверсия с 7 видами оружия и 10 врагами, выпущенная как раз перед закрытием IntraCorp.... Также есть мод Fatedoom, который переносит содержимое демоверсии в Doom.
Вы получаете две сборки: пропатченную (Enhanced) и розничную (Original) для тех из вас, кто предпочитает неизмененный опыт в качестве бонуса. Обе сборки работают на DOSBox с пользовательским инструментом настройки. Улучшенная сборка включает исправления, представленные в EGwhaven, обязательном проекте сообщества, который решает ряд ошибок и проблем с игрой (мы хотели бы поблагодарить ETTiNGRiNDER за вклад в этот релиз). Кроме того, элементы управления переназначены на то, что вы ожидаете увидеть по умолчанию в игре от первого лица в наши дни.
Один из членов команды сказал, что это немного похоже на BuildGDX, поскольку Raze "совместно использует рендерер, звуковую систему и код интерфейса ввода/системы для разных игр".