Gothic AI

Как теперь устроен лук: формулы и цифры

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

В прошлом посте лук наводили руками. Этот пост про цифры за ним. Если стрелу направляешь сам, что остаётся навыку, ловкости и силе героя? Готика всё-таки RPG. Шортс отвечает на это за 80 секунд, а здесь формулы.

Кадры шортса: шанс и бросок кубика над бандитом, зоны попадания, формула урона, урон в секунду против кубика

Кубик, который мы заменили

В Готике II лук наводится сам, а попадание решает один бросок. Шанс считается от навыка и расстояния, как в Gothic2.exe. Вблизи он 100% и к 15 м спускается до навыка. Дальше 15 м работает формула H − H·d/45 м (H — навык): шанс сразу падает до двух третей навыка и к 45 м доходит до нуля. Бандит с навыком 40% с 16 м попадает в четверти случаев. Эта формула, взятая из самого exe, служит меркой для всего, что ниже.

Урон

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

урон = max(5, ((урон лука + ловкость) × натяжение − защита) × зона)

  • натяжение: от 0,3 до 1; если натянуть слабее, выстрела нет;
  • защита: защита цели от стрел; ниже 0 урон из-за неё не уходит;
  • зона: голова 2, корпус 1, руки и ноги 0,6. Множится после брони, поэтому в голову всегда вдвое больше, чем в корпус;
  • каждый шаг округляется, и урон не меньше 5, как в Готике.

Мастер (лук 150, ловкость 150) на полном натяжении против паладина в латах (защита 100): в голову 400, в корпус 200, в руку или ногу 120. Стенд намерил то же самое.

Что дают характеристики

От новичка до мастера (навык от 0 до 100%, ловкость от 0 до 150):

Характеристика Что меняет
Навык владения луком Точность: качка на полном натяжении 0,9° → 0,25°, разброс при выпуске 0,6° → 0,1°, прицел успокаивается после поворота за 0,6 → 0,2 с, дыхание задерживается на 2 → 5 с. Выучка: анимации обученных лучников Готики сохранены, поэтому анимация перезарядки длится 1,16 / 1,08 / 0,92 с на трёх ступенях
Ловкость Урон (см. выше) и темп: натяжение 1,2 → 0,5 с, темп перезарядки ×0,85 → ×1,6
Сила Удержать тугой лук: луку нужна сила в 0,6 его урона или его собственное требование. Если силы не хватает, лук качается сильнее (×(1 + нехватка)), натягивается медленнее и раньше начинает дрожать: ровно держится 1,5 с при половине нужной силы и 6 с при двойной. Арбалет взводится в темпе ×0,75 → ×1,4

Против кубика

Замеры на стенде: четыре ступени от новичка до мастера, по 30 выстрелов на клетку, без брони. Урон в секунду при стрельбе руками, делённый на урон кубика на той же ступени:

Ступень (навык, лук, сила/ловкость) 10 м 20 м 30 м
новичок (10%, Bow_L_01, 10/10) 0,86 4,0 4,1
ученик (30%, Bow_L_03, 30/30) 0,79 1,65 1,57
середняк (60%, Bow_M_01, 60/60) 0,79 1,16 1,25
мастер (100%, Bow_H_03, 150/150) 1,10 1,39 1,76

Вблизи руками чуть медленнее, чем кубиком: натягивать лук нужно время. Дальше 15 м руками выгоднее, потому что кубик срезает там шанс одной ступенькой (новичку остаётся несколько процентов), а физика так не делает. Мастер с 20 м попадает в голову 17 раз из 30.

Что мы не скрываем

  • Все цифры на экране посчитаны, а не вписаны руками: шанс и бросок над бандитом — те, что игра выбросила в этом дубле, пример в карточке с формулой считается так же, как в движке, графики построены по логу стенда.
  • Целится бот стенда, у него нет человеческой ошибки, только собственная качка лука. Живой игрок с мышью будет попадать хуже, и это заложенный запас.
  • Таблица баланса снята без брони, пример с паладином — с бронёй.
  • Сцены постановочные: бандит удерживается на месте и не может умереть. Полёт стрелы замедлен.
  • Голос в шортсе записан человеком, он не синтезирован. Музыка из Готики II (Кай Розенкранц), игровой звук со вставок убран.

Дальше

В планах: стоит ли NPC целиться в голову и проверка баланса с прицелом живого игрока вместо бота.

Поиграть пока нельзя: проект запускается из исходников на macOS и требует своей копии Gothic II: Ночь Ворона. Движок — OpenGothic. Устройство и замеры описаны в docs/manual-aim.md, числа лежат в archery.cpp и damagecalculator.cpp. Шортс снят на тестовом стенде и нарисован с помощью shorts/explain.

Ко всем записям