Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 940 сообщений
Cообщения с меткой

doom - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

[Перевод] Как рендерится кадр нового Doom

Вторник, 13 Сентября 2016 г. 23:13 (ссылка)





Выпущенный в 1993 году первый DOOM внёс фундаментальные изменения в разработку игр и механик, он стал мировым хитом и создал новых идолов, таких как Джон Кармак и Джон Ромеро.



Сегодня, 23 года спустя, id Software принадлежит Zenimax, все основатели уже покинули компанию, но это не помешало коллективу id продемонстрировать весь свой талант, выпустив отличную игру.



Новый DOOM прекрасно дополняет франшизу. В нём используется новый движок id Tech 6; после ухода Джона Кармака его сменил на должности ведущего рендер-программиста бывший разработчик Crytek Тьяго Соуза (Tiago Sousa).



Традиционно id Software через несколько лет после создания публиковала исходный код своих движков, что часто приводило к возникновению интересных ремейков и аналитических статей. Неизвестно, продолжит ли id Tech 6 эту традицию, но нам не обязательно нужен исходный код, чтобы оценить любопытные графические техники, использованные в движке.



Как рендерится кадр



Мы разберём сцену с картинки ниже, на которой игрок атакует гнездо крови, охраняемое несколькими одержимыми, сразу после получения преторианской брони в начале игры.







В отличие от большинства современных игр под Windows, в DOOM используется не Direct3D, а OpenGL и Vulkan.



Vulkan — это новая потрясающая технология, к тому же Балдур Карлссон (Baldur Karlsson) только совсем недавно добавил поддержку Vulkan в RenderDoc, так что трудно было удержаться от искушения забраться внутрь движка DOOM. Все представленные ниже наблюдения выполнены в игре, запущенной с Vulkan на GTX 980 со всеми настройками, установленными на Ultra, некоторые догадки взяты из презентации Тьяго Соузы и Джина Джефроя (Jean Geffroy) на Siggraph.



Обновление мегатекстур



Первый этап рендеринга — это обновление мегатекстур; эта технология, представленная ещё в id Tech 5, использовалась в RAGE, а теперь и в новом DOOM.



Если объяснять вкратце, то смысл этой технологии в том, что несколько огромных текстур (в DOOM они имеют размер 16k x 8k) располагаются в памяти видеопроцессора; каждая из них — это коллекция из тайлов 128x128.





Страницы 128 x 128, хранящиеся в текстуре 16k x 8k



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



Когда пиксельный шейдер выполняет считывание из «виртуальной текстуры», он просто считывает некоторые из этих физических тайлов размером 128x128.



Разумеется, в зависимости от того, куда смотрит игрок, набор этих текстур будет изменяться: на экране появляются новые модели, ссылающиеся на другие виртуальные текстуры, требуется загрузка новых тайлов и выгрузка старых…



Итак, в начале кадра DOOM обновляет несколько тайлов с помощью инструкции vkCmdCopyBufferToImage, чтобы записать актуальные текстурные данные в память графического процессора.



Подробно почитать о мегатекстурах можно здесь и здесь.



Атлас теневых карт



Для каждого источника света, отбрасывающего тень, создаётся уникальная карта глубин, сохраняемая в один тайл огромного текстурного атласа размером 8k x 8k. Однако не каждая карта глубин рассчитывается для каждого кадра: DOOM активно повторно использует результаты предыдущего кадра и пересчитывает только те карты глубин, которые требуют обновления.





Буфер глубин 8k x 8k (предыдущий кадр)





Буфер глубин 8k x 8k (текущий кадр)



Когда источник света статичен и отбрасывает тени только на статичные объекты, то разумно будет просто хранить его карту глубин «как есть» и не выполнять ненужных пересчётов. Однако если к этом свету переместится противник, то карту глубин нужно будет создать снова.



Размеры карт глубин могут сильно отличаться в зависимости от расстояния от источника до камеры; кроме того, пересчитанные карты глубин не обязательно должны находиться в том же тайле атласа.



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



Предварительный проход обработки глубин



Рендеринг всех непрозрачных сеток уже выполнен и информация об их глубине передана в карту глубин. Сначала это оружие игрока, затем статическая геометрия, и, наконец, динамическая геометрия.





Карта глубин: готовность 20%





Карта глубин: готовность 40%





Карта глубин: готовность 60%





Карта глубин: готовность 80%





Карта глубин: готовность 100%



Но на самом деле во время предварительного прохода обработки глубин сохраняется не только информация о глубинах.



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





Карта скоростей



Для хранения скорости нужно всего 2 канала: в красном хранится горизонтальная скорость, а в зелёном — вертикальная.



Одержимый быстро движется к игроку (поэтому он зелёный), а оружие почти неподвижно (чёрное).



А что же это за жёлтая область (красный и зелёный равны 1)? На самом деле это исходный цвет буфера по умолчанию, означающий, что там нет динамических сеток: это «область статичных сеток».



Почему DOOM не выполняет расчёт скорости для статичных сеток? Потому что скорость статичного пикселя легко найти из его глубины и нового состояния камеры по сравнению с последним кадром; не обязательно рассчитывать её для каждой сетки.



Карта скоростей пригодится нам позже при добавлении motion blur.



Запросы отсечения



Мы стремимся отправить для рендеринга в графическом процессоре как можно меньшее количество геометрических объектов, и лучший способ достичь этого — отсечь все сетки, которые невидимы для игрока. БОльшая часть отсечения невидимых частей в DOOM выполняется промежуточным ПО Umbra, но всё равно движок выполняет запросы отсечения к графическому процессору для дополнительной обрезки видимой области.



В чём же смысл запросов отсечения к графическому процессору? Первый шаг — это группирование нескольких сеток мира в виртуальную область, охватывающую все эти сетки, с последующим запросом к графическому процессору на рендеринг этой области согласно текущему буферу глубин. Если ни один из растровых пикселей не проходит проверку по глубине, это означает, что эта область полностью отсекается и все объекты мира, содержащиеся в этой области можно спокойно игнорировать при рендеринге.



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





Проверка области. Красное — отсечённое, зелёное — видимое.



Кластерный прямой рендеринг непрозрачных объектов



Теперь рендерятся вся непрозрачная геометрия и декали. Информация об освещении хранится в HDR-буфере с плавающей запятой:





25% освещения





50% освещения





75% освещения





100% освещения



Функции проверки глубины устанавливается значение РАВНО, чтобы избежать лишних вычислений: благодаря предыдущему предварительному проходу обработки глубин мы точно знаем, какое значение глубины должен иметь каждый пиксель. Декали также наносятся прямо при рендеринге сеток, они хранятся в текстурном атласе.



Картинка уже выглядит неплохо, но нам всё ещё не хватает прозрачных материалов, например стекла, частиц, а также совсем отсутствуют отражения среды.



Скажу пару слов об этом проходе: в нём используется кластерный прямой рендерер, основанный на работах Эмиля Персона (Emil Person) и Олы Олссона (Ola Olsson).



Слабым местом прямого рендеринга всегда была невозможность обработки большого количества источников освещения, эту задачу гораздо проще отложить.



