Как мы реализовали механику уворота
Всем привет, меня зовут Кирилл. Я — геймдиректор мобильной игры Wasteland punk. В этой статье я расскажу о том, как мы переработали одну из боевых систем, использующихся в проекте, а именно — механику уворота.
О проекте
Wasteland Punk — мобильная постапокалиптическая РПГ с фокусом на исследование, нарратив и глубокую пошаговую боевку. Проект изначально разрабатывался, как идейный наследник Dungeon Survivor 2. Но в ходе разработки большая часть идей, заложенных в него, была сильно переработана. В данный момент Wasteland Punk далеко ушел от проекта LTGames.
Игра нацелена на достаточно хардкорную аудиторию. У нас есть пошаговые бои с использованием инициативы, разные аттрибуты приносят разную пользу конкретному наемнику и т.п. На данный момент мы находимся в софт-лонче, и недавно перевалили за отметку в 100 тысяч установок.
Предпосылки ревока уворота
В наследство от Dungeon Survivor нам досталась простая реализация механики уворота. У способности есть процентный шанс на попадание, который можно увеличить бонусами от параметров персонажа и снаряжения. Отняв от него параметр уворота цели, мы получаем шанс на попадание по персонажу. У умений также может быть второстепенный эффект. Он имеет фиксированный шанс на срабатывание, но может сработать только, если попал основной эффект. К сожалению, перенеся её в Wasteland punk, мы упустили несколько важных моментов.
Мы хотели оставить в игре возможность использовать уворот не только, как источник “Ей ты увернулся!” моментов, но и как возможность собрать полноценного танка через додж. Наличие вариативности в экипировке и инфляция параметров создавали проблемы в реализации этой идеи. Стоило нам допустить возможность абуза, или недосмотреть комбинацию элементов экипировки — игроки тут же находили возможность использовать это для создания бессмертных или почти бессмертных билдов.
Также отсутствие псевдослучайности в расчете шанса на попадание — было откровенно плохим решением. Оно ухудшает опыт игроков, создавая раздражающие серии из промахов и попаданий. Что также ограничивает дизайн врагов. Добавляя противников с высоким значением уворота, дизайнер потенциально создает очень скучные бои. Верткий противник может уже не представляет угрозы для отряда, но его приходится долго и нудно добивать через серии промахов.
Мы понимали, что в преддверии релиза ПвП боев, нельзя было оставлять механику уворота в том состоянии, в котором она была и нужен реворк.
Вводные
К новой механике было несколько требований:
- Оставить возможность танковки уворотом. Она расширяет пространство доступных решений для игрока. Мы считаем это важным для того опыта, за которым игроки приходят в Wasteland Punk
- Механика уворота должна быть максимально понятной игроку. Ему нет нужды знать все нюансы её работы.Но в бою, он должен легко оценивать шансы на попадание по цели
- Убрать возможность существования неуязвимых персонажей
- Сохранить возможность скейла доджа у персонажей и противников
Поиски
Началось все с исследования различных подходов к реализации механики. Было выделено два основных решения:
- Классическая реализация с процентами уворота. Итоговый шанс попадания получался из разницы между шансом на попадание и уворотом. Такая реализация легко читается игроками, но плохо дружит со скейлом и инфляцией параметров.
- Рейтинговые системы — в данном случае конкретное значение уворота прогоняется через функцию имеющую предельные значения. Итоговый шанс на попадание мог рассчитываться как вычитанием уворота из шанса на попадание, так и сложными математическими функциями. Это позволяет скейлить уворот бесконечно, но страдает читаемость. Игрок может только примерно оценивать шанс на попадание по противнику в отдельный момент времени.
Математика внутри этих типов может быть очень разной, как и наличие вариантов псевдорандома для итогового шанса на попадание. Но в чистом виде, ни один из вариантов нам не подходил. Классика очень плохо работает со скейлами, а рейтинговые системы плохо читаются игроками в отдельный момент боя. Решение подсказала РПГ в сеттинге “жуткого-вестерна” Hard West.
Вкратце, в этой прекрасной игре у персонажей есть параметр “Удача”. Этот параметр помимо прочего имел возможность “поглощать”, летящие в персонажа, пули. В ходе боя он расходовался если по персонажу промахивались, и пополнялся при попадании. Посмотрев на это я понял — оно. Осталось придумать, как прикрутить к этом скейл и наложить на реалии Wasteland Punka.
Итоговая реализация
Основная идея
В начале боя персонажу назначается значение уворота, равное “базовому”. Оно рассчитывается из скорости персонажа и прямых бонусов к увороту от экипировки. Когда противник атакует персонажа, мы отнимаем от текущего значения уворота точность атакующего и получаем шанс на попадание. В случае промаха, от текущего значения уворота отнимается часть точности атаки. Процент зависит от того, была атака по одиночной цели или по области. В случае попадания — уворот персонажа принимает значение:
NewMaxDodge — новое максимально возможное значение уворота для персонажа. Игрок может увеличить его баффами.
BaseDodge — базовый уворот персонажа
NumberOfHits — количество попаданий, которое совершили по персонажу за этот бой
У итогового значения есть ограничение снизу. Оно не может опускаться ниже 30% от изначального.
Игрок может посмотреть текущий показатель уворота в любой момент боя, тапнув по персонажу или противнику
Дополнительные механики
Когда ход переходит к персонажу, он восстанавливает значение уворота в количестве равном небольшому проценту от базового. Сделано это, чтобы увеличить живучесть билдов на уворот в долгих боях.
Баффы уворота внутри боя разделены на 2 категории:
Бафф уворота дает кратковременное увеличение текущего значения уворота. Их основная задача — пережить какой-то бурст урона, в критический момент боя.
Бафф скорости же — увеличивает значение базового уворота и тем самым повышает выживаемость вдолгую. На первый взгляд такое разделение кажется лишним усложнением. Мы пошли на него, чтобы добавить больше специализации разным способностям персонажей. Тесты покажут, стоило ли это того.
Второстепенные эффекты
Второстепенные эффекты умений — не используют уворот для расчета своего шанса на срабатывания. Поэтому единственное, что мы в них изменили — добавили псевдорандом на манер CValue используемого в Dota 2. Его идея в том, чтобы привести фактические срабатывания случайного эффекта к количеству — которое будет ожидать средний игрок.
Стартовое значение CValue рассчитывается с помощью полинома от фактического шанса на триггер эффекта. Оно используется, как шанс срабатывания эффекта при первой попытке его наложения. Если эффект не сработал, для следующего расчета используется значение равное Cvalue*2. Потом на 3, 4, 5 и т.д , пока персонаж не стриггерит эффект. После чего значение CValue возвращается к стартовому значению.
Важной деталью является то, что CValue привязан к персонажу, а не к умению. Он сохраняется между боями в режиме эксплорейшена на локациях. Это сделано для компенсации того факта, что стартовое значение CValue — ниже шанса срабатывания эффекта.
Плюсы и минусы
Пока сложно уверенно говорить о том, что нам удалось получить идеальное решение для уворота в Wasteland punke. Игроки восприняли изменение положительно: проклятий в сторону уворачивающихся противников стало меньше, количество вопросов “А как работает уворот?” находится на низком уровне. Механика избавила нас от бессмертных билдов, позволила смелее “играть” с параметром уворота у противников. Настоящий тест начнется с вводом ПвП, когда игроки начнут раскручивать машину оптимизаторства на максимум. Там мы и увидим насколько система жизнеспособна.
К минусам я бы отнес усложнение расчетов боевого баланса. Из-за плавающего в ходе боя значения уворота невозможно получить достоверные данные о его влиянии на бой. Написание симулятора боя и вольное использование метода Монте-Карло помогает получить приблизительную оценку влияния, но только приблизительную.
Также у части игроков может произойти смещение сознания, когда они разгонят уворот до 100+ единиц. Однако, так как это происходит в поздней части игры, мы надеемся, что к этому моменту они уже будут понимать принцип работы уворота.
Заключение
Надеюсь, вам было интересно читать эту небольшую статью, а сама реализация показалась вам заслуживающей внимания. Возможно, мы изобрели велосипед, и кто-то где-то уже это пробовал и у него не получилось, но это наш постапокалиптический велосипед, на котором игроки покоряют пустоши Wasteland Punka. Если у вас есть идеи, или вопросы пишите в комментарии на манжетах, или приходите в их уютный телеграмм-канал.
Мы принципиально не размещаем рекламу на наших страницах, чтобы она не мозолила вам глаза, и существуем только за счет поддержки читателей и членов сообщества. Если вам нравится то, что мы делаем, и вы считаете это важным, поддержите нас так, как вам удобно:
Один комментарий
endonerios
Благодарю за статью и информацию.
Еще не попробовал игру, но после прочтения сложилось стойкое ощущение что ваш метод удачно встроился в геймплей. Это напомнило шкалу «Hope» в Darkest Dungeon.
Мне было бы интересно узнать какое количество Уворота восстанавливается при попадании атаки по герою? Как я понял, восстанавливается не вся, а только часть.