Боевой ИИ
MCE использует подключаемый паттерн стратегий для боевого ИИ. Система ИИ построена вокруг базового класса BattleAI и набора компонентов BattleAction, которые можно комбинировать для создания различных уровней сложности и стилей поведения.
Архитектура
Конвейер ИИ работает в два слоя:
- BattleAI -- Точка вх ода, получающая текущее состояние боя и возвращающая
BattleAction. - Компоненты BattleAction -- Отдельные блоки принятия решений, оценивающие один аспект боя (например, "стоит ли использовать суперэффективный приём?" или "стоит ли переключиться на устойчивого монстра?").
Экземпляр BattleAI содержит упорядоченный список компонентов BattleAction. Он оценивает их в порядке приоритета, и первый, выдавший допустимое действие, побеждает.
Встроенные стратегии ИИ
MCE поставляется с несколькими стратегиями ИИ, которые можно комбинировать:
RandomBattleAI
Простейший ИИ. Выбирает случайный допустимый приём каждый ход.
- Сложность: Очень лёгкая
- Применение: Дикие встречи, тренеры ранней игры
- П оведение: Случайный выбор из доступных приёмов. Без стратегического мышления.
PerformEffectiveMove
Выбирает приём, наносящий наиболее эффективный урон текущей цели.
- Сложность: Средняя
- Применение: Тренеры середины игры, лидеры залов
- Поведение: Рассчитывает эффективность типов для каждого доступного приёма и выбирает лучший. Не учитывает изменения характеристик и статусные приёмы.
PerformRandomMove
Аналогичен RandomBattleAI, но со взвешенным выбором приёмов.
- Сложность: Лёгкая
- Применение: Тренеры низкого уровня
- Поведение: Случайный выбор приёма с небольшим предпочтением атакующих приёмов перед статусными.
Встроенные компоненты действий
Эти компоненты можно компоновать в пользовательские стратегии ИИ:
| Компонент | Описание |
|---|---|
PerformEffectiveMove | Использовать приём с лучшей эффективностью типов |
PerformRandomMove | Использовать случайный приём |
MegaOrGigaIfCan | Активировать Мега-эволюцию или Gigantamax, если доступно |
SwitchToEffectiveMonster | Переключиться на члена отряда с преимуществом типа |
UseBattleItems | Использовать лечебные или статусные предметы при низком HP |
IfWildWithRunChanceRun | Дикие монстры могут попытаться сбежать |
Настройка ИИ для каждого тренера
Каждый NPC-тренер может иметь свою конфигурацию ИИ:
- В данных
Actorили встречи тренера найдите поле AI Configuration. - Назначьте ScriptableObject
BattleAI. - Настройте список компонентов действий и их порядок приоритета.
Примеры конфигураций:
Лёгкий тренер (Маршрут 1)
1. PerformRandomMove
Средний тренер (головоломка зала)
1. MegaOrGigaIfCan
2. PerformEffectiveMove
3. PerformRandomMove (запасной)
Сложный тренер (Чемпион)
1. MegaOrGigaIfCan
2. SwitchToEffectiveMonster (при невыгодном положении)
3. UseBattleItems (когда HP < 25%)
4. PerformEffectiveMove
5. PerformRandomMove (запасной)
Интерфейс IBattleAI
Для пользователей DLL-уровня система ИИ доступна через базовый класс BattleAI. Хотя вы не можете изменить внутреннюю реализацию без исходного кода, вы можете:
- Создавать новые ScriptableObject'ы
BattleAIв редакторе. - Настраивать список компонентов действий через Inspector.
- Назначать их тренерам.
Ключевой интерфейс:
public abstract class BattleAI : ScriptableObject
{
// List of BattleAction components evaluated in order
public List<BattleAction> Actions;
}
public abstract class BattleAction : ScriptableObject
{
// Evaluate whether this action should be taken
// Returns null if this action does not apply
public abstract BattleActionResult Evaluate(BattleContext context);
}
Интеграция ML-Agents
MCE включает экспериментальный ИИ на основе ML-Agents для продвинутой сложности:
MLBattleAI
Использует Unity ML-Agents для принятия решений на основе обученной нейронной сети.
- Сложность: Варьируется (зависит от обучения)
- Применение: Тренеры эндгейма, соревновательный ИИ, исследования
- Настройка: Требуется пакет ML-Agents и обученная модель
Обучение ИИ
- Установите зависимости ML-Agents:
.\MLAgentsInstall.ps1 - Настройте параметры обучения в
MLAgentsConfig/OpenMonAgent.yaml - Начните обучение:
.\RunMLTraining.ps1 - Мониторинг через TensorBoard:
.\ViewMLResults.ps1 - Экспортируйте обученную модель (файл
.onnx) - Назначьте модель компоненту
MLBattleAI
Класс MCEBattleAgent определяет пространства наблюдений и действий:
Наблюдения (что видит ИИ):
- HP% своего монстра, типы, стадии характеристик, состояния статуса.
- HP% монстра противника, типы, стадии характеристик, состояния статуса.
- Доступные приёмы и их типы.