Как же работает кластерный рендерер? Сначала окно просмотра разделяется на тайлы: в DOOM создаётся 16 x 8 областей. Некоторые рендереры останавливаются на этом и вычисляют список источников освещения на тайл, который позволяет снизить объёмы расчётов освещения, однако всё равно имеет определённые проблемы с пограничными случаями.



Кластерный рендеринг развивает эту концепцию глубже, переходя из 2D в 3D: не останавливаясь на разделении двухмерного окна просмотра, он выполняет разбивку в 3D всей пирамиды видимости камеры, создавая срезы вдоль оси Z.



Каждый «блок» называется «кластером», можно также назвать их "вокселями в форме пирамиды видимости".



Ниже представлено простое разделение окна просмотра размером 4 x 2; 5 срезов глубины разделяют пирамиду видимости на 40 кластеров.







В DOOM пирамида видимости камеры разделена на 3072 кластера (размером 16 x 8 x 24), срезы глубины логарифмически распложены вдоль оси Z.



В случае кластерного рендерера типичный алгоритм будет таким:




  • Сначала ЦП вычисляет список элементов, влияющих на освещение в каждом кластере: источники освещения, декали и кубические текстуры…



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




  • Затем графический процессор рендерит пиксель:




    • из координат и глубины пикселя вычисляется, к какому кластеру он принадлежит

    • считывается список декалей/источников освещения для этого кластера. При этом используются косвенная адресация со смещением и расчёт индекса (см. иллюстрации ниже).

    • код проходит по всем декалям/источникам освещения в кластере, вычисляя и добавляя степень их влияния.




Применение источников освещения и декалей
Вот как пиксельный шейдер может получить список источников освещения и декалей на этом проходе:

























Также существует список зондов (не показан на схемах выше), доступ к которому получается точно таким же образом; однако он не используется на этом проходе и мы вернёмся к нему позже.



Издержки влияния на ЦП предварительного создания списка элементов для кластеров окупаются значительным снижением сложности расчётов рендеринга в графическом процессоре ниже по конвейеру.



На кластерный прямой рендеринг стали в последнее обращать внимание: он имеет хорошее способность обрабатывать большее количество источников света, чем простой прямой рендеринг; к тому же он работает быстрее, чем отложенные расчёты, которые должны выполнять запись и считывание из нескольких G-буферов.



Однако я не упомянул кое-что: на этом проходе не просто передаётся одна операция записи в буфер освещения; при его выполнении также с помощью MRT создаются два тонких G-буфера:





Карта нормалей





Карта отражения



Карта нормалей хранится в формате R16G16 с плавающей запятой, карта отражения — в R8G8B8A8, альфа-канал содержит коэффициент сглаживания. Так что в DOOM продуманно используется комбинация прямого и отложенного рендеринга с гибридным подходом. Эти новые G-буферы станут полезными при добавлении дополнительных эффектов, таких как отражения.



Я пропустил ещё одно: в то же время создаётся feedback-буфер размером 160 x 120 для системы мегатекстур. Он содержит информацию для потоковой системы, сообщающую о текстурах и их мип-текстурировании, которые необходимо передавать дальше.



Движок мегатекстур работает по принципу обратной связи: если после прохода рендеринга сообщается об отсутствии каких-то текстур, то движок загружает их.



Частицы в графическом процессоре



Затем запускается compute shader для обновления симуляции частиц: положения, скорости и срока жизни.



Он считывает текущие состояния частиц, а также буферы нормалей и глубин (для обнаружения столкновений), воспроизводит этап симуляции и сохраняет в буферы новые состояния.



Преграждение окружающего света в экранном пространстве (SSAO)



На этом этапе генерируется карта SSAO.



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

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



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



Первый результат получается довольно шумным.





Карта SSAO



Отражения в экранном пространстве



Теперь пиксельный шейдер создаёт карту SSR. С помощью информации, присутствующей на экране, он рейтрейсингом обрабатывает отражения, заставляя лучи отражаться от каждого пикселя в окне просмотра и считывая цвет пикселей, на которые упали лучи.


















Глубины


Нормали


Отражение


Предыдущий кадр


Карта SSR
Входными данными для шейдера становятся карта глубин (для вычисления положения пикселя в пространстве мира), карта нормалей (чтобы знать, как заставить лучи отражаться), карта отражения (чтобы знать «количество» отражения) и предыдущий отрендеренный кадр (на этапе перед тональной компрессией, но после применения прозрачности, чтобы получить определённую цветовую информацию). Также пиксельному шейдеру передаётся конфигурация камеры предыдущего кадра, чтобы он мог отслеживать изменения положений фрагментов.



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



Но у неё возникают собственные артефакты, так как она работает только в экранном пространстве и ей не хватает «глобальной» информации. Например, вы можете видеть красивые отражения в сцене, но когда вы начинаете опускать взгляд, количество отражения уменьшается, и глядя на свои ноги, вы не увидите почти никаких отражений. Мне кажется, что SSR хорошо интегрированы в DOOM, они улучшают качество изображения, но при этом они довольно неброские, и вы не заметите их исчезновения, если не следите за ними специально.



Отражения статичных кубических текстур



После расчёта всех динамических отражений на предыдущем проходе (и их ограничений) настало время создания статических отражений с помощью IBL.



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



Все кубические текстуры уровня хранятся в массиве; их десятки, однако основной вклад в нашу сцену вносят всего 5 (кубические текстуры в этой комнате):











Пиксельный шейдер считывает данные из буферов глубин, нормалей и отражений, ищет в структуре кластера кубические текстуры, влияющие на пиксель (чем ближе кубическая текстура, тем сильнее влияние) и генерирует карту статичных отражений:





Карта статичных отражений



Смешивание карт



На этом этапе compute shader комбинирует все сгенерированные ранее карты. Он считывает карты глубин и отражений и смешивает освещение прямого прохода:




  • с информацией SSAO

  • с SSR для рассматриваемого пикселя, когда она становится доступной

  • если информация SSR отсутствует, в качестве замены используются данные карты статичных отражений

  • также рассчитывается эффект тумана





Смешивание и туман: до





Смешивание и туман: после





Fog — туман, Probe Reflection — отражение зондов



Освещение частиц



В нашей сцене есть частицы дыма и освещение рассчитывается для каждого спрайта. Каждый спрайт рендерится так, как будто он находится в пространстве мира: из его положения мы получаем список источников освещения и соответствующие им теневые карты, после чего рассчитывается освещение четырёхугольника (частицы). Затем результат сохраняется в тайл атласа размером 4k; тайлы могут быть различного размера, зависящего от расстояния от частицы до камеры, настроек качества и т.д. Атлас имеет выделенные области для спрайтов одного разрешения, вот как выглядят спрайты 64 x 64:





Атлас освещения частиц



В таком низком разрешении хранится только информация об освещении. Позже, когда частица на самом деле отрисовывается, используется текстура в полном разрешении, а масштаб четырёхугольника освещения увеличивается и он смешивается с текстурой.



Здесь DOOM отделяет вычисление освещения частиц от основного рендеринга игры: при каком бы разрешении вы ни играли (720p, 1080p, 4k…), освещение частиц всегда вычисляется и хранится в таких небольших тайлах фиксированного размера.



Уменьшение масштаба и размытие



