Я разрабатываю стратегию стратегии в реальном времени, где ИИ будет отвечать за управление большим количеством единиц (возможно, 1000+) на большой гексагональной карте.
Единица имеет несколько точек действия, которые могут быть израсходованы на движение, нападение на вражеские юниты или различные специальные действия (например, создание новых юнитов). Например, танк с 5 точками действия может потратить 3 на движение, а затем 2 на стрельбу по врагу в радиусе действия. Различные единицы имеют разные затраты для разных действий и т.д.
Некоторые дополнительные примечания:
- Выход AI - это "команда" для любого данного блока.
- Очки действий назначаются в начале периода времени, но могут быть потрачены в любой момент времени (это позволяет многопользовательские игры в режиме реального времени). Следовательно, "ничего не делать и сохранять точки действия для более позднего" - это потенциально эффективная тактика (например, пушечная башня, которая не может двигаться, ожидая, когда противник попадет в зону действия огня).
- Игра обновляется в реальном времени, но AI может получить согласованный снимок состояния игры в любое время (благодаря состоянию игры, являющемуся одной из устойчивых структур данных Clojure).
- Я не ожидаю "оптимального" поведения, просто то, что не является явно глупым и обеспечивает разумную забаву/вызов, чтобы играть против
Что вы можете посоветовать с точки зрения конкретных алгоритмов/подходов, которые позволят правильно сбалансировать эффективность и разумное поведение?