Как работает физика танков в World of Tanks

От простой модели до сложных расчётов.

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

К десятилетию игры разработчик World of Tanks Игорь Галай рассказал, какой путь проделала физика в многопользовательском симуляторе от первых версий до современного состояния.

Как работает физика танков в World of Tanks

Как выглядела физика в World of Tanks 10 лет назад

Когда World of Tanks только стартовала – это был 2008-2009 год – уже были однопользовательские игры c более или менее адекватной физикой транспортных средств. Были разработаны необходимые методы, и мощности позволяли, были сетевые игры по типу Battlefield, в которых можно было использовать транспортные средства.

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

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

На скриншоте из геймплейного видео про обновление 0.8.0 отлично видно, что изменилось больше всего — танки наконец оторвались от земли
На скриншоте из геймплейного видео про обновление 0.8.0 отлично видно, что изменилось больше всего — танки наконец оторвались от земли

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

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

Объясню немного, что такое коллизии в контексте физической симуляции. Каждое тело имеет набор параметров, которые меняются со временем: масса, тензор инерции, скорость (линейная и угловая), положение в пространстве. Кроме этого, тело имеет некое геометрическое описание — это может быть сфера, куб, выпуклый многогранник или что-то более сложное.

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

Коллизии были одной из главных проблемой первой модели физики в World of Tanks — они были нереалистичными, а также не было честного контакта с землей. Однако уже тогда все расчёты происходили на сервере, что исключало возможность читов.

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

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

Мы написали небольшой физический движок и интегрировали его в наш игровой движок BigWorld на серверной стороне. Это позволило сделать полноценную трёхмерную симуляцию, на тех же принципах что заложены PhysX или Havok. Свой движок также позволил оперативно добавлять требуемые фичи и очень тонко настроить нашу модель. Например, мы использовали новую технику soft constraints для стабильной симуляции пружин большой жёсткости. Также мы сделали оптимизацию под наше серверное железо, чтобы сервера могли рассчитывать масштабные сражения.

Изменения в обновлении 0.8.0

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

Как работает физика танков в World of Tanks

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

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

Мы также учли жалобы от игроков, о том, что после 8.0 танки стали слишком сильно терять скорость на поворотах, что снизило динамику боя. В 9.14 «виртуальный мехвод» научился поворачивать, не затормаживая один из бортов: он даёт немного разные передаточные числа на каждый борт. На некоторых танках, однако, можно полностью заблокировать один из бортов и уйти в занос.

Работа подвески в версии 9.14
Работа подвески в реальном мире

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

Как соотносится геймплей и реальная физика в игре

Есть разные факторы, определяющие это соотношение. Для глубокого вовлечения игра должна вызывать эмоциональный отклик у игрока. В World of Tanks мы пытаемся показать что-то знакомое: как двигаются знакомые танки из фильмов и видео. У большинства игроков представление о военной технике сложилось именно благодаря фильмам, а также опыту взаимодействия с обычными автомобилями. Из-за этого, конечно, у них есть некоторые предубеждения.

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

Другое предубеждение: танк, падая с обрыва, должен очень быстро лететь вниз. Люди могут знать законы гравитации, но не вполне осознавать размеры танка. Игрок может неосознанно представлять, что средний танк примерно размером с машину, а МС-1 это такой квадроцикл. В действительности даже небольшой по танковым меркам МС-1 имеет внушительные размеры: 4,38 x 1,76 x 2,12 метров. Поэтому визуально может казаться, что танк слишком медленно падает, в то время как на самом деле он пролетает большое расстояние. В таких спорных случаях мы старались ориентироваться на эмоции игроков, на то, чего они ожидают.

Сравнение переворотов в физике версии 9,14 и 9,15

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

Такие же небольшие внешние силы добавили для тормоза и старта. Танки в игре тормозят чуть быстрее, чем в реальности. Сцепление с грунтом сделали сильнее, чем в реальной жизни — коэффициент больше единицы. Поэтому заносы получаются не такие мощные, как в реальности. Чтобы танки падали с обрыва чуть быстрее, мы также увеличили силу гравитации на 25%.

В реальности на некоторых типах поверхности настоящие танки могут даже дрифтовать

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

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

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

Как сейчас обстоят дела с физикой в World of Tanks и вообще в играх и как она развивается

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

Если говорить про физику в играх в целом, то сейчас продолжает расти значение сетевых онлайн-игр, что накладывает ограничения на развитие физики. В однопользовательских играх с этим проще. Например, в World of Tanks мы просчитываем небольшое количество геймплейно значимых объектов на сервере, а мощные визуальные эффекты, например, разрушение домов — на клиенте. Это следствие того, что существуют ограничения сетевого канала. Мы не можем передавать изменения координат сотен и тысяч объектов.

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

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

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

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

6666
95 комментариев

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

39
Ответить

Они это называют - ВБР.
Великий Белорусский Рандом.

2
Ответить

Можно было бы начать и закончить "Как работает физика в World of Tanks - вы задонили, у вас будет 100% пробитий хоть в гуслю. Вы не доните? Ловите 100% рикошетов. Всем спасибо, все свободны".
При всем уважение, описание физической модели может быть неплохо, но вспоминая пакет танкиста, сразу понимаю - партнерский материал. Так что ставьте это в заглавие сразу, иначе можно считать введением в заблуждение (скрытая реклама).

22
Ответить
Комментарий удалён модератором

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

3
Ответить

Анскилов подвезли

1
Ответить

Доню и не помогает... Я как-то не правильно доначу,?

1
Ответить