Сцена несколько раз уменьшается в размерах до 40 пикселей. Самые маленькие уровни масштабирования размываются с помощью отдельных вертикальных и горизонтальных проходов (создаётся «цепочка размытия»).







Зачем же так рано выполнять размытие? Этот процесс обычно происходит в конце, во время постпроцессинга для создания эффекта bloom в ярких областях.



Но все эти различные уровни размытия пригодятся нам в следующем проходе для рендеринга преломлений в стёклах.



Прозрачные объекты



Все прозрачные объекты (стёкла, частицы) рендерятся поверх сцены:





Прозрачные объекты: до





Прозрачные объекты: после



Стёкла очень красиво рендерятся в DOOM, особенно стёкла, покрытые изморозью или грязью: декали влияют только на часть стекла, чтобы сделать преломления более или менее размытыми.

Пиксельный шейдер вычисляет коэффициент «размытости» преломления и выбирает из комплекта «цепочки размытия» две карты, наиболее близкие к коэффициенту размытости. Он считывает эти две карты и линейно интерполирует два значения, чтобы аппроксимировать конечный цвет размытия преломления. Благодаря этому процессу стёкла могут создавать попиксельно красивые преломления на различных уровнях размытия.



Карта искажений





Карта искажений



Очень горячие области могут создавать на изображении тепловые деформации. В нашей сцене немного искажает изображение гнездо крови.



Искажения рендерятся относительно буфера глубин для создания карты искажений низкого разрешения.



Красный и зелёный каналы представляют собой значение искажений по горизонтальной и вертикальной осям. Синий канал содержит количество применяемого размытия.



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



В этой сцене искажения совсем небольшие и практически незаметны.



Пользовательский интерфейс







UI рендерится в другой буфер рендеринга в режиме умноженного слева альфа-канала, хранящегося в формате LDR.



Преимущество хранения всего UI в отдельном буфере вместо отрисовки непосредственно поверх завершённого кадра в том, что игра может применить фильтрацию/постпроцессинг, например, хроматическую аберрацию или оптическое искажение для всех виджетов UI за один проход.



Рендеринг не использует каких-то техник батчинга и просто отрисовывает один за одним элементы интерфейса, примерно за 120 вызовов отрисовки.



В последующих проходах буфер UI смешивается поверх картинки игры, создавая окончательный результат.



Временной анти-алиасинг (TAA) и motion blur



TAA и motion blur применяются с использованием карты скоростей и результатов рендеринга предыдущего кадра.



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





TAA и motion blur: до





TAA и motion blur: после



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



Яркость сцены



На этом этапе вычисляется средняя яркость сцены, это один из параметров, позже передаваемых для тональной компрессии.



Буфер HDR-освещения циклично уменьшается в два раза от своего разрешения, пока не становится текстурой 2 x 2, при каждой итерации рассчитывается значение цвета пикселя как среднее от яркости четырёх его «родительских» пикселей из карты большего размера.



Bloom





Bloom



Применяется фильтр яркости для приглушения самых тёмных областей изображения. Результат использования фильтра яркости затем циклично уменьшается и размывается способом, похожим на описанный выше.



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



Затем размытые слои соединяются для создания эффекта bloom, который является HDR-текстурой в четыре раза меньше исходного разрешения.



Окончательный постпроцессинг



Весь этот этап выполняется в одном пиксельном шейдере:




  • применяется тепловая деформация с использованием данных карты искажений

  • текстура bloom добавляется поверх буфера HDR-освещения

  • применяются такие эффекты, как виньетирование, грязь/блики

  • вычисляется средняя яркость при помощи сэмплирования карты яркости 2x2, а также дополнительных параметров выдержки, применяются тональная компрессия и грейдинг.





Тональная компрессия: до





Тональная компрессия: после



Тональная компрессия берёт буфер HDR-освещения, содержащий цвета, изменяющиеся в широком диапазоне яркости, и преобразует его в цвет с 8 битами на компонент (LDR), чтобы кадр можно было отобразить на мониторе.



Оператор кинематографической тональной компрессии основан на уравнении
(x(Ax+BC)+DE) / (x(Ax+B)+DF) - (E/F)
, это тональная компрессия Uncharted 2, также применённая в GTA V.



Также надо заметить, что общий красный оттенок сцены получается цветокоррекцией.



UI и зернистость плёнки



И наконец UI располагается поверх кадра игры; в то же время добавляется небольшой эффект зернистости плёнки.





UI и зернистость: до





UI и зернистость: после



И мы завершили обработку кадра, он готов к передаче на монитор для отображения; выполнено множество вычислений, но всё это произошло меньше чем за 16 миллисекунд.



DOOM удаётся создать высококачественную картинку при высокой скорости игры, потому что он с умом использует старые данные, рассчитанные в предыдущих кадрах. Всего у нас получились 1331 вызов отрисовки, 132 текстуры и 50 буферов рендеринга.



Бонусная информация



Подробнее о стёклах



Результат рендеринга стекла очень хорош; при этом он достигнут довольно простыми способами, которые мы рассматривали выше:




  • подготовка нескольких уровней размытия рендеринга непрозрачных сеток

  • отрисовка просвечивающих элементов в порядке «сзади вперёд» в прямом режиме с применением декалей/освещения/отражения зондов с помощью предыдущей цепочки для различных значений размытия преломления стекла; при этом каждый пиксель может получить собственное значение преломления.





Стекло: до





Стекло: после



Глубина резкости



На изученном нами кадре не видно глубины резкости, так что давайте рассмотрим следующую сцену до и после её применения:





Глубина резкости: до





Глубина резкости: после



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




  • гауссово размытие хорошо для эффекта bloom, оно неправильно создаёт боке: вам потребуется плоский центр, чтобы свет яркого пикселя распространился по всему диску или шестиграннику. Гауссово размытие не способно создавать красивые формы боке.

  • применение глубины резкости за один этап пиксельного шейдера может легко привести к артефактам на границах.



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




  • Изображение с малой глубиной может быть сильно размыто, чем больше оно «растекается» на пиксели за ним, тем лучше.

  • Изображение с большой глубиной также размыто, но оно не считывает пиксели из области в фокусе/малой глубине резкости, поэтому избегает проблем с объектами на переднем плане, ошибочно «растекающихся» на фон.



Для создания размытия боке DOOM работает на половинном разрешении и выполняет круговое размытие с 64 наложениями текстур, каждый фрагмент имеет одинаковый вес, так что яркость действительно распространяется вокруг, в отличие от гауссова размытия.

Диаметр круга может изменяться попиксельно, в зависимости от значения пятна рассеяния пикселя.



Затем боке распространяется дальше с размытием из 16 наложений, но на этот раз средневзвешенное значение не вычисляется, а просто накапливаются значения сэмплов и сохраняется самое большое значение соседних наложений; это не только расширяет первое размытие, но и устраняет небольшие артефакты (пропуски в сэмплировании) первого прохода. Последняя часть алгоритма взята из работы Макинтоша (McIntosh).



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





Большая глубина резкости





Большая глубина резкости и размытие 1





Большая глубина резкости и размытия 1 и 2



