Пока просто на правах идеи - задача imho сложная.
Цель - автоматически анализировать баланс классов, находить оптимальные стратегии для пвп, проверять новые скилы, к чему приводят изменения статсов, оптимальное оружие, шмот и т.п.
В начала симуляции выбираются правила матча (запрещенные скилы, есть ли время на бафф, разрешен ли сторонний бафф или только селфы) и чары (классы, шмот, оружие, тату), 1-на-1 или пати-на-пати и т.п.
Самое интересное - симуляция боя. В каждый тик времени у каждого игрока есть набор возможных действий - использовать скил, ударить, отбежать, подбежать, забежать за спину, бафнуть, сменить оружие, переодеться, выпить банку и т.п.
Сложность в том, что в каждый момент времени возможных действий слишком много, чтобы делать полный перебор возможных стратегий. И здесь начинается самое интересное - как ограничить число перебираемых вариантов, чтобы симуляция стала реальной.
Можно вводить ограничения - например, если у мага полная мана то использовать body to mind смысла нет. Если дебафф уже наложен, кастовать его повторно смысла нет.
Можно сначала сгенерировать "стратегию" боя для каждого участника - типа: дебафнуть, подбежать, ударить, ... или: кастануть слип, Surrender To Wind, Hurricane, ... но стратегия должна быть динамической - зависить от действий противника, прохождения скилов, уровня хп/маны и т.п. например - начать бой в робе, как только маны остается меньше половины - одеть хэви. или - начать бой с дуалами, станцевать, если противник далеко - одеть лук. к тому же подбор стратегий должен учитывать новые/измененные скилы...
Главное - чтобы эта симуляция проходила через серверный движок, и использовались именно те настройки, которые будут использоваться на сервере.
Такую симуляцию можно будет использовать, например, для regression testing после правки скилов. В начале можно задать список динамических параметров - например, симулируется бой СХ против СС, меняются всевозможные тату у СХ, результат теста - лучший набор тату.
Можно будет получить реальную инфу по балансу классов, пробовать усилять слабые и снова запускать симуляцию. Находить оптимальные пары классов, много чего.
MetAleX & Almalexia