Jump to content

Думовый движок

(Перенаправлено с Id Tech 1 )
идентификатор технологии 1
Разработчик(и) id Software (Джон Кармак, Джон Ромеро, Дэйв Тейлор)
Финальный выпуск
1,9 / 1 февраля 1995 г .; 29 лет назад ( 1995-02-01 )
Репозиторий github.com/id-Software/DOOM
Написано в С , язык ассемблера
Платформа MS-DOS , PC-98 Windows , Mac , Linux , Android , Amiga , NeXTSTEP , NeXT , Jaguar , 32X , PlayStation , 3DO , Nintendo 64 , Saturn , Game Boy Advance , Switch , BSD , Unix , другие
Предшественник Вольфенштейн 3D-движок
Преемник Квейк-движок
Лицензия GNU GPL-2.0 или новее [ 1 ]
3ДО : С [ 2 ]

id Tech 1 , также известный как Doom движок , — игровой движок, используемый в id Software видеоиграх Doom и Doom II: Hell on Earth . Он также используется в Heretic , Hexen: Beyond Heretic , Strife: Quest for the Sigil , Hacx: Twitch 'n Kill , Freedoom и других играх, выпущенных лицензиатами. Он был создан Джоном Кармаком , со вспомогательными функциями, написанными Майком Абрашем , Джоном Ромеро , Дэйвом Тейлором и Полом Радеком. Первоначально разработанный на NeXT , компьютерах [ 3 ] он был портирован на MS-DOS и совместимые операционные системы для Doom первоначального выпуска , а позже был портирован на несколько игровых консолей и операционных систем .

Исходный код для Linux версии Doom был опубликован для общественности по лицензии, предоставляющей права на некоммерческое использование 23 декабря 1997 года, а последовала версия Doom II для Linux. примерно неделю спустя, 29 декабря 1997 года, [ 4 ] [ 5 ] Исходный код был позже переиздан под лицензией GNU General Public License v2.0 или более поздней версии, 3 октября 1999 года. [ 6 ] [ 7 ] Десятки неофициальных Doom портов исходного кода , которые были созданы с тех пор, позволяют Doom работать на ранее не поддерживаемых операционных системах, а иногда радикально расширяют функциональность движка за счет новых функций.

Хотя движок визуализирует трехмерное пространство, оно проецируется на основе двухмерного плана этажа . Линия взгляда всегда параллельна полу, стены должны быть перпендикулярны полу, нельзя создавать многоуровневые конструкции или наклонные участки (полы и потолки под разными углами). Несмотря на эти ограничения, этот движок представлял собой технологический скачок по сравнению с предыдущим Wolfenstein 3D движком от id . Позже движок Doom был переименован в «id Tech 1», чтобы отнести его к длинному списку игровых движков id Software . [ 8 ]

Игровой мир

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

Движок Doom отделяет рендеринг от остальной части игры. Графический движок работает максимально быстро, но игровой мир работает со скоростью 35 кадров в секунду независимо от оборудования, поэтому несколько игроков могут играть друг против друга, используя компьютеры с разной производительностью. [ 9 ]

Структура уровней

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

Простая установка, демонстрирующая в Doom. внутреннее представление уровней

Просмотр карты в редакторе

Если смотреть сверху вниз, все уровни Doom на самом деле двухмерны, что демонстрирует одно из ключевых ограничений движка Doom : перемещение комнаты над комнатой невозможно. Однако у этого ограничения есть и положительная сторона: можно легко отобразить «режим карты», который представляет стены и положение игрока, очень похоже на первое изображение справа.

Базовые объекты

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

Базовой единицей является вершина , которая представляет одну 2D-точку. Вершины (или «вершины», как они называются внутри) затем соединяются, образуя линии , известные как «linedefs». Каждый linedef может иметь одну или две стороны, которые называются «sidedef». Затем боковые определения группируются в многоугольники ; они называются «секторами». Секторы представляют собой отдельные области уровня.

Каждый сектор содержит ряд свойств: высоту пола, высоту потолка, уровень освещенности, текстуру пола и текстуру потолка. Например, чтобы иметь другой уровень освещенности в определенной области, для этой области необходимо создать новый сектор с другим уровнем освещенности. Таким образом, односторонние линии представляют собой сплошные стены, а двусторонние линии представляют собой линии моста между секторами.

Боковые защиты

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