Наконец изображения с большой и малой глубиной резкости накладывается на исходную сцену со смешиванием альфа-каналов для создания окончательного эффекта глубины резкости. Этот проход выполняется прямо перед применением motion blur.



Дополнительные источники



Если вы хотите глубже погрузиться в технологию idTech 6, то к счастью на эту тему есть множество лекций и публикаций:




Original source: habrahabr.ru.

https://habrahabr.ru/post/309844/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Перевод - recovery mode ] Библия движений Doom. Часть 1

Четверг, 28 Июля 2016 г. 22:47 (ссылка)

Здравствуйте и добро пожаловать в Библию движений Doom! В статье разобраны и рассортированы по категориям все причуды и капризы кода движений в Doom, включая замысловатые трюки с описанием их работы.







Метрика



Начнем с основ. Код движка для движений игрока в Doom имеет следующий вид:


  • Сбор исходных данных игрока

  • Применение векторов движущей силы к игроку на основе исходных данных

  • Сжатие скорости игрока, если она слишком велика

  • Проверка, расчеты и перемещения

  • Использование ускорения через трение для следующего движения игрока



Рассмотрим все поподробней.

Благодаря только этому и паре переменных мы сможем определить возможные максимальные скорости персонажа игрока.



По вполне понятным причинам максимальная скорость игрока достигается тогда, когда ускорение, заданное игроком, равно и противоположно замедлению от трения.



За каждый тик игрок получает толчок равный 0.03125 единиц в расчете от величины введенной команды. Поскольку команды (обычно) ограничиваются максимумом в 50. Это дает нам максимальное ускорение трения в 1.5625 единиц/тик^2.



После расчета движения за тик, игрок замедляется с помощью коэффициента трения. Конкретное значение составляет 0.90625 — другими словами, каждое движение игрока замедляется на 90.625% от его текущей скорости.



Для равнозначности ускорения и замедления каждого тика, со скоростью 50, нам нужно найти «х» при (1 — 0.90625)x = 1.5625. Это выводит нас к теоретическому пику прогрессивной скорости движения в 16.666 единиц за тик. (Обратите внимание, что фактическая эмпирическая максимальная скорость, по определенным причинам, составляет чуть меньше данного значения. Но все же она достаточно близка к указанному показателю).



Также обратите внимание, что игрок имеет неизменную максимальную скорость, заданную кодом. Еще до того как проводить фактическое исчисление движения игрока, в начале кода игра проверяет не превышают ли X- и Y-координаты показатель скорости в 30 единиц/движение^2 (или менее чем -30). Если превышают, то игра сокращает скорость до 30 (или до -30 соответственно). Мы не будем зацикливаться на лимите скорости, но следует обратить внимание, что это происходит только перед началом кода движения и не препятствует достижению скорости свыше 30 внутри самого кода движения.







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



Strafe running



Еще одна причуда движка Doom (как в сущности и множества других игровых движков) заключается в том, что X- и Y-координаты хранятся и вычисляются отдельно. Это приводит к одному небольшому, но забавному эффекту. Когда игрок одновременно движется вперед и в сторону, в расчет применяются оба вектора движения и направление общего движения получает большую величину, чем в векторах по отдельности.



В нормальном геймплее Doom стрейф имеет максимальную движущую силу в 50 единиц, а при боковом движении — 40. Таким образом при стрейфе показатель движущей силы за тик достигает 1.25 единицы, а максимальная скорость — 13.333 единиц/движений. Если рассмотреть векторы бокового и прямого движения как стороны прямоугольного треугольника, Вы обнаружите, что максимальная теоретическая скорость при стрейфе равна 21.34 единицам за движение. А это на 28% выше обычной скорости, что уже весьма не плохо.



«SR50» strafe running



Но существует способ двигаться еще быстрее. Согласно некоторым особенностям кода, есть возможность зажать одновременно сразу несколько клавиш таким образом, чтобы получить движущую силу при стрейфе в 50 единиц, вместо 40. Таким образом у Вас появляется возможность разогнаться до максимальной скорости в 23.57 единиц/движение (то есть на 41% выше обычной скорости при нормальном беге и на 10% — при стрейф беге).



Такое разнообразие стрейф бега по довольно загадочным причинам обычно связывают с аббревиатурой «SR50». Профессионалы по скоростному прохождению игр создали различные инструменты, применяющиеся для анализа демо-версий. И с помощью некоторых инструментов можно разобрать каждый тик. Собственно, одна из команд-создателей называлась «SR» — стрейф вправо (strafe right), за которым следовал аргумент команды. Поскольку эта техника позволяла достигать стрейф бега с показателем в 50 вместо 40, инструменты показывали команды «SR50» вместо «SR40». Именно «SR50» и стала широко использоваться как синекдоха для данной техники.



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



23.57 единиц/движение * 35 движений/секунду = 825 единиц/секунду

825 единиц/секунду/16 единиц/фут (общий коэффициент пересчета) = 51.5 футов/секунду

51.5 футов/секунду = 35 миль в час (около 56 км/час).



Skip glide









трюк на 0:02



Теперь давайте перейдем к конкретным приемам. Первый из них считается самым сложным для исполнения на практике. Но в то же время, его проще всего объяснить с позиции движка. Я называю этот трюк «skip glide» (прыжок со скольжением) хотя иногда его еще называют «bar glide», что может создать путаницу, поскольку существует другой трюк с таким же названием.



Чтобы понять этот трюк, сначала нужно разобрать основной способ, с помощью которого Doom пытается обрабатывать движения. В каждом тике DoomGuy имеет определенную x- и y-координаты импульса (направление инерции). Впрочем я не буду называть это «импульсом», так как подобный термин предполагает определенные свойства, которых Doom не имеет (Вы можете двигаться за приделы возможностей “импульса”, или наоборот, у Вас может быть «импульс» даже если движения не происходит вовсе). Вместо этого я буду говорить об «импульсе» с точки зрения потенциально новой позиции, в которую игрок хочет перейти и ссылаться на него как на «Состояние Попытки Телепортации» (Teleport Attempt Position) или СПТ. (С этого момента встречая в тексте сокращение «СПТ», Вы можете мысленно заменять его на «импульс». Но я надеюсь, использование другого термина поможет Вам запомнить, что на самом деле это — не «реальный» импульс, а некий причудливый псевдо-аналог, имеющий другие свойства.)



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



Данная особенность помогает понять как именно работает «skip glide». Рассмотрим канонический пример из Doom 2 при прохождении Map 21. Игрок занимает вполне естественную позицию прямо перед диагональным заслоном, который закрывает щель. На следующем тике движок проводит тест, чтобы определить можно ли телепортировать игрока на позицию сразу *за* диагональным заслоном. При тщательном выборе направления можно обозначить позицию, которая не будет противоречить условиям «телепорта» и движок перенесет игрока на желаемую точку без каких-либо проблем.



Squeeze Glide









трюк на 0:25



Также в арсенале имеется другой, еще более распространенный трюк, который связан с приемом «bar glide», потому что он тоже основан на движение между заслонами, расположенными на расстоянии в 32 единицы. Для меня же термин «squeeze glide» (скольжение с «протискиванием») кажется более адекватным для запоминания и менее запутывающим.



