Физика всё усложняет: как устроена физическая модель в Totally Accurate Battle Simulator

Когда даже для стояния нужен рейкастинг.

Глава Landfall Games Вильгельм Найлунд рассказал изданию Rock, Paper, Shotgun, на каких физических принципах строится геймплей его игры — Totally Accurate Battle Simulator (TABS). Оказалось, что в такой игре сложности возникают даже с обыденными действиями — хождением, стоянием, атакой. Мы выбрали из текста главное.

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

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

Чтобы юниты не падали, Найлунд добавил поддержку для туловища и головы, которая действует как нити марионетки. Эта противодействующая сила работает только в моменты, когда персонаж стоит на земле. Чтобы убедиться в этом, юнит генерирует из своей головы луч (raycast), который по длине равен росту персонажа. Если луч касается земли, то эта поддержка включается.

Затем, чтобы заставить юнита твёрдо стоять на ногах, игра проверяет, касаются ли они земли. Если да, то она проверяет, насколько далеко находится точка соприкосновения от головы. Чем она ближе, тем сильнее становится поддержка — так юнит быстрее поднимается. Если персонаж полностью выпрямился, то поддержка снижается.

Физика всё усложняет: как устроена физическая модель в Totally Accurate Battle Simulator

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

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

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

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

Вильгельм Найлунд, глава Landfall Games

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

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

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

Это кривая анимации, которая определяет размах самурайского меча
Это кривая анимации, которая определяет размах самурайского меча

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

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

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

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

Вильгельм Найлунд, глава Landfall Games

Но не всё в TABS завязано на физике. Если поведение массивных валунов на катапультах рассчитывается по физике, то к более мелким проджектайлам (пули и стрелы) это не относится. И такая особенность вызвана классическими проблемами с коллизиями.

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

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

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

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

Таким образом, вокруг самураев появились невидимые сферы, которые отражают снаряды. Одновременно у юнита запускается соответствующая анимация, и он отражает выпущенную в него стрелу.

8383
21 комментарий

Целый зоопарк костылей =))) Шедеврально!

20
Ответить

 с помощью кривой анимации

5
Ответить

Как это нет дальнобойных юнитов? У самураев есть ниндзя с сюрикенами!

7
Ответить

Довольно странно, что у фракции самураев нет лучников - очень неисторично, учитывая тот факт, что самураи луки использовали, возможно, больше, чем мечи. 

5
Ответить

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

3
Ответить

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

1
Ответить

Жаль что кроме как покекать часик с регдолла в игре делать больше нечего
Если бы был режим TPS файта как в Mount&Blade, было бы кайфово

4
Ответить