Физика в Unity — опыт разработчиков Shadow Fight 3 Материал редакции

Оптимизация под слабые устройства и синхронный PvP.

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

Технический 3D-художник Banzai Games Роман Терский рассказал, как его команда интегрировала физику в игровой процесс мобильного файтинга Shadow Fight 3, какие приемы использовала для оптимизации и как переписала «с нуля» физику для персонажей для достижения её полной детерминированности в синхронном PvP.

Физика твёрдых тел

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

Детач костей

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

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

Фейковый импульс

Рассмотрим это решение на примере шлема мародёра, спартанский гребень которого подвержен физической симуляции. Мы разбили гребень на 5 частей, каждая из которых была прискинена к разным костям. В настройках Joint этих костей выставили лимиты на поворот по нужной оси и задали параметр Twist Limit Spring, отвечающий за эффект пружины.

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

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

Можно было бы считывать количество кадров в текущей анимации, потом вычитать из этого значения 15‑20 кадров и прикладывать импульс по истечении полученной разницы. Однако лишней арифметики нам удалось избежать, привязав момент срабатывания импульса к окончанию интервала анимации uninterrupted.

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

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

Элементы снаряжения

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

В ряде случаев (например, с металлическими пластинами) использование коллайдеров неизбежно. Однако основную нагрузку несёт не само наличие коллайдеров, а расчёт их столкновений. Минимизировать эту нагрузку помогает тонкая настройка матрицы столкновения слоёв (Layer Collision Matrix) в Project Settings. Для подобных элементов мы используем два отдельных слоя, которые коллизятся только между собой, таким образом избегая просчёта столкновения с коллайдерами других слоев (оружия, пола, стен и так далее).

Физический клон

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

Манипулируя параметром Is Kinematic в компоненте Rigidbody костей, в зависимости от ситуации мы включаем и выключаем физику для них.

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

Решением стало создание физического клона. Рассмотрим это на примере ножа на цепи.

Во время загрузки боя для него инициализируется два скелета: основной, который находится внутри иерархии персонажа, и его физический клон. В костях основного скелета отсутствует компонент Rigidbody, на их трансформацию влияют только анимационные треки. Кости второго имеют настроенные связи (Joint) и компонент Rigidbody с активным параметром Is Kinematic.

В то время как на трансформацию костей основного скелета влияет анимационный трек, например, во время удара, параметр Is Kinematic в компоненте Rigidbody костей физического клона остаётся активным. Кости не трансформируются и не подвергаются физической симуляции. Во время последнего кадра анимации происходит синхронизация трансформов костей двух скелетов.

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

Симуляция тканей

При настройке симуляции тканей в рамках производительности мобильных устройств основное ограничение — использование коллизии тканей с коллайдерами. Более дешёвой альтернативой служит тонкая настройка Surface Penetration для констрейнтов ткани. Так как в нашей игре множество анимаций и различных поз персонажей, был составлен список самых «опасных» из них, на которых все ткани проверялись на предмет проникновения сквозь другие части тела.

Также симуляцию тканей мы использовали при создании FX-эффекта пламени на оружиях и на голове босса Теневой разум. В настройках Cloth для этих элементов мы отключили влияние гравитации и задали значения ускорения (Acceleration) по оси Y: постоянный, чтобы пламя стремилось вверх, и рандомный — для эффекта трепыхания. Чтобы при движении не было резкого искажения геометрии, мы выставили повышенное значение сопротивления (Damping). Таким образом мы получили достаточно реалистичный и дешёвый в плане производительности эффект пламени.

Детерминированная физика для синхронного PvP

В момент смерти и в определённых ситуациях при получении удара для персонажей в Shadow Fight 3 активируется симуляция физики. Долгое время для этого использовалась стоковая физика твёрдых тел Unity. Однако при внедрении синхронного PvP в проект от неё пришлось отказаться в пользу собственной разработки.

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

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

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

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

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

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

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

Рёбра​
Мышцы​

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

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

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

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

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

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

В течение первых двух кадров после начала симуляции физики сила мышц сохраняется максимальной, чтобы стабилизировать узлы после применения к ним импульса. Затем мышцы расслабляются, их сила становится 55% , а далее в течение 120 кадров сила постепенно увеличивается вплоть до 100%.

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

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

