☰
3 个平台一次跑通:Godot 桌面发布(Windows / macOS / Linux)实操指南
2026/9/28 3:16:07 网站建设 项目流程

3 个平台一次跑通:Godot 桌面发布(Windows / macOS / Linux)实操指南

【免费下载链接】godot-docsGodot Engine official documentation项目地址: https://gitcode.com/GitHub_Trending/go/godot-docs

你收到一条玩家反馈:"游戏在 Windows 上弹蓝色安全警告,在 Mac 上双击打不开,Linux 下一句error while loading shared libraries。"这三件事,是 Godot 桌面发布最常见的三个现场。好消息是它们各有确定的解法:Windows 靠代码签名,macOS 靠签名加公证,Linux 靠依赖处理。这篇文章按"全局链路 → 分平台攻坚 → 自动化 → 排错速查"的顺序,带你把 Godot 项目发到 Windows、macOS、Linux 三个平台。

动手前,先把这份清单过一遍(不满足任何一条,后面都会卡住):

  • 编辑器里装好了对应平台的导出模板
  • 项目设置的名称、版本号、图标已确认
  • 敏感项(签名密码、脚本加密密钥)走环境变量,不写死在仓库里
  • 三个平台各有一个可运行的导出预设

发布链路:从编辑器到三个平台产物

先见森林。整条链路只有一条主线:在编辑器配好项目与导出预设 → 下载并安装导出模板 → 每个平台各导出一次,得到对应产物。

模板安装入口在编辑器的"导出预设"管理器里:打开后找到"下载并安装导出模板",选与编辑器版本一致的模板包。装错版本是新手最常见的卡点——如果看到导出时报模板不匹配,先去核对版本号。

项目基础设置决定了所有平台的"身份":

设置项位置说明
应用名称 / 版本号项目设置 → Application三平台共用,只维护一处
图标项目设置 → Application建议准备不同尺寸(含 Windows 的 ico)
脚本加密密钥(可选)导出预设的 Encryption 页签见下方说明

关于脚本加密:它能把场景和脚本用 AES 加密,防止被直接抠走。但注意一个前提——官方预编译模板不支持,你必须用同一把密钥自己从源码编译导出模板。如果只是普通发行,可以先跳过这项。更多细节见仓库中的 从源码编译导出模板。

Windows 发布攻坚:先解决 SmartScreen 警告

最容易翻车的点:玩家双击后看到"Windows 已保护你的电脑"。如果你看到这句,说明 EXE 没做代码签名。签名不是可选项——没有证书,Windows SmartScreen 会拦下绝大多数 Godot 导出包。

基础配置。导出产物分两个文件:

  • game.exe:可执行程序本体
  • game.pck:资源包,装场景、脚本、贴图等

PCK 与 EXE 分离意味着改资源后重导 PCK 即可,不用重新签名主程序。导出的核心参数写在项目的export_presets.cfg里,关键项如下:

# export_presets.cfg 关键配置 [preset.0] name="Windows Desktop" platform="Windows Desktop" runnable=true export_path="build/windows/StarRunner.exe" [preset.0.options] application/icon="assets/icon.ico" application/file_version="1.2.0.0" application/product_version="1.2.0" application/company_name="Pixel Forge Studio" application/product_name="StarRunner" application/file_description="A side-scrolling shooter"

进阶配置:代码签名。签名工具按你所在的系统二选一:

  • 在 Windows 上构建:用系统自带的SignTool.exe
  • 在 macOS / Linux 上构建:用osslsigncode

证书、密码这类敏感值不要写进export_presets.cfg(那是要进版本库的),改成环境变量注入:

# Windows 导出相关的敏感项,全部走环境变量 set GODOT_SCRIPT_ENCRYPTION_KEY=your_encryption_key set GODOT_WINDOWS_CODESIGN_IDENTITY=your_certificate set GODOT_WINDOWS_CODESIGN_PASSWORD=your_password

官方教程里 Windows 导出章节也单独讲了证书获取与配置,见 导出到 Windows。

macOS 发布攻坚:签名和公证一个都不能少

最容易翻车的点:玩家右键"打开"后看到"无法打开,因为来自身份不明的开发者"。如果看到这句,说明应用没经过签名和公证——macOS 的 Gatekeeper 对两者都要求严格。

基础配置:先看产物结构。导出结果不是单个文件,而是一个标准的.app包:

YourGame.app/ ├── Contents/ │ ├── Info.plist # 应用元信息 │ ├── MacOS/ │ │ └── YourGame # 可执行文件 │ ├── Resources/ │ │ └── data.pck # 资源文件 │ └── PkgInfo

进阶配置:签名。三种方式按场景选:

方式适用场景工具要求局限
Xcode codesign在 macOS 上构建Xcode 命令行工具需要开发者账号,只能 macOS 执行
rcodesign(PyOxidizer 工具链)CI / 跨平台构建rcodesign需在流水线里装好工具
ad-hoc 内置签名本地测试无额外工具无法公证,出不了自己电脑

生产发布用前两者;ad-hoc 只用来在本地验证逻辑。

