谢夏戈 @ xiexiage.com

导出 + 发布到 itch.io

May 12

游戏做完了!最激动人心的一步 — 让别人玩到你的游戏

我们要做两件事:

  1. 导出为 Web 版(HTML5) — 在浏览器里就能玩
  2. 发布到 itch.io — 全世界都能搜到、能玩

还记得我们在 第 1 章选了「兼容」渲染器吗?就是为了这一步!🎉

安装 Web 导出模板

第一次导出 Web 版需要下载导出模板:

路径:编辑器 → 管理导出模板 (Manage Export Templates)

如果是首次安装,点击「下载并安装」,等几分钟下载完成即可。

09-export-导出模板

配置 Web 导出

路径:项目 → 导出 (Export)

点击「添加」→ 选择 Web 平台。

09-export-配置

关键设置

推荐值说明
Custom HTML Shell留空用 Godot 默认模板即可
Head Include留空如果想自定义页面 meta,可以加
Canvas Resize PolicyAdaptive自适应窗口大小
Focus Canvas on Start✅ 启用启动就聚焦,方便按键响应
Experimental Virtual Keyboard看需求移动端用得上

导出游戏

  1. 在【导出】面板选中 Web 配置
  2. 点击右下角「导出项目
  3. 选择一个空文件夹保存(比如 builds/web/
  4. 文件名填 index.html(itch.io 上传约定)

⚠️ 必须导出到空文件夹 — 否则会和已有文件混在一起。

⚠️ 两个最容易踩的坑

坑一:底部有两个按钮,长得很像,只有一个是对的。

按钮产出用途
导出项目(Export Project)index.html + .js + .wasm + .pck你要的
导出 PCK/ZIP只有资源数据包,没有 index.html❌ 给 DLC / MOD / 热更用的

点错第二个,你会得到一个能打开但里面全是 scenes/ scripts/ 的压缩包,itch.io 加载不出来。

坑二:Web 导出永远输出散文件,Godot 不会帮你打 zip。

导出路径的作用是决定基础文件名,不是决定打包格式。你要是把路径填成 XGGame-Bird.zip,Godot 会拿 XGGame-Bird 当基础名生成一堆文件, 然后把主 HTML 写进那个 .zip 路径 —— 你得到一个后缀是 .zip 的 HTML 文件, file 命令一看就露馅:

$ file XGGame-Bird.zip
XGGame-Bird.zip: HTML document text     # 根本不是压缩包

所以文件名老老实实填 index.html,zip 留到下面那步自己压。

导出后这个目录会出现一堆文件:

builds/web/
├── index.html
├── index.js
├── index.pck       ← 游戏资源
├── index.wasm      ← 游戏引擎(WebAssembly)
├── index.audio.worklet.js
└── index.icon.png  ← 图标(可选)

本地测试

Web 导出无法直接双击 index.html 打开(浏览器安全策略会阻止 wasm 加载)。需要起一个本地 server:

# Python 自带 server(最方便)
cd builds/web
python -m http.server 8000

# 或者 Node.js
npx serve builds/web

打开浏览器访问 http://localhost:8000,能玩就说明导出成功。

注册 itch.io

已有账号可以跳过这一步。

itch.io 注册账号,确认邮箱即可。

上传游戏

登录后,右上角头像 → Upload new project

填写项目信息

字段填写建议
Title游戏名(如 XGGame-Bird
Project URLURL slug(自动生成,可改)
Short description一句话简介(搜索结果会显示)
ClassificationGames
Kind of projectHTML ← 关键!
Release statusReleasedPrototype
Pricing$0 or donate (免费 / 自愿打赏)

上传文件 — 打包成 zip

itch.io 要求 Web 游戏打包成 zip 上传

# 进入 builds/web 目录
cd builds/web

# 打包成 zip(不要有外层文件夹,要 index.html 在 zip 根目录)
zip -r ../xggame-bird-web.zip .

或者直接在文件管理器里:选中 builds/web 里的所有文件(注意是文件,不是文件夹)→ 右键 → 压缩为 zip。

⚠️ 常见坑:zip 解压后必须直接看到 index.html不能有外层文件夹。否则 itch.io 加载不出来。

上传 zip 后,勾选 「This file will be played in the browser」

配置嵌入设置(Embed Options)

下拉找到 Embed options

Viewport dimensions608 × 1080(见下方说明)
Frame options一般勾 Fullscreen button 让玩家可全屏
Mobile friendly如果适配了移动端,勾上

这个数字怎么来的:项目设置里视口是 720 × 1280,但窗口高度覆盖设成了 1080。 按 9:16 等比换算,宽就是 720 ÷ 1280 × 1080 ≈ 608关键是比例对,绝对值可以小一点 —— 1280 高在笔记本上会超出屏幕,玩家要滚动才能看全。

上传封面图和截图

往下翻到 Cover image

  • Cover image — 主图,建议 630 × 500315 × 250,会出现在 itch.io 列表里
  • Screenshots — 游戏截图,2-4 张就够了
  • Banner — 横幅图(可选)

封面图建议用游戏的最高光时刻做截图 + 加点文字,吸引点击。

设置标签 + 分类

帮助玩家发现你的游戏:

  • Genre: Action
  • Tags: flappy, casual, pixel-art, arcade, endless, godot
  • Average session: A few minutes
  • Inputs: Mouse, Keyboard, Touchscreen(如果支持)
  • Accessibility: 看实际情况

发布!

设置好后,把 Visibility 改成:

  • Public — 完全公开,任何人都能搜到
  • Restricted — 只有有链接的人能访问(适合先给朋友测试)
  • Draft — 草稿,只有自己能看

点击右下角 Save & view page,欣赏一下自己的成果 🎉

分享出去!

把 itch.io 的链接发到:

  • 朋友圈、Twitter、小红书、抖音视频简介
  • r/godot — Godot 社区
  • Itch.io 论坛 — Release Announcements
  • Discord 游戏开发群

记得在我的博客评论区也贴一下你的 itch.io 链接,互相玩一下!🎮


整个系列到这就完结了 🎉

回顾一下我们完成的事:

  • ✅ 从零搭建一个 Flappy Bird 类游戏
  • ✅ 学会了 Godot 的核心概念:节点、场景、信号、Autoload、Parallax
  • ✅ 实现了完整的游戏循环:菜单 → 游戏 → 结束 → 重开
  • ✅ 加上美术 + 音效,让游戏有了"灵魂"
  • 公开发布,全世界都能玩

如果你跟着做完了整个流程,请一定告诉我!可以发我作品链接 → Twitter @X_XXGGG / 或博客评论。

下一个游戏,我们再战 💪

2023-PRESENT © 谢夏戈