Моделирование подвижных частей и рендер глубин: как создавались подлодки в World of Warships

Тонкости разработки подводных машин.

Сотрудники компании Wargaming написали для DTF колонку, в которой рассказали о создании подлодок в World of Warships. Изначально разработчики не планировали добавлять этот класс кораблей в игру, однако позднее всё-таки «сдались» под просьбами игроков. Это вылилось в освоение новых техник рендера и поиск решений для реалистичного отображения световых эффектов.

Моделирование подвижных частей и рендер глубин: как создавались подлодки в World of Warships

Вступление

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

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

Моделирование

Учитывая, что подводные лодки — самые маленькие корабли в игре, процесс их моделирования не кажется слишком сложным. Если с линкором мы справляемся в среднем за шесть месяцев, то на подводную лодку уходит 2–2,5. По полигонам схожая история: подлодка — это 40–70 тысяч треугольников, а линкор занимает до 350–420 тысяч. Но есть другие нюансы, о которых мы начали догадываться, ещё когда делали стимпанк-подлодки для прошлого ивента на Хеллоуин.

Моделирование подвижных частей и рендер глубин: как создавались подлодки в World of Warships

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

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

Моделирование подвижных частей и рендер глубин: как создавались подлодки в World of Warships

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

Другой проблемой стало большое количество отверстий по всему лёгкому корпусу. Это обусловлено наличием прочного и лёгкого корпусов с большим количеством полостей между ними, надстройкой, рубкой, ограждением.

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

Моделирование подвижных частей и рендер глубин: как создавались подлодки в World of Warships

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

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

Рендер

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

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

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

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

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

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

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

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

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

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

Звук

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

  • Мы стараемся применять модульность и активно работаем с миксами, чтобы размер игрового клиента оставался на приемлемом уровне.
  • Звук в нашей игре работает не только на атмосферу, но и на обратную связь игроку, причём зачастую не самым прямым образом.
  • Мы не гонимся за «документальным» реализмом в звуке, а скорее стараемся брать реалистичные компоненты и дополнять их «киношными». Это распространённая практика: например, в большинстве боевиков взрывы и перестрелки звучат сочнее и ярче, чем в реальности.

Эти моменты проявились и в работе над подлодками. Помимо трёх состояний (поверхность, перископная глубина, глубина) ещё учитывается положение камеры (например, на перископной глубине субмарина уже под водой, а камера — над водой). Для каждой комбинации создаётся свой микс. Двигатель у подлодки тоже работает по-разному: под водой мы слышим электрический двигатель, причём он специально приглушён, чтобы выделить другие звуки, а над водой работает дизель.

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

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

8686
65 комментариев

Комментарий недоступен

18
Ответить

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

Это высказывание про подлодки было в каком-то интервью сто лет назад, если что, с тех пор сама игра и без подлодок поменяться успела и не один раз :)

48
Ответить

будто в первый раз, они и про СТ и ПТ говорили, что ветки будут на 9-м уровне завершаться 

1
Ответить

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

8
Ответить

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

1
Ответить

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

 Да ,кстати,  а почему на форуме кораблей разрабы ДО СИХ ПОР пишут, что подлодки это эксперимент, и играть с ними можно будет только в одном спецрежиме, а в рандоме их не будет - а тут - статья написана так, как будто на них уже можно играть? 

5
Ответить

В смысле почему скорость такая большая? Да потому что она у всех кораблей завышенная, так как это аркада и по сути ты играешь в ускоренную игру. Или ты не заметил что линкор должен проплывать всю карту за 30 минут? А подлодка так вообще в 2 раза медленней в надводном будет и в 4 раза медленней под водой, т.е. 2 часа плыть в одном бою через всю карту?))

5
Ответить