SpawnForge
SpawnForge是一个完全在浏览器中运行的开源、人工智能原生2D/3D游戏引擎。 它将基于Bevy的Rust/WWebAssembly渲染引擎与React可视化编辑器和350个MCP命令相结合,通过自然语言、可视化脚本或手动编辑实现游戏创建。游戏无需离开浏览器即可构建、测试和发布——无需安装、无需编译步骤、无需部署管道。
 
状态
为什么选择SpawnForge
- 浏览器原生 --无需下载,无需IDE设置。打开一个URL,开始构建2D或3D游戏。
- AI优先 --25个以上的AI模块和350个MCP命令让LLM和代理驱动完整的编辑器。用纯文本描述一个场景,并观察它的具体化。
- 真正的发动机 --Bevy ECS编译为WebAssembly、WebGPU渲染(WebGL2回退)、Rapier物理、空间音频、GPU粒子、骨架动画。不是玩具。
- 一个命令界面 --可视化编辑器、AI聊天和外部MCP代理都调用相同的命令
handle_command()JSON API。没有单独的“AI模式” - 立即发布 --一键发布到可共享的URL。导出为支持PWA的独立ZIP。
关键统计数据
| 度量 | 值 |
|---|---|
| MCP命令 | 41个类别中的350个 |
| 可视化脚本节点 | 10个类别中的73个 |
| 材质预设 | 9个类别中有56个 |
| AI模块 | 25+(聊天、生成、资产创建) |
| 游戏组件 | 12种拖放行为 |
| 测试套件 | 14200+次测试 |
| 渲染 | WebGPU主,WebGL2回退 |
| 发动机 | Bevy 0.18,防锈/WASM |
浏览器的开源、人工智能原生2D/3D游戏引擎。每个功能——场景创建、材质、物理、脚本、音频、粒子、拼贴贴图、动画、导出——都以JSON命令的形式公开,使整个编辑器完全可由LLM和自主代理通过 模型上下文协议。通过对话、代码或手工构建游戏。
由WebGPU提供支持(支持WebGL2回退),Rust编译为WebAssembly,以及基于React的可视化编辑器。
项目现场
| 网站 | URL | 描述 |
|---|---|---|
| 编辑 | spawnforge.localhost:1355 (dev) | SpawnForge主编辑器和平台 |
| MCP和API文件 | 华盛顿大学博士 | 公共MCP命令参考和API文件 |
| 设计体系 | design.spawnforge.ai | 故事书组件库和设计令牌 |
特性
人工智能与自动化
- AI聊天助手 --内置Claude驱动的聊天面板,带有代理工具循环。用简单的语言描述你想要什么,人工智能会执行复合动作来生成实体、配置材质、编写脚本,并在多个回合中迭代,直到场景完成。即将推出的游戏创建编排器将把任何游戏描述分解为可组合的系统(运动、相机、挑战、反馈等),并协调专业代理并行构建它们
- 复合AI动作 --8高级工具(
create_scene_from_description,setup_character,arrange_entities等等),将数十个操作批处理成单个AI调用 - 延伸思考 --为复杂的多步请求(如完整游戏设置)切换深度推理模式
- 可视化脚本 --React Flow节点图编辑器,包含10个类别的73个节点类型。非程序员通过连接视觉块来创建游戏逻辑;图编译为TypeScript
- 人工智能资产生成 --通过5个提供商集成(Meshy、ElevenLabs、Suno、DALL-E、Stable Diffusion)生成3D模型、纹理、音效、语音线和音乐
- MCP服务器 --41个类别的350个命令。任何兼容MCP的代理或LLM都可以创建场景、配置材质、设置物理、编写游戏脚本和导出完成的游戏——不需要UI交互。请参阅 MCP命令参考 查看完整的公共命令列表。
- 命令驱动架构 --每个引擎操作都是一个JSON命令
handle_command()视觉编辑器和人工智能代理使用完全相同的API - 场景背景 --内置上下文生成器为LLM提供完整的场景状态,以便做出明智的决策
- 文档系统 --通过MCP工具可搜索28多个结构化文档(
search_docs,get_doc,list_doc_topics),使AI代理能够按需学习功能
3D引擎
- WebGPU渲染 --通过WebGPU(wgpu 27)进行主渲染,并为旧浏览器自动进行WebGL2回退
- PBR材料 --基于物理的渲染,具有金属/粗糙度工作流程、UV变换、清漆、透射/IOR、视差映射、纹理支持、阿尔法模式和9个类别的56个材质预设
- 着色器节点编辑器 --Visual WGSL着色器创建,具有30多种节点类型、实时材质预览和保存/加载
- 质量预设 --低/中/高/超渲染预设,可批量配置MSAA、阴影、光晕、锐化和粒子密度
- 动态照明 --具有实时阴影和环境光控制的点光源、平行光源和聚光灯
- Skybox和环境地图 --5个内置程序立方体贴图预设(Studio、Sunset、Overcast、Night、Bright Day),具有可调节的亮度、IBL和旋转
- 物理学 --刚体动力学、对撞机、力、关节(固定、旋转、球形、棱柱形、绳索、弹簧)、碰撞事件和由Rapier 3D驱动的光线投射
- 音频 --空间3D音频、带效果链的总线混音器(混响、延迟、均衡器、压缩器)、自适应音乐(垂直词干分层)、混响区、交叉拍、闪避
- GPU粒子 --9个内置预设(火、烟、火花、雨、雪、爆炸等),可通过WebGPU计算着色器进行完全自定义
- 骨骼动画 -glTF动画播放,带有传输控制、交叉渐变、混合权重、逐滑速度和脚本API
- 关键帧动画 --具有位置/旋转/缩放/颜色关键帧、缓和模式和时间线编辑器的自定义动画片段
- CSG布尔运算 --使用基于BSP的构造性实体几何在网格图元上进行并集、相减和相交
- 程序地形 --使用Perlin/Simplex/Value噪波、雕刻工具和顶点着色生成高度图
- 程序网格生成 --拉伸二维形状、车削轮廓、阵列实体并组合网格
- 多边形建模 --编辑模式,包括顶点/边/面选择、拉伸、细分和正常重新计算
- 自定义着色器效果 --6种内置视觉效果(溶解、全息、力场、熔岩/流动、卡通、菲涅耳辉光)
- 自定义WGSL着色器 --直接在编辑器中编写任意WGSL片段着色器代码。8个内置模板(通道、颜色着色、波形失真、边缘光、灰度、脉冲辉光、UV滚动、扫描线)、实时编译状态、错误显示、Ctrl+Enter编译快捷键和场景持久性
- 后处理 -Bloom、色差、颜色分级、CAS锐化、SSAO(WebGPU)、景深和运动模糊
- LOD系统 --具有距离阈值的细节级别组件,性能预算跟踪
2D引擎
- 二维项目类型 --专用2D模式,带正交相机、排序层和精灵特定工具
- 雪碧系统 --导入PNG/WebP精灵、SpriteInspector、排序层(背景/默认/前景/UI)、Bevy精灵渲染
- 精灵动画 --通过TextureAtlas、动画片段、具有参数驱动转换的状态机进行Sprite表切片
- Tilemap系统 --多层平铺图、绘制/擦除/填充/矩形工具、平铺调色板、基于哈希的变化检测
- 二维物理 --Rapier2D集成有6种对撞机形状、4种关节类型、单向平台、表面速度
- 骨骼2D动画 --骨骼层次、蒙皮、IK约束、混合树、顶点蒙皮、关键帧动画
- AI雪碧生成 --通过DALL-E 3和SDXL生成像素艺术字符、拼贴集和子画面
编辑
- 可停靠工作区 --可移动、可调整大小的面板,具有预设布局和持久的用户自定义
- 3D/2D场景编辑器 --变换小控件、多选、捕捉、场景层次和特定于域的检查器面板
- 起动机系统捆绑包 --11个预打包的系统配置(5个3D+6个2D),具有友好的名称,如Platformer、Runner、Shooter、Puzzle和Explorer。每个捆绑包都是一个起点,而不是一个约束——每个系统都是独立可编辑的,你可以描述这些预设之外的任何游戏类型
- 游戏摄像机 --6种相机模式(ThirdPerson、FirstPerson、SideScroller、TopDown、Fixed、Orbital),在播放模式下自动激活
- 对话系统 --可视化节点编辑器,具有5种节点类型(文本、选择、条件、动作、结束)、打字机显示、分支和
forge.dialogue脚本API - 场景转换 --场景之间的淡入淡出、擦除和即时过渡
forge.scene.loadAPI - 游戏内UI生成器 --10种小部件类型、所见即所得编辑器、7个屏幕预设、数据绑定、播放模式渲染器和
forge.ui脚本API - TypeScript脚本 --沙盒脚本
forge.*API(14个以上名称空间)、启动模板、带控制台的内置编辑器 - 脚本库 --保存和共享独立脚本、导入/导出、增强的脚本资源管理器
- 材质库 --使用CSS球体预览、类别过滤器、搜索和自定义保存浏览56个内置预设
- 资产管道 --通过拖放导入glTF模型、纹理、音频和精灵
- 播放模式 --通过播放/暂停/停止和场景快照恢复立即测试游戏
- 输入系统 --可配置的预设键绑定(FPS、平台游戏、自顶向下、赛车)
- 移动控件 --虚拟操纵杆和操作按钮叠加,5点触控预设,自动质量降低
- 预制系统 --具有8+内置预制件、导入/导出和搜索的可重用实体模板
- 多场景管理 --每个项目有多个命名场景,具有场景切换、复制和导入/导出功能
- 云发布 --通过版本管理、基于层的限制和分析发布到可共享的URL
- 游戏导出 --ZIP导出,带纹理压缩、自定义加载屏幕、PWA生成
- 引导登机 --欢迎向导、交互式教程、上下文相关提示
- 在编辑器文档中 --可浏览的文档面板,带有BM25搜索、检查员上的帮助按钮、F1快捷键
- 预构建游戏组件 --12种拖放行为(角色控制器、健康、可收集、投射等)
- 响应布局 --具有紧凑型(移动)、精简型(笔记本电脑)和全桌面模式的自适应UI
建筑
MCP Server (350 commands, 41 categories) AI agents + LLM tool use
| JSON commands
React Shell (Next.js 16, Zustand, Tailwind) Visual editor UI
| JSON events via wasm-bindgen
Bevy Engine (Rust -> WebAssembly) Scene editing + WebGPU rendering
|
Game Runtime + TypeScript Scripting In-browser game executionMCP服务器和可视化编辑器共享相同的命令界面——没有单独的“AI模式” set_material 与用户拖动颜色选择器的代码路径完全相同。
致使: WebGPU主(自动检测),WebGL2回退。每个版本构建两个WASM二进制文件——前端在运行时自动选择正确的一个。
先决条件
- 锈 (稳定)与
wasm32-unknown-unknown目标 - wasm-bindgen-cli
- 20-24
- Bash(macOS/Linux)或PowerShell(Windows)用于构建脚本
安装WASM目标
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli入门指南
1.克隆存储库
git clone https://github.com/Tristan578/project-forge.git
cd project-forge2.构建WASM引擎
# macOS / Linux
./build_wasm.sh
# Windows (PowerShell)
.\build_wasm.ps1
# This compiles both WebGL2 and WebGPU WASM binaries
# and copies them to web/public/WASM build troubleshooting
| 错误 | 原因 | 修复 |
|---|---|---|
wasm-bindgen 版本不匹配 | CLI版本与 wasm-bindgen 板条箱 Cargo.lock (固定在0.2.108) | cargo install wasm-bindgen-cli --version 0.2.108 |
error[E0433]: could not find crate | 缺少WASM编译目标 | rustup target add wasm32-unknown-unknown |
doc-image-embed 链接错误(Windows) | 本机proc宏需要Windows SDK LIB路径 | 构建脚本自动检测;确保已安装Visual Studio生成工具 |
| 浏览器中的粉红色/品红色材质 | 缺失 tonemapping_luts Bevy功能 | 验证 Cargo.toml 包括 "tonemapping_luts" 在默认功能中 |
wasm-opt 未找到警告 | 可选优化步骤 | cargo install wasm-opt (非致命-构建仍然成功) |
| 引擎加载但不渲染 | WebGPU不受支持;未触发回退 | 检查浏览器控制台是否检测到WebGPU;尝试使用Chrome/Edge chrome://flags/#enable-webgpu |
3.安装web依赖项
cd web
npm install4.设置环境变量
cp web/.env.example web/.env.local
# Edit web/.env.local with your API keys (Clerk, Stripe, database, etc.)5.启动开发服务器
npm run dev打开 http://localhost:3000 在支持WebGPU的浏览器(Chrome 113+、Edge 113+或Firefox Nightly)中。
6.安装MCP服务器依赖项(可选)
cd ../mcp-server
npm install项目结构
project-forge/
├── engine/ # Bevy ECS engine (Rust -> WASM)
│ ├── src/
│ │ ├── bridge/ # JS interop — domain modules (wasm-bindgen, events)
│ │ └── core/ # Pure Rust: commands, ECS components, pending queues
│ ├── Cargo.toml
│ └── Cargo.lock
├── web/ # Next.js frontend
│ ├── src/
│ │ ├── components/ # React UI (editor panels, inspectors, dialogs)
│ │ ├── hooks/ # WASM loader, engine events, script runner
│ │ ├── stores/ # Zustand state (editor slices, chat, user, workspace)
│ │ └── lib/ # Audio, scripting, export, auth, billing, shaders
│ ├── public/ # Static assets + WASM binaries (generated)
│ └── package.json
├── mcp-server/ # MCP command manifest + tools
│ ├── manifest/commands.json # 350 commands across 41 categories
│ └── src/
├── docs/ # User-facing documentation (human + AI readable)
│ ├── getting-started/ # Installation, first scene, editor overview
│ ├── features/ # Per-feature guides
│ ├── guides/ # End-to-end tutorials
│ └── reference/ # Command reference, script API, entity types
├── specs/ # Feature specifications and sprint plans
├── build_wasm.sh # WASM build script — macOS / Linux
├── build_wasm.ps1 # WASM build script — Windows (PowerShell)
└── README.md发展
构建命令
| 命令 | 描述 |
|---|---|
./build_wasm.sh | 构建两种WASM变体——macOS/Linux |
.\build_wasm.ps1 | 构建两种WASM变体——Windows(PowerShell) |
cd web && npm run dev | 启动Next.js开发服务器 |
cd web && npm run build | 生产建设 |
cd web && npm run lint | 运行ESLint |
cd web && npx tsc --noEmit | TypeScript类型检查 |
cd web && npx vitest run | 运行web测试(约14200+个测试) |
cd mcp-server && npx vitest run | 运行MCP服务器测试 |
主要惯例
- 桥梁隔离: 仅
engine/src/bridge/可以进口web_sys/js_sys/wasm_bindgenThecore/模块是纯Rust的,没有浏览器依赖关系。 - 命令驱动: 所有引擎操作都通过以下方式表示为JSON命令
handle_command()这使得UI和程序集成都能驱动编辑器。 - 事件驱动的更新: Bevy系统通过桥接->JS回调->Zustand store->React重新渲染来发出事件。Rust没有直接的DOM操作。
代理发展
SpawnForge旨在 人工智能辅助开发六个AI编码工具预先配置了共享的执行钩子、技能和项目上下文。任何贡献者都可以在他们喜欢的工具中打开仓库并立即开始工作——所有工具都统一执行票证跟踪、代码质量和GitHub同步。
支持的工具
| 工具 | 配置目录 | 钩子 | 技能 | 默认模型 |
|---|---|---|---|---|
| 克劳德代码 | .claude/ | 自动 | .claude/skills/ | 作品4.6/十四行诗4.6 |
.github/ | 自动 | .github/skills/ | GitHub托管 | |
| Gemini CLI | .gemini/ | 自动 | .agents/skills/ | gemini-3.1-pro-preview |
| 帆板运动 | .windsurf/ | 自动 | .windsurf/workflows/ | 应用程序管理 |
| 谷歌反重力 | .agent/ + .gemini/ | 手册 | .agent/skills/ | 双子座3 |
| OpenAI Codex命令行界面 | .codex/ | 手册 | .codex/skills/ | gpt-5.3-codex |
首次设置: 安装 任务板二进制文件,然后在AI工具中打开仓库。带有自动挂钩的工具将在第一次会话时自动配置。没有钩子的工具(Codex、Antigravity)在其内部包含手动工作流程说明 AGENTS.md 文件夹。
工具快速入门
Claude Code
cd project-forge
claude # hooks auto-start taskboard, pull GitHub, display backlog一切都是自动的。Hooks在每次提示时在代码前强制执行票证,在每次响应后验证票证,将更改推送到GitHub,以及lint编辑的文件。技能通过以下方式调用 /kanban, /sync-push, /sync-pull, /planner, /builder, /cycle.
克劳德代码也有三个 子代理 (.claude/agents/):
- 规划师 (Opus)——在中创建规范的架构师
specs/,从不编写代码 - 建造者 (Sonnet)——实现专家,阅读规范并编写代码
- 验证器 (Sonnet)--QA看门人,运行测试和架构检查
GitHub Copilot
cd project-forge
# Copilot reads .github/hooks/hooks.json and .github/instructions/copilot.instructions.md钩子在会话开始(拉)、提示提交(检票口)和后工具使用(验证+推)时触发。可用技能 .github/skills/ 和 .agents/skills/.提示手动同步 .github/prompts/.
Gemini CLI
cd project-forge
gemini # reads .gemini/settings.json, GEMINI.md, AGENTS.md挂钩已配置 .gemini/settings.json 用于SessionStart、BeforeAgent、AfterAgent和AfterTool(文件编辑)。技能 .agents/skills/.
Windsurf
cd project-forge
# Windsurf reads .windsurf/hooks.json and .windsurf/rules/taskboard.md挂钩触发 post_write_code, post_run_command, post_cascade_response,以及 pre_user_prompt同步的工作流 .windsurf/workflows/.
Google Antigravity
cd project-forge
# Antigravity reads GEMINI.md (with AGENTS.md loading directive) and .agent/skills/
# No auto-hooks — run manually:
bash .claude/hooks/on-session-start.sh # start of session
bash .claude/hooks/on-stop.sh # after work
bash .claude/hooks/post-edit-lint.sh # after editing技能 .agent/skills/ (单数——反重力用法 .agent/,不 .agents/).规则在 .agent/rules/.
OpenAI Codex CLI
cd project-forge
codex # reads .codex/config.toml and .codex/AGENTS.md
# No auto-hooks — run manually:
bash .claude/hooks/on-session-start.sh # start of session
bash .claude/hooks/on-stop.sh # after work
bash .claude/hooks/post-edit-lint.sh # after editing配置中 .codex/config.toml.技能 .codex/skills/.全面执行规则 .codex/AGENTS.md.
共享挂钩系统
所有工具在中调用相同的bash脚本 .claude/hooks/带有钩子支持的工具通过其配置文件自动将它们连接起来;没有钩子的工具需要手动执行。
Tool Config (JSON/TOML)
│
▼
Shared Bash Scripts (.claude/hooks/)
│
├── taskboard-state.sh ← Library: API helpers, validation, consistency
├── github_project_sync.py ← Sync engine: push/pull with GitHub Projects v2
└── github-sync-config.json ← GitHub Project metadata钩子生命周期
| 钩子 | 脚本 | 触发器 | 它的作用 |
|---|---|---|---|
| 会话开始 | on-session-start.sh | 工具打开 | 检查任务板二进制文件,自动启动服务器,从GitHub Project中提取,显示带有优先工作建议的积压工作,警告过期工单 |
| 提示提交 | on-prompt-submit.sh | 在每个提示之前 | 检测开发意图关键字,如果没有活动票证,则阻止代码工作,注入活动票证上下文 |
| 停止 | on-stop.sh | 每次响应后 | 验证活动票证(用户故事、AC、优先级、团队、子任务),检查打开票证的一致性,将更改推送到GitHub Project |
| 文章编辑Lint | post-edit-lint.sh | 文件编辑后 | 在更改后运行ESLint .ts/.tsx 文件下 web/ (跳过测试、节点模块、覆盖率) |
| 同步推送 | sync-to-github.sh | 呼叫停止 | 警卫 gh CLI+身份验证、调用 github_project_sync.py push |
| 同步拉取 | sync-from-github.sh | 由会话开始 | 警卫呼叫 gh CLI+身份验证、调用 github_project_sync.py pull |
门票验证规则
这 tb_validate_ticket() 功能在 taskboard-state.sh 强制执行:
- 用户故事 --必须匹配正则表达式
As an?\s+.+,\s+I want\s+.+\s+so that\s+.+ - 验收标准 --至少3个完整的给定/何时/然后场景(快乐路径、边缘情况、负面)
- 描述物质 --用户故事和AC之外的技术背景至少20个字符
- 优先级 --必须是
urgent,high,medium,或low - 团队 --必须分配给工程部、项目经理或领导层
- 子任务 --至少3个实施步骤
技能参考
技能是按需加载的可调用功能。每个工具都将它们存储在自己的目录中,但都引用相同的共享钩子脚本。
| 技能 | 可用 | 目的 |
|---|---|---|
| 看板 | 全部6个工具 | 查看板、创建/更新/移动工单、验证字段、切换子任务。Claude Code使用MCP工具;其他工具使用REST API(curl 到 localhost:3010) |
| 同步推送 | 所有6个工具 | 将本地票证更改推送到GitHub项目。同步全文(描述、优先级、子任务复选框、元数据块)。通过内容哈希检测更改 |
| 同步拉取 | 所有6个工具 | 将GitHub项目更改拉到本地任务板。从复选框中重建子任务,通过ULID从元数据中重新链接票证,导入具有解析字段的新票证 |
| 规划器 | Claude Code | 架构师代理——分析请求,在中创建详细的规范 specs/,从不编写代码 |
| 建造者 | Claude Code | 实现代理——读取规范,写入Rust/TypeScript,编码后运行lint/check |
| 循环 | 克劳德代码 | 编排--运行计划→ 构建→ 验证循环,在每个循环后更新项目上下文 |
| 拱形验证器 | 克劳德代码 | 运行 check_arch.py --7条结构规则(桥梁隔离、文件大小、调度链、商店组成) |
GitHub项目同步
这 github_project_sync.py 发动机提供 双向同步 在本地任务板和 .
V2正文格式: GitHub上的每张票都包含一个结构化的主体:
**Priority:** high
[ticket description — user story, AC, technical context]
## Subtasks
- [ ] Step 1
- [x] Step 2 (completed)
- [ ] Step 3
---
- [ ]/- [x]在GitHub上呈现为交互式复选框- HTML注释不可见,但机器可解析以重新链接
- 内容哈希在不进行完全比较的情况下检测更改
- 旧v1格式(
**Taskboard:** PF-N (ULID))仍在pull时解析,并在下次推送时自动升级到v2
命令:
python3 .claude/hooks/github_project_sync.py push # incremental push
python3 .claude/hooks/github_project_sync.py push-all # full push (upgrades all to v2)
python3 .claude/hooks/github_project_sync.py pull # pull remote changes
python3 .claude/hooks/github_project_sync.py status # show sync state架构验证器
这 check_arch.py 脚本强制执行7条结构规则:
| 规则 | 限制 | 它检查什么 |
|---|---|---|
| 桥梁隔离 | 严重故障 | 否 web_sys/js_sys/wasm_bindgen 国外进口 engine/src/bridge/ |
| Rust文件大小 | 800行 | 没有Rust源文件超出限制 |
| TypeScript文件大小 | 500行 | 没有TS/TSX文件超过限制(不包括测试, .d.ts,遗产) |
| 指挥调度 | 50支火柴 | commands/mod.rs 委托给域模块,而不是单片匹配 |
| 挂起的mod.rs | 没有请求结构 | 请求类型存在于域模块中,而不是 pending/mod.rs |
| 店铺构成 | 200行 | editorStore.ts 组成切片,不定义内联状态 |
| 活动委派 | 150行 | useEngineEvents.ts 代表们 hooks/events/ 处理人员 |
python3 .claude/skills/arch-validator/check_arch.py # warnings
python3 .claude/skills/arch-validator/check_arch.py --strict # exit 1 on any violation
python3 .claude/skills/arch-validator/check_arch.py --json # machine-readable output任务板
所有工作都在本地进行跟踪 任务板 同步到GitHub项目。
安装:
go install github.com/tcarac/taskboard@latest
# Or download from https://github.com/tcarac/taskboard/releases开始:
cd project-forge
taskboard start --port 3010- Web用户界面: http://localhost:3010
- API http://localhost:3010/api
- 项目ID:
01KK974VMNC16ZAW7MW1NH3T3M(前缀:PF) - 数据库:
.claude/taskboard.db(SQLite,186+张门票)
带有钩子支持的工具会在会话开始时自动启动任务板。数据库被提交到仓库,因此所有贡献者共享相同的票证状态。
配置目录映射
project-forge/
├── AGENTS.md # Cross-tool instructions (Copilot, Gemini, Antigravity, Codex)
├── GEMINI.md # Gemini CLI + Antigravity instructions
├── .claude/ # Claude Code (primary tool)
│ ├── CLAUDE.md # Full project constitution (280+ lines)
│ ├── settings.json # Tool settings
│ ├── agents/ # Subagent definitions
│ │ ├── planner.md # Architect (Opus model)
│ │ ├── builder.md # Implementer (Sonnet model)
│ │ └── validator.md # QA gatekeeper (Sonnet model)
│ ├── hooks/ # SHARED hook scripts (all tools call these)
│ │ ├── taskboard-state.sh # Library: API helpers, validation, staleness
│ │ ├── on-session-start.sh # Session start lifecycle
│ │ ├── on-prompt-submit.sh # Prompt submit gate
│ │ ├── on-stop.sh # Post-response validation
│ │ ├── post-edit-lint.sh # ESLint on changed files
│ │ ├── sync-to-github.sh # Push to GitHub Project
│ │ ├── sync-from-github.sh # Pull from GitHub Project
│ │ ├── github_project_sync.py # Sync engine (Python)
│ │ ├── github-sync-config.json # GitHub Project metadata
│ │ └── github-project-map.json # Ticket ↔ GitHub item mapping
│ ├── rules/ # Architecture & quality rules
│ │ ├── bevy-api.md # Bevy 0.18 API patterns
│ │ ├── entity-snapshot.md # ECS snapshot patterns
│ │ ├── web-quality.md # ESLint & React patterns
│ │ ├── library-apis.md # Third-party library APIs
│ │ └── file-map.md # Project file structure
│ ├── skills/ # Claude Code skills
│ │ ├── kanban/SKILL.md # Taskboard management
│ │ ├── sync-push/SKILL.md # Push to GitHub
│ │ ├── sync-pull/SKILL.md # Pull from GitHub
│ │ ├── planner/SKILL.md # Spec generation
│ │ ├── builder/SKILL.md # Code implementation
│ │ ├── cycle/SKILL.md # Plan→Build→Verify loop
│ │ └── arch-validator/ # Architecture validation
│ │ ├── SKILL.md
│ │ └── check_arch.py
│ └── taskboard.db # SQLite database (186+ tickets)
├── .github/ # GitHub Copilot
│ ├── hooks/hooks.json # Hook wiring (sessionStart, promptSubmit, postToolUse)
│ ├── instructions/copilot.instructions.md # Copilot-specific guidance
│ ├── skills/ # kanban, sync-push, sync-pull
│ └── prompts/ # sync-push.prompt.md, sync-pull.prompt.md
├── .gemini/ # Gemini CLI (+ Antigravity model config)
│ └── settings.json # Hooks + model (gemini-3.1-pro-preview)
├── .agents/ # Shared skills (Copilot + Gemini CLI)
│ ├── rules/taskboard-sync.md # Ticket enforcement rules
│ └── skills/ # kanban, sync-push, sync-pull
├── .agent/ # Google Antigravity (singular — NOT .agents/)
│ ├── rules/taskboard-sync.md # Ticket enforcement rules
│ └── skills/ # kanban, sync-push, sync-pull
├── .windsurf/ # Windsurf
│ ├── hooks.json # Hook wiring (post_write_code, pre_user_prompt, etc.)
│ ├── rules/taskboard.md # Ticket enforcement rules
│ └── workflows/ # sync-push.md, sync-pull.md
└── .codex/ # OpenAI Codex CLI
├── config.toml # Model (gpt-5.3-codex), approval policy, sandbox
├── AGENTS.md # Full instructions (no hooks, so rules are inline)
└── skills/ # kanban, sync-push, sync-pull贡献
欢迎投稿!以下是如何参与其中。
分叉存储库
- 点击 分叉 右上角的按钮 存储库页面
- 在本地克隆您的分叉:
git clone https://github.com//project-forge.git
cd project-forge- 添加上游遥控器:
git remote add upstream https://github.com/Tristan578/project-forge.git创建Pull请求
- 从以下位置创建要素分支
main:
git checkout -b feature/your-feature-name- 进行更改并验证它们是否有效:
# Build WASM engine
./build_wasm.sh # macOS/Linux
# .\build_wasm.ps1 # Windows
# TypeScript check
cd web && npx tsc --noEmit
# Run tests
cd web && npx vitest run
cd ../mcp-server && npx vitest run- 以明确的信息提交您的更改:
git add
git commit -m "feat: add your feature description"- 推你的叉子:
git push origin feature/your-feature-name- 在上游存储库上打开Pull Request。包括:
- 更改内容及其原因的总结 - 测试更改的步骤 - 如果更改是可视化的,则显示截图
提交问题
- 去 问题选项卡
- 点击 新发行
- 选择合适的模板(错误报告或功能请求),或打开空白问题
- 包括:
- Bug报告: 再现步骤、预期与实际行为、浏览器/操作系统信息、控制台错误 - 功能请求: 功能、用例和任何拟议实现想法的描述
代码风格
- 锈蚀: 遵循标准
rustfmt习俗。所有代码都必须编译为wasm32-unknown-unknown. - Types/React: 按照中的ESLint配置进行操作
web/eslint.config.mjs.使用带挂钩的功能部件。 - 承诺: 使用 约定式提交 格式(
feat:,fix:,docs:,refactor:等等)。
技术栈
| 层 | 技术 |
|---|---|
| 发动机 | Bevy 0.18,wgpu 27,bevyrapier 3d 0.33,bevyhanabi 0.18,bewypanorbit_camera 0.34,csgrs 0.20,噪音0.9 |
| 前端 | Next.js 16、React 19、Zustand 5、顺风CSS、React Flow |
| 授权 | 职员 |
| 付款 | Stripe |
| 数据库 | Neon(PostgreSQL)+Drizzle ORM |
| 构建 | wasm-bindgen,wasm-pack |
许可证
该项目根据 商业来源许可证1.1。您可以分叉、修改和贡献,但禁止商业用途。该许可证将于2030年2月11日转换为Apache 2.0。看 许可证 完整条款。
