Лучшее  🚀
19.04.2020 в 15:16 Evernews

Просто и опасно: как в Mount & Blade 2 Bannerlord работает автоматический бой и как его улучшить

Во время автобоя расстаться с элитными войсками проще простого.

Кстати, на сайте читать удобнее

В Mount & Blade 2 Bannerlord не обязательно лично разыгрывать каждое сражение с участием своего персонажа: игра дает возможность симулировать результаты боя. Моддер keehu исследовал алгоритм симуляции и пришел к выводу, что он очень плох.

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

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

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

Сперва игра думает: «Так, у меня есть две партии бойцов, надо решить, кто будет атаковать, а кто защищаться». Я не буду слишком подробно описывать код, но суть в том, что чем больше солдат в партии, тем выше вероятность, что она будет выбрана для атаки, а не для защиты.

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

keehu

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

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

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

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

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

Вообще нет. Все буквально работает вот так: возьмем отряд, посмотрим на его уровень... Ага, ясно, теперь давайте применим этот уровень в качестве урона к какому-нибудь другому отряду.

Что, не умер? Повторяем процесс, пока у одной из сторон не кончатся войска.

keehu

В результате, объясняет keehu, при встрече мародеров с элитными катафрактами у первых будет условный урон 12, а у вторых — условное здоровье 100. Это означает, что каждый раз, когда симуляция выбирает катафрактов для защиты от мародеров, есть как минимум 12% вероятность, что они будут ранены или погибнут. В реальном бою все было бы иначе.

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

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

Читать далее