Как рассчитать боевые характеристики в браузерной игре на JS?

Начал писать браузерную игрушку на JS(react/node) по типу БК(бойцовского клуба).

Интересуют алгоритмы расчетов игровой механики.

Например:
  • Есть перс, у него лвл: 1, Сила: 7, броня: 0, уровень жизни: 35 и зеркально у противника, они вступают в дуэль. Как рассчитать урон, который один перс нанесет по-другому, есть спец формулы или как это обычно делается в играх?
  • У этих же персонажей прокачаны инстинкт(критический удар), скажем 20, у второго ловкость(уварот от ударов) - 15. Как рассчитывать в зависимости от прокачки перса, вероятность срабатывания критического удара или уварота в бою?
  • Есть 2 персонажа, один 1 лвла и у него 35 жизней, второй 10 лвл и у него 1500 жизней, как организовать восстановление жизней у персов, чтобы не слишком быстро и не слишком медленно, учитывая прокачку навыка регенерация, чем он больше по идее быстрее будет восстанавливаться. Вот вопрос по каким формулам или какому алгоритму считать.


Уверен есть какие то проверенные формулы и алгоритмы подобных расчетов, нужно более менее отбалансированное решение, чтобы бой был честный на любом уровне, а прокачка равномерная.
  • Вопрос задан
  • 2273 просмотра
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Разработка игр
software engineer
Зависит от вашего желания.

Вы можете придумать формулы самостоятельно.

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

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

Но балансировать вам все равно придется - если не формулы, так параметры, если не параметры так взаимодействие хайлевелов и лоулевелов.

И развитие игры (если оно подразумевается) всегда будет сводится к правке баланса. Я когда-то развивал MUD сервер. Около 30% работы - правка баланса.

Напишите автоматические тесты для всех вариантов боев, которые вам покажутся реалистичными и прогоняйте все ваши изменения через тесты.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
GavriKos
@GavriKos Куратор тега Разработка игр
Есть всякие разные ролевые системы. Из сложных это S.P.E.C.I.A.L, D&D, Pathfinder и еще пачка подобных. По ним есть мануалы в т.ч. как считать урон, уровни и вот это все. И по ним (по двум последним так 100%) есть мануалы в открытом доступе - берите и читайте (называются обычно rulebook, но не факт что так во всех системах).

Можете оттуда подрезать чего (если лицензия позволит), можете заглянуть туда и на основе составить что то свое.

Ну и вон в похожих вопросах спрашивают про литературу о балансе - ее тоже почитайте.

Дополнено: ваших данных недостаточно, чтобы дать конкретную формулу. Банальные вопросы - влияют ли статы на урон? А какие статы есть? А шмот? А вот это все? Система должна быть цельной, поэтому даже посоветовать конкретику не могу )
Кстати формулы БК можно поискать в открытом доступе - исходники вроде открывали.
Ответ написан
Комментировать
Griboks
@Griboks
Обычно разработчики сами придумывают формулы и коэффициент на основе тестов. Например, можно вычитать шанс уворота из шанса крита, а можно перемножать их.
Ответ написан
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
Нету никаких формул, в каждой игре дизайнер выбирает то, что ему больше нравится. На одних формулах баланс не строится, баланс это состояние всей системы, куда входят все характеристики и шмотки и всё, что вы ещё туда засунете. Если сами придумать не можете и нравится как в БК, то можете стырить у них дизайн, так все делают.

От уровня в бою вряд ли что-то должно зависеть, от уровня зависит сила и остальное, но в самом бою должны участвовать только боевые характеристики, не мешайте всё в одну кучу. Начните с простой схемы, где есть только сила удара и здоровье, поиграйте с ней и посмотрите, потом уже навешивайте всякую регенерацию и прочее.
Ответ написан
Комментировать
Exploding
@Exploding
wtf?
Определите начальные (базовые) значения для своих параметров. Как бы "для голого героя 1 уровня". Жизни, энергия, etc например, будет числом > 1, а для характеристик таких как защита, скорость "чего-то там..." - использовать коэффициенты (голый персонаж имеет например, базовый коэфф. защиты 1). У одежды соответственно также имеется коэфф. который прибавляется к базовому при одевании на персонажа. Ну и потом просто уже расчет... суммировали защиту, атаку, определили рандомом крит там какой-то или отворот ну и посчитали:)
Т.е. все основано на коэффициентах: аналогично и с большинством других показателей, таких как уровень игрока например, он также просто прибавляет к базовым характеристикам свой коэфф. и вы его учитываете при расчете боя или что там у вас будет))
Наверно так.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы