GM Maker MCP服务器
在Cursor中使用AI构建GameMaker项目
一 MCP(模型上下文协议) 服务器,将GameMaker Studio开发直接带入您的人工智能工作流程。在中使用自然语言创建YYP项目,添加脚本、对象和精灵 光标IDE.
🎮 这有什么作用
此服务器将GameMaker项目操作作为MCP工具公开,让您:
- 创建 全新GameMaker YYP项目从头开始
- 添加 GML脚本与您的代码
- 创建 具有事件定义的对象
- 导入 图像序列中的精灵动画
- 列表 管理项目资源
- 维持 自动正确的YYP/YY文件结构
在Cursor中与AI进行自然语言对话。
🙏 归因
具体来说,此MCP服务器使用:
- @bscotch/yy -GameMaker YY/YYP文件的强大解析和写入
- 他们为GameMaker资源提供了广泛的TypeScript类型定义
- 他们久经考验的程序化GameMaker项目操纵方法
如果没有他们对GameMaker生态系统做出的令人难以置信的开源贡献,这个项目是不可能的。 谢谢你,奶油糖果骗局! 🧈
💡 这是怎么做的
起源故事
此MCP服务器是在构建时创建的 灵魂绑定,一个需要在Cursor中更好的人工智能辅助GameMaker开发工作流程的游戏项目。目标很简单:让Cursor理解GameMaker项目,这样它就可以在不破坏YYP结构的情况下帮助编写GML代码、创建对象和管理资源。
该工具无需手动创建GameMaker资源并在IDE和Cursor之间切换,而是让您留在AI驱动的流程中,让Cursor处理繁琐的项目设置工作。
技术架构
此MCP服务器将GameMaker Studio开发与现代AI辅助工作流程连接起来:
- 基础:建立在奶油糖果的基础上 @bscotch/yy 该库提供对GameMaker类似JSON的YY/YYP文件格式的安全、有效的读写。
- MCP协议:实现 模型上下文协议 Anthropic允许AI助手通过标准界面调用结构化工具。
- 光标集成:配置为作为基于stdio的MCP服务器运行,Cursor可以启动并与之通信,将GameMaker操作作为可调用工具公开。
- 类型安全:用TypeScript编写,带有来自@bscotch包的完整类型定义,确保了健壮的文件生成。
- 建筑:每个工具(create_project、add_script等)都遵循一致的模式:
- 使用Zod模式验证参数 - 加载现有YYP或创建新的项目结构 - 生成正确的YY资源文件 - 更新YYP资源注册表 - 使用Butterscotch的安全写入方法写回所有内容
结果:你现在可以在Cursor中说“用step事件创建一个玩家对象”,AI将生成一个具有所有正确YY文件结构的正确GameMaker对象,在YYP中注册,准备在GameMaker Studio中打开。
源于真实的游戏开发需求,该工具使人工智能辅助GameMaker开发变得切实可行。
特性
可用工具
- 创建项目 -搭建一个新的.yyp项目
- add_script -创建GML脚本并将其注册到YYP中
- add_object -创建一个带有可选事件存根的.yy对象
- add_sprite_from_images -从目录导入帧并注册精灵
- 列表_资源 -按类型枚举资源(脚本、对象、精灵)
安装
先决条件
- Node.js 18+
- npm或pnpm
- 光标IDE
设置
- 克隆和安装依赖关系:
cd /Users/webb/Repos/mcp-yyp
npm install- 构建服务器:
npm run build- 使用MCP检查员进行测试(可选但推荐):
npm run inspect这将打开MCP检查器,在Cursor中使用工具之前对其进行验证。
光标配置
选项1:全局配置
添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"gm-maker": {
"command": "node",
"args": ["/Users/webb/Repos/mcp-yyp/dist/index.js"],
"env": {}
}
}
}选项2:项目本地配置
添加到 .cursor/mcp.json 在您的工作空间中:
{
"mcpServers": {
"gm-maker": {
"command": "node",
"args": ["${workspaceFolder}/dist/index.js"]
}
}
}选项3:开发模式(TypeScript)
对于热重载开发:
{
"mcpServers": {
"gm-maker": {
"command": "npx",
"args": ["tsx", "/Users/webb/Repos/mcp-yyp/src/index.ts"]
}
}
}添加配置后,重新启动Cursor以加载MCP服务器。
使用示例
配置后,您可以在Cursor中使用自然语言与GameMaker项目进行交互:
创建新项目
"Create a new GameMaker project called MyGame at /Users/webb/Projects/MyGame"或者明确地:
Call gm-maker.create_project with { "projectDir": "/Users/webb/Projects/MyGame", "name": "MyGame" }添加脚本
"Add a script called player_movement to my GameMaker project at /Users/webb/Projects/MyGame"或者用代码:
Call gm-maker.add_script with {
"projectDir": "/Users/webb/Projects/MyGame",
"scriptName": "player_movement",
"code": "function move_player(spd) {\n x += spd;\n}"
}添加带有事件的对象
"Create an object called obj_player with a Create event in my project"或者明确地:
Call gm-maker.add_object with {
"projectDir": "/Users/webb/Projects/MyGame",
"objectName": "obj_player",
"events": [{"eventType": 0, "eventNum": 0}]
}常见的GameMaker事件类型:
0=创建1=销毁2=报警3=步骤4=碰撞8=绘制
导入Sprite
"Import PNG frames from /Users/webb/Assets/portal as a sprite called spr_portal"或者明确地:
Call gm-maker.add_sprite_from_images with {
"projectDir": "/Users/webb/Projects/MyGame",
"spriteName": "spr_portal",
"framesDir": "/Users/webb/Assets/portal"
}列出资源
"Show me all scripts in my GameMaker project"或者明确地:
Call gm-maker.list_resources with {
"projectDir": "/Users/webb/Projects/MyGame",
"kind": "scripts"
}发展
脚本
npm run dev-使用tsx在开发模式下运行npm run build-为生产而建npm run start-运行构建版本npm run inspect-打开MCP检查器进行测试
项目结构
gm-maker/
├── src/
│ ├── index.ts # MCP server entrypoint
│ └── gm/
│ ├── types.ts # TypeScript types
│ ├── yyp.ts # YYP project operations
│ ├── scripts.ts # Script creation
│ ├── objects.ts # Object creation
│ └── sprites.ts # Sprite creation
├── dist/ # Built output
├── package.json
├── tsconfig.json
└── README.md技术细节
依赖项
- @模型上下文协议/sdk -MCP协议实现
- @bscotch/yy -安全GameMaker YY/YYP文件解析和写入
- 黄道带 -运行时类型验证
建筑
此服务器使用stdio传输协议与Cursor通信。每个工具:
- 使用Zod模式验证输入参数
- 加载现有的YYP文件(或创建一个新文件)
- 对资源执行文件系统操作
- 更新YYP资源列表
- 将更新的YYP写回磁盘
这 @bscotch/yy 库确保所有YY/YYP文件保持正确的结构,不会损坏。
限制和未来的增强
当前限制:
- Sprite元数据(宽度、高度、bbox)使用默认值-可能需要手动调整
- 暂不支持房间、声音或其他高级资源
- 事件GML文件是使用存根注释创建的
潜在的增强功能:
- 添加
update_script修改现有脚本代码 - 添加
delete_resource用于删除资源 - 添加
create_room用于房间创建 - 添加
build_project使用GameMaker命令行界面/Igor - 与@bscotch/gml解析器集成以进行代码重构
🔗 参考文献和资源
核心技术
- 奶油糖果Stitch Monorepo -这个项目的基础
- @bscotch/yy套餐 -GameMaker文件解析/写入
- 模型上下文协议 -协议规范
- 光标MCP文档 -如何在游标中使用MCP
游戏制作者资源
- GameMaker手册 -官方GameMaker文档
- 奶油糖果恶作剧 -工具背后的工作室
- 奶油糖果博客 -关于GameMaker工作流程的精彩文章
🤝 贡献
这是一个探索人工智能辅助GameMaker开发的实验项目。欢迎投稿、想法和反馈!
需要改进的地方:
- 其他资源类型(房间、声音、着色器等)
- 更好的精灵元数据处理
- GML代码解析与重构
- 项目构建自动化
- 与GameMaker CLI/Igor集成
📄 许可证
MIT许可证-有关详细信息,请参阅许可证文件
❤️ 特别感谢
______________________________________________________________________
*内置☕ 同时开发Soulbound。为GameMaker社区创建。这得益于Butterscotch Shenanigans令人惊叹的开源工具。*
