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

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

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

Android

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

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

iOS

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

Web(HTML5)

导出产物 说明
index.html 主页面
.wasm WebAssembly 代码
.pck 资源包
.js JavaScript 引擎

导出设置详解

资源过滤器

# 只导出需要的资源(减小包体)
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 .ico 16×16 到 256×256 多个尺寸
macOS .icns 16×16 到 1024×1024
Android .png mdpi 48 到 xxxhdpi 192 多种密度
iOS .png 1024×1024(Xcode 自动缩放)
Web .ico favicon.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 发布需要预留审核时间。始终保留好签名密钥文件。