Как составить алгоритм выбора наиболее эффективной команды героев?

Интересуют ваши размышления, предложения или даже решения поставленной задачи.
Задача поставлена (придумана) мной.

Существует много компьютерных игр, где герои сражаются друг с другом. Известно, что один герой эффективен относительно другого.
Пусть эффективность героя определяется числом от 0 до 100. Где 0 - абсолютно неэффективен, а 100 максимально эффективен.
Пусть всего 4 героя. Пусть можно выбрать команду из 3х героев. Герои могут быть не уникальными (можно выбрать 3 одинаковых героя).
Бои идет команда на команду (3 на 3).

Пример таблицы эффективности
fa65c40a98f7464f98611ceed558ecc9.png
Например:
Герой1 эффективен относительно Героя1 на 50 единиц. Проще говоря, при их битве шансы на победу 50 единиц из 100 возможных (50%). Что логично.
Герой1 эффективен относительно Героя2 на 60 единиц. Т.е. при битве Героя1 с Героем2 шансы на победу Героя1 60 единиц. Наверно Герой1 победит...
Герой2 эффективен относительно Героя1 на 40 единиц.

Команда противника выбрала 3х героев.
Как выбрать свою команду из 3х героев, наиболее эффективную команде противника? Какой будет алгоритм?
  • Вопрос задан
  • 382 просмотра
Пригласить эксперта
Ответы на вопрос 2
Если команда противника уже определена, а размеры команд такие, какие Вы описали (скажем до 5-6 персонажей), то полным перебором. (Вы кстати не рассказали о правилах ведения боя - один на один один бой или выживший может помогать другим "коллегам" и т.п.)

Если команда противника еще не определена, то теория игр и минимаксный подход.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Выбор, чтобы понять: "сможет ли выбранный герой кого-то победить?" можно определить так: суммарная эффективность (сумма разниц показателей урона выбранного героя с героями противника) выбранных героев должна быть больше нуля.

S=(A1-B1)+(A1-B2)+(A1-B3) > 0 => ∞

Т.е. перебирать, чтобы эффективность каждого была положительна и стремилась к нулю (минимальный запас перевеса или минимакс).
Всё остальное - это оптимизация.

Я бы еще добавил такие параметры (коэффициенты, которые ещё нужно более детально прорабатывать), как:
1. урон атаки каждым из возможных способов атаки (АТАКА)
2. время перезарядки каждого из возможных способов
3. возможность атаки каждого типа цели
4. дальность атаки до каждого типа цели
5. защита каждым из возможных способов (ЗАЩИТА)
6. время восстановления защиты каждого из возможных способов защиты
7. возможность защиты от каждого типа атаки
8. скорость передвижения каждым из возможных способов (ПЕРЕДВИЖЕНИЕ)
9. свобода передвижения (полная - когда летает, частичная - зависит от ландшафта, стационарная - например, защитная турель или бункер)

При пошаговой игре: время перезарядки может быть рассчитано, как количество атак за ход.
Большая разница тут: ПОШАГОВЫЙ или REAL-TIME бой.
Я тут вспомню про старик (StarCraft - RTS от Blizzard):
1. Когда загораживают выход двумя MCV (рабы) которые умеют друг друга чинить, а за ними ставят пару маринов, которые отбивают полчища, пока те атакуют рабов. Вроде бы, при любом расчёте: убить 2-х маринов и 2-х рабов - не проблема, если у тебя 6 маринов и при любом просчёте - это будет явно видно!
Однако, как показывает реальность: всё зависит от конкретного ландшафта/местности и умения стратегически мыслить.
2. Маринов ставят за здания полукругом с равным удалением для одновременной атаки перед входом, если атакуют войска ближнего боя (например, зерлинги): сделано, чтобы те, кто вбегает : оказывается сразу под огнём всех маринов и, чтобы убить всех этих маринов, нужно атаковать одновременно каждого с небольшим превосходством, что сделать мышью - практически нереально.
3. Банальный лабиринт: когда есть узкий проход и в ближнем бое может участвовать лишь несколько единиц, остальные стоят и ждут (или умирают под обстрелом).
Варианты создания лабиринта: узкие проходы на местности, специфичная застройка, специфичная организация войсковых единиц (юнитов) или любые сочетания всего перечисленного.

Многое зависит от доп.данных и по этой таблице - не возможно ответить на Ваш вопрос. Нужны ещё данные.
Ответ написан
Ваш ответ на вопрос

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

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