Skip to content

构建与发布 ​

本页属于 GenPy Ren'Py 学习路线。教程内容面向 Ren'Py 8.x,并在页面末尾连接到 GenPy 的对应工作流。

学习目标 ​

  • 了解“构建与发布”在 Ren'Py 项目中的用途。
  • 能在一个最小项目里验证本章相关语法或工作流。
  • 知道发布前需要检查的常见风险,并能在 GenPy 中继续维护。

核心语法 ​

  • Build Distributions
  • Lint
  • Windows
  • macOS
  • Linux
  • Android
  • Web

可运行示例 ​

text
define config.name = _("我的视觉小说")
define config.version = "1.0.0"
define build.name = "MyVisualNovel"          # 文件名/目录名(用 ASCII)
define build.directory_name = "MyVN-1.0.0"

# 应用标识(务必唯一,影响存档目录、商店上架)
define build.itch_project = "yourname/my-vn"

教程正文 ​

做完游戏后,用启动器的 Build Distributions 一键打包成各平台可分发的安装包。

1. 发布前检查清单 ​

  1. Check Script (Lint):修掉所有错误/警告(死路 label、未定义跳转、缺图等)。
  2. 填写 options.rpy 里的构建信息(游戏名、版本、ID)。
  3. 勾选 “Add from clauses to calls”(保证未来更新不破坏老存档,见第 3 章)。
  4. 测试存读档、回滚、各分支与结局。
  5. 准备图标、封面、截图。

2. options.rpy 构建配置 ​

text
define config.name = _("我的视觉小说")
define config.version = "1.0.0"
define build.name = "MyVisualNovel"          # 文件名/目录名(用 ASCII)
define build.directory_name = "MyVN-1.0.0"

# 应用标识(务必唯一,影响存档目录、商店上架)
define build.itch_project = "yourname/my-vn"

3. 文件分类 build.classify ​

控制哪些文件进哪种包(或被排除):

text
init python:
    build.classify("**.psd", None)            # 排除源文件 PSD
    build.classify("**.txt", None)            # 排除文本备注
    build.classify("game/**.ogg", "all")      # 音频进所有平台包
    build.classify("game/secret/**", None)    # 排除内部目录
  • 第二参数:"all" 进所有包;None 排除;也可指定具体平台档。
  • 默认会把源资源打包进 archive,发布时可用 build.archive 把图片/脚本归档进 .rpa。

4. 归档与加密(.rpa) ​

text
init python:
    build.archive("scripts", "all")
    build.classify("game/**.rpy", "scripts")
    build.classify("game/**.rpyc", "scripts")

把脚本/资源打进 .rpa 归档,能减少零散文件、提高一点点防扒门槛(注意:并非强加密)。

5. 目标平台 ​

启动器 Build Distributions 可生成:

平台产物
Windows.exe + 运行库(zip)
macOS.app(需签名/公证才能在新系统顺利运行)
Linux.tar.bz2(含启动脚本)
PC/Mac/Linux 合包三合一 zip
Web / HTML5可上传 itch.io 的网页版
Android.apk / .aab(需配置密钥库)
iOSXcode 工程(需 Mac + 开发者账号)

6. macOS 签名与公证 ​

  • 现代 macOS 要求 .app 经 Developer ID 签名 + Apple 公证(notarization) 才能无警告运行。
  • 需要 Apple 开发者账号,用 codesign + notarytool 处理(启动器/脚本可辅助)。

7. Android ​

  • 启动器 → Android → 安装 RAPT(Ren'Py Android 支持)。
  • 配置包名、图标、密钥库(keystore,务必备份,丢了无法更新已上架应用)。
  • 产出 .aab 上 Google Play,.apk 用于侧载/itch。
  • 8.5:32-bit ARM 构建使用 16KB 页,避免 Play Console 警告。

8. iOS ​

  • 需 macOS + Xcode + Apple 开发者账号。
  • 启动器生成 Xcode 工程,再在 Xcode 里编译、签名、上传 App Store。

9. Web / HTML5 ​

  • 启动器 → Web 生成网页版,上传 itch.io 或自有服务器。
  • 注意:Web 平台对大文件、视频、字体有额外限制;首包要小。
  • 8.5:Live2D 现已支持 Web;Web 的 game.zip 不再包含 .py 文件。

10. 更新与补丁 ​

  • 用 HTTPS Updater 可实现增量更新(玩家内置“检查更新”)。
  • 大型移动端游戏可用 Downloader 按需下载资源包。

常见坑 ​

  • build.name 用纯 ASCII,避免中文路径在某些平台出问题。
  • Android keystore 一定要备份,否则无法发布后续更新。
  • macOS 不签名/不公证,玩家会遇到“已损坏/无法打开”的拦截。
  • 发布前务必 Lint + 全流程过一遍存读档。
  • 排除好源文件(PSD/工程/备注),别把它们打进发行包。

官方参考 ​

在 GenPy 里怎么做 ​

  • 在 GenPy 的代码模式中维护相关 .rpy 文件,先保持语法清晰,再逐步加入本章功能。
  • 用故事图谱、变量、校验或演出编辑器把“能运行”提升到“可维护”。
  • 导出前结合 Ren'Py Lint 和 GenPy 校验结果,确认脚本、素材和发布路径一致。

推荐继续阅读:

Built for GenPy creators.