Gamedev Artyom Kaleev
19 479

На стыке реализма и веселья: как работает модель передвижения автомобиля в Uncharted 4

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

В закладки
Аудио

В Uncharted 4 впервые в серии появилась возможность управлять внедорожником. В Naughty Dog хотели правильно вписать новую механику в игру — чтобы передвижение на транспорте работало реалистично, но не настолько, чтобы игрок терял удовольствие от геймплея при возникновении трудностей.

Программист Naughty Dog Эдуард Перейра на конференции GDC 2017 рассказал, как студия справлялась с этой задачей. Мы выбрали главное из выступления.

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

  • езда приносит удовольствие как можно большей части игроков;
  • присутствует элемент реализма, чтобы игрок чувствовал себя «приземлённым»;
  • механика вождения работает правильно вне зависимости от условий — будь то твёрдая поверхность или грязь.

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

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

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

Поэтому разработчики немного пересмотрели эту систему. Теперь на изменения реагировало всё колесо целиком, по окружности. Сразу несколько точек на колесе считывали поверхность, что позволило добиться нужного поведения подвески и правильной коллизии. Чтобы колесо не дрожало, когда под ним находится сразу несколько нестабильных объектов (например, досок), число точек соприкосновения ограничили до трёх.

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

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

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

Без ограничения 
С ограничением

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

Без вектора и с вектором

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

Распределение крутящего момента по колёсам от двигатели

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

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

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

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

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

Из этого следует, что общая сила трения вычисляется корнем из суммы квадратов боковой и передней сил.

Однако, чтобы машина могла входить в управляемый занос, Naughty Dog вновь пришлось поступить в ущерб реализму. Когда игрок жмёт на тормоз, у задних колёс резко снижается сила трения — что позволяет легко «дрифтить» на участках с хорошим сопротивлением (например, на асфальте).

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

#uncharted #разбор #опыт

{ "author_name": "Artyom Kaleev", "author_type": "editor", "tags": ["\u0440\u0430\u0437\u0431\u043e\u0440","uncharted","\u043e\u043f\u044b\u0442"], "comments": 49, "likes": 265, "favorites": 228, "is_advertisement": false, "subsite_label": "gamedev", "id": 41409, "is_wide": true, "is_ugc": false, "date": "Fri, 01 Mar 2019 11:34:17 +0300" }
{ "id": 41409, "author_id": 17412, "diff_limit": 1000, "urls": {"diff":"\/comments\/41409\/get","add":"\/comments\/41409\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/41409"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954 }

49 комментариев 49 комм.

Популярные

По порядку

Написать комментарий...
36

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

Ответить
4

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

Ответить
10

"Самое высокое сцепление (за исключением дорог) было у участков травы. Чуть ниже — на поверхностях с грязью." - Я смотрю кто-то никогда не ездил по мокрой траве, сцепления у колёс там чуть более чем никакое.

Ответить
13

Всё же Uncharted 4 — это приключенческий экшен, а не симулятор внедорожника.

Прочитайте ещё раз плез)

Ответить
0

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

Ответить
6

Какая логика в Uncharted? Он под градом пуль бегает и ему норм приземляться с спиной на камни

Ответить
3

Чому-то owlie не может тебе ответить нормально, придётся мне :D
А логика примерно такая же, как и в том, чтобы сделать трение у дороги больше, чем трение на лужах. Вот почему они почти убрали его в лужах, но оставили на дороге? Правильно - логика, основанная на опыте из реального мира. И именно по этой же логике с травой сцепление должно быть меньше, чем на дороге, но больше, чем на лужах.

Ответить
0

Тем не менее они в него никогда не попадают (знаете наверное про механику "удачи" в игре), а трюки вполне выполнимы каскадёрами.

Ответить
2

Тем не менее они в него никогда не попадают (знаете наверное про механику "удачи" в игре),

Зависит от уровня сложности)
а трюки вполне выполнимы каскадёрами.

Со страховками и прочей защитой. Ах да. Ещё и дни подготовки к этому. И Каскадёры часто погибают.

Ответить
6

А где там была речь про мокрую траву?

Ответить
2

Даже по обычной летом ездить ну такое себе, там явно сцепление не на уровне дорожного полотна.
Как довольно утрированный случай - мы пытались въехать на склон на "Соболе" летом, по обычной траве, не сухой, но и не мокрой (дождей никаких не было), просто обычная трава. Так вот забуксовали неслабо, пришлось толкать - колёса крутятся, и по траве скользят пздц просто. Там не хуже льда)

Ответить

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

2

Поезди на реальной машине по траве (любой) и грязи. Потом поговорим

Ответить

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

1

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

Ответить
0

глубина и агрессивность протектора шины в расчет берется?) В анче вроде не болид и не гражданская резина

Ответить

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

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

0

Что за токсичная чушка?

Ответить

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

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

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

1

Я так IRL на мокрой траве перевернулся. Боком как потащило, затем переднее колесо в яму - результат предсказуем.

Ответить
1

Да даже не по мокрой. Просто обычная летняя сочная трава.

Ответить
0

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

Ответить

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

14

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

Ответить
10

Давно приметил что на примере серии uncharted основаны почти все статьи описания механик и нарратива.

Ответить
4

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

Ответить
0

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

Ответить
–2

А разве там не лучшие механики и нарратив в индустрии?

Ответить
2

Хорошая же игра)

Ответить
1

НАРРРРАТИВААА

Ответить
9

Интересный материал, спасибо. В принципе, с хардкорной физикой было бы даже интереснее)

Ответить
–16

Всё-таки большое количество gif в постах - это зло.
А статья интересная :)

Ответить
14

Это видео, а не gif

Ответить
–5

Действительно:) Но всё равно - зло, браузер начинает подтормаживать от того, что срабатывает автовоспроизведение.

Ответить
7

А сколько лет твоему процессору и видеокарте в компе? Уже довольно давно декодирование видео есть в аппаратном режиме, и оно не должно влиять на производительность компа сильно

Ответить
–1

У меня старая ЭВМ :)

Ответить
1

В так случае у тебя и яндекс дзен будет тормозить.

Ответить
0

Яндекс.Дзен кстати нормально работает.

Ответить
0

Ну так и чего ты ноешь?

Ответить
–2

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

Ответить
2

Вообще-то наоборот.
Здесь одни mp4.

Ответить
0

У меня все видео в статье в формате mp4, а у тебя по-другому?

Ответить
0

Как там в 2007?

Ответить
5

Мне кажется в Uncharted одна из лучших механик управления авто среди игр, где это вообще-то не основа геймплея.

Ответить
4

Жаль только регулировка скорости автомобиля вышла очень паршивой, из-за чего ощущение было управления крутой, но игрушечной машинкой

Ответить
2

В Mafia 2 очень реалистичное движение автомобилей. Там можно переключаться между режимом симулятор и аркада. Так как машины там до изобретения ремня безопасности почти любое скоростное столкновение ведет к смерти.

Ответить
1

Naughty Dog красавчики.

Ответить

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

3

Это что, в GTA они загораются, если перевернуться
!

Ответить

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

5

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

Ответить

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

3

И много ты еще аккаунтов будешь создавать, чтобы вбросы и заборы скобочек постить?

Ответить

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

1

)))))))))))))

калчартеде

Ну ты ведь понимаешь, да?

Ответить
0

Миссия неплохая была

Ответить
–7

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

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Уве Болл вернулся в кино
и начал экранизировать flash-игры
Подписаться на push-уведомления