返回市场
游戏制作人-MCP-服务器

游戏制作人-MCP-服务器

作者:darkw3bb3 星标更新:2025-10-29

项目介绍

GM-Maker MCP Server

在Cursor中使用AI构建GameMaker项目

这是一个MCP(模型上下文协议)服务器,它将GameMaker Studio开发直接集成到您的AI驱动的工作流程中。在Cursor IDE中使用自然语言创建YYP项目,添加脚本、对象和精灵。

🎮 功能概述

此服务器通过MCP工具公开了GameMaker项目的操作,使您能够:

  • 创建新的GameMaker YYP项目
  • 添加GML脚本及其代码
  • 创建带有事件定义的对象
  • 导入从图像序列生成的精灵动画
  • 列出并管理项目资源
  • 维护正确的YYP/YY文件结构

所有这些操作都可通过与Cursor中的AI进行自然语言对话来完成。

🙏 致谢

该项目基于**Butterscotch Shenanigans的出色工作构建,这是一家独立游戏工作室,曾开发过CrashlandsLevelhead等优秀游戏。他们开源了整个GameMaker工具套件,称为Stitch**。

具体来说,这个MCP服务器使用了:

  • @bscotch/yy - 强大的GameMaker YY/YYP文件解析和写入工具
  • 他们为GameMaker资源编写的广泛TypeScript类型定义
  • 他们经过实战考验的方法来编程化地操作GameMaker项目

没有他们的巨大开源贡献,这个项目是不可能实现的。感谢Butterscotch Shenanigans!🧈

💡 制作过程

起源故事

这个MCP服务器是在开发Soulbound游戏项目时创建的,该项目需要更好的AI辅助GameMaker开发工作流。目标很简单:让Cursor理解GameMaker项目,帮助编写GML代码,创建对象,并管理资源而不破坏YYP结构。

无需手动创建GameMaker资源并在IDE和Cursor之间切换,这个工具让您可以在AI驱动的工作流中保持专注,让Cursor处理繁琐的项目设置工作。

技术架构

这个MCP服务器连接了GameMaker Studio开发与现代AI辅助工作流:

  1. 基础:基于Butterscotch的@bscotch/yy库,该库提供了安全、验证过的读取和写入GameMaker的类似JSON的YY/YYP文件格式的功能。
  2. MCP协议:实现了来自Anthropic的Model Context Protocol,允许AI助手通过标准接口调用结构化的工具。
  3. Cursor集成:配置为一个基于stdio的MCP服务器,Cursor可以启动并与之通信,公开GameMaker操作作为可调用的工具。
  4. 类型安全性:使用TypeScript编写,并采用@bscotch包的完整类型定义,确保稳健的文件生成。
  5. 架构:每个工具(如create_project、add_script等)遵循一致的模式:
    • 使用Zod模式验证参数
    • 加载现有的YYP或创建新的项目结构
    • 生成正确的YY资源文件
    • 更新YYP资源注册表
    • 使用Butterscotch的安全写入方法写回所有内容

结果:现在您可以在Cursor中说“创建一个带有步进事件的玩家对象”,AI将生成一个带有正确YY文件结构的GameMaker对象,并将其注册到YYP中,准备好在GameMaker Studio中打开。

源自实际游戏开发需求,这个工具使得AI辅助的GameMaker开发真正实用。

特性

可用工具

  • create_project - 构建一个新的.yyp项目
  • add_script - 创建一个GML脚本并将其注册到YYP中
  • add_object - 创建一个.yy对象,可选带有事件存根
  • add_sprite_from_images - 从目录导入帧并注册一个精灵
  • list_resources - 按类型枚举资源(脚本、对象、精灵)

安装

先决条件

  • Node.js 18+
  • npm 或 pnpm
  • Cursor IDE

设置

  1. 克隆并安装依赖项:
cd /Users/webb/Repos/mcp-yyp
npm install
  1. 构建服务器:
npm run build
  1. 使用MCP Inspector测试(可选但推荐):
npm run inspect

这将打开MCP Inspector以在使用Cursor之前验证您的工具。

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项目交互:

创建新项目

"创建一个名为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

技术细节

依赖项

  • @modelcontextprotocol/sdk - MCP协议实现
  • @bscotch/yy - 安全的GameMaker YY/YYP文件解析和写入
  • zod - 运行时类型验证

架构

此服务器使用stdio传输协议与Cursor通信。每个工具:

  1. 使用Zod模式验证输入参数
  2. 加载现有的YYP文件(或创建一个新的)
  3. 对资源执行文件系统操作
  4. 更新YYP资源列表
  5. 将更新后的YYP写回到磁盘

@bscotch/yy库确保所有YY/YYP文件保持正确的结构且不会被破坏。

限制与未来增强

当前限制:

  • 精灵元数据(宽度、高度、bbox)使用默认值 - 可能需要手动调整
  • 尚不支持房间、声音或其他高级资源
  • 事件GML文件是带有存根注释创建的

潜在增强:

  • 增加update_script以修改现有脚本代码
  • 增加delete_resource以删除资源
  • 增加create_room以创建房间
  • 增加build_project使用GameMaker CLI/Igor
  • 与@bscotch/gml-parser集成以进行代码重构

🔗 参考资料与资源

核心技术

GameMaker资源

🤝 贡献

这是一个探索AI辅助GameMaker开发的实验性项目。欢迎贡献、想法和反馈!

改进领域:

  • 额外的资源类型(房间、声音、着色器等)
  • 更好的精灵元数据处理
  • GML代码解析和重构
  • 项目构建自动化
  • 与GameMaker CLI/Igor集成

📄 许可证

MIT许可证 - 查看LICENSE文件获取详情

❤️ 特别感谢


在开发Soulbound时用☕制作。为GameMaker社区打造。由Butterscotch Shenanigans的出色开源工具实现。