Sidedefs используются для хранения текстур стен ; они полностью отделены от текстур пола и потолка. Каждый сайддеф может иметь три текстуры; их называют средней, верхней и нижней текстурами. В односторонних линейных определениях для текстуры на стене используется только средняя текстура. В двусторонних линейных определениях ситуация сложнее. Нижняя и верхняя текстуры используются для заполнения промежутков, где соседние сектора имеют разную высоту пола и потолка: нижние текстуры используются, например, для ступенек. Боковые защиты также могут иметь среднюю текстуру, хотя у большинства ее нет; это используется для того, чтобы текстуры висели в воздухе. Например, когда видна прозрачная полосчатая текстура, образующая клетку, это пример средней текстуры двустороннего определения линии.

Разделение двоичного пространства

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

Doom использует систему, известную как разделение двоичного пространства (BSP). [ 10 ] Инструмент используется для предварительного создания данных BSP для уровня. На большом уровне этот процесс может занять довольно много времени. невозможно передвигать стены Именно из-за этого в Doom ; хотя двери и лифты движутся вверх и вниз, ни один из них никогда не движется в сторону.

Уровень разделен на двоичное дерево : каждое место в дереве представляет собой «узел», который представляет определенную область уровня (корневой узел представляет весь уровень). На каждой ветви дерева имеется разделительная линия, разделяющая область узла на два подузла. В то же время разделительная линия делит определения линий на сегменты, называемые «сегтами». [ 11 ]

На листьях дерева расположены выпуклые многоугольники , где дальнейшее деление уровня не нужно. Эти выпуклые многоугольники называются подсекторами (или «SSECTORS») и привязаны к определенному сектору. Каждый подсектор имеет список связанных с ним сегментов. [ 10 ]

Система BSP сортирует подсекторы в правильном порядке для рендеринга. Алгоритм достаточно прост:

  1. Начните с корневого узла.
  2. Нарисуйте дочерние узлы этого узла рекурсивно. Дочерний узел, ближайший к камере, рисуется первым с использованием алгоритма Scanline . Это можно узнать, посмотрев, на какой стороне разделительной линии узла находится камера.
  3. Когда будет достигнут подсектор, нарисуйте его. [ 12 ]

Процесс завершается, когда заполняется весь столбец пикселей (т. е. больше не остается пробелов). Такое упорядочение гарантирует, что на рисование невидимых объектов не тратится время, и в результате карты могут стать очень большими без какого-либо снижения скорости.

Рендеринг

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

Рисуем стены

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

Все стены в Doom нарисованы вертикально; именно из-за этого невозможно нормально посмотреть вверх и вниз. Можно выполнить поиск вверх/вниз с помощью «y-shearing» , и многие современные порты исходного кода Doom делают это, а также более поздние игры, использующие этот движок, такие как Heretic . По сути, это работает путем перемещения линии горизонта вверх и вниз по экрану, фактически обеспечивая «окно» в более высокую видимую область. Двигая окно вверх и вниз, можно создать иллюзию взгляда вверх и вниз. Однако это будет искажать вид по мере того, как игрок будет смотреть вверх и вниз.

Движок Doom визуализирует стены по мере прохождения BSP-дерева, рисуя подсекторы в порядке расстояния от камеры, так что ближайшие сегменты рисуются первыми. По мере рисования сегменты сохраняются в связанном списке. Это используется для обрезки других сегментов, отображаемых позже, чтобы уменьшить перерисовку. Это также используется позже для обрезки краев спрайтов.

Как только движок достигает сплошной (односторонней) стены в определенной координате x, больше не нужно рисовать линии в этой области. Для обрезки движок сохраняет «карту» областей экрана, где были достигнуты твердые стены. Это позволяет полностью обрезать удаленные части уровня, невидимые для игрока.

Графический формат Doom хранит текстуры стен в виде наборов вертикальных колонн ; это полезно для средства визуализации, которое по существу визуализирует стены, рисуя множество вертикальных столбцов текстур.

Пол и потолок

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

Система рисования полов и потолков («квартиры») менее изящна. [ по мнению кого? ] чем тот, который использовался для стен. Квартиры рисуются с помощью алгоритма, похожего на заливку заливкой . Из-за этого, если используется плохой конструктор BSP, иногда можно получить «дыры», в которых пол или потолок доходят до краев экрана, визуальная ошибка, обычно называемая «следом слизи». [ 13 ] Это также причина, по которой, если игрок выйдет за пределы уровня, используя чит-код noclip, полы и потолки будут казаться вытянутыми из уровня в пустое пространство.

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

Из-за ограничения рисования одной вертикальной линии в каждой позиции x иногда необходимо разделить визуальные плоскости на несколько визуальных плоскостей. Например, рассмотрим пол с двумя концентрическими квадратами. Внутренний квадрат вертикально разделит окружающий этаж. В том горизонтальном диапазоне, где нарисован внутренний квадрат, необходимы две визплоскости для окружающего пола.

