Linux下尝试使用Godot开发小游戏

之前浏览资讯的时候,看到 Blender Studio 发布了一款名为 Dogwalk 的免费游戏,在 Steam 上试玩了下,牵着一条狗在地图上跑来跑去的,没搞明白也没有耐心玩完。

Blender 和 Godot 的结合倒是给人留下了印象,于是想到为什么不用 Godot 做个小游戏试试看呢?顺便学习下游戏开发相关的各种概念。

本文记录在 Arch Linux 下使用 Godot,按照官方示例开发 2D 游戏,并尝试发布到微信小游戏(结果失败,后文会讲原因)。

1. 安装游戏引擎 Godot

Godot 是一款多功能、跨平台的 2D 与 3D 开源游戏引擎,GitHub 标星都 105k 了,国内也有一众适合小游戏开发的引擎 Cocos、LayaAir、Egret 等,基本都不提供 Linux 版本,或者极少维护的状态,国内很多软件都这样,早已习惯。

优势是其中有些能直接导出成微信小游戏发布。我喜欢 Linux 和 Python,选择 Godot,玩票性质的。

1sudo pacman -S godot

若要安装其它版本,官网也能直接下载,解压后是个可执行程序,直接运行就好。

2. 开发 2D 游戏

官方文档有个 2D 游戏的教程,也有 3D 教程,没做过游戏开发,本人新手上路老实选 2D,跟着教程跑通了。

建议:

  • 最好双屏,一个屏幕看文档,一个引擎开发,不用拖来拖去,来回切换,单屏真的累。
  • 同时打开中文和英文文档,游戏开发有些特定术语,对比看更容易理解,少走弯路。
  • 保持耐心,是文档总没那么理想,对新手来说,其中有些脚本更改逻辑,没有标注修改的是哪个脚本文件,要结合前后文自己判断到底在哪个文件做修改(主要是指 GDScript),也可以直接下载 dodge_the_creeps_2d_assets.zip,照着源码包看。
  • 使用 Git 版本管理,这没什么好解释的

新手至少要操作几个小时的,跟着教程走完后,如下图所示:

dodge_the_creeps_2d

标号 1、2 是游戏界面,分别为玩家和敌人,玩家通过键盘方向键控制移动,敌人会从屏幕 4 个方向随机出现,碰到即游戏结束,播放一段死亡音乐。

标号 3 是场景,在 Godot 中,游戏分解成可重复使用的场景。场景可以是一个角色、一件武器、用户界面中的一个菜单、一座房子、整个关卡、或者任何你能想到的东西,各个场景组成场景树,由主场景切入,场景会绑定 GDScript。像导演拍电影一样,各种花絮结合起来就是一个电影。

标号 4 是类似于电脑的文件系统,或者叫资源管理树,不多解释。

标号 5 是给场景的各种通用组建进行设定,比如颜色、字体、圆的半径、图片、和音乐绑定,信号连接等。

其它没标号的地方,点点看就明白是什么意思了。游戏引擎要模拟各种现实物件和逻辑,细究还是挺复杂的。

3. 导出游戏

Godot 支持导出到多个平台,如下图所示:

godot_export

导出要下载额外的模板,会帮你选择最快的源下载,懒得截图了。

在 Linux 下,我测试了导出为 Linux 下的二进制可执行程序和 web 导出,二进制可正常运行;web 导出结果,使用 sudo caddy file-server 就能在浏览器上面打开游戏,也就是说,你可以把游戏放到你网站上去,有浏览器就能玩,这不就是就是页游么😅?

相比导出到微信小程序各种繁琐和无奈,不得不让人感叹还是标准 web 障碍少。

4. 尝试发布到微信小游戏

Godot 是不像地头蛇 Cocos,是不能直接导出到微信小游戏的,抖音小游戏倒是支持 Godot,但抖音要软著,个人开发者还限定使用场景,路都封死了啊!

所以下面只说,如何导出到微信小游戏:

这个开源项目:https://github.com/yuchenyang1994/godot-love-wechat 支持 Godot 导出到微信小程序。

看了下源码,默认是为 Windows 用户服务的😮‍💨,不过我尝试了下只需稍微改几行代码就能跑起来。 请看diff

 1(godot-love-wechat)   godot-love-wechat git:(main)  git diff 24058f6 2035a376
 2diff --git a/app/exporter.py b/app/exporter.py
 3index db3d503..4056bff 100644
 4--- a/app/exporter.py
 5+++ b/app/exporter.py
 6@@ -131,7 +131,8 @@ class Exporter:
 7         export_path = export_settings["export_path"]
 8         settings = self.storage.get("settings.json")
 9         if settings:
