三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Unity收费风波后,我为什么把2D项目从C#搬到了GameMaker?

Unity收费风波后,我为什么把2D项目从C#搬到了GameMaker?

Unity收费风波后,我为什么把2D项目从C#搬到了GameMaker?

去年Unity宣布按安装次数收费的政策时,我正在开发一款2D横版动作游戏。作为独立开发者,这个消息让我不得不重新评估整个技术栈。经过一个月的深度测试和迁移实践,我最终将项目从Unity完整转移到了GameMaker Studio 2。这个决定不仅解决了收费焦虑,还意外提升了我的开发效率。

1. 为什么GameMaker成为2D开发的首选

当评估替代方案时,我发现不同引擎的适用性高度依赖项目类型。对于3D项目,Unreal和Godot确实更有优势,但2D游戏开发有着完全不同的需求。

GameMaker的核心优势:

  • 专为2D设计的坐标系系统(0,0默认在左上角)
  • 内置的精灵编辑器支持逐帧动画制作
  • 拖拽式房间编辑器快速构建关卡原型
  • 轻量级的物理系统(适合平台跳跃等2D玩法)
// GameMaker的碰撞检测示例 if place_meeting(x, y, obj_enemy) { hp -= 10; audio_play_sound(snd_hurt, 0, false); }

对比Unity的2D工作流,GameMaker省去了大量不必要的设置步骤。在Unity中制作一个简单的精灵动画需要:

  1. 创建Animator Controller
  2. 设置Animation Clip
  3. 配置Sprite Renderer
  4. 编写状态机脚本

而在GameMaker中,只需导入精灵图,在属性面板设置帧速率即可完成基础动画。

2. 从C#到GML的语言迁移实践

作为C#开发者,最初我对GameMaker的自研语言GML有所顾虑。但实际使用后发现,GML的简洁性反而提升了开发速度。

关键语法对比:

功能C# (Unity)GML (GameMaker)
实例化对象Instantiate(prefab)instance_create_layer()
碰撞检测OnCollisionEnter2D()place_meeting()
移动控制transform.Translate()x += hsp * delta_time
数组操作Listarray_create()

迁移过程中最大的挑战是思维模式的转换:

  • 从面向对象到面向过程
  • 从组件系统到内置变量(如x,y,speed等)
  • 从多文件结构到单脚本逻辑

提示:利用GameMaker的"脚本"功能可以模拟类方法,通过method(variable, arguments)方式调用

3. 工作流效率的量化对比

为了客观评估效率提升,我记录了迁移前后完成相同功能的耗时:

功能模块Unity耗时(h)GameMaker耗时(h)
角色基础移动2.50.8
敌人AI状态机4.01.5
UI血条系统3.01.0
存档系统5.02.0

效率提升主要来自:

  1. 内置2D物理系统无需额外配置
  2. 可视化事件系统替代部分代码
  3. 更简单的资源管线管理
  4. 即时测试无需编译等待
// GameMaker的状态机实现示例 switch(state) { case STATE_IDLE: if keyboard_check(vk_left) state = STATE_RUN; break; case STATE_RUN: x += 3 * sign(move_dir); if !keyboard_check(vk_left) state = STATE_IDLE; break; }

4. 那些没人告诉你的实际坑点

迁移过程并非一帆风顺,有几个关键问题值得注意:

资源管线差异:

  • GameMaker的纹理页限制(默认2048x2048)
  • 音频文件需要转换为OGG/Vorbis格式
  • 不支持Unity风格的Prefab嵌套

调试工具对比:

  • 缺少Unity级别的性能分析器
  • 断点调试功能较为基础
  • 控制台输出需要手动启用

跨平台构建:

  • 控制台导出需要额外授权
  • 移动端构建流程完全不同
  • 缺少Unity Addressables等效的资源管理系统

注意:GameMaker的粒子编辑器功能较弱,复杂特效可能需要第三方插件

5. 为什么不是Godot或Unreal

测试期间我也评估了其他热门替代方案:

Godot:

  • 2D节点系统学习曲线陡峭
  • GDScript性能在移动端表现不稳定
  • 缺少成熟的商业游戏案例背书

Unreal:

  • 2D功能实际上是3D的简化版
  • Blueprint可视化脚本效率低下
  • 打包体积远超2D游戏需求

相比之下,GameMaker的"专精2D"定位反而成为优势。它的每个功能都是为2D游戏量身定制,从像素完美的碰撞检测到轻量级的骨骼动画系统。

迁移完成后,我的项目开发速度提升了约40%,构建时间缩短了70%。更重要的是,再也不用担心突如其来的引擎政策变化影响项目生死。GameMaker的订阅模式简单透明,对于中小型2D项目来说,成本反而比Unity更低。

← 返回列表