Для squeeze glide игрок должен идеально выравниваться с зазором, одинакового с персонажем размера (в 32 единицы). Затем, после ряда безуспешных попыток, длящихся, как кажется, целую вечность, ему наконец-то удается втиснуться в этот зазор!



image



В теории “squeeze glide” должен быть вполне простым и понятным: игрок имеет ширину в 32 единицы (вдоль осей). И значит если Вы находите пространство, четко выровненное по осям и с шириной 32 единицы, то должны быть в состоянии пройти через него. Но с движком Doom редко бывает все так просто.



Основная проблема состоит в том, что движение в движке Doom квантовано и сверх того, оно квантовано не полностью. Я не буду вдаваться в подробности и рассказывать как был вычислен вектор движения игрока. Но если вкратце, вектор использует синусы и косинусы для объединения направления игрока с векторами движения, чтобы сравниться с завершающими X- и Y-векторами движущей силы. Например, когда игрок зажимает клавишу вперед и направляется на север, X-координата вектора движения должна составлять значение, умноженное на косинус 90, что необходимо для обнуления. К сожалению, Doom не силен в сохранении углов и косинусов, он использует расчетные таблицы значений и, как оказалось, таблица синуса/косинуса фактически не включает 0 как значение (наиболее близкое ±0.0002).



Таким образом, даже при максимальном приближении к северу появляется величина, которая все равно еще слишком мала для приставного шага на восток или запад.



Итак, зная о том, как для игроков работает СПТ, Вы можете увидеть, что происходит:


  • Игрок пытается переместиться в пространстве непосредственно между преградами

  • Движок использует СПТ, имеющую некоторый квантованый коэффициент удлинения, и определяет возможность перемещения в ту или иную позицию

  • Поскольку зазор имеет ту же ширину, что и игрок, последний должен ТОЧНО соответствовать проходимому пространству (неточные значения угла делают задачу реально сложной). Это означает, что для удачного прохождения Вам необходимо с идеальной точностью в 0.0002 единицы находиться западнее места между преградами



Понимание того, как заставить слаженно работать squeeze glide — это не наука, а настоящее искусство. Спидраннеры час за часом изучают тонкости перемещения, чтобы выполнять его за разумное количество времени



Line skipping (south / west)









трюк на 19:06



Понимание того, как движок использует СПТ игроков для тестирования новой позиции, лишь немного приблизит нас к пониманию line skip (пропуска границы). Может показаться, что игрок делает невозможное, когда выполняет line skip: бежит непосредственно через линию границы без ее фактической активации.



Чтобы понять, как это работает, Вам нужно посмотреть на порядок событий в движке:


  • Он использует СПТ игрока, чтобы протестировать его на потенциально новой позиции

  • В качестве части процесса, движок составляет список любого наложения отрезка потенциально новой позиции

  • Если это возможно, перемещает их на рассматриваемую позицию


  • Проводит соединительную линию между центрами старой и новой позиции игрока, после чего проверяет каждую границу в уже скомпилированном списке, чтобы увидеть пересекает ли линия соединения какую-то из них

  • Если пересекает, осуществляет проверку этих линий на специальные действия с дальнейшей их активацией



Таким образом, как Вы видите, существует две возможности пересечения специальной линии границы: 1) прикосновение к линии границы в точке обновленной позиции, и 2) граница пересекается линией, соединяющей старую и обновленную позиции.



Итак, задан алгоритм. Как Вы можете обойти его? Ну, вот как-то так.



Тик 1: СПТ игроков стремится передвинуть их на точку, где их центр практически, но все же не совсем, пересекает границу

Тик 1: движок определяет, что эта новая точка касается границы и добавляет ее в список

Тик 1: после успешного перемещения, движок набрасывает линию пересечения, но она не пересекает границу, так что это неважно

Тик 2: СПТ игроков перемещает их достаточно далеко, благодаря чему они передвигаются всецело *за* линию границы и больше ее не касаются

Тик 2: специальная линия границы не находится даже в новом составленном списке пересекаемых границ, в результате чего она не может быть активирована.



Итак Вы видите, что пока перемещаетесь быстрее, чем половина ширины игрока за тик (имея хорошее расположение и толику удачи), нет ничего невероятного в том, чтобы проскочить линию границы без активации ее специальных действий. Тем ни менее, помните, что ограничивающая коробка игрока всегда выравнивается с привязкой к осям координат. Иными словами этот прием проще выполнить вдоль осей, где “радиус” игрока составляет 16 единиц. Однако, даже по диагонали в 45 градусов, где “радиус” игрока составляет 22.6 единиц, стрейф бег SR50 с его 23+ единицами за движение все еще выполним.



Хочу обратить Ваше внимание на то, что описанное выше касается только движения на “юг/запад”. По причинам, которые мы еще не обсудили, данный прием НЕ БУДЕТ РАБОТАТЬ, при движении на север или восток.



Item bumping









трюк на 0:16



Вот еще одна несуразность, происходящая из-за странной и причудливой проверки Doom потенциально новой позиции игрока. Алгоритм выстраивается следующим образом:


  • Используется СПТ игрока для определения потенциально новой позиции

  • Проверяется, нет ли каких-либо препятствий в зоне посадки для того, чтобы занять эту точку

  • Одновременно с этим проводится проверка на наличие каких-либо других вещей, перекрывающих зону посадки


  • И также, если до какой-то из этих вещей можно дотянутся, то игрок их подбирает



Вы видите проблему? Игрок возьмет вещи, касающиеся потенциальной зоны посадки СПТ, даже если перемещение в конечном счете не происходит. Это означает, что если Вы несетесь на полной скорости в непроходимую границу c объектом, расположенным непосредственно по другую сторону от нее, движок (в момент столкновения с границей) предпримет попытку переместить игрока (СПТ) по другую сторону стены. Это даст возможность подобрать любые вещи, которые попадутся на месте потенциальной посадки.



image



Monsters opening doors









трюк на 0:09



Несмотря на то, что данный параграф не касается непосредственного перемещения игрока, он все-таки примечателен и во многом руководствуется теми же принципами. По большей части движок рассматривает передвижение монстра идентично перемещению игрока. Иначе говоря — отслеживает СПТ монстра, а затем использует этот СПТ, чтобы протестировать потенциальную зону посадки для дальнейшего передвижения монстра.



В данном случае прием срабатывает, если дверь была создана способом, где одна сторона, к примеру, закрыта ключом, а другая сторона является «нормальной» дверью. В то время, как быстрый монстр (вроде archvile) проходит возле двери, его огромное СПТ указывает на попытки движка разместить этого монстра на значительном расстоянии с незакрытой стороны двери. И таким образом монстр в состоянии ее открыть.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/306556/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
_DOOMer_

Без заголовка

Понедельник, 11 Июля 2016 г. 20:10 (ссылка)

Лет восемь назад пытался освоить трёхмерное моделирование. В том самом "великом и ужасном" ТриДэЭсМаксе. Идея провалилась с треском - после нескольких "тестовых" сцен, выполненных по каким-то урокам, найденным в тырнете, я забросил макс. Отчасти и от того, что он местами подтормаживал, как во вьюпортах (при далеко не гигантском количестве полигонов), так и в интерфейсном плане.

