Gamedev
Владимир Семыкин

Скользящие ноги и отсутствие инерции: трудности анимирования в многопользовательских шутерах Статьи редакции

Неочевидные проблемы, с которыми сталкиваются разработчики.

Старший технический аниматор Sony Santa Monica Дэн Лоу опубликовал в твиттере тред, в котором рассказал о трудностях создания анимации в мультиплеерных играх от первого лица. Мы выбрали из треда главное.

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

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

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

Это же касается и замедления: обычный игровой персонаж в перспективе от третьего лица может двигаться со скоростью 4-6 м/с. В некоторых играх (например, Quake 3: Arena) скорость бега приближается к 10 м/с — примерно такая же, как у Усэйна Болта. При этом персонажи двигаются с такой скоростью в любом направлении в горизонтально плоскости.

Quake 3: Arena

В реальности чтобы остановиться в конце гонки на 100 метров, спринтеру нужно пробежать ещё некоторое расстояние — примерно 15-30 метров. В играх от третьего лица для отзывчивости дистанция остановки персонажа может составлять примерно 0,5-1 метра. В многопользовательском FPS это расстояние может быть намного меньше.

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

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

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

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

Так будет выглядеть игра, если просто прикрепить камеру к голове персонажа

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

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

Вот так быть не должно

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

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

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

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

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

Поэтому по сети передаются более простые переменные — позиция, скорость и направление противника. А затем эти показатели используются для управления системой анимации локально на компьютере или консоли.

{ "author_name": "Владимир Семыкин", "author_type": "editor", "tags": ["\u043e\u043f\u044b\u0442","\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f"], "comments": 14, "likes": 128, "favorites": 170, "is_advertisement": false, "subsite_label": "gamedev", "id": 891962, "is_wide": true, "is_ugc": false, "date": "Thu, 07 Oct 2021 15:16:25 +0300", "is_special": false }
0
14 комментариев
Популярные
По порядку
Написать комментарий...
Запасной танк88

С камерой на груди и торчащей головой из-за укрытия помню были в радуге 6 осаде, когда на крыше Достоевского подходишь к вентиляционному окну, то противники снизу сперва твою голову видят и лупят по ней, а ты потом сидишь  гадаешь как так они тебя спалили, когда ты еще их не увидел? Но все оказалось проще как оказалось

20

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

1
Запасной танк88

Ну киберспортивная игра хуль

4

Прочитал заголовок и вспомнил "Заметки кудесника шотгана" из GAME.EXE 2000 г.в. (месяц уже не вспомню, то ли сентябрь, то ли октябрь) про инверсную кинематику в целом и скользкие ноги в частности.
UPD: да, проверил, выпуск за сентябрь. ред.

10

Старший технический аниматор Sony Santa Monica Дэн Лоу опубликовал в твиттере тред, в котором рассказал о трудностях создания анимации в мультиплеерных играх от первого лица.

Cай-фай шутан от Кори Барлога - конфирмед :)

5

Надеюсь шо мультиплеер все же не основной режим будет(

0
Запасной танк88

Мы выбрали из треда главное.

Только вот весь тред он начал с того, что ему понравилась анимация в Halo Infinite и он решил рассказать почему сделать хорошую анимацию в мультиплеерных играх сложно. 

Тем временем в статье:

5

Разработчик предлагает решить эффект скользящих ног с помощью  редактирования скорости анимации или длину шага. Ок, это я понял. С единообразием тоже понятно, подход камеры. А вот с 
репликацией не совсем понял. Есть скорость, направление, позиция и состояние противника. Вроде так у всех происходит.
Я сейчас приведу плохой пример, но все же. В Fallout 76 из-за большого лага времени длина шага и скорость анимации прям на лицо. Бежит npc и вдруг он ускоряется с бешеной анимацией. А то как скольжения происходит без анимации в последнее время, я вообще молчу. ред.

2
Запасной танк88

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

2

Так Хитмэн 3 вроде однопользовательская игра, возможно там другой прикол с этим связан.
Возможно рассинхрон из-за железа. ред.

1

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

0

Santa Monica

играх от первого лица.

Здрада

0

Нет ног, нет проблем, можно же просто юбку до пола сделать.

0

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

–1
Читать все 14 комментариев
null