{ "author_name": "Андрей Верещагин", "author_type": "editor", "tags": ["\u043e\u043f\u044b\u0442","unity"], "comments": 67, "likes": 192, "favorites": 358, "is_advertisement": false, "subsite_label": "gamedev", "id": 85469, "is_wide": true, "is_ugc": false, "date": "Wed, 04 Dec 2019 14:00:59 +0300", "is_special": false }
0
67 комментариев
Популярные
По порядку
Написать комментарий...
14

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

Ответить
33

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

Ответить
2

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

Ответить
6

Менять финансовую политику. Продавать игру за конкретную цену.

Ответить
3

Так донатная говнина - это лучшая финансовая модель на сегодняшний день

Ответить
3

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

Ответить
1

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

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

Ответить
2

продавать её? не? вообще не вариант? ПРОДАТЬ ХОРОШУЮ ИГРУ БЛЯДЬ.
не продвать ПРЕИМУЩЕСТВА, не продавать ТАЙМСЕЙВЕРЫ, не продавать ГАЧУ

П Р О Д А Т Ь       И Г Р У

Ответить
0

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

Ответить
4

Этим разрабам плевать. Они ещё потом доказывают что Юнити более качественный движок чем UE4 потому что он им мобилку быстрее может высрать которая будет приносить деньги. 
Зачастую как раз именно такие люди в инди-разделах обитают, которые видят свою жизнь как ежемесячное клепание донатопарашных мобилок. Они же и советуют новичкам выбрать Юнити и быстрее бежать изучать С#, ведь это намного проще анриловских бп, а также выбирать именно мобилку как первую платформу для разработки, ведь там совсем не надо вариться в рекламном и бизнес-аду. А ещё платформер обязательно, ведь 3д игры это только ААА проекты, а в 2д конкуренции нет и распиарить игру проще простого. Потом вместе со всеми кстати ноют о том, какие ЕА плохие, как они превращают игры в донатное говно для дебилов. Лицемеры, в общем. Короче, самый угрёбищный слой сообщества - самый крикливый, вонючий и лицемерный с примесью двойных стандартов. Как всегда.

Ответить
0

Про "3D игры это только ААА", так навскидку из инди я на раннем доступе покупал Сабнавтику, The Long Dark, Risk of rain 2, казалось бы что объединяет все эти игры - в них интересно играть, они сделаны с любовью и созданы не просто чтобы заработать денег, а чтобы ещё и радость людям принести.

Ответить
2

И при этом их любят. А говноказуалочки живут пару месяцев, приносят бабло недалёкому разрабу который думает что сидит на вершине геймдева, а потом сгнивают, вынуждая работягу пилить ещё одно дерьмо. Я не знаю как у них вообще рот в комментах открывается защищать свои говнопозиции в духе "ну нам же надо на что-то жить", "качество - это то, как много игра принесла денег" и прочую проЕАшную поеботу.

Ответить
0

и сколько шадовфайт купят допустим за 300р? ты бы купил?

Ответить
0

не знаю, я не играл в неё долго, ибо там донат на донате.
Я купил Battlevoid

Ответить
1

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

Ответить
5

Какая разница, какой в игре графон и физика, если paywall не просто убивает любое желание играть, а не оставляет тебе ни шанса уже на начальном этапе игры? 

Ответить
32

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

Ответить
–11

В таком случае стоит ли воспринимать статью как вопль: заберите меня отсюда , я не хочу работать на мобилки!!!!

Ответить
3

Следующая версия игры будет про PvP, там не будет такого пейвола. Скорее есть риск, что получится скиллвол )

Ответить
1

Ваша игра напоминает старую игру toribash. Что останавливает студию выпустить файтинг за фулпрайс для актуальных игровых консолей? Аудитории игр вряд ли пересекаются. 

Ответить

Мучительный пёс_анон

aliftin
6

Вторая часть без всяких донатов за фиксированную цену на свитч есть, кста.

Ответить
5

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

Ответить
0

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

Ответить
16

Воу, спасибо за статью, инфа огонь)

Ответить
9

Вау, хорошая статья о мобильном геймдеве

