游戏生成工具

Game Forge 是一个将自然语言描述转化为可玩浏览器游戏的AI工具,支持平台游戏、俯视游戏和无限跑酷三种游戏类型,通过分布式服务管道实现游戏设计、资产生成和代码组装。

  • by game-forge-studio
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Nier0o/game-forge

使用说明

游戏锻造

Game Forge将自然语言描述变成了一个真实的、可玩的浏览器游戏。用户描述他们想要什么,通过AI聊天优化设计,并收到直接在浏览器中运行或可以下载并离线播放的Godot 4 HTML5导出。

该系统是一个由九个服务组成的分布式管道:人工智能规划器对请求进行分类并生成结构化游戏设计,资产生成器使用Stability AI生成精灵、背景和音乐,代码汇编程序根据该设计构建经过验证的Godot项目,构建器服务编译并导出该项目-所有这些都由REST API和React前端背后的无状态编排器协调。

目录

概述

传统游戏引擎需要编程和艺术技能才能玩一个原型。Game Forge消除了简单2D游戏概念的障碍:用户键入如下提示 “一个黑暗的幻想平台游戏,骑士在一座废墟城堡中战斗”,系统计划、说明、评分、组装和编译一个工作游戏,而无需任何手动引擎工作。

该平台支持三种经过验证的游戏原型-- 平台游戏, 自上而下的,以及 无尽的奔跑者 --每个都有一个预先编写的、经过Godot验证的行为、武器和获胜条件的目录作为支持。这将生成限制在保证编译和运行的组合上,以无限的创作自由换取每次请求的可玩结果。

截图

生成的平台程序,在浏览器中播放 独立运行的HTML5导出 在Godot编辑器中打开的组装项目

