Steam 发行指南
RenMori 保护的是已构建完成的 Ren'Py 发行版构建。发布到 Steam 分为三个有序步骤,且顺序不可调换:
若先执行保护,再对项目重新运行 Ren'Py 启动器的 Build Distributions,启动器会从源码重新构建,产出一份全新的未受保护发行版构建,此前的保护随之失效。请对启动器的输出执行保护,并且切勿将受保护的文件夹重新交给启动器处理。
本指南以 Ren'Py SDK 自带的示例项目 the_question 及其 market 构建为例,因为该构建包含全部三个平台。
应上传哪个构建
Ren'Py 启动器可产出以下构建:
- pc:Windows 与 Linux
- mac:macOS
- market:一个通用包,内含 Windows(
.exe)、macOS(.app)与 Linux(.sh)启动器,三者共享同一个game/
两种方式在 Steam 上均可行:
RenMori 的保护与平台无关:renmori.rpe 加载器运行在各操作系统上 Ren'Py 自带的 Python 之中。因此对 market 构建运行一次 protect,即可同时覆盖 Windows、macOS 与 Linux。
步骤 1:保护
将启动器生成的 market 压缩包解压到一个文件夹(RenMori 接收目录而非 .zip),然后执行:
只有 game/ 发生变化,各平台启动器保持不变:
原先位于 game/ 下的明文 .rpa 封包与 .rpyc 已不复存在,unrpa 与 unrpyc 均无可处理的对象。
步骤 2:通过 SteamPipe 上传
Steam 不接收单个文件。一次构建是一个文件夹的全部内容,通过 SteamPipe 上传到 depot。因此:
- 请勿上传
.zip - 请勿只上传
renmori.rmc - 请将 depot 的
contentroot指向受保护的文件夹,由 SteamPipe 上传其中的全部内容(game/、lib/、renpy/与各启动器)
app_build_<APPID>.vdf:
Steamworks 提供的 SteamPipe GUI 执行的是相同的操作,将其指向受保护的文件夹即可。
采用分平台 depot 时,请分别保护每个平台的构建,并为每个平台配置独立的 depot 与各自的 contentroot。
步骤 3:设置启动选项
在 Steamworks 网页后台(Installation → General Installation → Launch Options)中为每个操作系统各设置一项启动选项,指向构建内对应的启动器:
启动器引导 Ren'Py 启动后,由 renmori.rpe 接管资源加载并在内存中解密资源,整个过程对玩家透明。
Steam 兼容性要点
- 请勿再叠加 Steam DRM(DRMToolkit 可执行文件包装器):它会改写启动器二进制文件,可能与运行时自检冲突,且其自身防护较弱,而 RenMori 已对数据层提供保护
- Steam 叠加层(Overlay)可正常使用:RenMori 仅挂钩 Ren'Py 的文件加载,从不进行进程或 DLL 注入,因此 Steam 叠加层工作正常
- 成就与云存档经由 Ren'Py 的 Python API 实现,不受影响;
renmori.rmc是静态文件,因此 Steam 的文件校验与增量更新均正常工作 steam_appid.txt由 Steam SDK 在renpy.loader之外直接读取,因此 RenMori 默认将其保留为明文(DEFAULT_KEEP_ON_DISK);将其保留在发行版构建中并无风险,其他由外部读取的文件可通过renmori.toml中的keep_on_disk添加,详见 配置文件
检查清单
- 已在 Ren'Py 启动器中从源码构建(Build Distributions)
- 已对解压后的构建文件夹运行
renmori protect -
renmori verify已通过 - SteamPipe 的
contentroot指向受保护的文件夹,而非.zip - 已按操作系统设置启动选项(
the_question.exe/.sh/.app) - 未叠加 Steam DRM 包装器
- 未对受保护的文件夹重新运行启动器