Ответить
8

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

Ответить
0

сравнивать физику из файтинга для iOS/Android и AAA проектов?

Ответить
3

Если она лучше, почему нет?

Ответить
1

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
0

Вполне возможно, но никто в командах даже не знает о таком, зато знает про кости, джоинты, и как можно быстро реализовать нужные механики.

Ответить
–4

Навскидку вспомнил DotA 2 там физика такая-же примерно. Игра 2011 года.
А если говорить про современные ААА вроде GoW или RDR2, то они в разы лучше выглядят, ткань выглядит гораздо естественнее. 

Ответить
0

Что ты несёшь, мракобес? В 2011ом в доте вообще не было физики тканей, скины - это просто модельки с анимациями. За всё это время движок игры переписали по меньшей мере два раза. И я не видел чтобы с тех пор что то поменялось.
А сравнивать мобильную игру с трипл А проектом, разрабатывающимся одной из самых крупных контор на протяжении 8ми лет... Вон из последних игр, в Джедаях, Секиро - плащи выглядят позорно, с постоянными прохождениями сквозь модельки.

Ответить
0

К слову, симуляция ткани была Vampire: The Masquerade – Bloodlines и в BloodRayne 2. Прям ух какая :) 

Ответить
–8

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

Ответить
4

Сомневаюсь, что автор статьи имеет к этому отношение.

Ответить
–6

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

Ответить
5

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

Ответить
–2

Может разраб и не умеет делать игры, если его игра никому не всралась? Смысл создавать игру которая никому не нужна, а потом ныть что тебе никто не платит за неё?
Такие люди блять как мамочки которые хуярят тухлого в вену, на УЗИ им говорят что родится полная хуйня, но они отказываются от аборта а потом собирают деньги на лечение больного ребёнка.

Ответить
0

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

Ответить
–1

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

Ответить
–10

Жаль это не настоящая игра.

Ответить
1

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

Ответить
0

Интересные решения требующие наверное большого количества человекочасов, но не понятно почему перьям на шлеме время уделили, а вот ногам протыкающим друг друга, нет. Мне кажется это для атмосферы важнее.

По идее то нужно поковырять шейдеры (могу и сильно ошибаться).

Ответить
0

Ошибаешься.

Ответить
0

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

Ответить
0

В мобильной ф2п дрочильне. Но этого достаточно чтобы знать, что шейдерами проваливающиеся ноги не делаются.

Ответить
0

очень плохо, передай соболезнование твоим работодателям, если такие есть. 

Можно узнать стопа какого персонажа ближе к зрителю (из тех что направлена к противнику) и её штаны отрисовывать позже выключив Z буфер

Ответить
3

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

Ответить
1

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

Ответить
0

согласен что такие случаи будут (про голень), но не думаю что будет выглядеть хуже.

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

Ответить
0

Я говорил про мк 11, который вышел полгода назад.

Ответить
0

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

Ответить
0

Теперь понятно почему у стеночки так весело расправляться с противником ;)

Ответить
0

Очень интересная статья. Круто, спасибо!

Ответить

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

0

Интересно то, что физика в игре абсолютно идентична той версии Shadow Fight, которая когда-то (а может сейчас) была в виде браузерной игры в ВК, если не ошибаюсь.Именно благодаря физике боевка воспринималась очень приятно, хоть в целом у игры были минусы, как и у любых других браузеров (paywall, pay2win etc). На каком движке были предыдущие версии игры и как удалось все это перенести без изменений?

 

Ответить
0

Думаю вы путаете физику с анимацией. 

Ответить
0

Отличный материал. Приятно почитать ) 

Ответить
0

Как же охуенно по полочкам разложили. Вопросы конечно остались, но все равно кайф получен. Спасибо!

Ответить
0

Спасибо) Вопросы можно задать тут в комментариях, постараюсь ответить :)

Ответить
{ "jsPath": "/static/build/dtf.ru/specials/DeliveryCheats/js/all.min.js?v=05.02.2020", "cssPath": "/static/build/dtf.ru/specials/DeliveryCheats/styles/all.min.css?v=05.02.2020", "fontsPath": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700,700i&subset=cyrillic" }