兜兜转转,我还是入了 Godot 的坑

我用过 Unity,摸过 Unreal,玩过 GameCreator,也短暂接触过 Cocos。但最后让我愿意一直用下去的,是 Godot。

不是因为它完美——它远不完美。而是因为它对得上我的脾气。

打开引擎只要 3 秒

这不是修辞。Godot 的安装包大约 50MB,解压即用,双击打开到你看到编辑器界面,三秒左右。没有启动器,没有许可证验证,不需要登录账号。

Unity 呢?打开 Hub,等它加载,选项目,等编辑器初始化,倒杯水回来差不多好了。Unreal?你打开的时候可以去煮碗面。

对一个经常冒出想法就想快速验证的人来说,启动速度就是生产力。我打开 Godot 建个新项目、搭个场景、跑起来看效果,可能比我等 Unity 启动还快。

开源,真的开源

MIT 协议。你做的游戏 100% 归你,没有抽成,没有按照收入阶梯收费,没有那种「哦你赚到 20 万美元了现在开始交钱」的条款。你甚至可以把 Godot 魔改了发布自己的版本。

Unity 2023 年的 Runtime Fee 闹剧之后,很多人开始重新审视「把饭碗放在别人锅里」这件事。你用了十年的引擎,母公司一个决策就可能让你的商业模式崩塌。Godot 没有这个风险——它不属于任何公司。

这是信任问题,不是技术问题。但信任有时候比技术重要。

GDScript:丑但好用

GDScript 长得像 Python,缩进敏感,语法简单到你会怀疑它是不是玩具语言。但写起来真的很舒服。

不用写分号,不用管类型声明(想写也可以),不用跟头文件搏斗。写个角色移动:

func _process(delta):
    if Input.is_action_pressed("move_right"):
        position.x += speed * delta

没了。就这么多。不需要 Update() vs FixedUpdate() 的区别,不需要 GetComponent<>() 那一大串,不需要管 MonoBehaviour 的生命周期顺序。

Godot 的信号系统也干净。一个节点发信号,另一个节点接收,不会像 Unity 的事件系统那样绕来绕去。按钮点击、计时器到点、动画播完——一个 connect 搞定。

节点系统:入门直觉,深了也够用

Godot 的场景-节点体系是我用过的最直觉的架构。

你建一个「玩家」场景,往里塞一个 Sprite 节点(负责显示)、一个 CollisionShape2D(负责碰撞)、一个 AnimationPlayer(负责动画)。每个节点干一件事,互不干扰。继承关系清晰,组合起来灵活。

Unity 的 GameObject/Component 体系也很灵活,但新人很容易掉进「一个 GameObject 挂了 20 个组件不知道哪个在生效」的坑。Godot 的树形结构强迫你思考层级——这东西是「有」还是「是」——反而减少了随意堆砌。

2D 是一等公民

很多引擎的 2D 是后来拼上去的。Unity 的 2D 本质上是 3D 引擎关了一个轴。Unreal 的 2D 支持是 Paper2D,半死不活。

Godot 的 2D 是原生设计的。像素单位、物理层、TileMap、动画帧——这些 2D 开发天天打交道的东西,Godot 从底层就支持得很好。你用像素坐标就是像素坐标,不会出现那种「这个 Sprite 在 3D 空间里的 Z 轴到底是什么」的精神分裂。

我主要做 2D 游戏,这一点对我来说太重要了。

体积小,没包袱

Unity 导出一个空场景的游戏,打包完几十 MB。Godot 导出同样的东西,几 MB。不是 Godot 做得好,是它没带一堆你用不到的东西。

如果你做的是小体量独立游戏——像素风、视觉小说、小平台跳跃——Godot 给你的是刚好够用的东西,不塞你不需要的。

说几句不好听的

你要做大型 3D 项目,Godot 的 3D 管线跟 Unreal 比还有差距。它的 C# 支持存在但不如 GDScript 成熟。它的资源商店跟 Unity Asset Store 比差了几个数量级。它的 console 导出需要第三方支持(任天堂、索尼的 SDK 不是开源的)。

但这些都不是我现在关心的。我做的项目不需要 3A 级别的渲染管线,也不需要 Asset Store 上的高级插件。我需要一个轻量、自由、合手的工具。Godot 就是这个工具。

还有一点

Godot 的社区氛围很好。GitHub 上提 issue 有人认真回,论坛里问问题有人耐心答。开发者 Juan Linietsky 经常亲自下场跟社区互动。

跟 Unity 那种「我们会倾听社区反馈然后什么都不做」的调调不一样,Godot 的路线图是公开的,功能优先级是社区投票的。你知道你的意见真的能影响引擎的方向。

这种感觉——工具是你参与塑造的,而不是被塞给你的——对一个常年写代码的人来说,很重要。

最后

我不讨厌 Unity。它是个好引擎,很多项目离开它跑不起来。我也不鄙视 Unreal——它的画面天花板没人能碰瓷。

但日常开发,我最想打开的还是那个 50MB 的 Godot。它不逼你登录,不跟你收钱,不擅自改协议。你写你的游戏,它做你的工具。

朴素,坦荡,好用。

这就够了。

一名痴迷于计算机技术的学生~