Multi-Agent Game Factory: 6 AI-агентов для генерации игр
📂 Исходный код на GitHub6 AI-агентов на LangGraph: дизайнер, сценарист, кодогенератор, ревьюер, тестировщик и арт-директор создают игру от идеи до рабочего кода с тестами и иллюстрациями.
Multi-Agent Game Factory — это пайплайн из шести AI-агентов, которые превращают текстовое описание идеи в полноценную игру: с дизайном, нарративом, кодом, тестами и иллюстрациями. Проект построен на LangGraph и работает с любой OpenAI-совместимой моделью.
Архитектура
В основе лежит линейный пайплайн из шести агентов, оркестрируемый через LangGraph StateGraph. Каждый агент получает результат предыдущего и передаёт свой_output следующему. Если ревьюер или тестировщик находят проблемы, код может быть перегенерирован (до трёх попыток).
Идея → Дизайнер → Сценарист → Кодогенератор
↓
Результат ← Арт-директор ← Тестировщик ← Ревьюер
Веб-интерфейс на FastAPI с SSE-стримингом показывает работу каждого агента в реальном времени. Все данные хранятся локально: Milvus Lite для векторного поиска, SQLite для сессий.
Шесть агентов
Каждый агент специализируется на своей задаче и верифицирует результат в собственном формате.
Дизайнер (Designer) — получает пользовательскую идею и генерирует Game Design Document (GDD) с названием, жанром, механиками и фичами. Результат — структурированный JSON, проход 100%.
Сценарист (Narrative) — на основе GDD создаёт лор, 3–4 персонажа с навыками и квесты. Результат — структурированный JSON, проход 100%.
Кодогенератор (CodeGen) — получает GDD и нарратив, генерирует рабочий Python-код игры. Код компилируется, запускается и при ошибках авторемонтируется (до двух попыток). Проход 95%+ с первого раза.
Ревьюер (Reviewer) — анализирует код по пяти измерениям: баги, оптимизация, безопасность, архитектура и стиль. Выдаёт оценку и 3–8 замечаний за прогон.
Тестировщик (Test Agent) — генерирует pytest-набор под конкретный код, запускает тесты и авторемонтирует падения. Проход 95%+.
Арт-директор (Art Director) — генерирует промпты и реальные изображения через Qwen-Image-2.0: по два персонажа и одна сцена окружения за прогон. Проход 90%+.
RAG-пайплайн
Для обогащения промптов агентов используется векторный поиск по базе знаний из пяти PDF-файлов по геймдеву (~150 КБ каждый).
Запрос → Rewriter (3 варианта) → Vector Search (Milvus) + BM25
→ Merge & Dedup → Rerank (bge-reranker-v2-m3) → Top-K в промпты
Milvus Lite работает встроенно, без внешнего сервиса. BM25 реализован кастомно с поддержкой китайского языка (bigram+trigram). Чанкинг — 500 символов с перекрытием 125.
Трёхуровневая память
Проект реализует три слоя памяти:
- Диалоговая — SQLite-таблица сессий, пользователь решает сохранить или отбросить результат
- Рабочая — LangGraph SharedState, разделяемый между шестью агентами в рамках одного запуска
- Долгосрочная — проверенный код (прошедший и ревью, и тесты) автоматически индексируется в Milvus
Нет автосохранения — после каждого прогона пайплайна пользователь видит панель «сохранить / отбросить».
Технический стек
| Слой | Технология |
|---|---|
| LLM | DeepSeek-V3.2 (сменяемый на любую OpenAI-совместимую) |
| Оркестрация | LangGraph StateGraph |
| Векторная БД | Milvus Lite (embedded) |
| Ключевые слова | Кастомный BM25 |
| Rerank | bge-reranker-v2-m3 |
| Генерация изображений | Qwen-Image-2.0 |
| База данных | SQLite |
| API | FastAPI + SSE |
| Фронтенд | Vanilla HTML/CSS/JS |
Быстрый старт
git clone https://github.com/aaron-ywl/multi-agent-game-factory.git
cd multi-agent-game-factory
pip install -r requirements.txt
# Настроить .env с API-ключом
# OPENAI_API_KEY=sk-xxxx
# OPENAI_BASE_URL=https://api.openai.com/v1
# Индексация базы знаний (только при первом запуске)
PYTHONPATH=. python3 scripts/index_knowledge.py
# Запуск веб-сервера
PYTHONPATH=. python3 -m uvicorn src.api.app:app --host 0.0.0.0 --port 8000
CLI-демо запускает полный пайплайн одной командой:
python3 demo.py run "Design a gacha card RPG with elemental combat and PvP arena"
Также доступны утилиты: баланс-калькулятор, валидатор кода, улучшатель промптов и генератор чеклистов ассетов.
API
Проект предоставляет REST API с SSE-стримингом для реалтаймового UI:
POST /api/v1/generate— полный пайплайн, синхронный ответPOST /api/v1/generate-stream— SSE-стриминг работы агентовGET /api/v1/sessions— список сохранённых сессийPOST /api/v1/sessions/{id}/save— сохранить сессию в памятьPOST /api/v1/vector/reindex— перестроить векторный индекс
Что получается на выходе
При запросе «аниме-карточная RPG с элементальной системой и PvP» пайплайн произвёл:
- GDD с названием, жанром и механиками
- Трёх персонажей с тремя навыками каждый + квесты
outputs/main.py— 8 678 символов, запускается с первой попытки- Ревью: 70/100, 4 бага и 3 оптимизации
outputs/test_main.py— 3 теста, все проходят- 3 изображения через Qwen-Image-2.0 (два персонажа + сцена)
Структура проекта
src/
agents/ — 6 AI-агентов
graph/ — LangGraph-оркестрация пайплайна
services/ — LLM-клиент, векторный RAG, генерация изображений, память
skills/ — реестр инструментов (баланс, валидация, промпты)
api/ — FastAPI-маршруты
config/ — настройки из .env
static/ — веб-интерфейс (dark theme)
data/knowledge_pdfs/ — 5 PDF по геймдеву
scripts/ — генерация PDF и индексация
demo.py — CLI-демо
Проект распространяется под лицензией MIT. Работает с Python 3.10+.