跳转至

Ludo Atlas · 引擎轨道 · GameMaker

引擎轨道。定位:为 2D 而生的快速开发引擎,GML 脚本加可视化积木把上手门槛压到最低,像素与 2D 小体量的原型到上线路径极短。 配套:《技术实现手册》·《游戏设计手册》·《全平台上架手册》·《独立开发生存手册》。


1. 定位与选型

GameMaker 是一款把 2D 写进基因的商业引擎:房间、对象、事件三件套全部围绕 2D 游戏组织,脚本语言 GML 语法简单、手册完整;完全不想写代码时,用可视化积木也能搭出可玩的完整作品,之后再随时迁移到代码。《Undertale》《迈阿密热线》这类知名独立作品都出自这条轨道。

许可模型决定使用边界:免费版可用于学习与非商业用途,功能与发布范围受限;商业发布需要购买授权,档位与覆盖的平台(含主机)以官方为准。引擎闭源、由单一公司主导,产品路线与许可政策不受社区投票左右。

适合谁

  • 做 2D 与像素风格小体量项目的人:从原型到成品是最快一档,独立开发者与小型团队的常青选择。
  • 没有编程经验的入门者:积木到 GML 的渐进路径平缓,教程生态以视频为主、密度高。
  • 需要快速验证玩法的 Game Jam 与原型:编辑器反馈快,搭出可玩画面以小时计。
  • 偏系统与玩法的设计者:内置精灵编辑器、房间编辑器与瓦片地图,把「做出一关」的成本压得很低。

不适合谁

  • 3D 项目:3D 能力存在,但不是它的战场,重度 3D 不要从这条轨道出发。
  • 依赖开源与源码可改的团队:引擎闭源,遇到引擎层面的问题只能等官方或绕行。
  • 重度依赖商业插件与中间件的项目:生态规模比 Unity 小一档,关键能力先核对再选型。
  • 不接受授权支出的项目:商业发布要买授权,这笔账应该在选型第一步就摆上桌面。

与 Godot、Unity 的取舍

维度 GameMaker Godot Unity
定位 2D 专注 2D/3D 全能 商业全能
语言 GML,可配可视化积木 GDScript / C# C#
许可 免费版受限,商业发布需授权 无附加条件 个人免费档存在,条款以官方为准
上手速度 最快一档 快 中
2D 工作流 精灵、房间、瓦片地图开箱可用,像素友好 2D 是一等公民 工具链成熟,工程偏重
3D 不适合作为主线 中等体量可用 强
导出平台 桌面、移动、Web、主机(在授权档位内) 桌面、移动、Web,主机需第三方移植 全平台,条款以官方为准
生态 小而集中,视频教程为主 中等,官方文档优秀 最大
源码 闭源 开源 闭源

一句话取舍:做 2D 小体量、想最快见到可玩画面,把 GameMaker 放进第一轮评估;计划长成 3D 或重度工程,回到 Godot 与 Unity 的轨道上比较。

2. 生态与工程结构

GameMaker 的工程更像一个资源库:一个项目文件之外,精灵、对象、房间、脚本、声音、字体、着色器各按类型归目录,由 IDE 统一管理引用。资源的重命名与移动要在 IDE 里做,在文件系统层面手工改名会直接断掉引用链。

2.1 目录与资源分类

资源类型 内容 使用要点
精灵 图片与动画帧 自带编辑器,导入即裁帧;帧序与原点设置直接影响手感
对象 逻辑单元 游戏里一切活动事物都从这里出生
房间 运行容器与关卡 游戏入口是一个房间;标题、菜单、关卡都是房间
脚本 复用逻辑 逻辑离开对象事件之后的去处,按系统分文件
声音、字体、着色器 表现层资源 按需引入,注意平台间的格式差异

工程文件本身是文本格式,比纯二进制工程对 Git 友好;但同一个资源的并行修改仍会冲突,协作要靠拆小资源与错峰修改(版本控制方法见《技术实现手册》§6)。

2.2 生态的边界

  • 官方手册质量高、覆盖全,是唯一权威;教程生态以视频与社区项目为主,版本跨度大,筛选成本要预留。
  • 扩展包与素材商店提供平台扩展和美术资源,规模比 Unity 商店小一档;购买前看维护状态与授权条款,商用范围逐条核对。
  • 引擎闭源、单公司运营,平台支持与授权政策的走向由厂商决定;这是选型时无法靠自己对冲的风险,重要需求要留备选方案。

