Хитрости разработки
July 3, 2019

Хитрости игровой разработки #5

В этой части хитростей разработки мы будем сравнивать работу резака из Wolfenstein и Alien Isolation.

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

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

Первая часть

Вторая часть

Третья часть

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

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

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

Сегодня мы будем сравнивать резак из Alien Isolation с резаком из Wolfenstein чтобы выяснить, какой из них лучше!

Первым делом попытаемся понять, какой резак точнее работает с формой:

В Alien Isolation вы можете разрезать только выделенные объекты. Выглядит великолепно, но сделать это можно лишь по определенному алгоритму!

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

В Wolfenstein, как и в Alien Isolation, вы можете работать резаком с ограниченным количеством объектов(со специальным металлическими пластинами). Но тут у вас есть больше свободы, т.к. существует возможность вырезать отверстия любой формы и в любом порядке:

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

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

В этих играх используются декали с нагревшимся металлом(poly-stripe) вдоль среза, что смотрится весьма красиво:

Разрез довольно таки широкий:

К слову, маленький огненный эффект анимирован с помощью flipbook текстуры.

В Wolfenstein этот эффект выглядит нормально, но сравнивая его с эффектом из Alien Isolation, я вынужден признать, что в этом случае победа уходит игре про Чужого.

Из основных проблем, на срезах Blazkowicz'а можно заметить резкие границы декалей...это плата за свободу действий:

В Alien Isolation это выполнено довольно просто: как только игрок заканчивает вырезать металлическую плиту, стандартный объект заменяется на новую разрезанную геометрию. На новом объекте лист металла уже вырезан по контуру, так что всё что остается Рипли, это отделить динамический объект от рамы: 

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

Если присмотреться, то можно увидеть как это происходит в самой игре(видео замедлено): 

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

Как и в Alien Isolation, тут вы можете увидеть момент, когда оригинальная модель подменяется на новый автоматически сгенерированный меш:

Но это ещё не всё! Давайте взглянем поближе на светящийся разрез. Если вы используете декаль вокруг разреза, она обычно выглядит следующим образом:

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

Логичным решением было бы разделить её на две части и после падения вырезанного объекта просто удалять внутреннюю часть

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

Я надеюсь вы слышали про soft-particles, ведь так? С их помощью можно избежать резкого перехода от одной геометрии к другой: 

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

Таким образом можно достичь того, чтобы glow эффект появлялся при приближении к нему геометрии и исчезал в момент, когда рядом ничего нет(черная область справа - это пустое пространство): 

Используя эту технику в нашем случае получится следующее:  

Я не уверен что разработчики использовали именно этот способ, но мне кажется что я прав, потому как когда игрок приближается к разрезу, эта декаль становится видимой: 

Скорее всего, информация о геометрии главного героя, в частности информация о его руках, записывается в буфер глубины, и исходя из этой информации декаль думает что-то вроде:" Ой…что-то появилось рядом со мной, будет лучше, если я вновь стану видимой!"

Когда игрок вырезает плоскость, возникает проблема, потому как у объектов в игре изначально нет толщины, так что на месте пробела между передней и задней стенкой металлической панели, следует создать полигоны толщины:

В Alien Isolation эта проблема решается довольно просто, ведь меш тут создан художником заранее. Благодаря этому, грани на срезе выглядят потрясающе: 

Wolfenstein генерирует эти полигоны толщины прямо в процессе игры с помощью магии кода: 

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

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

Оригинал

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

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

P.S

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

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

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