🚀 弦司游戏引擎(Kenji Engine)
首款原生 AI 游戏引擎。用自然语言构建游戏,借助 AI 生成游戏资源,一键完成部署。
弦司游戏引擎是酷梓琪(Kuuzuki)生态下的游戏开发利器,它是一款完整的游戏引擎,内置 MCP 服务器,支持 AI 辅助游戏开发。你可以使用自然语言创建游戏,利用 AI 生成像素艺术资源,并自动部署到 itch.io 平台。
🚀 快速开始
前提条件
安装步骤
- 克隆仓库:
git clone <repository-url> kenji-ge
cd kenji-ge
- 安装依赖:
bun install
- 构建所有包:
bun run build
- 使用 bun link 全局安装 CLI 工具:
./scripts/setup-global.sh
此脚本会自动构建所有包并链接所有命令。
- 选项 B:手动设置 - 仅主命令:
bun run build:packages
bun link
这样你就可以使用带有交互式菜单的 kenji-engine 命令。
- 选项 C:手动设置 - 单独工具:
bun run build:packages
cd packages/tui-editor && bun link && cd ../..
cd packages/cli && bun link && cd ../..
这样你就可以使用带有交互式菜单的 kenji-engine 命令。
交互式菜单
链接完成后,你可以在任何位置使用交互式菜单:
kenji-ge
这将显示一个美观的菜单,提供以下选项:
- 🆕 创建新项目 - 通过模板交互式创建项目
- 🎯 打开 TUI 编辑器 - 启动基于终端的可视化编辑器
- 🔨 构建项目 - 为生产环境编译你的游戏
- 🚀 部署项目 - 部署到 itch.io
- ❓ 显示帮助 - 查看所有可用命令
该菜单会自动检测当前目录中的现有游戏项目,并提供相应的上下文选项。
链接后可用的命令
运行 bun link 后,你可以全局使用以下命令:
- 主命令:
- TUI 编辑器命令:
kenji-editor - 带有交互式菜单的 TUI 编辑器
kenji-editor create <name> - 创建新项目
kenji-editor start - 启动 TUI 编辑器
kenji-editor build - 构建项目
kenji-editor deploy - 部署到 itch.io
注意:基本 CLI 也提供 kenji-engine 命令,但推荐使用主交互式版本以获得最佳体验。
创建你的第一个游戏
- 创建一个新的乒乓球游戏:
kenji-ge create my-pong-game --template pong
cd my-pong-game
- 安装依赖:
bun install
- 开始开发:
bun run dev
- 在浏览器中打开:
在浏览器中打开
index.html 即可查看你的游戏!
使用酷梓琪进行 AI 辅助开发
- 启动弦司的 MCP 服务器并连接酷梓琪:
cd my-pong-game
kenji mcp
kuuzuki
- 使用自然语言命令:
- "为球拍和球生成像素艺术精灵"
- "当球击中球拍时让球移动得更快"
- "当球击中某物时添加粒子效果"
- "创建一个道具系统"
- "将游戏部署到 itch.io"
✨ 主要特性
🎮 核心游戏引擎
- 实体组件系统(ECS) - 灵活的游戏对象架构
- 内置组件 - Transform2D、Velocity2D、Sprite2D、Collider2D
- 内置系统 - 移动、渲染、碰撞检测
- Canvas2D 渲染器 - 像素级完美的 2D 渲染
- 输入管理 - 键盘和鼠标输入处理
- 音频系统 - 集成 Web Audio API
- 资源管理 - 图像和画布资源加载
🎨 像素艺术生成
- 程序生成精灵 - 按需生成游戏资源
- 多种风格 - 复古、现代和简约风格
- 特定游戏生成器 - 乒乓球、打砖块等
- 零资源要求 - 无需外部艺术资源
🤖 原生 AI 开发
- 内置 MCP 服务器 - 直接集成酷梓琪 AI 助手
- 自然语言编码 - 例如 "让球更快"、"添加粒子效果"
- AI 资源生成 - 使用 AI 生成精灵、声音和动画
- 智能代码生成 - AI 创建游戏系统、组件和逻辑
- 智能部署 - AI 处理 itch.io 发布和优化
🛠️ 开发工具
- CLI 工具 - 用于项目管理的命令行界面
- Bun 运行时 - 构建和工具链速度提升 10 - 100 倍
- TypeScript - 严格类型和现代 ES 模块
- 热重载 - 快速开发迭代
🚀 部署
- Butler 集成 - 自动部署到 itch.io
- Web 导出 - HTML5 游戏打包
- 构建管道 - 优化生产构建
🤖 弦司的独特之处
首款原生 AI 游戏引擎
与传统引擎(如 Unity、Godot、Phaser)不同,弦司游戏引擎从底层开始就为 AI 辅助开发而设计:
- 自然语言编程:例如 "让球更快"、"添加粒子效果"
- 内置 MCP 服务器:直接集成酷梓琪 AI 助手
- AI 资源生成:使用 AI 生成精灵、声音和动画
- 智能代码生成:AI 创建游戏系统和组件
- 智能部署:AI 处理优化和发布
适合现代开发者
- 100% TypeScript:类型安全的游戏开发
- Bun 驱动:闪电般快速的构建和运行时
- ECS 架构:可扩展、可维护的游戏代码
- 零配置:开箱即用
AI 辅助工作流
1. 手动编写代码
2. 使用外部工具创建资源
3. 手动调试和测试
4. 手动部署
1. "创建一个乒乓球游戏"
2. "让球拍发光"
3. "添加音效"
4. "部署游戏到 itch.io"
📦 安装指南
- 克隆仓库:
git clone <repository-url> kenji-ge
cd kenji-ge
- 安装依赖:
bun install
- 构建所有包:
bun run build
- 使用 bun link 全局安装 CLI 工具:
./scripts/setup-global.sh
- **选项 B:手动设置 - 仅主命令**:
bun run build:packages
bun link
- **选项 C:手动设置 - 单独工具**:
bun run build:packages
cd packages/tui-editor && bun link && cd ../..
cd packages/cli && bun link && cd ../..
💻 使用示例
基础用法
const engine = new GameEngine({
canvas: HTMLCanvasElement,
mode: "2d" | "3d",
targetFPS: number,
debug: boolean,
});
await engine.initialize();
engine.start();
高级用法
const entity = new Entity()
.addComponent(new Transform2D(x, y))
.addComponent(new Velocity2D(vx, vy))
.addComponent(new Sprite2D(texture));
engine.world.addEntity(entity);
📚 详细文档
项目结构
kenji-ge/
├── packages/
│ ├── core/ # ECS 引擎核心
│ │ ├── src/
│ │ │ ├── ecs/ # 实体、组件、系统、世界
│ │ │ ├── rendering/ # Canvas2D 渲染器
│ │ │ ├── input/ # 输入管理
│ │ │ ├── audio/ # 音频系统
│ │ │ ├── components/ # 内置组件
│ │ │ ├── systems/ # 内置系统
│ │ │ └── utils/ # 实用工具
│ │ └── package.json
│ ├── pixel-art-generator/ # 资源生成
│ │ ├── src/
│ │ │ ├── generators/ # 特定游戏生成器
│ │ │ └── PixelArtGenerator.ts
│ │ └── package.json
│ ├── mcp-server/ # AI 集成
│ │ ├── src/
│ │ │ ├── server.ts # MCP 服务器
│ │ │ └── GameProjectManager.ts
│ │ └── package.json
│ ├── butler-deploy/ # 部署工具
│ │ └── src/
│ └── cli/ # 命令行工具
│ └── src/
├── package.json # 工作区配置
├── bunfig.toml # Bun 配置
└── .mcp.json # MCP 服务器配置
游戏模板
空模板
包含引擎初始化的基本游戏设置。
乒乓球模板
经典乒乓球游戏,包含:
打砖块模板(即将推出)
打砖块游戏,包含:
API 参考
核心类
GameEngine
const engine = new GameEngine({
canvas: HTMLCanvasElement,
mode: "2d" | "3d",
targetFPS: number,
debug: boolean,
});
await engine.initialize();
engine.start();
Entity
const entity = new Entity()
.addComponent(new Transform2D(x, y))
.addComponent(new Velocity2D(vx, vy))
.addComponent(new Sprite2D(texture));
engine.world.addEntity(entity);
PixelArtGenerator
const generator = new PixelArtGenerator();
const sprite = await generator.generateSprite({
type: "paddle",
width: 32,
height: 8,
colors: ["#FFFFFF"],
style: "retro",
});
🔧 技术细节
开发
构建
bun run build
bun run dev
bun run clean
测试
bun test
MCP 服务器
bun run mcp
部署
Web 构建
kenji-ge build my-game --target web
部署到 itch.io
kenji-ge deploy my-game --itch-user username --itch-game game-slug
🤝 贡献指南
- 分叉仓库
- 创建功能分支
- 进行更改
- 如有必要,添加测试
- 提交拉取请求
📄 许可证
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
🗺️ 路线图
阶段 1(当前)
- ✅ 核心 ECS 引擎
- ✅ 使用 Canvas2D 进行 2D 渲染
- ✅ 像素艺术生成
- ✅ MCP 服务器集成
- ✅ CLI 工具
- ✅ 乒乓球模板
阶段 2 - 增强 AI 功能
- [ ] 高级 AI 代码生成(完整游戏系统)
- [ ] AI 驱动的调试和优化
- [ ] 自然语言资源修改
- [ ] AI 生成的音效和音乐
- [ ] 打砖块和平台游戏模板
- [ ] 社区 AI 模型集成
阶段 3 - 高级引擎功能
- [ ] 使用 Three.js + AI 辅助进行 3D 渲染
- [ ] 具有 AI 匹配的多人网络
- [ ] 带有 AI 建议的可视化编辑器
- [ ] 使用 AI 分析进行性能优化
- [ ] 跨平台部署(移动、桌面)
- [ ] AI 驱动的游戏平衡和测试
🌟 弦司生态系统
弦司 是更大的酷梓琪 AI 开发生态系统的一部分:
- 酷梓琪 - 用于开发的 AI 助手
- 弦司 - 原生 AI 游戏引擎
- MCP 集成 - 无缝的 AI 辅助开发
- 社区模板 - AI 生成的游戏模板和资源
为何选择弦司?
| 传统引擎 |
弦司游戏引擎 |
| 手动编码 |
AI 辅助开发 |
| 外部资源工具 |
内置 AI 生成 |
| 复杂设置 |
零配置 |
| 陡峭的学习曲线 |
自然语言界面 |
| 手动部署 |
一键发布 |
🤝 支持与社区
🎮 由酷梓琪团队用心打造
弦司:AI 与游戏开发的完美结合