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

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

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

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

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

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

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

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

Quake 3: Arena

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

132132
14 комментариев

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

20

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

1

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

10

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

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

6

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

5

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

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

2