Были попытки освоить моделинг в Maya и Blender, которые так же не увенчались какими-либо положительными результатами. Ибо по "майке" тогда туториалов на русском было чуть меньше, чем нифига, а у блендера был пользовательский интерфейс "для инопланетян".

Несколько дней назад решил попробовать снова Blender, который вроде избавился от "инопланетянского" юзер-интерфейса. Да и в сети обучающих материалов (разного качества) за последние годы прибавилось.

Посмотрев несколько видеотуториалов на ТыТрубе, немного въехал в принципы полигонального моделирования. А хатем резко переключился на скульптинг, решив для начала сваять модель какодемона, ибо "какос" имеет весьма простую анатомию по сравнению с прочими думовскими монстрами.

Как смоделировать какодемона =)

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

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

Метки:   Комментарии (3)КомментироватьВ цитатник или сообщество
rss_rss_boingboing

Jerry Seinfeld's apartment in Doom

Вторник, 21 Июня 2016 г. 20:02 (ссылка)

doomseinfeld




"After over 100 hours of work, I present to you Seinfeld.wad," writes Doug Keener. "A replica of Jerry Seinfeld's Apartment from his hit sitcom, Seinfeld!"


Join Jerry, George, Kramer, and Elaine in this neat Doom/Seinfeld crossover! There are many custom textures and sprites to bring you the full experience of being inside Jerry's Apartment, inside Doom 2! Each sprite has audio clips and death animations! Have fun slaughtering the gang relentlessly in this wad about nothing! ...

Special Thanks to GIMP 2.0, GZDoomBuilder, Slade3, applekwisp, Seinfeld cast and crew, and the lovely people over at ZDoom forums and wiki.

http://feeds.boingboing.net/~r/boingboing/iBag/~3/42yZ1d2Y1uE/jerry-seinfelds-apartment-in.html

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
ebed

Футболка mf doom

Среда, 10 Июня 2015 г. 20:21 (ссылка)

Футболка mf doom.


Читать далее
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Max_Milian

41

Четверг, 10 Июня 2016 г. 02:28 (ссылка)


1487603_dsVjc4 (400x225, 4662Kb)



...такое количество просмотренных фильмов в мае 2016 года...

В этом месяце на моем счету прохождение игр Burokku Girls (очередная визуалка), Divinity II: Developer's Cut (недурственное фэнтези, после него я принялся за его приквел, но пока еще не закончил), Doom (главная игра мая, мощная, бодрая и весёлая))) и Fallout 4 (прошел оба вышедшие дополнения, последнее из которых довольно атмосферное). Кроме того, я прочитал акунинский "Квест" (ввиду моей заинтересованностью играми прочитано на ура)) и великолепную сказку Нила Геймана "Но молоко к счастью..." (жаль, мало, а так очаровательная история с прекрасными иллюстрациями).

За месяц я посмотрел 4 отечественных, 16 мультфильмов, 11 короткометражек (их, в основном, можно посмотреть в разделе видео) и 1 сериал (разумеется, шестой сезон "Игры престолов"))). Кроме того, я посмотрел тетралогию "Наблюдателей" (они же "Ангелы-хранители"), основанных на произведении Дина Кунца, но она на любителя).



Рекомендации к просмотру: "Да здравствует Цезарь!" (новое кино братьев Коэн), "Дэдпул" (Райан Рейнольдс зажигает))), "СуперБобровы" (приличная пародия на всяких супергероев), "Аркадия моей юности" (полнометражное аниме про капитана Харлока), "Боги Египта" (новое кино Алекса Пройаса), "Ковбой Бибоп" (еще одно хорошее японское аниме), "Коробка" (злободневное молодежное кино на темы "понаехали" и "гооол"), "Праздник" (Кэри Грант и Кэтрин Хепберн снова вместе), "Пятница" (правильное кино про новые реалии, Бурунов прекрасен), "Хороший динозавр" (хороший доисторический мульт от Диснея), "Волки и овцы: б-е-е-езумное превращение" (неожиданно хороший отечественный мульт).



Особое упоминание: DOOM!!!))).



Вот такой у меня выдался последний весенний месяц года. За полным списком фильмов обращаться сюда.



1487603_tumblr_o12fw9zZnw1v51j7oo2_540 (540x237, 2040Kb)

Комментарии (0)КомментироватьВ цитатник или сообщество
quitbet

Doom на футболку

Суббота, 06 Июня 2015 г. 08:39 (ссылка)

Doom на футболку.


Читать далее
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
_DOOMer_

DOOM 4.0

Четверг, 02 Июня 2016 г. 07:06 (ссылка)

Сюжет в игре — как сюжет в порнофильме.
Он должен быть, но совершенно не важен.

Джон Кармак, gthdfz gjkjdbyf 90-х годов XX века


Итак, сие "чудо игростроя буржуинского" наконец было зарелхено в ночь с 12 на 13 мая 2016 года. Первые часы игры заставили как возрадоваться, так и огорчиться.

Радость была от того что моё железо пятилетней выдержки ещё что-то может в плане современных щутеров не в 320х240 на самых низких настройках графики. Да, в FullHD ходить по каратам можно почти без проблем. И даже стрелять по монстрам. И самое интересное - попадать в эти куски мяса, гордо именующие себя демонами из Ада. Слайд-щоу а-ля Doom 3 образца 2002 года не было. Все было плавно, но темп игры был при этом весьма черепаший - немногим быстрой режима "bullet time" из Max Payne. Снизив разрешение до 1600х1050, удалось получить более динамичный геймплей.

Как и в первую половину 90-х игра не заставляет нас совершать длительные поездки на монорельсовых поездах, машинах или совершать длинные пешие прогулки по закоулкам марсианских баз или земных городов. Гланый герой просто открывает глаза и практически сразу же сворачивает бошку подвернувшемуся под руку зомбаку. Первую бошку из многих сотен, которые ему предстоит ещё отстрелить или раздолбить на протяжении 13 уровней.

Да, всего навсего 13 карт в новом Думе, в два с лишним раза меньше, чем в Думах классических. Но при этом уровни хоть и линейны в прохождении (сюжетных развилок нет от слова совсем), но по своей структуре весьма объёмны и насыщены не только монстрами, но и разного рода секретами и пасхалками (в виде кусков из классических карт). И секреты эти запрятаны не хуже, чем в первых частях серии. И их конечно можно совсем не искать, просто забить всех монстров, собрать оружие, броню и прочее барахло, валяющееся "на поверхности" - и ни разу не открыв автокарту (спустя двадцать лет этот элемент вернулся в игру от id Software) пройти на выход.

А можно и попрыгать по ящикам, балкам и прочим конструкциям, в поисках этих самых секретов. И получить не только моральное удовлетворение о того что "you found a secret area" (увы, именно таким сообщением игра нас не радует), но и "жирную пушку", дополнительную броню либо дополнительные очки прокачки арсенала пушек и самого главного героя.


Та самая автокарта