Это приводит к одному из классических ограничений Doom , которое расстраивает многих картографов. [ ВОЗ? ] надолго. В Doom было статическое ограничение на количество визуальных самолетов; в случае превышения произойдет «переполнение визплана», в результате чего игра выйдет в DOS с одним из двух сообщений: «Виспланов больше нет!» или «переполнение визплана (128 или выше)». Самый простой способ активировать ограничение визплана — это использовать большой шахматный узор на полу; это создает большое количество визуальных самолетов.

По мере рендеринга сегментов также добавляются визуальные плоскости, идущие от краев сегментов к вертикальным краям экрана. Они простираются до тех пор, пока не достигнут существующих визуальных плоскостей. Из-за того, как это работает, система зависит от того, что сегменты отображаются по порядку всем движком; необходимо сначала приблизить визпланы, чтобы они могли «отсечь» других, находящихся дальше. Если не остановить, пол или потолок «затекут» до краев экрана, как описано ранее. В конце концов, визуальные плоскости формируют «карту» определенных областей экрана, на которой можно рисовать определенные текстуры.

Хотя визпланы состоят по существу из вертикальных «полос», фактическая низкоуровневая визуализация выполняется в виде горизонтальных «промежутков» текстуры. После того, как все визуальные плоскости построены, они преобразуются в промежутки, которые затем отображаются на экране. Кажется, это компромисс: визплоскости легче построить в виде вертикальных полос, но из-за особенностей внешнего вида текстур пола и потолка их легче рисовать в виде горизонтальных полос.

Вещи (спрайты)

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

Каждый сектор уровня имеет связанный список вещей, хранящихся в этом секторе. По мере рисования каждого сектора спрайты помещаются в список спрайтов, которые нужно отрисовать. Если они находятся вне поля зрения, они игнорируются.

Края спрайтов обрезаются путем проверки списка ранее нарисованных сегментов. Спрайты в Doom хранятся в том же формате на основе столбцов, что и стены, что опять же полезно для рендерера. Те же функции, которые используются для рисования стен, используются и для рисования спрайтов.

Хотя подсекторы гарантированно будут в порядке, спрайты внутри них — нет. Doom хранит список спрайтов, которые нужно отрисовать («висспрайты»), и сортирует его перед рендерингом. Далекие спрайты рисуются раньше близких. Это вызывает некоторую перерисовку, но обычно она незначительна.

Остался последний выпуск средних текстур на двусторонних линиях, например, используемых в прозрачных полосах. Они смешиваются и рисуются со спрайтами в конце процесса рендеринга, а не с другими стенами.

Игры на Doom движке

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

Движок Doom получил большую часть своей известности благодаря классическому шутеру от первого лица Doom , и он использовался в нескольких других играх. Обычно считается, что Doom игры на движке «большой четверки» — это Doom , Heretic , Hexen: Beyond Heretic и Strife: Quest for the Sigil .

Игры, построенные непосредственно на Doom . движке

[ редактировать ]
Год Заголовок Разработчик
1993 Рок программное обеспечение id
1994 Дум II: Ад на Земле
Еретик Программное обеспечение Raven
1995 Окончательная гибель программное обеспечение id
Мастер-уровни для Doom II
Хексен: За гранью еретика Программное обеспечение Raven
1996 Последняя гибель КомандаТНТ
Еретик: Тень Змеиных Всадников Программное обеспечение Raven
Гексен: Короли смерти Темной Цитадели
Страйф: В поисках Сигила Роуг Развлечения

Игры на основе Doom или Doom II кода

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

В 1990-х годах несколько разработчиков приобрели лицензии на распространение полных конверсий , Doom а после выпуска исходного кода в 1997 году на движке было выпущено несколько отдельных игр, включая бесплатное ПО , фанатские игры и коммерческие игры. [ 14 ]

Год Заголовок Разработчик
1996 Чекс Квест Цифровое кафе
1997 Дум 64 Мидуэй Студии Сан-Диего
Chex Quest 2: Флемоиды захватывают Чекстрополис Цифровое кафе
ХаксХ Программное обеспечение Банджо
2000 Соник Робо Взрыв 2 Соник Тим Джуниор
2003 Свобода Команда Свободы
2008 Чекс Квест 3 Чарльз Якоби
Богохульник Команда Бласпемера
2009 Гармония [ 15 ] Томас ван дер Фельден
2014 Приключения Квадрата [ 16 ] Игры БигБрик
2017 Восстание шерстяного клубка [ 17 ] MSPaintR0cks
2018 РЭКР [ 18 ] Пересмешник Софтворкс
2019 Гедон [ 19 ] Zan_HedonDev
2020 Проект Осирис [ 20 ] АрктурусДелюкс
2021 Рвота [ 21 ] Подонок
2022 Руки Некромантии [ 22 ] Команда ОНА
2024 Селако [ 23 ] Студия измененной орбиты

