强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

Godot 3 GDScript 教程 / Godot 3 GDScript 教程(十九):导出与发布

导出与发布

游戏开发完成后,需要将项目导出为各平台的可执行文件并发布。Godot 3 支持 Windows、Linux、macOS、Android、iOS、HTML5(Web)等多个平台。


导出模板安装

编辑器 → Editor → Manage Export Templates...
自动下载:选择与 Godot 版本匹配的模板
手动安装:解压到用户目录
  Windows: %APPDATA%/Godot/templates/
  Linux: ~/.local/share/godot/templates/

⚠️ 注意:导出模板版本必须与 Godot 编辑器版本完全匹配(包括 minor 版本),否则导出会失败。


平台配置

Windows

设置项推荐值说明
Architecturex86_6464位
Embed PCK单文件分发更方便
Console Wrapper开发时开,发布时关调试用
Icon.ico 文件可执行文件图标

Android

设置项推荐值
Package Namecom.company.gamename(反向域名)
Version Code每次发布递增的整数
Min SDK21(Android 5.0)
Target SDK33
Keystore签名密钥文件(发布必须)

前置要求:Android SDK(API 30+)、JDK 11、Editor Settings 中配置路径。

iOS

前置要求:macOS + Xcode + Apple 开发者账号($99/年)。

Web(HTML5)

导出产物说明
index.html主页面
.wasmWebAssembly 代码
.pck资源包
.jsJavaScript 引擎

导出设置详解

资源过滤器

# 只导出需要的资源(减小包体)
Include Filter: res://scenes/*;res://scripts/*;res://assets/*
Exclude Filter: res://addons/*;res://docs/*;res://*.blend

命令行导出

# 批量导出脚本
godot --export "Windows Desktop" build/windows/game.exe
godot --export "Linux/X11" build/linux/game.x86_64
godot --export "Android" build/android/game.apk
godot --export "HTML5" build/web/index.html

图标与启动画面

各平台图标要求

平台格式尺寸说明
Windows.ico16×16 到 256×256 多个尺寸
macOS.icns16×16 到 1024×1024
Android.pngmdpi 48 到 xxxhdpi 192 多种密度
iOS.png1024×1024(Xcode 自动缩放)
Web.icofavicon.ico

启动画面

Project → Project Settings → Application → Boot Splash
- Image: 启动画面图片
- Full Size: 是否全屏显示
- Bg Color: 背景颜色

代码签名

Windows

signtool sign /f certificate.pfx /p password \
  /tr http://timestamp.digicert.com /td sha256 /fd sha256 game.exe

macOS

# 签名
codesign --force --sign "Developer ID Application: Your Name" game.app
# 公证(macOS 10.15+ 必须)
xcrun altool --notarize-app --primary-bundle-id "com.company.game" \
  --username "[email protected]" --password "app-specific-password" --file game.app.zip

Android

# 生成 Keystore
keytool -genkey -v -keystore my-game.keystore -alias mygame \
  -keyalg RSA -keysize 2048 -validity 10000
# 在 Godot 导出设置中配置 Release Keystore

⚠️ 注意:Android Keystore 文件丢失后将无法更新应用,请妥善保管。


Steam 发布流程

准备工作

1. 注册 Steamworks 开发者账号($100 一次性费用)
2. 创建应用,获取 AppID
3. 下载 Steamworks SDK / GodotSteam 插件

GodotSteam 集成

# https://godotsteam.com/
var result = Steam.steamInitEx(false, 480)  # 480 是测试 AppID
if result["status"] != 0:
    push_error("Steam 初始化失败")
    return

func _process(delta):
    Steam.run_callbacks()  # 必须每帧调用

# 成就系统
func unlock_achievement(id: String):
    Steam.setAchievement(id)
    Steam.storeStats()

# Steam Cloud 存档
func upload_cloud(data: String, filename: String):
    Steam.fileWrite(filename, data.to_utf8())

发布清单

步骤说明
创建应用Steamworks 后台
配置商店页面描述、截图、标签、定价
上传构建SteamCMD 或后台
设置分支default(发布)、beta(测试)
提交审核3-5 个工作日
发布上线审核通过后

移动端发布

Android

1. 生成签名的 APK 或 AAB(Google Play 推荐 AAB)
2. Google Play Console 创建应用
3. 上传构建到内部测试轨道
4. 填写应用信息、截图、隐私政策
5. 设置内容分级、提交审核

iOS

1. Xcode 打开导出的项目
2. 配置 Signing & Capabilities
3. Archive 并上传到 App Store Connect
4. 填写信息、提交审核(24-48 小时)

移动端优化

# 移动端导出前检查
# 1. 纹理压缩:ASTC/ETC2
# 2. 分辨率适配:Stretch Mode: 2d + Aspect: keep
# 3. 触摸屏输入适配
# 4. 降低粒子数量、简化着色器
# 5. 限制帧率:Engine.target_fps = 60

Web 导出注意事项

限制

限制项说明
文件大小初始加载不宜超过 50MB
线程SharedArrayBuffer 需要特殊 HTTP 头
音频需要用户交互才能播放(浏览器限制)
性能比原生慢 2-5 倍

Nginx 配置

server {
    listen 80;
    root /var/www/game;

    types {
        application/wasm wasm;
        application/octet-stream pck;
    }

    gzip on;
    gzip_types application/wasm application/javascript;

    # SharedArrayBuffer 需要的头(多线程支持)
    add_header Cross-Origin-Opener-Policy same-origin;
    add_header Cross-Origin-Embedder-Policy require-corp;
}

⚠️ 注意:Web 导出的 SharedArrayBuffer 需要服务器返回特殊 CORS 头,否则只能单线程模式。


游戏开发场景

多平台构建脚本

#!/bin/bash
GAME="MyGame"
mkdir -p build
godot --export "Windows Desktop" "build/windows/${GAME}.exe"
godot --export "Linux/X11" "build/linux/${GAME}.x86_64"
godot --export "HTML5" "build/web/index.html"
echo "=== All builds complete ==="

版本号管理

extends Node

const VERSION = "1.2.3"
const BUILD = 456

func _ready():
    print("Version: %s (build %d)" % [VERSION, BUILD])

扩展阅读

💡 总结:导出前务必在目标平台上进行完整测试。Android 推荐 AAB 格式。Web 导出注意文件大小和服务器配置。Steam 发布需要预留审核时间。始终保留好签名密钥文件。