Как стать автором
Обновить
0
ex-Wargaming
Издатель и разработчик free-to-play MMO

World of Tanks Blitz — как мы сделали для танков динамическую подвеску

Время на прочтение4 мин
Количество просмотров9.7K

Большой World of Tanks продолжает активно развиваться — игра часто получает обновления, включая как что-то, связанное с игровым процессом (новые карты и танки, режимы игры и сезонные события, умения экипажа и полевая модернизация), так и что-то чисто техническое. Например, использование новых графических технологий. Если мы говорим о ПК, то здесь есть множество гибких настроек, чтобы и комфортно поиграть с красивой картинкой, и сам ПК при этом не спалить.

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

В этом посте рендер-разработчики студии мобильной разработки Wargaming MS-1 Рамиль Кудашев и Александр Бабей расскажут о том, что нового (и красивого) появилось в летнем релизе World of Tanks Blitz. 

Осторожно, внутри тяжелые гифки.

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

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

Подвеска

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

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

Так что мы решили реализовать модификацию геометрии гусениц программно. 

Вот как все работает. 

  1. По боковой проекции оригинальной гусеницы мы строим контур — замкнутый многоугольник.

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

И так для каждого танка
И так для каждого танка

3. Из нижней части оригинальной гусеницы берем и программно вырезаем кусок геометрии — он будет использоваться для заполнения звеньев полученной цепи. 

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

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

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

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

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

А чтобы все было совсем красиво и реалистично, художнику нужно не только откорректировать точки гибкой гусеницы, но и прописать параметры катков. Здесь все сложнее, чем проставить флаг «Так, эта штука будет двигаться». Надо определить, какие именно катки и на какое максимально допустимое расстояние будут двигаться, а потом прописать для них параметры  прогибания и расстилания гусеницы: силу и скорость. 

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

Как это работает в больших Танках

У старшего брата за динамическую подвеску и красивый изгиб гитары гусеницы отвечает технология Soft skinning. Она отличная, но куда более требовательная к железу. Если бы мы использовали ее на мобилках, играть в Blitz было бы сложно. Зато тепло. 

По сути, главной сложностью всего процесса для нас стало именно большое количество танков в игре. Тут же нельзя было задать единые параметры настройки гусениц, как с волшебной кнопкой «Сделать красиво». Учесть все-все-все случаи, которые надо обработать в коде, не представлялось возможным. Игроки очень изобретательны. Очень. 

Поэтому правки постоянно вносили и в генерацию самих гусениц, и в симуляцию физики этих гусениц. 

PBR — physically based rendering

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

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

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

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

Все эти графические настройки можно менять. Конечно, не так гибко, как в больших Танках, но достаточно для того, чтобы комфортно поиграть в Blitz и на бюджетном смартфоне. У разных настроек разный «вес» — например, описанный выше PBR не так уж и сильно влияет на производительность. А вот высокое качество теней — это уже весомо. 

Что дальше

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

На любых девайсах. 

Вот здесь за 5 минут можно посмотреть подробный обзор обновления 8.0.

P.S. Если вам интересно что-то еще из внутренней кухни Wargaming, от технических деталей создания игр до введения тех или иных функций — пишите в комментариях.

Теги:
Хабы:
+18
Комментарии12

Публикации

Информация

Сайт
lesta.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия

Истории