建筑学

                ┌───────────┐
                │ frontend  │ :3000   React UI
                └─────┬─────┘
                      │ /api/*
                ┌─────▼─────┐
                │  backend  │ :5000   REST API + auth + /internal
                └─────┬─────┘         owns User, Chat, GameProject,
                      │               GenerationJob, Build
                      │ POST /generate
                ┌─────▼─────┐
                │  server   │ :6100   Orchestrator (HTTP only,
                └─────┬─────┘         no DB, no storage)
        ┌─────────────┼──────────────┬──────────────┐
        │             │              │              │
   ┌────▼────┐  ┌─────▼─────┐  ┌─────▼────┐  ┌─────▼─────┐
   │ planner │  │   asset   │  │   code   │  │  builder  │
   │  :6101  │  │   :6102   │  │  :6103   │  │   :6104   │
   │  LLM    │  │  LLM +    │  │  pure    │  │  Godot +  │
   │GamePlan │  │ MCP tools │  │ assembly │  │  MinIO ↘  │
   │         │  │ + MinIO ↗ │  │ + MinIO ↗│  │ (export)  │
   └────┬────┘  └─────┬─────┘  └──────────┘  └─────┬─────┘
        │             │ MCP calls              updates Build
        │        ┌────▼────┐               via backend /internal
        │        │assets-  │ :8765
        │        │  mcp    │  Stability AI
        │        └─────────┘  image + audio
        │
        └─────────────────────────────────────────────┐
                              │                       │
                  ┌───────────┴───────────┐           │
                  │                       │           │
            ┌─────▼─────┐           ┌─────▼─────┐    │
            │   mongo   │ :27017    │   minio   │ :9000 / :9001
            └───────────┘           └───────────┘

管道流量

当用户请求生成时:

  1. 前端将提示提交给后端,后端将创建一个 GameProject, GenerationJob,以及 Build,然后交给编排者。
  2. 编排器立即返回并在后台运行管道:
    • 规划师 将提示分类为原型,并填充经过严格验证的模式 GamePlan (实体、级别、行为、武器、获胜条件)。
    • 资产 和 代码 并行运行。Asset使用LLM编写提示规格,然后确定地驱动Stability AI(通过MCP)生成精灵、背景、地形和音乐,并将所有内容上传到对象存储中。代码从预先验证的GDScript片段组装一个完整的Godot项目(不涉及LLM),并使用Godot CLI对其进行验证。
    • 建造者 下载组装好的项目和资源,运行Godot 4 CLI导出HTML5构建,并上传结果。
  3. 作业和构建状态始终被推回到后端,前端会轮询进度,直到游戏准备就绪。

服务目录

服务 港口 责任
frontend 3000 React UI——提示输入、AI聊天细化、浏览器内播放
backend 5000 REST API,身份验证,规范数据模型
server 6100 无状态HTTP编排器——无数据库,无存储
planner 6101 LLM驱动的游戏设计→ 结构化的 GamePlan
asset 6102 LLM提示作文→ MCP工具→ 稳定AI→ MinIO
code 6103 来自已验证片段库的确定性GDScript程序集
builder 6104 Godot 4 CLI导出到HTML5,上传到MinIO
assets-mcp 8765 MCP服务器封装稳定AI图像/音频生成
mongo 27017 主数据库
minio 9000/9001 用于资产和构建的S3兼容对象存储

技术栈

  • 前端: React 18、Vite、顺风CSS
  • 后端/编排器/工人: Node.js、Express、Mongoose
  • 资产服务器: Python 3.13、FastMCP、Pydantic
  • 游戏引擎: Godot 4.3(无头CLI导出到HTML5)
  • 人工智能提供商: 通过OpenRouter/Groq生成LLM,通过Stability AI生成图像和音频
  • 数据层: MongoDB、MinIO(S3兼容对象存储)
  • 基础设施: Docker Compose

入门指南

需要 Docker 桌面版.

# 1. Copy env templates and fill in secrets
cp game-forge/.env.example game-forge/.env
cp game-forge-backend/.env.example game-forge-backend/.env
cp game-forge-frontend/.env.example game-forge-frontend/.env
cp game-forge-server/.env.example  game-forge-server/.env

# 2. Edit game-forge/.env to set OPENROUTER_API_KEY and STABILITY_API_KEY

# 3. Bring up the stack
cd game-forge
docker compose up -d --build
URL 什么
http://localhost:3000 前端
http://localhost:5000/api/health 后端健康
http://localhost:6100/health 编排器健康状况
http://localhost:6101–6104/健康 工人服务
http://localhost:9001 MinIO控制台

常见操作

# Tail logs from one service
docker compose logs -f builder

# Restart a single service after editing its code
docker compose up -d --force-recreate --build planner

# Stop everything (volumes preserved)
docker compose down

# Remove everything including mongo + minio data
docker compose down -v

配置

game-forge/.env 是合成插值文件;编写替代品 ${VAR} 参考文献 docker-compose.yml 从它。

变量 默认值 用途
GEN_SERVICE_SECRET 空 服务间身份验证标头
OPENROUTER_API_KEY 空 计划、资产提示组合和后端聊天所需
STABILITY_API_KEY 空 所有图像和音乐生成都需要
PLANNER_PROVIDER / PLANNER_MODEL openrouter / qwen/qwen3-32b LLM用于游戏设计
THEME_PROVIDER / THEME_MODEL openrouter / qwen/qwen3-32b LLM用于精灵/背景/音乐提示作曲
SKIP_GODOT_EXPORT false 何时 true,构建器编写存根工件,而不是运行Godot
MINIO_ACCESS_KEY / MINIO_SECRET_KEY 必须匹配 MINIO_ROOT_USER / MINIO_ROOT_PASSWORD 在MinIO容器上

仓库的规划

Root/
├── game-forge/             ← orchestration root (this repository)
├── game-forge-frontend/    ← React UI
├── game-forge-backend/     ← REST API, auth, canonical models
├── game-forge-server/      ← HTTP orchestrator
├── game-forge-planner/     ← planner microservice
├── game-forge-asset/       ← asset microservice
├── game-forge-code/        ← code microservice
├── game-forge-builder/     ← builder microservice
└── assets-mcp/             ← MCP server (Stability AI wrapper)

测试和质量

该管道跨越九个服务,因此测试分为三层:纯功能和模型的隔离单元测试,使用Supertest对每个服务的Express路由进行HTTP合约集成测试,以及单独的运行时性能基准测试。所有外部依赖项-LLM提供程序、Stability AI、MongoDB、MinIO和Godot CLI-都在单元和集成测试中进行了模拟,因此任何套件都不需要实时API密钥、配额或正在运行的Docker堆栈。

服务 技术 测试
game-forge-frontend React 18、Vite、Tailwind CSS 65个单元/组件测试
game-forge-backend Node.js,Express,Mongoose 66单元,12集成
game-forge-server Node.js,Express 44个单元,10个集成
game-forge-planner Node.js、Express、OpenRouter 37个单元、7个集成
game-forge-asset Node.js、Express、MCP客户端 38个单元,8个集成
game-forge-code Node.js、Express、Godot组件 124个单元,9个集成
game-forge-builder Node.js、Express、Godot CLI 34个单元,8个集成
assets-mcp Python 3.13、FastMCP、Pydantic 60个单元测试
总计 522次测试,全部通过

四个专用基准套件(game-forge/benchmarks/)用于为每个AI驱动的角色选择生产LLM——游戏计划生成、代码生成、音频提示组成和视觉主题组成——通过在多个候选模型中根据固定质量标准对输出进行评分。

演出

以下指标来自12天的实际生产使用情况(33次记录的管道运行)。

度量 值
管道成功率(终端运行) 65%
平均端到端生成时间 276.5秒(≈4分37秒)
端到端生成时间的中位数 268.2秒
最快/最慢成功运行 109.7秒/453.1秒
生成可播放的网络构建 13
平均可交付捆绑包大小 67.7 MB

成功运行的每阶段延迟主要由资产生成决定(≈总挂钟时间的79%),因为角色、背景、地形和音乐对Stability AI的调用是按顺序发出的。规划约占15%,而Godot导出阶段(完全确定)仅占3%左右。

设计原则和限制

Game Forge围绕一个核心权衡而构建:在无限的创作自由之上保证可玩的输出。每个生成的游戏都是由一个固定的、经过Godot验证的原型、行为、武器和获胜条件目录组装而成的,而不是自由生成的代码,因此管道可以在输出到达玩家之前对其进行验证。

源于此设计的已知约束包括一组固定的三个受支持的原型、在重试后无法解析LLM输出时回退到通用计划、单个静止图像精灵而不是逐帧动画,以及主导端到端延迟的顺序(非批处理)资产生成。这些权衡与项目的其他设计和评估一起详细记录在 docs/.

团队

Game Forge是一个由以下人员创建的毕业项目:

  • 奥马尔·穆罕默德
  • 艾哈迈德·萨贝尔
  • 阿姆鲁·穆罕默德·谢雷
  • 奥马尔·马赫福兹