- 桌面应用
- 游戏开发
- CLI
【免费下载链接】RimSort
RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, community-managed alternative to RimPy Mod Manager.
RimSort 通过一组完全可选的外部数据库来增强排序、依赖项解析、版本警告过滤与替代推荐能力。本指南以官方用户手册《数据库》章节为主体,结合仓库源码深入讲解五种外部数据库的用途、默认配置、设置面板操作方式,以及如何借助 Git 集成实现数据库的下载、更新与社区协作上传,帮助你最大化发挥 RimSort 的数据库价值。
数据库在 RimSort 中的角色与定位
RimSort 使用外部数据库来增强排序和依赖项处理等功能。这些数据库不包含在发行版中,而是由社区或第三方维护的独立数据源,RimSort 提供了便捷的安装和更新工具。它们完全可选——基础功能无需数据库支持即可运行,但额外的数据能显著提升用户体验,例如更准确的加载顺序、依赖关系提示与版本兼容性判断。
所有外部数据库的配置入口统一位于文件 > 设置 > 数据库(File > Settings > Databases)。从源码结构看,该设置页由 settings_dialog.py 中的_do_databases_tab构建,包含五个数据库分组(社区规则、Steam 创意工坊、无版本警告、使用此替代、RimWorld 版本),每一组都遵循完全相同的"数据源选择"交互模式(详见下文)。
统一的数据源配置模型:四种来源方式
每组数据库在设置面板中都提供四个单选来源与配套控件,这一模式在 databases_tab_controller.py 的DatabaseSourceGroup类中被抽象为统一实现:
来源(_SOURCE_VALUES) | 含义 | 激活的控件 |
|---|---|---|
None | 不使用该数据库 | 无(所有子控件禁用) |
Configured git repository | 通过 Git 从配置的仓库克隆 | 仓库 URL 输入框 + 下载/上传按钮 |
Configured URL | 通过 HTTP 下载归档包 | URL 输入框 + 下载按钮 |
Configured file path | 使用本地已存在的文件 | 本地文件路径 + 选择按钮 |
界面交互逻辑(如切换单选按钮后仅启用对应控件组)由DatabaseSourceGroup.connect_signals/_apply_enabled_state实现;其对应的五个分组实例在DatabasesTabController.__init__中注册,分别绑定到Settings模型上的不同属性。
五大外部数据库逐一详解
社区规则数据库(Community Rules Database)
社区规则数据库是由社区整理的 Mod 加载顺序规则合集。最佳实践是 Mod 作者在about.xml文件中添加适当的加载规则,但作者可能无法及时响应社区反馈。为此,RimSort 通过公开的社区驱动数据库收集带有注释的额外规则。该数据库同时兼容 RimSort 特有的加载规则,例如强制排序至列表底部(Force load at bottom of list)。
在源码中,该数据库对应文件communityRules.json,默认存放在应用存储目录下(见 settings.py)。其默认数据源为Configured URL,指向 RimSort 社区维护的 Community-Rules-Database 仓库归档地址。
应用场景:在 rule_editor_panel.py 规则编辑器界面中,会分别展示本地about.xml的loadAfter/loadBefore/incompatibilitiesWith规则与社区规则的对应列表,方便对比与编辑。
用户规则数据库(User Rules Database)
用户规则数据库(userRules.json)是本地、用户特定的数据库,用于存储用户自定义的加载顺序规则。该文件会在数据库文件夹中自动创建(如不存在),允许用户定义自己的 Mod 加载顺序规则并跨会话持久保存。这些规则优先于社区规则,并可通过 RimSort 的规则编辑器界面进行编辑。
userRules.json的实际格式可从测试数据 tests/data/dbs/userRules.json 中看到,其结构包含timestamp与按 PackageId 索引的rules对象,每条规则支持三类字段:
{ "timestamp": 1715795801, "rules": { "test.test2": { "loadAfter": { "a.a": { "comment": "test21 load before", "name": "BB" } }, "loadBottom": { "comment": "It is not known.", "value": true } } } }其中loadBefore/loadAfter以目标 PackageId 为键,值为带comment(注释)与name(显示名称)的对象;loadBottom则是前述 RimSort 特有规则"强制排序至列表底部"的底层存储形式(value: true表示启用)。测试配置中,用户规则文件被定位在dbs/userRules.json(见 tests/conftest.py)。
使用此替代数据库(Use This Instead Database)
"使用此替代"数据库是可选的外部数据库,当检测到过时或不兼容的 Mod 时,提供替代 Mod 的建议,帮助用户识别更新版本或更好的替代品。该数据库的源可在设置中配置,通常来自维护社区策划的 Mod 替换与更新列表的 "Use This Instead" 仓库。
从源码看(settings.py),该数据库默认以Configured URL为来源,下载到databases/UseThisInstead/replacements.json.gz(gzip 压缩的 JSON,对应设置面板中该分组专属的文件过滤器JSON Files (*.json *.json.gz))。下载完成后,RimSort 会通过 use_this_instead_panel.py 的UseThisInsteadPanel以独立窗口展示"为创意工坊 Mod 找到替代品"的列表,按替代 Mod 分组,并提供订阅、取消订阅、删除等操作入口。
无版本警告数据库(No Version Warning Database)
无版本警告数据库(ModIdsToFix.xml)是外部数据库,包含不应触发版本不匹配警告的 Mod 包 ID 列表。这对于故意不在about.xml中写入版本信息的 Mod,或兼容多个游戏版本的 Mod 很有用。该数据库通过识别已知版本无关的 Mod,帮助减少误报警告。其源可在设置中配置,默认来自 "NoVersionWarning" 仓库(见 settings.py)。
Steam 创意工坊数据库(Steam Workshop DB)
Steam 创意工坊数据库(steamDB.json)主要用于提供额外的依赖项数据。这些信息通常需要通过抓取 Steam 创意工坊并下载 Mod 来解析获取;而通过静态数据库,用户无需实际下载 Mod 即可访问这些信息,从而大幅降低依赖解析的成本。
关于如何构建或更新 Steam 创意工坊数据库,请参阅 数据库构建器指南。在运行时,RimSort 会将该数据库的packageId映射到 Mod 名称等元数据(可参考 tests/controllers/test_metadata_controller.py 对steamdb_packageid_to_name映射的断言)。其默认来源同样是Configured URL,指向 RimSort 维护的 Steam-Workshop-Database 仓库(见 settings.py)。
RimWorld 版本数据库(RimWorld Versions Database)
RimWorld 版本数据库(rimworld_versions.json)记录了可用的 RimWorld 游戏版本及其 depot,来源于第三方维护的 rimworld-versions 仓库(见 settings.py)。RimSort 使用它实现下载菜单下的"下载 RimWorld 版本(Download RimWorld Version)"功能,让你可以从 Steam 下载指定的 RimWorld 版本。与其他数据库一样,其来源可在设置面板的数据库(Databases)中配置。
底层读取逻辑位于 version_data_service.py:VersionDataService从 JSON 中解析versions(按平台win64/win32/mac/linux分组,含manifest_id、版本号、状态与 DLC 映射)与depots(depot ID 查找)两部分数据,并提供get_available_versions(platform)与get_depot_id(item_name, platform)两个查询接口。注意:若数据库未配置或未下载,该服务会记录警告日志并返回空数据,此时"下载 RimWorld 版本"功能不可用。
数据库存储位置与默认配置速查
所有外部数据库的默认路径、仓库与归档地址均在 settings.py 中定义。下表汇总了五种数据库的关键默认值:
| 数据库 | 本地文件名(默认路径) | 默认来源 | 默认仓库 |
|---|---|---|---|
| Steam 创意工坊数据库 | steamDB.json(应用存储目录) | Configured URL | RimSort/Steam-Workshop-Database |
| 社区规则数据库 | communityRules.json(应用存储目录) | Configured URL | RimSort/Community-Rules-Database |
| 无版本警告数据库 | ModIdsToFix.xml(应用存储目录) | Configured URL | emipa606/NoVersionWarning |
| 使用此替代数据库 | databases/UseThisInstead/replacements.json.gz | Configured URL | emipa606/UseThisInstead |
| RimWorld 版本数据库 | databases/rimworld-versions/rimworld_versions.json | Configured URL | bukforks/rimworld-versions |
实用提示:默认来源统一为Configured URL(即下载仓库main分支的 zip 归档);若网络受限,可将来源切换为Configured file path并选择本地已下载好的文件,或切换为Configured git repository以便后续用 Git 拉取更新。在数据库设置页最下方,还提供了辅助元数据数据库(Aux Metadata DB)删除时间限制的设置项(默认-1,即永不删除),该数据库保存 Mod 颜色、已切换的警告状态、用户笔记等信息,相关读写函数位于 aux_db_utils.py。
通过 RimSort 的 Git 集成管理数据库
前置条件
为你的系统安装 Git。Git 集成功能用于下载/上传 Steam 创意工坊数据库(steamDB.json)或社区规则数据库(communityRules.json),便于协作与共享。
配置步骤
- 创建远程仓库或使用现有仓库。GitHub 仓库可与 RimSort 实现额外集成功能(如提交 pull request、自动更新检查)。
- 在 RimSort 设置下的
数据库(Databases)中配置仓库 URL(选择Configured git repository来源并填入仓库地址)。 - (可选)在 RimSort 的
高级设置(Advanced)中配置 GitHub 账户。你需要准备 GitHub 用户名,并为 RimSort 创建具有Repo权限的个人访问令牌。
重要说明:步骤 3 的 GitHub 身份配置,仅在你希望通过 RimSort 直接向配置的 GitHub 仓库提交 pull request 时才必需。若仅需通过 Git 从公共仓库下载数据库或仅在本地修改,无需此步骤。你也可以不通过 RimSort 配置,直接手动在 GitHub 提交 pull request。
- 完成数据库修改后,可通过内置功能分享你的数据库改动(上传到远程仓库)。
克隆数据库到 RimSort
当来源选择为Configured git repository时,点击该分组下的Download…按钮,RimSort 会将远程仓库克隆到本地数据库目录。从 main_content_controller.py 的download_signals映射可以看到,五种数据库共享同一下载管线:系统会根据来源类型分发任务——Configured URL走 HTTP 下载归档,Configured git repository走 Git 克隆(_do_git_clone内部还会先检查网络连通性)。Git 操作本身由 git_utils.py 中的git_clone执行(支持指定checkout_branch与浅克隆depth);若本地已存在该仓库,会提示用户选择"克隆新副本"或"就地强制更新现有仓库"。
上传数据库(需要仓库写入权限)
在Configured git repository来源下点击Upload…按钮,可把本地数据库改动推送回远程仓库。上传前 RimSort 会弹出确认对话框(见 main_content_controller.py),并需要对应仓库的写入权限;若配置了 GitHub 令牌且目标仓库属于你的账户,RimSort 可直接创建 pull request 完成协作。底层 git 操作(git_pull、git_push等)同样封装在 git_utils.py 中。
仓库中随文档提供的两段演示视频(克隆与上传流程)内容已过时,可能不适用于最新版 RimSort,请以本文与当前界面为准。
配置后的效果与验证
- 排序增强:社区规则与用户规则会作为
loadBefore/loadAfter/loadBottom规则参与排序过程,规则编辑界面(rule_editor_panel.py)会合并展示about.xml本地规则与外部规则的来源。 - 依赖解析:Steam 创意工坊数据库在无需下载 Mod 的情况下补充依赖信息,配合排序时缺失依赖检查使用。
- 版本警告过滤:无版本警告数据库中的包 ID 不会再触发版本不匹配警告。
- 替代推荐:检测到过时/不兼容 Mod 时弹出"使用此替代"面板。
- 版本下载:RimWorld 版本数据库就绪后,"下载 RimWorld 版本"功能可用,可按平台列出可用版本(含 manifest ID、状态与 DLC 映射)。
如果数据库下载后未生效,请依次检查:设置面板中该数据库的来源类型与地址是否正确、下载是否成功完成、本地文件是否存在于上表所列路径。对于 Steam 创意工坊数据库的构建与更新细节,继续阅读 数据库构建器指南 即可。
- 桌面应用
- 游戏开发
- CLI
【免费下载链接】RimSort
RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, community-managed alternative to RimPy Mod Manager.
相关推荐
RimSort 外部数据库机制全解析:配置、数据源、Git 协作与源码实现
RimSort 外部数据库机制全解析:配置、数据源、Git 协作与源码实现 RimSort 依赖一组外部数据库来增强排序、依赖解析、版本提示等核心功能。本文以官
桌面应用游戏开发CLIRimSort 基本用法指南:初始配置、界面操作与外部元数据体系
RimSort 基本用法指南:初始配置、界面操作与外部元数据体系 RimSort 是一款面向 RimWorld 的开源 Mod 管理器(支持 Linux、mac
桌面应用游戏开发CLIRimSort 外部数据库完整指南:Community Rules、User Rules、Steam DB 与依赖数据管理
RimSort 外部数据库完整指南:Community Rules、User Rules、Steam DB 与依赖数据管理 RimSort 是一款开源的《环世界
桌面应用游戏开发CLI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考