Формулы расчета характеристик персонажа

Идеи
Большой минус в сетевой игре - это то, что нельзя нажать Save, конечно можно сказать/подумать
раз начал раунд - значит это твои проблемы, что тебе нужно в школу/институт/на работу.
Также есть интернет - его скорость и качество также иногда желает хотеть лучшего - отсюда лаги.

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

В "7 Лабиринтов" движок игры (в математическом или геймплейном плане) - каждый игрок (нейтрал) ходит за ход n шагов - которые определяются его скоростью, на каждый шаг нужно дать игроку(человеку)
максимум t времени. Получается, что на один ход игрок получает t*n секунд времени.

Отсюда вопрос, сколько можно ждать по другую сторону браузера? А также диапазон n.
Допустим минимальное количество ходов для игрока пример равному 3, максимальное (при всех бонусах), примерно в два раза больше - 6.
Если взять 30 секунд на один ход - то получается при максимальном количестве ходов общее время ожидания будет не меньше 180 секунд или три минуты. В принципе, кажется не так уж и много, но если в одном лабиринте будет 11 игроков?, тогда получается последний будет ждать полчаса до своего хода.

Решений из данной ситуации несколько.

  • Перелопатить сюжет и пусть в один лабиринт игрок попадает рандомно - каждый в свой мир, соответственно два игрока не смогут оказаться в одном лабиринте
  • Сделать динамичное вычисление времени хода, т.е. если при 2-3 игроков - 30 секунд, то допустим при 4-8 - 20 секунд, 9-15 - 10 секунд.
  • Сделать игровой запрет на нахождение в лабиринте более 5 игроков

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

    Кажется также наименее вероятным использование второго варианта - при количестве игроков более 10,3 секунды на ход - это вообще свинство, особенно при плохой скорости инета.
    Иными словами - тут нужно подумать...

    Параметры

    Ну куда же без них?

  • Выносливость(Stamina) - параметр, от которого будет зависеть единицы здоровья
  • Сила(Strength) - параметр, от которого будет зависеть физическая сила и урон персонажа
  • Ловкость(Dexterity) - параметр, от которого будет зависеть скорость передвижения, возможность уклонения/блока и разные другие фичи
  • Интеллект(Intellect) - от этого будет зависеть способности применения разных предметов
  • Зоркость(Зоркость) - определяет, на сколько клеток видит персонаж
  • Вычисляемые характеристики

    Начнем, пожалуй, с самого основного - здоровье, его не купишь, его легко потерять и т.п.
    В игровом мире этот параметр должен быть тесно связан с параметром наносимого урона, иными словами чтобы два одинаковых персонажа могли нанести урон здоровью до 0, при не очень большом количестве ходов.
    Поясню почему, допустим у некого персонажа будет HP(Heath point) равный 100, а урон равный 2, или даже 1, соответственно для победы над точной копией самого себя потребуется 100/2 = 50 ходов, даже по 30 секунд это больше 20 минут реального времени, что недопустимо.
    Т.к. нам не известны все величины, предположим, что основные параметры на первом уровне равны 10.
    Тогда HP = 2.5*Stamina = 25

    Урон(Damage) = ...

    Ну постоянно одинаковый урон это не очень интересно, в игре всегда должен быть элемент случайности, поэтому почти во всех играх есть минимальный и максимальный урон.
    Решим что параметры минимального и максимального урона зависят от типа оружия, силы и ловкости, вроде как - чем быстрее замахнешься и сильнее ударишь и смотря чем, например деревянной скалкой менее больнее, чем чугунной сковородкой.
    Тип оружия - кулаки, базовый коэффициент эффективности урона оружием(k_weap_min,k_weap_max) 1-1 (значение взято с потолка)
    Урон будет зависить от силы(постоянно) и от ловкости(переменно), например
    damage_min = Strength/10 + Dexterity/20
    damage_max = Strength/10 + Dexterity/15
    т.е. для нашего базового персонажа урон 1.5-1.67, урон кулаком (умножаем на коэффициент эффективности оружия)
    будет также равен 1.5-1.67. Без округления, просто HP будет показываться с округлением вверх.

    От чего еще может зависеть урон? Конечно от здоровья, вернее от отношения текущего к нормальному,
    вообще слишком нереалистично выглядит когда существо с HP=1, бьет также как и здоровое, оно же истекает кровью и на последнем дыхании!
    Поэтому введем понижающий коэффициент, он будет в пределах k_hp={0.5..1} от урона в зависимости от соотношения единиц здоровья к базовому значению.
    k_hp = max(hp_cur/hp_base,0.5)

    т.е. для персонажа с базовым здоровьем 25, а текущем 10, коэффициент от жизни будет равен 0.5 (max(10/25,0.5)=max(0.4,0.5))
    и урон кулаком соответственно 0.75-0.84.
    Сам урон выбирается случайным образом из диапазона

    Повреждения от урона будут зависит от степени защиты(брони) defence, для обычной легкой экипировки броня = 1,
    для (допустим) хитина пауков = 5, т.е. повреждения = damage*(1/defence)

    Количество ходов(max_turn)
    Однозначно это характеристика вычисляется от ловкости, причем ее диапазоны мы примерно знаем (не больше 6)

    max_turn = (dex/1.5)^0.3 + 1.5, с округлением до целого, формула взята эмпирически, просто при базовом
    значении ловкости количество ходов = 3, при значении 40 = 4, при 200 = 5, что позволит держать количество ходов в рамках.
    Также можно придумать такой параметр который будет увеличивать/уменьшать количество ходов на процент, например при разной территории или обуви.

    Вопрос, стоит ли уменьшать количество ходов при неполной жизни?
    Наверное стоит, но не сами шаги, а в формуле ловкость, чтобы при большой ловкости, у персонажа был больший шанс убежать, формулу понижения можно использовать ту-же, что и при уроне

    Зоркость - возможность видеть на n клеток. скорее это будет фиксированный параметр для каждого типа персонажа, с возможными уменьшаемыми/увеличивающими коэффициентами.
    Допустим для персонажа - тип "человек", зоркость = 30, соответственно видит на 30/10 клеток.

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