在Cursor中使用AI构建GameMaker项目
这是一个MCP(模型上下文协议)服务器,它将GameMaker Studio开发直接集成到您的AI驱动的工作流程中。在Cursor IDE中使用自然语言创建YYP项目,添加脚本、对象和精灵。
此服务器通过MCP工具公开了GameMaker项目的操作,使您能够:
所有这些操作都可通过与Cursor中的AI进行自然语言对话来完成。
该项目基于**Butterscotch Shenanigans的出色工作构建,这是一家独立游戏工作室,曾开发过Crashlands、Levelhead等优秀游戏。他们开源了整个GameMaker工具套件,称为Stitch**。
具体来说,这个MCP服务器使用了:
没有他们的巨大开源贡献,这个项目是不可能实现的。感谢Butterscotch Shenanigans!🧈
这个MCP服务器是在开发Soulbound游戏项目时创建的,该项目需要更好的AI辅助GameMaker开发工作流。目标很简单:让Cursor理解GameMaker项目,帮助编写GML代码,创建对象,并管理资源而不破坏YYP结构。
无需手动创建GameMaker资源并在IDE和Cursor之间切换,这个工具让您可以在AI驱动的工作流中保持专注,让Cursor处理繁琐的项目设置工作。
这个MCP服务器连接了GameMaker Studio开发与现代AI辅助工作流:
结果:现在您可以在Cursor中说“创建一个带有步进事件的玩家对象”,AI将生成一个带有正确YY文件结构的GameMaker对象,并将其注册到YYP中,准备好在GameMaker Studio中打开。
源自实际游戏开发需求,这个工具使得AI辅助的GameMaker开发真正实用。
cd /Users/webb/Repos/mcp-yyp
npm install
npm run build
npm run inspect
这将打开MCP Inspector以在使用Cursor之前验证您的工具。
添加到~/.cursor/mcp.json:
{
"mcpServers": {
"gm-maker": {
"command": "node",
"args": ["/Users/webb/Repos/mcp-yyp/dist/index.js"],
"env": {}
}
}
}
添加到.cursor/mcp.json在您的工作区中:
{
"mcpServers": {
"gm-maker": {
"command": "node",
"args": ["${workspaceFolder}/dist/index.js"]
}
}
}
用于热重载的开发:
{
"mcpServers": {
"gm-maker": {
"command": "npx",
"args": ["tsx", "/Users/webb/Repos/mcp-yyp/src/index.ts"]
}
}
}
添加配置后,重启Cursor以加载MCP服务器。
配置完成后,您可以在Cursor中使用自然语言与GameMaker项目交互:
"创建一个名为MyGame的新GameMaker项目,位于/Users/webb/Projects/MyGame"
或者明确地说:
调用gm-maker.create_project,参数为 { "projectDir": "/Users/webb/Projects/MyGame", "name": "MyGame" }
"在我的GameMaker项目中添加一个名为player_movement的脚本,位于/Users/webb/Projects/MyGame"
或者使用代码:
调用gm-maker.add_script,参数为 {
"projectDir": "/Users/webb/Projects/MyGame",
"scriptName": "player_movement",
"code": "function move_player(spd) {\n x += spd;\n}"
}
"在我的项目中创建一个名为obj_player的对象,带有创建事件"
或者明确地说:
调用gm-maker.add_object,参数为 {
"projectDir": "/Users/webb/Projects/MyGame",
"objectName": "obj_player",
"events": [{"eventType": 0, "eventNum": _}]
}
常见的GameMaker事件类型:
0 = 创建1 = 销毁2 = 报警3 = 步进4 = 碰撞8 = 绘制"从/Users/webb/Assets/portal导入PNG帧作为名为spr_portal的精灵"
或者明确地说:
调用gm-maker.add_sprite_from_images,参数为 {
"projectDir": "/Users/webb/Projects/MyGame",
"spriteName": "spr_portal",
"framesDir": "/Users/webb/Assets/portal"
}
"显示我GameMaker项目中的所有脚本"
或者明确地说:
调用gm-maker.list_resources,参数为 {
"projectDir": "/Users/webb/Projects/MyGame",
"kind": "scripts"
}
npm run dev - 使用tsx运行开发模式npm run build - 构建生产版本npm run start - 运行已构建的版本npm run inspect - 打开MCP Inspector进行测试gm-maker/
├── src/
│ ├── index.ts # MCP服务器入口点
│ └── gm/
│ ├── types.ts # TypeScript类型
│ ├── yyp.ts # YYP项目操作
│ ├── scripts.ts # 脚本创建
│ ├── objects.ts # 对象创建
│ └── sprites.ts # 精灵创建
├── dist/ # 构建输出
├── package.json
├── tsconfig.json
└── README.md
此服务器使用stdio传输协议与Cursor通信。每个工具:
@bscotch/yy库确保所有YY/YYP文件保持正确的结构且不会被破坏。
当前限制:
潜在增强:
update_script以修改现有脚本代码delete_resource以删除资源create_room以创建房间build_project使用GameMaker CLI/Igor这是一个探索AI辅助GameMaker开发的实验性项目。欢迎贡献、想法和反馈!
改进领域:
MIT许可证 - 查看LICENSE文件获取详情
在开发Soulbound时用☕制作。为GameMaker社区打造。由Butterscotch Shenanigans的出色开源工具实现。