公证(Notarization)流程。签名之后还必须过公证,Gatekeeper 才放行。链路是:

  1. 导出并签名应用
  2. 把应用提交给 Apple 服务器
  3. Apple 执行安全扫描
  4. 扫描通过后返回公证结果
  5. 公证完成,玩家机器上可正常打开

权限声明(Entitlements)。应用需要明确声明自己要用的能力,例如沙盒开关或设备访问权限:

<!-- entitlements 示例 --> <key>com.apple.security.app-sandbox</key> <true/> <key>com.apple.security.device.usb</key> <true/> <key>com.apple.security.device.bluetooth</key> <true/>

游戏如果要读手柄外设或蓝牙设备,相应条目必须加上,否则签名后功能会被系统直接禁掉。完整流程参考仓库里的 导出到 macOS。

Linux 发布攻坚:先跑 ldd,再谈分发

最容易翻车的点:你的机器上能跑,玩家的机器上弹出缺库报错(error while loading shared libraries)。原因是独立二进制依赖动态库,而各发行版版本不一。

依赖处理。先检查产物依赖了哪些库:

ldd StarRunner.x86_64

输出里凡是=> /lib/...这类绝对路径的库,就是潜在缺库风险点。如果目标机器上出现 "not found",两种处置:把缺的库打包进发布目录,或者改用静态链接。打包脚本示例:

#!/bin/bash # 收集依赖库 mkdir -p libs ldd $1 | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' libs/

发布格式选型。四种格式各有取舍:

格式优点缺点适合谁
独立二进制简单直接依赖库问题小范围分发、自己用
AppImage无需安装文件较大跨发行版通用分发
Flatpak沙盒隔离需要运行时规范化的商店分发
Snap自动更新Canonical 控制Ubuntu 生态用户

桌面集成。无论哪种格式,都建议配一个.desktop文件,让文件管理器知道这是什么程序、用什么图标、执行哪条命令:

[Desktop Entry] Version=1.0 Type=Application Name=StarRunner Comment=A game made with Godot Exec=/opt/starrunner/StarRunner.x86_64 Icon=/opt/starrunner/icon.png Categories=Game;

Linux 侧的纹理格式、架构选项在导出预设里都有独立开关,导出前对照目标机器确认一次。

统一导出配置与 CI/CD 自动化

三平台都跑通后,要收敛配置策略:每平台一个预设,身份类信息(名称/版本/图标)放项目设置只维护一处,签名密码和加密密钥走环境变量。这样export_presets.cfg可以放心进版本库,同事拉下来就能复现同样的产物。

再用 GitHub Actions 把发布自动化——打 tag 触发,一次构建三平台:

# .github/workflows 中的构建示例 name: Build and Export on: push: tags: - 'v*' jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Godot uses: firebelley/godot-action@v1 with: godot_version: '4.2' - name: Export Windows run: godot --export-release "Windows Desktop" game.exe - name: Export Linux run: godot --export-release "Linux" game.x86_64 - name: Upload artifacts uses: actions/upload-artifact@v3 with: name: game-builds path: | game.exe game.x86_64

自动化跑起来之后,再把优化做进去,按收益从大到小分三层:

  1. 资源层:纹理选合适的压缩格式,精简网格和动画数据,压内存占用
  2. 启动层:预加载关键资源、优化初始化顺序,把首帧时间压下来
  3. 包体积层:删掉没引用的资源、用压缩格式、大资产考虑流式加载

排错速查表

现场现象大概率原因处置动作
Windows 蓝色安全警告未代码签名申请证书,配 SignTool / osslsigncode 后重导
macOS "无法打开"未签名或未公证完成签名并走公证流程
Linux 缺库报错动态库依赖缺失ldd定位缺哪个库,打包或静态链接
玩家机器卡顿、加载慢资源过大 / 未压缩压纹理格式、删冗余资源、流式加载

三个常用的调试动作:

# 1) 调试导出(保留调试信息,便于玩家回传日志) godot --export-debug "Windows Desktop" game_debug.exe # 2) Linux 可执行文件开详细日志 ./game.x86_64 --verbose # 3) 性能分析模式 godot --profile

发布 Checklist 与下一步行动

发布前最后一遍核对,逐项打勾:

  • 三平台预设都在,模板版本与编辑器一致
  • 名称、版本号、图标核对无误
  • Windows 产物已签名,玩家机器不再出 SmartScreen 警告
  • macOS 产物已签名并完成公证
  • Linux 产物在干净环境跑过ldd,无缺库
  • 加密密钥 / 签名密码只存在于环境变量
  • CI 流水线能一键产出三平台产物

下一步建议按顺序做:先跑通一个最小发布版本(哪怕只有一个 Demo 场景)→ 把上面的 GitHub Actions 流程建起来 → 找两三个不在你身边的真实用户实测一遍,按反馈修完再发正式版。三平台发布没有银弹,但每一个坑都有确定解法——照这份清单走完,你的 Godot 游戏就能在 Windows、macOS 和 Linux 上稳定跑起来。

【免费下载链接】godot-docsGodot Engine official documentation项目地址: https://gitcode.com/GitHub_Trending/go/godot-docs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询