↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
Asteroid
4 мая 2023
Aa Aa
Немного о броне в играх
#размышления #gamedev

Обычно в играх есть два самых примитивных способа брони, унаследованные из бородатых игр прошлого: процентный и арифметический.
Процентный - срезает процент входящего урона. Обычно, числа самой брони срезают всё меньше и меньше процентов, но где-то в районе 10.000 брони будет срезаться 99% урона.
В точную механику вдаваться не буду, потому что сейчас разговор не об этом. Да и у разных игра она разная. Но больше всего мне симпатичен вариант из Доты, где каждая единица брони придаёт одно и тоже количество дополнительного эффективного ХП. Формула: Множитель урона=100/(100+Броня). Меньше всего - формула из НОММ 5, не интуитивная и непонятно зачем и почему сделанная.
Мне процентный вариант не нравится тем, что обычный удар вилами таки пробивает шкуру дракона/танка.

Арифметический - мы просто вычитаем из числа урона число брони. Простенько, и интуитивно понятно.
Почти не используется игроделами, потому что высокая броня обнуляет атаку слабых юнитов. Но я вот думаю: разве это такой уж минус? Если у нас 7 рангов разных юнитов, почему бы юнитам высоких рангов не быть неуязвимыми для низких рангов? Крестьянин не пробьет шкуру дракона, а обычный солдат - назгула (особый юнит Дева с рунным мечом - в качестве исключения может))).
В общем, пусть это требование будет граничным условием для некого идеального механизма брони.
Второе граничное условие тоже очевидно: крестьянин никак не может заблокировать 20% урона от дракона.
Казалось бы: бери уже такой тип брони и всё. Но давайте не будем спешить.

Для начала давайте взглянем на интересную механику брони из "Rogue Legacy 2" (хороший рогилик, надо бы уже реку написать)).
Я играл ещё в не русифицированную версию, и особо не вчитывался в описания, познавая механику практическим путём. И там сначала всё было довольно таки очевидно: повышаешь броню на 10, и полученный урон от врагов в первой локации снижается на те же 10 единиц.
Тут мне было очевидно, что между тем, чтобы поднять хп на 10 единиц и поднятием брони надо выбирать броню. И всё было прекрасно, пока не началась какая-то непонятная фигня: повышаю броню, а враги дамажат также. Полез разбираться.
Оказалось,там гораздо интереснее всё: атака вычитается от брони, только пока броня низкая, потом, вычитается не больше 33% от входящего урона. То есть формула: урон = атака - минимум(броня; атака*0,3).
И в общем, сделано это было как раз таки для того, чтобы слабые юниты тоже были опасны.
При этом, очевидно логичное развитие идеи - должны быть разные классы брони: легкие, средние и тяжелые, с, соответственно, разными процентами блокировки урона.
Идея интересная и новая. Но для нашего идеального механизма брони не подходит, потому что опять таки: крестьянин пробивает шкуру дракона.

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

Получается, сначала урон=0, потом по мере роста урона в некой точке график наклоняется вверх, но растёт медленно, потом, при преодолении брони (урон 50) график становится круче.
Тут видно интересный момент. Поскольку мы вычитаем из входящего урона меньшее из двух чисел: броня или атака*0,5, то при росте урона броня "действует" до тех пор, пока урон в 2 раза не превысит броню. Только после этого каждая новая единица входящего урона никак не глушится броней и становится единицей заброневого урона.
Я и раньше математически это понимал, но когда смотришь на графике, оно лучше понимается.

Но тут глаз цепляет вот этот скачок вначале графика. И я даже не знаю, баг это или фича? Как думаете?
4 мая 2023
2 комментариев из 61 (показать все)
Покрутил допиленную модель. Вроде бы всё отлично. Оставляю так.
Всем спасибо.
trionix
В принципе, самая годная формула
Да я тоже, чем больше думаю, тем больше мне она нравится. )))
Из простых формул, имхо, лучше сложно сделать.
ПОИСК
ФАНФИКОВ









Закрыть
Закрыть
Закрыть