Возраст войны
Age of War AI, проект, на который я потратил отвратительное количество времени, который превратился в массовый код спагэти. Это был мой первый большой проект, и он показал мне, насколько мне пришлось учиться, потому что мне не хватало (и я все еще делаю, скорее всего) во всех областях. В контексте этого проекта я сделал следующее:
Как не делать проект
- Получите игру Vanilla Age of War, сделайте модуль, который извлекает данные через библиотеку OpenCV, когда игра продолжается и подает его в аккуратный алгоритм. Что я не понял, так это то, что оценка от 30 до 50 агентов в игре, которая не ускоряется, и среднее время игры в 10 минут на сеанс, для обучения, требуется действительно много времени, и это не дало существенных результатов
- Получите чит -двигатель, поймите, что он не работает с этой конкретной игрой для того, кто знает, какая причина, затем найдите декомпилятор для флэш -игр и введите сценарий в игру, который порождает текстовые файлы, чтобы обойти всю вещь OpenCV для получения значений. Получил немного лучшие результаты, так как мне удалось ускорить игру X2 с помощью чит -двигателя, но все же ему не хватало.
- Получите единство. Поскольку я уже нашел путь в игровой код, я обратно разработал все ИТ -механики и сделал довольно верную симуляцию в единстве, у которых были такие же параметры, как и в оригинальной игре.
- Моделируйте 50 среда в единстве с 10 -кратной скоростью и заставьте их общаться через TCP с помощью моего сценария Python, который теперь имел аккуратный менеджер Бога для всех этих сред и их соответствующих действий. Здесь я на самом деле начал видеть некоторые значительные результаты и стратегии, разработанные и управлять, чтобы выиграть в обычном режиме Yay. Но я хотел Мо
- Полностью переключитесь на агенты Unity ML, по существу отказываясь от сценария Python, Train и Agent с PPO и получите его после тонны переключения параметров, и его функции заставляют его иметь довольно хорошую стратегию, которая выигрывает игру в жестком режиме
- Проверьте его в оригинальной игре и запишите его выиграть и поймите, что вы потеряли 2 месяца в проекте, который мог быть закончен менее чем за 3 недели
- Все еще сделайте библиотеку визуализации для аккуратного, используя маним математического двигателя, потому что я нашел несколько классных видео на YouTube по теме, которые не опубликовали их репозитории
Вы можете увидеть обзор этой боли здесь - я вернусь на 100% на этот канал, чтобы довести ее как минимум 1 м, но сейчас у меня есть другие цели, чтобы продолжить.
Бег на Python 3.7.9
Входные данные:
- Количество войск в обучении (1 вход)
- Вражеский HP - процент общего состояния здоровья (1 вход)
- Мой HP - процент общего здоровья (1 вход)
- Деньги - нормализованы по базовой стоимости единицы (Money/stod_of_basic_unit) (1 вход)
- XP - может обновить возраст или нет (1 вход)
- Может активировать способность - от 0 до 1 восстановления (1 вход)
- Мои войска на земле тип 1, 2, 3, 4 (4 входа)
- Вражеские войска на земле тип 1, 2, 3, 4 (4 входа)
- Количество доступных слотов пушки (1 вход)
- Возраст игрока - один горячий кодированный (5 входов)
- Вражеский возраст - один горячий кодированный (5 входов)
- Массив с турелями и турелями возраст (максимум 4) (1 вход для типа, так как они становятся все более сильнее и 1 вход для восстановления возраста) (2 для каждого слота) (8 входов)
- Где происходит текущая битва (0-1 Ваша база на вражескую базу) (1 вход)
Выходы:
- Создать войска уровня 1, 2, 3 (3 действия)
- Создать войска уровня 4 для космического возраста (1 действие)
- Купить пушечный слот (1 действие)
- Купить пушечный уровень 1, 2, 3, первый доступный слот (3 действия)
- Продавать пушку в определенном слоте (4 действия)
- Подождите (1 действия)
- использовать способность
Зависимости:
- Numpy
- весло ocr
- Open-CV
- Scipy
- аккуратный питон
pip install numpy paddlepaddle paddleocr opencv-python scipy neat-python
Активы работают только для этого конкретного разрешения, если вы хотите изменить игровое разрешение, вам придется соответствующим образом изменить размер активов (например: сделать игру и активы x% меньше)
Вы можете скачать архив, который я использовал для игры отсюда