Godot

Godot 引擎

最近我完成了我的第一个安卓应用。虽然你可能不太相信,但我是用的一个游戏引擎 Godot 来制作的。

我的客户是 北京市仁爱慈善基金会。它的旗下有一个项目叫仁爱心栈。这个项目的工作大概就是,每天早上有志愿者会到交通要道的周围把熬好的粥奉送给路过的人。有点类似古代的赊粥。

而这个过程中需要记录一些东西,比如今天有哪些志愿者来了,他们具体的职责是什么,是否有新志愿者,奉送了多少杯粥等等。这时记录的东西一般是在手机上(安卓为主)。等早上忙完了,会有专门的文宣人员根据这些记录来写下当天的日志和心得。这时他们会使用电脑,当然是Windows系统。

所以我的初始目标很明显,选择一个可以安卓和Windows通用的技术,快速的做出一个原型。我很想使用 JavaScript,那毕竟是我工作上使用的语言。我很熟悉他的优缺点。我不认我的客户会喜欢 50mb 的 Electron 应用,我也不会在这时贸然选择 React-Native 或 Weex。虽然后台我还是使用了 Node.js,但前端的技术选择很令我着急。

这时我想到了 Unity3D,作为一个游戏引擎,它几乎就是我需要的:一份代码可以编译到安卓和Windows上。不过 Godot 引擎更好——我的客户应该不会喜欢看到 Unity3D 的 logo,而 Godot 作为 MIT 协议的游戏引擎,允许我使用仁爱慈善作为 splash screen。要知道仁爱慈善算是佛教的团体,是很保守的。如果让他们看到 Unity3D 的 logo,第一印象一定会很差的,虽然我知道 Unity3D 肯定是技术上最好的选择。

Godot 引擎作为一个开源项目,最大的好处就是没有任何依赖,甚至不需要联网。在这里我就要批评一下我曾经看上的两个项目。一个是 google 出的 flutter。不知道为啥他们不喜欢自己同事设计的安卓的 api,但他的想法很好:用 c++ 写一个自己的跨平台引擎,配合 Dart 语言和自己的 FPR 框架。。。可惜的是他们的实现我只能用傻逼来形容。它会不经过我同意就要从 google 的服务器拉东西,撞在了防火墙上。我可是有梯子的,但它偏偏不用,总是想偷偷的搞事情,江来出了事情又不负责。另一个就是 Defold 引擎,居然要求你的项目在他的 git 服务器上,拿衣服。

开发时使用 Godot 非常“方便”,因为你只需要看文档。没有任何第三方库可以使用,也没有复杂的包管理和 bundler。Godot 目前只支持自己的 GDScript 语言,该语言类似 Python,但并不是特别好用,只适合小型项目。

之前我撒了一个谎,其实打包安卓时还是需要 Java 和 Android Studio 全家桶的。不过那都不是问题,google 一下就可以解决一切。

结果当然是我的客户非常高兴。我也算是制作了自己第一个安卓应用。

-