2.3 自检问题

把 3D、重度工程、必须读源码改引擎这三条中占了两条以上,先回到《引擎选型指南》重新评估;接不下 2D 小体量的快速节奏,这条轨道就选错了。

3. 核心工作流

3.1 从零到能跑

  1. 装 IDE、新建工程:从空白模板起步,示例工程留作参考。
  2. 导入素材:把图片拖进 IDE,用自带编辑器裁帧、设原点。
  3. 建对象、写事件:行为逻辑写进事件;先用可视化积木跑通,再逐步换成 GML。
  4. 建房间、摆实例:把对象摆进房间,房间就是可运行的最小单位。
  5. 运行与调试:IDE 内直接运行;调试器的断点、逐帧执行、变量监视先用熟。
  6. 接版本控制:工程与资源入库,缓存与构建产物进忽略清单。
  7. 配目标平台出包:桌面先出包,移动与 Web 逐个验证,主机在授权档位内申请。

3.2 事件模型:写代码的地方

  • 对象的一切行为都挂到事件上:创建、销毁、步进(开始、常规、结束)、绘制(游戏世界、界面层)、警报、碰撞、异步回调。
  • 事件类型与执行顺序是引擎的骨架:同一对象里步进先于绘制,不同对象按实例处理顺序执行。出 bug 时先确认顺序假设,再怀疑逻辑。
  • 逻辑放对事件:初始化进创建事件,状态更新进步进事件,表现只进绘制事件;把玩法规则塞进绘制事件是最常见的结构事故。
  • 异步事件承接平台回调(存档、网络、内购等),回调有明确的完成时机,不要假设它立即返回。

3.3 导出与多平台

目标 路径 注意点
桌面 直接构建可执行文件 最顺的路线;分发与商店接入按《全平台上架手册》执行
移动 需配置平台工具链 iOS 构建依赖 macOS 环境,非 Mac 团队提前安排
Web 导出网页构建 浏览器环境限制多,内存与音频策略要实机验证
主机 授权档位内提供 开发机申请与认证流程走厂商渠道,排期提前算

构建支持脚本化调用,能接进自动化流水线做每日构建,基建清单见《技术实现手册》§6。

4. 关键系统惯用法

4.1 三件套的心智模型

  • 房间是舞台,对象是演员,事件是台词:房间负责「在哪」,对象负责「是谁」,事件负责「何时做什么」。
  • 一个对象只装一类职责的实例逻辑:子弹对象只管飞行与命中,拾取逻辑属于拾取物对象。
  • 对象继承用来表达真正的同类关系(敌人类共享基础行为),不要拿继承凑复用;功能复用优先组合与脚本函数。
  • 实例是对象在房间里的具体存在:同一对象可以摆多个实例,各自持有独立变量,别把实例状态改写成全局状态。

4.2 代码组织的纪律

  • 事件窗口保持薄:每个事件里只留调用,逻辑沉到脚本资源里、按系统分文件。
  • 变量作用域分三层:局部、实例、全局。能用局部就不用实例,能用实例就不用全局。
  • 命名带资源前缀(对象、精灵、房间、脚本各一套),搜索与筛选才有效。
  • 魔法数字集中管理:数值放数据文件或常量脚本,禁止散落在事件窗口里。

4.3 绘制与相机:把 2D 做对

  • 像素风先对齐三件事:关闭纹理插值、整数缩放、相机跟随取整,否则画面会糊、会抖。
  • 相机(视图)在房间里配置或在运行期控制,跟随与死区逻辑要和角色手感一起调(方法见《技术实现手册》§2.3)。
  • 绘制事件分世界层与界面层:界面不随相机移动,血条、分数、菜单画在界面层。
  • 动画路线按资源条件选:序列帧便宜可控,骨骼动画省资源;上大图或骨骼前先问「是否真的需要」。

4.4 数据、存档与配置

  • 数据驱动从第一天做起:数值、关卡配置、文本内容放文本数据文件,改内容不动代码。
  • 存档只存状态、不存表现:字段带版本号与迁移函数,后期改结构才不返工。
  • 内置快速存档接口适合原型与小型项目;正式项目用自管格式换取可控性与跨平台一致性。

