构建与发布
本页属于 GenPy Ren'Py 学习路线。教程内容面向 Ren'Py 8.x,并在页面末尾连接到 GenPy 的对应工作流。
学习目标
- 了解“构建与发布”在 Ren'Py 项目中的用途。
- 能在一个最小项目里验证本章相关语法或工作流。
- 知道发布前需要检查的常见风险,并能在 GenPy 中继续维护。
核心语法
Build DistributionsLintWindowsmacOSLinuxAndroidWeb
可运行示例
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. 发布前检查清单
- Check Script (Lint):修掉所有错误/警告(死路 label、未定义跳转、缺图等)。
- 填写
options.rpy里的构建信息(游戏名、版本、ID)。 - 勾选 “Add from clauses to calls”(保证未来更新不破坏老存档,见第 3 章)。
- 测试存读档、回滚、各分支与结局。
- 准备图标、封面、截图。
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(需配置密钥库) |
| iOS | Xcode 工程(需 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/工程/备注),别把它们打进发行包。
官方参考
- 构建发布:https://www.renpy.org/doc/html/build.html
- Android:https://www.renpy.org/doc/html/android.html
- iOS:https://www.renpy.org/doc/html/ios.html
- Web:https://www.renpy.org/doc/html/web.html
在 GenPy 里怎么做
- 在 GenPy 的代码模式中维护相关 .rpy 文件,先保持语法清晰,再逐步加入本章功能。
- 用故事图谱、变量、校验或演出编辑器把“能运行”提升到“可维护”。
- 导出前结合 Ren'Py Lint 和 GenPy 校验结果,确认脚本、素材和发布路径一致。
推荐继续阅读:
