For AI agents: the complete documentation index is available at https://renmori.mewbaka.cn/llms.txt, the full documentation bundle is available at https://renmori.mewbaka.cn/llms-full.txt, and this page is available as Markdown at https://renmori.mewbaka.cn/cli/configuration.md.
  • 简体中文
  • 配置文件 renmori.toml

    renmori protect 无需任何配置即可运行。需要固定团队内的保护参数,或在 CI 中复用同一套设置时,可以使用 TOML 格式的配置文件 renmori.toml。配置文件中的所有键都是可选的,未设置的键使用默认值。

    查找顺序

    1. 通过 -c, --config FILE 指定的文件。文件不存在时命令以退出码 2 失败
    2. 构建根目录下的 renmori.toml,即 <game-dir>/renmori.toml
    3. 当前工作目录下的 renmori.toml

    使用第一个找到的文件,并在 stderr 中提示所用路径。三处均不存在时使用全部默认值。

    Tip

    放在构建根目录中的 renmori.toml 位于 game/ 之外,不会被封包,但会随构建目录一同存在。若不希望配置文件出现在发行版中,请将其放在工作目录中,或通过 -c 指定其他位置。

    读取配置文件需要 Python 3.11 及以上版本;在 Python 3.9 或 3.10 上需要额外安装 tomli,否则命令以退出码 2 失败。

    合并规则

    设置规则
    一般设置命令行参数 > 配置文件 > 默认值
    排除列表不覆盖,按 steam_appid.txt(内置)、keep_on_disk、exclude、命令行 --exclude 的顺序合并
    lockdown配置文件可设置 true 或 false;命令行 --no-lockdown 优先,强制关闭
    keep_plaintext、launcher配置文件或命令行任一处开启即生效

    [protect] 节

    键类型默认值对应参数说明
    strength字符串未设置(完整保护)--strength保护强度,取值 baseline、auto 或插件声明的强度
    lockdown布尔true--no-lockdown在受保护构建中关闭开发者模式、开发者控制台与数据导出子命令
    chunk_size整数65536--chunk-size容器分块大小,单位为字节
    keep_plaintext布尔false--keep-plaintext保护后保留明文原件,仅用于排查问题
    exclude字符串数组[]--exclude保留在磁盘上、不加密的文件模式
    keep_on_disk字符串数组[]—由引擎之外的程序读取、须保留为明文的文件模式;steam_appid.txt 始终包含在内
    platforms字符串数组自动检测--platforms仅插件:目标平台列表
    launcher布尔false--launcher仅插件:将密钥绑定到原生启动器并随构建分发

    strength

    取值行为
    未设置完整保护,需要闭源插件;插件不可用时失败
    "baseline"开源基线格式,不使用插件
    "auto"插件可用时使用完整保护,否则使用基线
    插件声明的取值例如多态强度 "poly",交由插件处理

    详细区别参阅 保护强度与闭源插件。

    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 上不区分大小写。

    [protect]
    keep_on_disk = ["steam_appid.txt", "thirdparty/sdk_config.json"]
    exclude = ["licenses/*"]
    Danger

    不要排除脚本文件。运行时加载器会拒绝打开 game/ 中位于磁盘上的 .rpy、.rpyc、.rpym、.rpymc 等脚本类文件,被排除的脚本将无法加载。

    platforms

    仅对插件生效,未设置时由插件根据构建中的 lib/py3-* 目录检测。可用取值由插件决定,例如:

    platforms = ["win-x64", "linux-x64", "mac-universal"]

    launcher

    仅对插件生效。开启后,密钥与原生启动器绑定,并随构建一同分发,只有通过该启动器启动游戏时密钥才会被重建。

    [keys] 节

    [keys] 仅对基线保护生效,用于指定容器密钥与脚本密钥的来源。完整保护由插件自行派生密钥,并忽略此节。

    键说明
    master_env保存容器主密钥的环境变量名
    script_env保存脚本密钥的环境变量名

    规则:

    • 环境变量的值必须是 64 个十六进制字符,即 32 字节密钥;格式错误时命令以退出码 2 失败
    • 未设置 master_env 或 script_env 时,为本次构建生成随机密钥
    • 设置了键名但环境变量不存在或为空时,在 stderr 中提示,并同样生成随机密钥
    • 摘要面板中会显示密钥来源,例如 master=env:RENMORI_MASTER_KEY · script=随机
    [keys]
    master_env = "RENMORI_MASTER_KEY"
    script_env = "RENMORI_SCRIPT_KEY"

    生成密钥的一种方式:

    python -c "import os; print(os.urandom(32).hex())"

    密钥在 CI 中的保存方式参阅 CI 集成。

    Warning

    基线格式会将密钥以明文形式写入随游戏分发的加载器扩展,固定密钥只能保证多次构建之间的一致性,并不能提高基线的安全性。基线的定位参阅 保护强度与闭源插件。

    完整示例

    # renmori.toml
    
    [protect]
    # 未设置 strength 时使用完整保护;"auto" 在插件不可用时回退到基线
    strength = "auto"
    
    # 发布版本保持开启
    lockdown = true
    
    # 仅基线生效;完整保护由插件确定分块参数
    chunk_size = 65536
    
    # 切勿在发布版本中开启
    keep_plaintext = false
    
    # 保留为明文的文件
    exclude = []
    keep_on_disk = ["steam_appid.txt"]
    
    # 仅插件
    # platforms = ["win-x64", "linux-x64", "mac-universal"]
    launcher = false
    
    [keys]
    # 仅基线
    # master_env = "RENMORI_MASTER_KEY"
    # script_env = "RENMORI_SCRIPT_KEY"

    仓库中的示例文件:examples/renmori.toml。

    © 2026 笨猫工作室 MewBaka Studio. All Rights Reserved.