Хитрости разработки
March 13, 2019

Хитрости в разработке игрового арта #1

Тут мы поговорим о создании glow эффектов и о той самой мини-игре про индюка в DOOM, а в конце немного затронем тему создания фейковой симуляции жидкостей в Left for dead 4.

Заметки пишутся от лица Simon Trümpler.

Другие части:

Вторая часть

Третья часть

Четвертая часть

Пятая часть

Приятного чтения!

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Doom 3 – Volumetric Glow


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


Glare(ослепительный свет) - появляется там, где свет чересчур яркий, это не дает увидеть острые границы источника света. Этот эффект пропадает когда нет прямого визуального контакта с его источником.

Haze(дымка) - по сути туман, который становится видимым в результате прохождения через него света. Эффект не пропадает когда мы теряем визуальный контакт с источником.

Lens flare(отблеск от линзы) - этот эффект создает впечатление неидеальности поверхности линзы камеры. Этот фотошоповский эффект очень много где использовался с тех пор, как появился.



Ниже вы можете видеть, как в Doom 3 сделали эту “ауру” для источников света. Эти эффекты исчезают когда мы не имеем прямого визуального контакта с их источником.



Я знаю несколько способов сделать что-то похожее:


  1. Рендерить каждый glow эффект в кадре в большую текстуру, блюрить её и накладывать на текущий кадр. На это уйдет много памяти и художники не будут иметь достаточного контроля над результатом. Glow уменьшается автоматически, если источник света отдаляется или исчезает.
  2. Поместить геометрию с текстурой, которая будет имитировать эффект засвечивания, вокруг источника света(этот эффект будет исчезать, если посмотреть на него под определенным углом). Такой способ поможет сэкономить память и эффект не будет пропадать в момент, когда теряется визуальный контакт с источником света, но художникам придется потратить какое-то количество времени на то, чтобы расставить всю эту геометрию в нужных местах.
  3. Поместить большой спрайт засвета, который будет всегда поворачиваться за камерой. Это лучше всего работает с квадратными источниками света, которые в Doom 3 встречаются довольно часто.


Я создал тестовый объект состоящий из полигона, как сказано в документации к D3, и добавил материал, который вы видели в игре:



Эффект ведет себя немного странно, потому что когда игрок проходит мимо него, эта “аура” начинает явно двигаться. Другой артефакт вы можете увидеть на самой первой картинке(оранжевая лампочка): нижняя лампочка обрезается в месте стыка со стеной. Этого не будет, если использовать второй метод создания эффекта и расставлять всё вручную(потому что тогда геометрия не будет меняться в зависимости от положения камеры).


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

Мы, кстати, также можем посмотреть на сетку:



Разве это не прекрасно? Геометрия складывается и раскладывается с помощью(как мне кажется) vertex color так, что кажется будто бы смотришь на объемный источник света.



Этот эффект прорисовывается только в том случае, если ты находишься перед лампочкой, в противном случае он сразу же исчезает:



Под определенным углом эффект отключается с помощью vertex color(как мне кажется). В любом случае это выглядит классно.



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


Left 4 Dead 2 – Рвота


Недавно я увидел как реализована одна интересная граната в Left 4 Dead 2. Она состоит из стеклянной колбы и рвоты/желчи внутри. Эта колба висит на ремне персонажа и её более детализированная версия появляется, когда мы берем её в руки и видим от первого лица. Меня удивило то, насколько она проработана, там даже присутствует симуляция физики!



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



Даже не смотря на это, я всё равно очень рад, что они реализовали эту дешевую симуляцию жидкости.


Было бы приемлемо даже если бы они пре-анимировали эту “симуляцию” или вообще ничего не сделали. Вы спросите, почему меня это так удивляет?

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

Мой вам респект, Valve!

Если интересно, то вот сетка этой модели:


Doom 3 – HDUI


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

Давайте взглянем на этот монитор:



В старых играх всегда приходилось уменьшать разрешение текстур, чтобы поместиться в ограничения железа. Разрешение надписи “Information” это именно то, что ожидаешь увидеть в играх того времени, но вы только посмотрите на надписи чуть ниже. Их грани острые как лезвие бритвы.

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


НЕТ.

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



Этот язык позволяет анимировать элементы, так что вы можете зафейкать анимацию крутящегося логотипа с помощью растяжения и сжатия…



...набрать текст в реальном времени...



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



Доп инфа на анг: http://www.battleteam.net/tech/fis/index.html

Оригиналы:

Doom 3 – Volumetric Glow

Left 4 Dead 2 – Рвота

Doom 3 – HDUI

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Что вам больше нравится читать? Что-то в таком духе или интервью с именитыми художниками? Или может быть что-то другое? В телеграм канале будет опрос. Свой вариант можно написать в комментарии на teletype или в мою личку телеграма @DenisNik


Чтобы видеть переводы раньше всех - подписывайтесь на телеграм канал - https://t.me/CGTranslate

Все советы, предложения и критику пишите в мою личку телеграма @DenisNik или на почту [email protected]

Перевод был подготовлен в рамках проекта CgTranslate.

Спасибо за внимание и удачи!