См. также

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

Примечания

[ редактировать ]
  1. ^ «Исходный код Doom под лицензией GNU GPL» . геймеры.орг . Архивировано из оригинала 31 мая 2023 года.
  2. ^ "Doom3do/ЛИЦЕНЗИЯ у мастера · Olde-Skuul/Doom3do" . Гитхаб . 17 декабря 2022 г.
  3. ^ «NeXT Computers — Компания — История вычислений» . www.computinghistory.org.uk . Проверено 29 марта 2022 г.
  4. ^ Персонал (29 декабря 1997 г.). «Доступен исходный код Doom II» . ПК-геймер США . Архивировано из оригинала 18 февраля 1998 года . Проверено 20 ноября 2019 г.
  5. ^ https://web.archive.org/web/*/ftp://ftp.idsoftware.com/idstuff/source/* ftp://ftp.idsoftware.com/idstuff/source/ [ постоянная мертвая ссылка ]
  6. ^ Исходный код Doom под лицензией GNU GPL — интерфейс базы данных Doomworld /idgames.
  7. ^ Исходный код Doom с 3ddownloads.com. Архивировано 24 февраля 2004 г. на Wayback Machine . Выпущен в 1997 г., теперь под лицензией GNU GPL v2 или более поздней версии.
  8. ^ «id Tech 1 (Концепция)» . Гигантская бомба .
  9. ^ Шуйтема, Пол К. (август 1994 г.). «Светлая сторона судьбы» . Мир компьютерных игр . стр. 140, 142.
  10. ^ Перейти обратно: а б Абраш, Майкл. «Трёхмерный движок Quake: общая картина» . Проверено 22 августа 2012 г.
  11. ^ Аптед, Эндрю. «СПЕЦИФИКАЦИЯ для GL-узлов» . Проверено 22 августа 2012 г.
  12. ^ Санглар, Фабьен. «Обзор кода движка Doom» . Проверено 23 августа 2012 г.
  13. След слизи — The Doom Wiki
  14. ^ Тарасон, Доминик (01 апреля 2019 г.). «Modder Superior: множество свободных потомков Doom» . Каменно-бумажный дробовик . Проверено 14 июля 2024 г.
  15. ^ Гиллен, Кирон (18 ноября 2009 г.). «Гармония в моей голове: Гармония» . Каменно-бумажный дробовик . Проверено 22 февраля 2023 г.
  16. ^ Доу, Лиам (19 апреля 2018 г.). «The Adventures of Square — это слегка забавный ретро-шутер от первого лица, который доступен бесплатно, уже вышел второй эпизод» . Игры в Linux . Проверено 19 февраля 2023 г.
  17. ^ Тарасон, Доминик (07 января 2018 г.). «Shadow & Rise Of The Wool Ball делает Wolfenstein милым» . Каменно-бумажный дробовик . Проверено 14 июля 2024 г.
  18. ^ Циро, Рания (12 июля 2018 г.). «Думгай теперь стал своего рода викингом в игре Rekkr» . ВГР . Проверено 14 июля 2024 г.
  19. ^ Дигре, Аликс (16 мая 2019 г.). «Хедон — обзор игры для ПК» . ВГР . Проверено 14 июля 2024 г.
  20. ^ Пападопулос, Джон (16 марта 2020 г.). «Кто-то создал 3D-ремейк Alien Breed в GZDoom, и вы можете скачать его прямо сейчас» . DSOGaming . Проверено 22 июня 2024 г.
  21. ^ Глаговский, Питер (11 августа 2021 г.). «Обзор Вомитореума» . Технологический Раптор . Проверено 14 июля 2024 г.
  22. ^ Доу, Лиам (22 мая 2022 г.). «Hands of Necromancy» в жанре темного фэнтези-шутера от первого лица на базе GZDoom уже доступен» . Игры в Linux . Проверено 15 июля 2024 г.
  23. ^ Цвизен, Зак (31 мая 2024 г.). «Новый шутер от первого лица, созданный с использованием технологии Doom, лучше, чем большинство шутеров AAA» . Котаку . Проверено 14 июля 2024 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9e18e73f5cb307b91e0ecf898394561c__1722721920
URL1:https://arc.ask3.ru/arc/aa/9e/1c/9e18e73f5cb307b91e0ecf898394561c.html
Заголовок, (Title) документа по адресу, URL1:
Doom engine - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)