Движок Doom/Сравнение Doom и Build
Перейти к навигации
Перейти к поиску
| править | Движок Doom | Build |
|---|---|---|
| Автор | Джон Кармак (id Software) | Кен Сильвермен (инди → 3D Realms) |
| Язык программирования | Написан на Си, игровая логика пишется на нём же. В Hexen часть логики уровня может писаться специальным байт-кодом BEHAVIOR, реконструирован хакерами. | Написан на Cи, но изрядная часть игровой логики записана во внешних скриптах с расширением CON. Кроме того, с клиентами Сильвермен исходниками не делился, отправляя им только собранные OBJ-файлы. |
| Системные требования | Для картинки 320×200 — старшие модели Intel 80386, 4 МБ оперативной памяти, что гораздо лучше Build.
Современная DOS-версия с поддержкой SVGA и достаточной скоростью для чего-то большего 320×200 — Pentium Pro и 16 МБ оперативной памяти, что уже гораздо хуже. |
Для картинки 320×200 — младшие модели Intel 80486, 8 МБ оперативной памяти.
Для 640×480 — Pentium 133. В отличие от DOOM, поддержка видеодрайвером VESA 2.0 желательна, но не обязательна. |
| Графика | 256-цветная; разрешение картинки изначально жёстко фиксированное 320×200, переделка потребовала много работы как над отрисовкой, так и над интерфейсом. | 256-цветная, переменного разрешения. Были глюки с высокими разрешениями, но в современных версиях движка они большей частью закрыты. |
| Камера | В первой версии обзора вверх-вниз не было, позже — в двухточечной проекции (не полноценное 3D). Несмотря на это, трёхмерная физика стрельбы была всегда. | Обзор вверх-вниз в двухточечной проекции. В современных версиях — полноценное 3D. |
| Звук | Сложный звук со стерео, вариацией высоты и приоритетом одних звуков над другими. Звуки точечные. Суррогаты объёмного звука: звук может быть «отовсюду» на максимальной громкости независимо от расстояния; патч на функцию затихания на уровнях с боссами. Как‑то поддеживается динамик; ни одним из портов не подхвачен. | Сложный звук со стерео и приоритетом одних звуков над другими. Динамик не поддерживается. |
| Музыка | MIDI-подобный формат музыки, довольно быстро написали конвертеры MUS↔MIDI. Порты конвертируют его в MIDI, поддерживают настоящие MIDI-файлы. | MIDI-файлы. |
| Геометрия уровня | Полы и потолки строго горизонтальные, стены строго вертикальные. | Полы и потолки могут быть наклонными, стены всё так же вертикальные. |
| Многоэтажности нет (секторы не могут пересекаться из-за ограничений алгоритма отрисовки). | Есть зачатки многоэтажности — секторы могут быть расположены друг над другом, если они не видны оба сразу. Кроме того, потолок одного сектора может служить полом другого — в Duke Nukem 3D так реализованы лифты, трубы, подводный мир. | |
| Динамически может меняться только высота пола или потолка — именно поэтому в Doom двери открываются вверх. В Hexen добавили поддержку полиобъектов, которые могут ограниченно двигаться по горизонтали. | Поддерживается динамическое изменение высоты пола и потолка, а также произвольное движение сектора внутри другого, лишь бы пересечений не было — это позволило реализовать распахивающиеся двери, горизонтальные лифты, огромные крутящиеся шестерни из полов/потолков и даже подобие машинок. | |
| Разнообразные и красивые секторные эффекты: сектор может утонуть в лаве (или, наоборот, подняться из лавы), могут построиться ступеньки. | 50 разнообразных эффектов вроде сдвижных дверей и строящихся мостов, но той «вкусноты», как в Doom, нет. | |
| Масштаб текстур постоянный. Поворот текстур пола/потолка невозможен; в Heretic и Hexen реализовали сдвиг. С текстурами стен всё значительно свободнее. | Поддерживается переменный масштаб текстур: например, на менее детальной стене можно расположить детализированный плакат. | |
| — | Как развитие предыдущего пункта — поддерживаются декали на стенах, в том числе динамически появляющиеся. Через них можно реализовать, помимо прочего, следы крови и пуль на стенах; в Doom их нет. | |
| Объекты | Спрайты, для каждого объекта задаются 1 или 8 поворотов. Можно также указать, что кадр А в отражённом виде станет кадром Б — обычно чтобы сократить число поворотов до пяти, но у пауков раскладка более сложная. | Спрайты, для каждого объекта задаются 1 или 5 поворотов (остальные три — симметрично отражённые версии). В продвинутых версиях движка ограниченно воксели. |
| Поддерживается динамическая перекраска спрайтов, но в Doom используется только для сетевой игры. Даже белый и красный «козлы» — это отдельные наборы спрайтов. | Динамическая перекраска спрайтов широко используется для разных версий противников. | |
| Поддерживается перемещение по всем трём осям. Хитбокс каждого — параллелепипед со сторонами, параллельными осям X/Y/Z. В Doom в некоторых ситуациях хитбокс имеет бесконечную высоту. | Поддерживается перемещение по всем трём осям. | |
| Полупрозрачность реализована с помощью специальных цветовых таблиц 256×256, в которых записано, как будет выглядеть цвет А за полупрозрачным объектом цвета Б. Для нескольких уровней прозрачности нужно несколько таблиц — в некоторых портах Doom их число доходило до 5. | ||
| Освещение | Постоянное для каждого сектора. Чтобы сделать световое пятно, нужно создать несколько вложенных друг в друга секторов. | |
| Рендеринг | Программный, от ближних секторов к дальним, с помощью двоичного разбиения пространства. Одновременно находит видимые объекты и рисует 64 ближайших от дальних к ближним. Это требует предварительной обработки перед построением геометрии, что делает редактирование в визуальном режиме (WYSIWYG, сделал изменение — сразу увидел результат) невозможным. | Программный, от ближних к дальним, с помощью порталов. Поэтому редактор там WYSIWYG, и одна стена — это всегда одна стена и никогда не разбивается на части (но дважды, трижды и т. д. рисуется, если смотрим на неё из-за колонны).
В современных версиях движка есть поддержка аппаратного рендера через OpenGL. |
| Скорость игры | 35 тактов в секунду (половина штатной частоты VGA). В портах для приставок пришлось снижать до 30 и пересчитывать скорости. | 30 тактов в секунду. |
| Редактор уровней | Множество сторонних редакторов уровней, в том числе крайне дружественных пользователю. | Единственный и жутко неудобный редактор уровней — несмотря на этот самый WYSIWYG. |
| Лицензия | Изначально коммерческая, ныне — GNU GPL v2 | |