# 把 GameMaker 游戏移植到 Steam

> GameMaker 的房间和对象能干净地对应到场景与节点。GML 必须重写，而你的精灵会跟着你走。

- URL: https://www.summerengine.com/zh/port-gamemaker-game-to-steam
- Keyword: 移植 GameMaker 游戏到 Steam
- Related: https://www.summerengine.com/zh/porting

把 GameMaker 游戏移植到 Steam，意思是在新引擎里重建一款你拥有的游戏，并通过 Steamworks 发布那个构建。.yyp 项目和 GML 代码都没有导入器。

这些概念比多数换引擎的情况都更好对应。一个 GameMaker 房间变成一个场景。一个对象变成挂着脚本的节点。Create 和 Step 事件变成就绪与处理函数。Alarm 变成计时器。Draw 事件变成渲染器绘制你的精灵和图形。一旦看清这套对应关系，移植基本就是机械工作加调校。

Summer Engine 使用 C++ 和 GDScript，C# 可在桌面编辑器中使用。它从一个项目导出桌面版本发布到 Steam。项目归你，它的销售收入无需向 Summer 支付版税。

## GameMaker 的概念如何对应过来

房间变成场景。对象变成节点，对象继承变成场景继承或一个共享的基类脚本。实例变量变成脚本变量。Alarm 变成计时器节点。碰撞事件变成物理或区域回调。精灵和 image_index 动画变成精灵帧或动画播放器。全局变量变成一个自动加载的单例。ds_map 和 ds_list 变成字典和数组。序列和路径需要用动画和路径跟随节点重建。

## 重写 GML

GML 是一门紧凑的语言，内置函数与引擎强绑定，所以它不能自动转换。用 GDScript 重写，它的气质相似而且可读；性能关键的系统则用 C++。把每一个常量都保留下来：速度、重力、摩擦、伤害数值、生成频率和帧数。GameMaker 游戏的成败通常在逐帧精确的手感上，所以要对齐原本的房间速度和步进时序，而不是估个大概。

## 让像素美术保持锐利

你的精灵和图块集归你，以 PNG 文件的形式搬过来。把纹理过滤设成最近邻，使用整数缩放或固定的视口分辨率让像素保持方正，并把镜头位置吸附到整像素以避免抖动。如果原作使用 320 乘 180 这类很小的原生分辨率，就把它保留为渲染分辨率再放大，而不是按任意窗口尺寸去渲染美术。

## Steam 发行工作

注册 Steamworks 账号，支付每款一次性 100 美元的应用费，并填完税务和银行信息。创建仓库，用 SteamPipe 上传构建，并为每个操作系统配置启动选项。加上 Steam Input 让手柄开箱即用，加上 Steam Auto Cloud 处理存档，并在合作伙伴站点定义成就。再加上分辨率、全屏和可重映射的操作选项，即便是小型 2D 游戏，Steam 玩家也会期待这些。

## FAQ

### GML 能自动转换吗？

不能。GML 使用 GameMaker 专有的内置函数和运行时行为。脚本要用 GDScript 或 C++ 重写，并把原代码当作精确的规格说明。

### 我的精灵和房间能迁移吗？

精灵、图块集、音频和字体都作为属于你的文件迁移。房间布局要重建成场景，把房间导出成瓦片地图或坐标列表能让这一步更快。

### 为什么要从 GameMaker 移出来？

常见原因是 3D 需求、导出目标的授权成本、性能余量，以及想要 C++ 级别的掌控。Summer Engine 从一个项目导出桌面版本发布到 Steam 和 itch.io，且不收分成。

### 游戏的手感会一样吗？

数值对上了，手感就一样。把移动速度、重力、摩擦、跳跃高度和时序数值直接从 GML 里抄过来，并对着原作录像逐帧核对。

### Steam 收多少钱？

每款游戏一次性 100 美元的应用提交费，销售额达到 1000 美元后可回收，再加上 Valve 的分成。

[开始重建](https://www.summerengine.com/zh/download)

---

## Machine-readable resources

- Site index for agents: https://www.summerengine.com/llms.txt
- Full inlined content: https://www.summerengine.com/llms-full.txt
- Porting catalog: https://www.summerengine.com/llms-porting.txt
- Structured catalog: https://www.summerengine.com/agent-catalog.json
- Sitemap: https://www.summerengine.com/sitemap.xml
- Developer resources: https://www.summerengine.com/docs
- Summer API (assets from any agent or code; public per-call model prices): https://docs.summerengine.com/api