10-            wechat_execute = os.path.join(settings["wechat_execute"], "cli.bat")
11+            #wechat_execute = os.path.join(settings["wechat_execute"], "cli.bat")
12+            wechat_execute = settings["wechat_execute"]
13             result = subprocess.run([wechat_execute, "open", "--project", export_path])
14             print(result)
15
16diff --git a/app/stroge.py b/app/stroge.py
17index e90cf12..b1472ea 100644
18--- a/app/stroge.py
19+++ b/app/stroge.py
20@@ -1,9 +1,11 @@
21 import os
22 import json
23+from platformdirs import user_data_dir
24
25 class Storge:
26     def __init__(self) -> None:
27-        self.path = os.path.join(os.environ['LOCALAPPDATA'], 'godot-love-wechat')
28+        self.path = user_data_dir("godot-love-wechat")
29+        os.makedirs(self.path, exist_ok=True)
30
31     def save(self, file, data):
32         print(self.path)

就是改动默认存数据的目录和启动微信开发者工具的逻辑,作者都是写死只支持 Windows,还有就是安装一些 pywebview 的一些 gui 包。实在搞不懂就问 AI 或者通过公众号联系我。

 1(godot-love-wechat)   godot-love-wechat git:(main)  cat pyproject.toml
 2[project]
 3name = "godot-love-wechat"
 4version = "0.1.0"
 5description = "Add your description here"
 6readme = "README.md"
 7requires-python = ">=3.12"
 8dependencies = [
 9    "boto3>=1.37.8",
10    "nicegui>=2.9.0",
11    "nuitka>=2.5.9",
12    "pillow>=11.0.0",
13    "pyinstaller>=6.11.1",
14    "pywebview>=5.3.2",
15]

配置数据真实存放目录:

 1➜  ~ cd .local/share/godot-love-wechat/
 2➜  godot-love-wechat ls
 3projects.json  settings.json
 4➜  godot-love-wechat cat projects.json
 5[
 6  {
 7    "id": "e7d0f48436b2484a82d8c2ae514a2d35",
 8    "name": "dodge-the-creeps",
 9    "path": "/home/mephisto/github/dodge-the-creeps",
10    "version": "",
11    "description": "",
12    "icon": "/home/mephisto/github/dodge-the-creeps/icon.svg"
13  }
14]15➜  godot-love-wechat cat settings.json
16{
17  "godot_execute": "/bin/godot-4.4.1",
18  "wechat_execute": "/usr/bin/wechat-devtools",
19  "cdn_endpoint": "",
20  "cdn_access_key_id": "",
21  "cdn_secret_access_key": ""
22}23➜  godot-love-wechat pwd
24/home/mephisto/.local/share/godot-love-wechat

你是不是和我一样,心里美滋滋以为跑起来就万事大吉?错,更多痛苦在后面。

按照作者的仓库文档指引和 B 站视频,我是连续几天空闲时间折腾,包括降级 Godot 版本(4.5.1->4.4.1)、Skyline、微信开发者工具调试基础库切换、导出模板 4.5.1 适配(期间还要源码编译 Godot,仓库大下载慢等,怎么适配?文档不清晰),最后效果只能达到如下图所示:

godot-minigame-shit

点上面标号 1 的地方(游戏开始按钮),游戏是正常运行的,能听到背景音乐和碰撞后游戏结束的声音,但画面是黑屏的,iPhone 手机预览也无法正常运行。问 AI 说是 webgl 渲染问题,新手只能表示无奈,挣扎到此结束了。

建议切换 Windows 系统导出到微信小游戏,我已经不用 Windows 好多年了。

此外,还有人弄了个导出助手,走商业路线的,表示理解。

我只希望后来者,看到我这个记录,能有点帮助少踩坑,至少我让这个开源导出软件在 Linux 下运行起来,还没有人写过 Linux 平台下的导出相关文章。

希望有一天冒出个高手,扫平障碍,抑或等腾讯像字节那样官方支持 Godot 导出到小游戏,目前看起来比较难。

最后修改于: Thursday, January 15, 2026
欢迎关注微信公众号,留言交流;也欢迎使用微信小程序。

相关文章:

翻译: