АртСтатьи

Азы графической оптимизации на примере Crysis 3

Автор:

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

Введение
Отдельные моменты
Мораль

Введение

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

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

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

Итак, момент №1. Его я впервые заметил только тогда, когда поставил игру на паузу:

cry_opt_0 | Азы графической оптимизации на примере Crysis 3

Четырехугольные перила. 4 полигона на трубу. От одного такого заявления многие геймдизайнеры будут готовы отправить вас на помойку, но в игре ААА-класса перилки вот такие :D

Чтобы скрыть четырехугольность перил, они соединяются восьмиугольными сочленениями.
И таких примеров в игре куча!

+ Показать

После этого я загорелся желанием копать дальше.

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

cry_opt_4 | Азы графической оптимизации на примере Crysis 3

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

Момент №3. Скашивание углов.  Друзья-дизайнеры вечно грезят фасками. Везде хотят сглаживать углы, добавлять дополнительные полигоны, чтобы геометрия не выглядела такой острой. Чтобы было как тут:

cry_opt_5 | Азы графической оптимизации на примере Crysis 3

Сколько там полигонов для сглаживания угла? 3-5-7?

cry_opt_6 | Азы графической оптимизации на примере Crysis 3

На самом деле вся колонна — это тупо параллелепипед. 4 полигона на всё.

Момент №4. Чудесная растительность. Второй уровень встречает игрока растительными преградами, которые мирно колышатся на ветру...

cry_opt_7 | Азы графической оптимизации на примере Crysis 3

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

Момент №5. Нагло и в лоб. Обычно арматуру делают хотя бы из параллелепипеда... Крайтек пошли напролом.

cry_opt_8 | Азы графической оптимизации на примере Crysis 3

Арматура с кусочками бетона — это один полигон с соответствующей текстурой. Этот объект игрок изначально видит с такой стороны, что не заметно, что он плоский (после того, как Псих неудачно пробует выбить дверь).

Момент №6. Экономия времени. Дизайнеры хотя бы приблизительно знали, с какой стороны игрок будет видеть здания, а где вряд ли сунется, поэтому не особо волновались с самой муторной частью текстурирования — с развёрткой (это мое скромное мнение) в тех местах, где это было не критично.

cry_opt_9 | Азы графической оптимизации на примере Crysis 3

А вот пример из Фолла4а — как делать не надо:

+ Показать

Отдельные моменты

Замечали ли вы, как много противников нападает на игрока? Зачастую их не больше 8. Очень редко можно встретить больше 4 врагов на одном экране. Если врагов больше, то они обычно не видны за стенами, и об их существовании игрок знает только по иконкам визира, а иконки запросто батчатся и отрисовываются за один вызов.

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

В самой игре при кажущейся свободе и просторе (на примере второго уровня) очень большая часть обзора перекрывается посторонними объектами, а с Occlusion Culling у Крузисов всегда было всё в порядке. Игра не отрисовывает даже то, что загораживает оружие игрока (во второй части точно так).

Мораль

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

Немного отсебятинки

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

#Crysis 3, #оптимизация

25 декабря 2015 (Обновление: 13 янв 2019)

Комментарии [37]