Об этом проекте

Generals.io Bots — это высокопроизводительный симулятор стратегической игры generals.io, написанный на Python поверх JAX и предназначенный для исследований в области обучения с подкреплением. Он предоставляет быструю функциональную среду, в которой агенты могут обучаться и оцениваться, а также инструменты для развертывания агентов на живых серверах generals.io. Ключевые характеристики, описанные проектом: - Полностью JIT-компилируемый симулятор JAX с поддержкой векторизации vmap для крупномасштабного параллелизма. - Чисто функциональный дизайн с неизменяемым состоянием и воспроизводимыми траекториями. - Поддержка развертывания в реальном времени на серверах generals.io. - Встроенный GUI для визуализации игр и отладки поведения агентов. Установка выполняется клонированием репозитория и запуском pip install -e . В README отмечается, что симулятор соответствует текущим правилам игры, с утверждением, что 10 000 рейтинговых игр, воспроизведенных через него, совпали с собственным движком generals.io после каждого хода. Начало работы: класс GeneralsEnv принимает размеры сетки и предел усечения. Вызов reset возвращает пул автоматического сброса плюс начальное состояние. Агенты реализуют интерфейс act(observation, key); в README показаны RandomAgent и ExpanderAgent в качестве примеров. Игровой цикл получает наблюдения для каждого игрока, объединяет действия и выполняет шаг среды, которая автоматически сбрасывается из предварительно сгенерированного пула. Векторизованный пример демонстрирует запуск множества сред параллельно с помощью jax.vmap, используя общий пул и пакетные состояния. Среда поддерживает игры 1v1, N-игроков в режиме "каждый сам за себя" и командные игры. Для команд перемещение на клетку товарища по команде объединяет армии и передает клетку; захват генерала передает клетки жертвы с уменьшением армий вдвое и устраняет этого игрока; команда проигрывает только тогда, когда падают все ее генералы, и последняя оставшаяся команда побеждает. Обзор разделяется внутри команды, и наблюдения включают союзные клетки, количество союзных земель и количество союзных армий, при этом поля противника охватывают все вражеские команды вместе. Наблюдения раскрывают такие поля, как армии, генералы, замки, горы, занятые/противоположные/нейтральные/туманные клетки, структуры в тумане, количество земель и армий, временной шаг и союзные поля. Хелпер as_tensor() объединяет первые 14 полей в тензор (14, H, W), при необходимости добавляя союзные каналы. Действия представляют собой массивы из пяти целых чисел: пропуск, строка, столбец, направление и разделение. Хелпер compute_valid_move_mask возвращает допустимые ходы в виде маски (H, W, 4). Развертывание использует generals.remote.autopilot с агентом, user_id и lobby_id для подключения к живым серверам generals.io. В README включена цитата BibTeX для статьи arXiv 2025 года под названием "Artificial Generals Intelligence: Mastering Generals.io with Reinforcement Learning" авторов Матея Страки и Мартина Шмида.