内容
<p align="center">
<img src="assets/logo.svg" width="120" alt="gm-forge-mcp logo" />
</p>
<h1 align="center">gm-forge-mcp</h1>
<p align="center">
<a href="https://github.com/nicklesimba/gm-forge-mcp/actions/workflows/ci.yml"><img src="https://github.com/nicklesimba/gm-forge-mcp/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
<a href="LICENSE"><img src="https://img.shields.io/github/license/nicklesimba/gm-forge-mcp" alt="License"></a>
</p>
gm-forge-mcp 是一个 MCP 服务器,允许 AI 助手创建和编辑 GameMaker 项目:脚本、对象、房间、精灵、声音和 `.yyp` 目录中的其他内容。实际上,这意味着您可以要求 Claude 搭建一个新项目,导入一组精灵帧或重命名一个对象及其所有引用,之后项目仍可以在 IDE 中打开。
> 早期阶段(0.1.0)- 在让任何内容写入之前,请备份您的项目。
GameMaker 的文件格式会对粗心的编辑静默惩罚。如果一个房间缺少其 `creationCodeFile` 字段,或者一个声音的声明采样率与实际 `.wav` 文件不匹配,看起来一切正常,直到 IDE 无法打开项目或崩溃。这里的每个写入器都是根据 GameMaker 自己生成的文件建模的,其中两个工具直接使用 GameMaker 自己的工具:`lint_project` 运行官方的无头验证器(ProjectTool),`compile_project` 运行真正的编译器(Igor),它可以捕获实际的 GML 错误。
## 需求
- Node.js 20+
- GameMaker(Windows)用于 `lint_project` 的 ProjectTool 检查和 `compile_project`。如果没有安装 GameMaker,两者都会跳过并显示清晰的消息;其他功能跨平台运行。
## 安装
```bash
git clone https://github.com/nicklesimba/gm-forge-mcp.git
cd gm-forge-mcp
npm install
npm run build
```
## 配置
将以下内容添加到您的 MCP 客户端配置文件中(例如 Claude Desktop 的 `claude_desktop_config.json`):
```json
{
"mcpServers": {
"gm-forge": {
"command": "node",
"args": ["/absolute/path/to/gm-forge-mcp/dist/index.js"]
}
}
}
```
## 工具
**项目** -- `create_project`、`list_resources`、`find_references`、`delete_resource`、`rename_resource`、`lint_project`、`compile_project`
**分组** -- `add_texture_group`、`add_audio_group`
**脚本** -- `add_script`、`edit_script`、`get_script_info`
**对象** -- `add_object`、`add_object_event`、`get_object_info`
**房间** -- `add_room`、`edit_room`、`add_room_instance`、`reorder_room`、`move_room_relative`、`get_room_info`、`find_tile_region`
**精灵** -- `add_sprite_from_images`、`edit_sprite`、`get_sprite_info`
**图块集** -- `add_tileset`、`edit_tileset`、`get_tileset_info`
**声音** -- `add_sound`、`edit_sound`、`get_sound_info`
**着色器** -- `add_shader`、`edit_shader`、`get_shader_info`
**字体** -- `add_font`、`edit_font`、`get_font_info`
**笔记** -- `add_note`、`get_note_info`
**扩展** -- `add_extension`、`get_extension_info`
**粒子系统** -- `add_particle_system`、`get_particle_system_info`
**动画曲线** -- `add_anim_curve`、`get_anim_curve_info`
`delete_resource` 和 `rename_resource` 会在修改任何内容之前搜索整个项目中的引用。
## 测试
```bash
npm test
```
测试套件检查每个写入器的输出是否与从实际 GameMaker 文件捕获的引用模式匹配,模拟 GameMaker 重新保存的文件(带有尾随逗号),并在安装了 ProjectTool/Igor 的情况下运行实时检查。CI 在没有安装 GameMaker 的 Windows 运行器上运行,因此实时检查会跳过,摘要报告跳过次数。所有资源类型也已在实际 IDE 中加载,包括使用 `create_project` 从头创建的项目。
## 参见
[GameMaker](https://gamemaker.io) 是使用此功能所需的。感谢 YoYo Games 两十年来让游戏制作更加便捷!
[@petah/gamemaker-mcp](https://www.npmjs.com/package/@petah/gamemaker-mcp) <img width="40" height="37" alt="image" src="https://github.com/user-attachments/assets/a8f0c4ef-8906-4135-a292-0aeb87856579" />
涵盖 GML 函数/API 参考查找,本项目不包含。
## 许可证
MIT - 请参阅 [LICENSE](LICENSE)。