I этап
Конечно, писать для этого клон WoT нецелесообразно и невыполнимо, поэтому я решил снизойти до уровня абстракций и вероятностей.
Т.е. например, что бы убедится, что при шансе попадения 80% мы из ста раз попадем примерно 80 не нужно писать всю игру и стрелять 80 раз. В этом случае достаточно просто рандома.
Будет создана модель, имеющая в себе все необходимые сущности в достаточном количестве. После чего будет запущена серия тестов в огромных количествах (сотни тысяч), а собранная статистика по результатам экспортирована в любой простой и доступный всем формат (например, csv). А потом будем делать анализ и выводы.
Вторым этапом будем пробовать балансировать результаты через доступные балансеру возможности. Но это потом.
Что нужно от вас
Интересные идеи, которые могут приблизить модель к оригиналу, или просто добавить разнообразия.
Каркас модели
(N - не переменная, а любое натуральное число, которое будет подобрано позже.)
Сущность бой
Бой, это просто одна игровая сессия. При создании боя выбирается случайная карта, набор из N случайных игроков.
Далее последовательно происходит N этапов.
На каждом этапе каждый из игроков совершает какое либо действие. У игрока есть локальные очки времени, которые он тратит на выполнение этих дествий. Они даются в определенном количестве каждый этап, и не могут переходить на следующий.
Сущность карта
Представляет собой граф из N вершин. Генерируется в самом начале теста, до запуска боев.
Вершина имеет отпереленный тип (равнина/холм/лес/город), и может содержать танки игроков. Имеет разные локальные добавки к вероятностям.
Ребра могут определять, возможна ли стрельба и перемещения между вершинами в обоих направлениях. Также ребра имею стоимость движения через них в обе стороны.
(Если проезд в обе стороны невозможен, то ребра просто нет. Движения между вершинами, не имеющих связи невозможны.)
Сущность класс техники
По сути, лишь список прибавок процентов для конкретной техники в бою. Также поможет в дальнейшем для сортировки информации.
Сущность техника
Имеет атрибуты:
- скорость
- заметность и дальность обзора
- лобовая и боковая броня
- хп
- точность, дальность стрельбы (Можно объединить в коеффициент)
- разовый урон, скорострельность (Можно объединить в ДПМ)
Любой из перечисленных атрибутов может с определенной вероятностью получить урон.
Список действий игрока
- Перемещение
- Стрельба
- Вход/выход в укрытие
Сущность игрок
Имеет некий числовой эквивалент адекватности (опыт). Этот эквивалент распределяется (как в RPG) в целую тонну разных коэффициентов в виде добавок к общим атрибутам техники (точность, скрытность), личный опыт для каждой техники и карт (например, повышает шанс спрятаться, быть увиденным и т.д).
Сущность ИИ
Определяет выбор совершаемых действий. Самая сложная сущность, поскольку учитывает уровень опыта игрока.
Неопытный игрок не становится в укрытие, стоит под обстрелом, рвется сломя голову вперед, реже и хуже стреляет, легче обнаруживается, и может даже атаковать своих.
Опытный игрок делает все наоборот.
В общем пока так. Сейчас подготавливаю базовые классы и функции.