配置文件 renmori.toml
renmori protect 无需任何配置即可运行。需要固定团队内的保护参数,或在 CI 中复用同一套设置时,可以使用 TOML 格式的配置文件 renmori.toml。配置文件中的所有键都是可选的,未设置的键使用默认值。
查找顺序
- 通过
-c, --config FILE指定的文件。文件不存在时命令以退出码 2 失败 - 构建根目录下的
renmori.toml,即<game-dir>/renmori.toml - 当前工作目录下的
renmori.toml
使用第一个找到的文件,并在 stderr 中提示所用路径。三处均不存在时使用全部默认值。
放在构建根目录中的 renmori.toml 位于 game/ 之外,不会被封包,但会随构建目录一同存在。若不希望配置文件出现在发行版中,请将其放在工作目录中,或通过 -c 指定其他位置。
读取配置文件需要 Python 3.11 及以上版本;在 Python 3.9 或 3.10 上需要额外安装 tomli,否则命令以退出码 2 失败。
合并规则
[protect] 节
strength
详细区别参阅 保护强度与闭源插件。
lockdown
开启时,运行时会将 config.developer 与 config.console 设为 False,并拒绝执行 Ren'Py 命令行子命令 compile、dialogue、translate、add_from、merge_strings。这些子命令可将脚本与文本数据导出到磁盘,在发布版本中应当禁用。仅在内部测试构建中需要使用开发者控制台时设为 false。
chunk_size
每个分块独立加密并附带 16 字节认证标签。默认值 65536 字节对应约 0.024% 的体积开销。较大的分块有利于大型 CG 与视频的顺序读取,较小的分块可降低大量小文件的额外开销。完整保护的分块参数由插件按构建确定。
exclude 与 keep_on_disk
两者都使匹配的文件保留在磁盘上且不加密,区别在于用途:keep_on_disk 用于声明由引擎之外的程序读取的文件,exclude 用于其他需要保持明文的情况。模式与游戏相对路径匹配,使用 Python fnmatch 语义,* 可以跨越目录分隔符,在 Windows 上不区分大小写。
不要排除脚本文件。运行时加载器会拒绝打开 game/ 中位于磁盘上的 .rpy、.rpyc、.rpym、.rpymc 等脚本类文件,被排除的脚本将无法加载。
platforms
仅对插件生效,未设置时由插件根据构建中的 lib/py3-* 目录检测。可用取值由插件决定,例如:
launcher
仅对插件生效。开启后,密钥与原生启动器绑定,并随构建一同分发,只有通过该启动器启动游戏时密钥才会被重建。
[keys] 节
[keys] 仅对基线保护生效,用于指定容器密钥与脚本密钥的来源。完整保护由插件自行派生密钥,并忽略此节。
规则:
- 环境变量的值必须是 64 个十六进制字符,即 32 字节密钥;格式错误时命令以退出码 2 失败
- 未设置
master_env或script_env时,为本次构建生成随机密钥 - 设置了键名但环境变量不存在或为空时,在 stderr 中提示,并同样生成随机密钥
- 摘要面板中会显示密钥来源,例如
master=env:RENMORI_MASTER_KEY · script=随机
生成密钥的一种方式:
密钥在 CI 中的保存方式参阅 CI 集成。
基线格式会将密钥以明文形式写入随游戏分发的加载器扩展,固定密钥只能保证多次构建之间的一致性,并不能提高基线的安全性。基线的定位参阅 保护强度与闭源插件。
完整示例
仓库中的示例文件:examples/renmori.toml。