Да-да, здесь имеется такая вещь как прокачка. Доблестный "Солдат Рока" таскает на себе некий скафандр, именуемый "бронекостюмом", который можно улучшать и дополнять -повышая в итоге количество максимальных возможных значений для здоровья, брони (привет Hexen).и боезапаса. Оружие, кстати, также имеет возможность модернизации - путём некоторого накопления "баллов прокачки"можно научить дробовик стреллять короткими очередями и(или) прикрутить к нему нечто, типа подствольного гранатомёта.

Ресурсы на прокачку !железной оболочки" необходимо собирать, залезая в те самые секреты, а для модификации пушек на каждой карте предусмотрен специальный дрон, который и осуществляет "перепрошивку" выбранного оружия на то или иное улучшение. В целом апгрейды жить не мешают, и теоретических их можно вобще не использовать на протяжении всей игры.


Апгрейд "скафандра".


Также периодически на пути игрока ему попадаются классические power-up'ы, повышающие тот или иной параметр на некоторое непродолжительное время. В принципе ничего особенного - все это уже было в классическом Думе и Квейках - да, Quad Damage таки теперь и в DOOM имеется.. А старый добрый берсерк работает практически также - солдат отрываетбошки монстрам голыми руками, без расхода боеприпасов на обездвиживание.

Что касается самого оружия, то оно весьма неплохое - классический набор "шотган + супершотган + + пулемёт+ ракетница + плазмаган + BFG"присутствует. И в принципе неплохо справляется с возложенными на него функциями.Хотя из BFG теперь можно сделать максимум 3 выстрела, но работает она по принципу, схожему с оригинальным образцом 1993 года выпуска. А вот плазмаган лично мне показался каким-то игрушечным - такое себе ружьё для пэйнтбола, стреляющее синими шариками. Его аналог в Думе третьем выглядел и звучал куда как сочней. Кроме стандартного набора из прошлых игр серии был добавлен "рэйлган", именумый здесь "Гаусс-пушкой" - в принципе ничего особенного, "рельса" она и в DOOM (2016) "рельса".



Анимации подбора новых пушеквыглядят внушительно


Ах да, про бензопилу чуть не забыл. Она здессь есть. Найти можно уже на втором уровне, почти не шарясь по секретам. Выглядит и жужжит приятственно (мерзкий звук из весенней альфы пофиксили). Но пройти всю игру кроша монстров только лишь бензопилой- увы, теперь нельзя. Ибо сей замечательный девайс отныне не имеет "киллер фичи",именуемой бесконечными патронами. Отныне бензопила жрёт топливо, канистры с которым придёётся собирать по ходу исследования уровней. И на разных монстров требуется конечно же разное количесто горючки - зато убиваем всех практически в один момент. А потом подбираем из кровавых останков некоторое количество боеприпасов для дробовиков и прочих миниганов с рокет-лаунчерами. Так что - пилите, Шура, пилите - пока есть бензин в канистре за спиной =)



Бензопильщик на марше =)


Патроны и прочее барахло типа аптечек выпадает с монстров не только после распиливания чертей на атомы, но и после применения "фаталити" - зрелищных добиваний оглушенных монстров. Да, это та самая распиаренная фишка,нагло спёртая позаимствованная из Brutal Doom. То чего все боялись, не случилось - добивания являются вещью опциональной,и применяет их или нет, решает сам игрок - путём нажатия клавиши F на клавиатуре для выполнения сего действия, именуемого "зверским убийством". А подсветку монстрок, к которым можно применить фаталити, можно отключить в настройках игры.

Да, кстати, о настройках - они в новом Думе довольно богаты, несмотря на изначльную консолеориентированность многоплатформенность игры. Основные свисто-перделки рендера можно таки отключить, не прибегая к шаманству с консолью.Которая кстати, не заблокированая по умолчанию и вызывается привычным нажатием на "тильду" (~). Сие приятно удивило, даже в Doom 3 консоль приходилось активировать вручную, прописывая парметр com_allowConsole "1" в конфигурационном файле.

Возвращаясь к впечатлениям игрового процесса, могу сказать что монстры не разочаровали. Местный зверинец содержит практически всех классических представителей DOOM-фауны, за исключением пулемётчиков и арахнотронов (кибернетических пауков). Выглядят более канонично, нежели представители бестиария из третьей части игры - особенно порадовали в этом плане импы, пинки и какодемоны. Последние снова являют собой нечто красно-сине-шароподобное, плюющееся плазмой в игрока из широко улыбающейся пасти, в отлии от Дум 3, где "каки" были скучной бесцветной непонятностью.


Какодемон


Пинки стал более каноничным, по сравнеию с D3


Манкубус почти также няшен, как и в DOOM II.


А выпадающие из убиенных врагов патроны и аптечки можно и перетерпеть. Тем более что иногда эти самые аптечки и патроны могут реально спасти ситуцию в бою. Ибо зажать могут запросто, особенно на высших уровнях сложности. Так что этот недостаток можно как-нить пережить. Как и то, что игра периодически "запирает" думгая наедине с десятком монстров в одной комнате. И не важно что оная "комната" может быть вполне приличных размеров и содержать в себе некоторое количество рхного рода лестниц, балок и прочих мостовых перекрытий разной степени разрушения - некоторые монстры прыгать по ящикам и прочим металлоконструкциям умеют не хуже игрока. Да, аренность некоторых кусков карт раздражает - ноне более, чем в Serious Saam или PainKiller, где это было возведено почти в абсолют.

Отсутствие сюжета после третьедумовских кат-сцен на движке поначалу кажется просто непривычным. А потом о этом как-то быстро забываешь, сосредоточившись на истреблении монстров и поисках секретов. И это при том что сюжет в игре ЕСТЬ - ибо фраза Кармака, вынесенная в эпиграф, уже не актуальная в реалиях современной игровой индустрии. Но это с одной стороны. А с другой -новый DOOM позиционируется как "возвращение к истокам". А в этих самых истоках, сюжет был спрятан в дебрях файла readme.txt (многие ли его читали в свое время?) инемного раскрывался несколькими строками текста в межэпиздовых текстовых вставках.

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

Здесь эксперимент с адом, телепортацией и монстрами также в наличии (а иначе это будет не Дум совсем). Даже главный злодей имеется - некая Оливия Пирс, "скелетина", не имеющая и десятой доли харизмы доктора Бертругера из третьего Дума. И ещё парочка персонажей, которые иногда надоедают главгерою своей ботовнёе - некий робот, представивщийся директором марсианского комплекса UAC, и местный Скайнет искусственный интеллект базы, иногда управляющий дверями и прочими подобнымиещами, а также "анализирующий" действия игрока. Все. Больше никого. Кроме монстров, и трупов бывших сотрудников комплекса.


Местный аналог д-ра Малькольма Бертругера


Эти самые трупы иногда являются частью игрового процесса, храня на себе ключи к тем или иным запертым дверям (ключи как ни странно имеют строгую цветовую дифференцацию, как в классике=))). Или же сами выступаяв роли ключей - как в трейлере с Е3 2015, где демонстрировалось открывание двери путём прикладывания оторванной у мёртвого человека конечности, к биометрическому сенсору оной двери.

Анимации взаимодействия с трупами и прочими терминалами сделаны хорошо. А вот сами терминалы выглядят как-то скучно, и не всегда оганично вписаны в интерьеры. Плюс к этому у нас нет интерактивных экранов а-ля Doom 3 - кодовые замки и разные надписи на экранах ушли из игр id вслед за Кармаком. Интерактивность игрового мира по сравнению с Rage чуть увеличилась, но традиционно для id-игр весьма минимальна.