4.5 扩展与依赖

  • 平台扩展与第三方扩展按需引入;引入前看维护状态与授权,升级引擎时逐项回归。
  • 不依赖不可替换的单一扩展:支付、广告、统计这类关键能力至少留一条备选路径。
  • 引擎闭源意味着「等官方修」可能等很久,绕行方案要提前想好。

5. 性能与优化要点

总则不变:先测量再优化,开发机的流畅不算数,以目标设备为准(方法论见《技术实现手册》§3)。GML 在自己的虚拟机上执行,性能习惯比语言选择更决定上限。

5.1 四个高频问题

习惯 病态写法 正确做法
实例管理 每帧创建与销毁子弹、特效 对象池加激活与停用,复用实例
每帧开销 步进事件里查对象、拼字符串 引用提前存好,字符串提前拼好
事件重量 所有对象都挂最重的步进事件 不需要每帧的改走警报或条件触发
绘制调用 素材零散导致频繁切换纹理 按纹理组合并素材,控制图层顺序

5.2 渲染与资源

  • 纹理页由引擎按纹理组自动打包;分组策略要主动管理,单张图被打进错误的组,批次会白白增多。
  • 大量同质视觉元素(粒子、雨雪、星光)优先用粒子系统,不要用成百上千个对象实例去堆。
  • 大图与高分辨率素材是内存与带宽的大头,按目标平台分级准备。

5.3 平台差异

  • 移动端盯内存与发热,低端机是下限基准。
  • Web 端的内存与音频策略要在项目早期验证,不要等上线前补课。
  • 测试纪律不变:目标设备实测,优化前后各留一组数据。

6. 学习路线

一条以「做出东西」为验收的直线:

  1. 官方入门:手册的入门章节与官方教程走一遍,目标是做出一个能动、能碰、能换房间的小东西。
  2. 语言关:把 GML 的核心内容(变量、函数、数组、结构体、方法与作用域)过完,边写边查手册。
  3. 第一个完整作品:小而完整、能玩到结局,覆盖移动、碰撞、界面、存档与音频。
  4. 工具链:调试器、版本控制、构建脚本逐个用起来;发布构建的原生编译档位实测一次。
  5. 进阶方向:着色器、序列动画、物理与粒子,按项目需要选学,不贪多。
  6. 发布:完整走一次目标平台的上架流程,把授权与资质环节提前踩平。

验收标准(全部可观察):

  • 不看教程,能从空工程搭到「有关卡、有失败条件、能重开」。
  • 出 bug 时能先定位到「哪个对象、哪个事件、第几帧」,再说怎么修。
  • 完成的作品在别人的干净机器上能安装、能运行。

7. 常见坑

  1. 代码堆在事件窗口:创建、步进、绘制事件里各写几百行,复用靠复制粘贴;逻辑必须沉到脚本里,事件只做调用。
  2. 全局变量当背包:所有状态进全局,依赖与加载顺序全部隐形;作用域从局部开始逐级放宽。
  3. 版本控制缺位或缓存入库:资源元数据冲突难解,仓库里一半是可再生成的缓存;忽略清单第一天上好。
  4. 命名随手起:没有前缀、大小写混乱,资源过千之后搜索基本失效。
  5. 照旧教程硬搬:引擎更名与授权模式换过代,老教程的资源与做法经常对不上;以官方手册为准,导入旧工程逐项验证兼容性。
  6. 忽视授权边界:拿免费版做商业发布,或混用授权不覆盖的平台;发布前核对档位与目标平台(含主机)。
  7. 性能习惯不设防:每帧创建销毁实例、每帧拼字符串、不管理纹理分组,到移动端集中爆发;按 §5.1 的清单从原型期自检。
  8. 拿它硬做 3D 或大工程:超出 2D 小体量的定位,付出的是持续的工程硬撑;先回到《引擎选型指南》。
  9. 依赖单一生态不自知:引擎闭源、单公司主导,扩展与平台支持的存续不在你手里;关键能力留备选方案。
  10. 素材授权不核对:商店素材与音效的商用范围逐条对照,别到上线才发现不能用于商业项目。

延伸阅读