一篇文章教你如何缩减Godot项目导出包的大小

本文假设您已经掌握了如何自己编译 Godot 导出模板


你可能也发现了,即使是 Godot 空项目,导出的游戏包体也很大。比如导出的 Windows 包有 70M 左右。

要搞清楚这个问题,我们首先需要知道 Godot 是如何实现游戏打包的。

打包时,Godot 其实是把游戏的资源和逻辑都打包到一个 .pck 文件中。pck 文件本身并不能运行游戏,需要借助导出模板(export template),而导出模板就相当于是游戏的启动器。对于同一个平台,不管最终的 pck 文件怎样,使用的导出模板都是同一个。

因此,空项目的游戏包体,主要由导出模版的大小决定。下面介绍如何缩减导出模板的大小。

1 定制导出模版

借用 Godot Build Options Generator 工具,根据你的项目裁剪不必要的模块。

1.1 步骤:

  1. 打开在线工具:
    👉 https://godot-build-options-generator.github.io/

  2. 选择你实际项目中需要用到的模块(如:是否需要网络?是否用到导航?是否支持 3D?等)

  3. 下载生成的 custom.py 文件

  4. custom.py 放入 Godot 源码根目录(即包含 SConstruct 的目录)

  5. 编译 export 模版:

    scons platform=windows target=template_release arch=x86_64
    

    ✅ 编译完成后,bin/ 目录下生成的 .exe 文件就是你的轻量化导出模版。

  6. 将其替换到你的导出模版目录中即可使用(或用作自定义模板)
    例如将生成的godot.windows.template_release.x86_64.exe 放到godot/bin/editor_data/export_templates/4.5.beta/windows_release_x86_64.exe


2 使用 strip 去除调试符号(可选)

⚠️ 注意:如果你本来就是用 release 编译,基本不含符号,此步骤影响不大。

在 Windows 平台:

strip windows_release_x86_64.exe

在 macOS 上(使用 MinGW 工具链)

x86_64-w64-mingw32-strip windows_release_x86_64.exe

3 使用 UPX 压缩导出模版(大幅减小体积)

UPX 是一个可执行文件压缩工具,能极大减小 .exe 文件的体积。

⚠️ 注意:使用 UPX 压缩后,导出游戏无法再使用内嵌 PCK配置。因为导出模板经过 UPX 压缩,原本的导出模版结构已经发生变化,文件内部是一个解压引导器+压缩二进制。Godot原本通过 PE 结构附加 PCK 的操作无法再生效了。
同样,如果先内嵌 PCK ,再进行UPX压缩,那么在游戏运行时,同样会因为无法找到 PCK 的内容位置而运行失败。

3.1 安装 UPX

  • macOS(使用 Homebrew):

    brew install upx
    
  • Windows:从 官网 下载并配置 PATH。

3.2 压缩导出模版

upx --best windows_release_x86_64.exe

⚠️ 注意:直接压缩导出模板,多少会对游戏的导出效果有影响,比如压缩后就无法自动替换游戏包的app图标了。如果介意的话,可以将压缩这一步放在最后,等导出游戏的可执行文件后,再执行压缩。


4 最终效果

阶段 体积大小(示例)
默认导出模版 ~70MB
使用 custom.py 裁剪 ~30MB
UPX 压缩后 ~10MB

5 附录

2d 小游戏项目的 custom.py 文件示例,在线上生成的基础上有几处小改动。

# Generated using https://godot-build-options-generator.github.io


disable_3d = "yes"
module_bmp_enabled = "no"
module_camera_enabled = "no"
module_enet_enabled = "no"
module_gltf_enabled = "no"
module_hdr_enabled = "no"
module_mobile_vr_enabled = "no"
module_multiplayer_enabled = "no"
module_navigation_enabled = "no"
module_openxr_enabled = "no"
module_webxr_enabled = "no"
module_text_server_adv_enabled = "no" 
module_text_server_fb_enabled = "yes" 
optimize = "size_extra"


6 参考链接

  1. Introduction to the buildsystem-Godot Docs 介绍构建系统的基本知识,提到了 custom.py 的用法。
  2. Compiling for Windows-Godot Docs 介绍如何在 Windows 编译 Godot 工程和导出模板。如果要在 MacOS 编译 Windows 的导出模板,需要 brew install mingw-w64 安装 mingw ,安装后直接通过 SCons 编译即可。文档中同样提到了如何生成自包含的 Godot 编辑器(在 bin/目录下创建一个 ._sc_ 文件。
  3. Optimizing a build for size-Godot Docs 介绍如何缩减包体,不过可能主要介绍的是如何缩减生成的 Godot 编辑器的大小。
作者:唐衣可俊
出处:http://www.cnblogs.com/tangyikejun/
版权:本文版权归作者本人所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任