Интерфейс дрона, модифицирующего оружие - едва ли не верх интерактивности в игре.


Сами интерьеры теперь стали менее тесными и более светлыми - если сравнивать опять же с Doom 3. И в то же время бродя по локациям не покидает ощущения абсолютной бездушности этих лабиринтов. Подсознание упорно отказывается верить в то, что в этих странных коридорах могли жить и работать люди. Коридоры абстрактны и скучны. Особенно раздражают однотипные широкие маршевые лестницы, натыканные к месту и не к месту.В аду их конечно нет, но ад лишь малая часть игрового пространства. Которая сделана нетакуж и плохо, есть даже локации с классическими адскими обваливаниями пола и ловушками в видеколонн-прессов. Ад здесь вполне концептуален, и его уровни не создают впечталения того, что отдельные куски карты делались 3-4 разными дизайнерами, а собирал воедино из ещё один человек (привед адскому кровню из Дума номер Три).





Ещё один раздражитель для меня, это немалое количество мест, в которых надо заниматься акробатикой в виде прыжков по разного рода платформам и балкам. А они тут бывают вне только статичными но и движущимися. В том числе и над разного рода ямами,падение в которые является фатальным. Акробатику в шутерах я никогда не любил, и в свое время дико материл Valve Software за Xen-уровни в первой Half-Life и за некоторые другие (типа ж-д моста) во второй.

И это может быть так сильно не бросилось в глаза, если бы не главная антифича DOOM 2016 - отсутствие сохранений в игре. Точнее они конечно в игре есть, нопользоваться ими влюбое время нам не дают. Теперьмы сохраняемся не там где пожелаем (перед новой дверью, перед езнакомой ямой или в процессе выполнения упражнения "прыжки по движущимся платформам"), а только там, где этого захотели разработчики.

Чек-пойнты, кибердемон их раздери.

Это нововведение, якобы призванное сделать игровой процесс менее рваным и более динамичным - на мой взгляд все портит. Да, игрок не отвлекается на сохранение во время беготни за монстрами (либо от них). Но быстрые сохранения, выполняемые по нажатию F6 появились почти двадцать лет наза в Unreal (если не раньше). И они не требовали от игрока лазить о дебрям меню, и ввода индентифицирующих меток дл сэйвов - просто нажал клавишу и все, игра сохранила текущее состояние в следующем игровом кадре. поочему не ставили даже такой вариант - не очень ясно. Кому сэйвы на каждом шагу в любой момент игры не нужны - пользоваться все равно не стали бы.


Вниз лучше не прыгать - полуразрушенный мост на одном из уровней


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

Именно отсутствие классической модели сохранений и стало самым большим разочарованием от нового DOOM. Не почти незаметный сюжет, не унылые локации, наполненные асбтрактным мусором, ни падающие с монстров аптечки - игратть не мешают. А вот консольная модель сохранений - очень даже. ТПосле Woflenstein: New order была надежда что здеь чекпойнты будут не единственным способом сохраняться. Увы....

Даже распиаренный SnapMap разочаровал меньше. в случае с этим конструктором карт было изначально понятно что кроме сборки последовательности из заранее подготовленных комнат ничего сделать не получится. idвсегда славилась тем, что выпускала не юзер-френдли средства создания пользовательских карт. Сейчас редактор таки очень даже юзер-френдли - дрыг-энд-дроп заготовленную комнату - и ты уже автор уровня. Дрыг-энд-дроп к ней готовый коридорчик - и уровень уже "как бэ профессиональный". Дрыг-энд-дроп на карту триггер автогенерации монстров и предметов - и уровень уже вполне играбельный.

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

Расстановка монстров и прочего внутриигрового контента происходит в 3D-режиме. В нём же и редактирование свойств объектов и создание связей между ними. Да, сие сделано удобно - замуровать монстра в стену нам просто не дадут. Но в то же время есть ограничение на количество одновременно присутствующих на карте монстров - уровни с сотнями и тысячами импов тут не построить.

А самое унылое в SnapMap то, что он построен на базе мультиплеерной части игры.Со всеми вытекающими - начиная отсутствием возможности таскания более двух пушек одновременно, и заканчивая надписьмю "Starting match" при запуске созданной в нём карты. Выложить на карту более двухволын конечно можно. Но игроку перелж подбором новой пушки придётся выкинуть что-то из имеющегося арсенала.

Сделать что-то свое индивидуальное в этом "редакторе" весьма проблематично. Извращения с генерацией монстров по триггерам, сменой освещения и дополнение комнат "детализацией2 - помогут мало. Типовая базовая геометрия будет все портить. Тем более что кроме локаций в base-стиле нам ничего не дели - ни поверхности Марса (а в одиночной игре по ней приходится бегать немало, уже начиная с первого уровня), ни ада.

Я скорее всего сделаю одну карту в этом редакторе. Точнее уже практически селал, за один вечер пройдя базовые туториалы (вот почему 16 лет назад в комплекте с Q3Radiant не было десятка html-файлов с описанием как сделать базовые вещи?) ираскидав десяток префабов по замысловатой тракетории. Осталось лишь расставить монстров и аптечки -но мне лень.


Те самые уныло-типовые лестницы, встречающиеся почти везде


Может быть через год-другой выпустят большой редактор как это было с Rage. Вот только нужен ли он будет кому-то через год? Для Rage в итоге вроде ничего фанаты так и не сделали. А вот что точно будет через год-два (а может и раньше), так это продолжение в виде DLC. Ибо финал у игры закрытый лишь частично.

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

p.s. Мультиплеер уныл так же, как и в бета-тесте - для этого у меня есть Unreal Tournament 4
Метки:   Комментарии (4)КомментироватьВ цитатник или сообщество
торрио

К выходу нового Doom выпустили забавную рекламу.

Пятница, 27 Мая 2016 г. 16:59 (ссылка)

Но, насколько мне известно, мои дорогие читатели предпочитают "Ведьмака" и геополитическо-экономические симуляторы. )))


Метки:   Комментарии (6)КомментироватьВ цитатник или сообщество
Chizz_TecTeP

Это случайно не _DOOMer_

Пятница, 13 Мая 2016 г. 19:17 (ссылка)


Это случайно не _DOOMer_ ?)



1966518_CYMERA_20160513_191442 (467x700, 272Kb)





[Деревянная скульптура демона Revenant из игры DOOM (16 фото) » Триникси]: Посмотри! http://trinixy.ru/129660-derevyannaya-skulptura-de...nant-iz-igry-doom-16-foto.html


Метки:   Комментарии (2)КомментироватьВ цитатник или сообщество
Лавка_На_Чердаке

Продан. Какодемон из игры "Doom"

Четверг, 14 Апреля 2016 г. 12:14 (ссылка)


Продается елочная игрушка Какодемон из "Doom" вязаный, 8х8 см. Барнаул.
Контакты:
https://vk.com/lavkanacherdake
http://www.liveinternet.ru/users/lavkanacherdake/profile
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<doom - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda