夜海泛用模组管理器 NightOcean's Mods Manager
修改于04/0517 浏览综合
不绑定特定游戏 · 插件驱动



介绍
目录
简介
夜海泛用模组管理器是一款 通用 Mod 管理工具,采用 插件驱动架构,不绑定任何特定游戏,而是通过游戏插件来支持各种游戏。
核心特点
- 一管多游: 一个管理器管理多款游戏的 Mod
- 社区扩展: 社区可为任意游戏开发支持插件
- 功能扩展: 功能可通过插件不断扩展
功能范围
✅ 能做什么
本工具专注于 Mod 的管理与组织:
- 查看信息 - 查看 Mod 名称、版本、作者、依赖关系等信息(需插件正确解析元数据)
- 问题检查 - 检测缺失依赖、加载顺序错误、重复 Mod 等问题
- 排序调整 - 拖拽或智能排序来调整 Mod 加载顺序
- 配置管理 - 保存多套 Mod 配置方案,随时切换
❌ 不能做什么
- 不加载 Mod:Mod 的实际加载由游戏完成,本工具只生成配置文件;
- 不提供下载:没有 Mod 下载功能,需通过 Steam 创意工坊等途径获取;
- 深度功能有限:某些游戏的深度定制功能可能比不上专用管理器。
适用场景
适合的 Mod 类型
本工具适合管理 非侵入式 Mod:
- 独立目录:每个Mod 都有自己的目录,不直接覆盖游戏文件
- 元数据文件:Mod 自带描述文件,包含名称、版本、依赖等信息
- 唯一标识:可通过 ID 或文件夹名区分不同 Mod
典型示例:
- 环世界 (RimWorld):About.xml
- 骑马与砍杀II:霸主 (Bannerlord):SubModule.xml
- 剑士 (Kenshi) : *.info文件
⚠️ 注意:对于直接覆盖游戏文件或者需要安装额外内容的"侵入式 Mod",本工具无法很好地管理。
我觉得这个工具的未来可期:未来如果能完善插件生态,对于那些独立小游戏,或是本身缺乏深度 Mod 管理支持的游戏来说,完全可以通过它快速实现外部的 Mod 顺序管理功能(当然他们得自己搞好Mod的支持和加载)。
使用建议
单游戏场景:如果只管理一款游戏且该游戏已有专用管理器,专用管理器可能功能更全面
多游戏场景:如果同时玩多款 Mod 游戏,或喜欢的游戏还没有专用管理器,本工具是不错的选择(如果有人开发插件的话)
开发优势
本管理器最大的优势是 不绑定任何游戏。开发游戏插件非常简单:
- 基础插件:400-500 行 | 基本的 Mod 元数据解析和管理
- 进阶插件:~800 行 | 包含存档读取等高级功能
💡 AI 友好开发:本项目与 AI 合作开发,插件开发也非常适合交给 AI 完成。只需告诉 AI 游戏的 Mod 结构,AI 就能生成可用的游戏插件。
核心特性
多游戏支持
通过游戏插件支持不同的游戏,示例如下:
⚠️ 注意:主程序本身不包含任何插件,插件只能交给社区来开发了,毕竟浩如烟海的游戏每一个的元数据解析方法都可能不同,只有群策群力才能应对。
- 骑马与砍杀II:霸主:多人和单人插件分离实现
- 环世界 (RimWorld):完整功能 - 额外包含存档mod顺序导入
- 剑士 (Kenshi):仅支持基础功能
💡 示例游戏插件可前往 示例插件仓库 获取。
想支持新游戏? 写个游戏插件就行,不用改主程序。

游戏切换
界面设计
- 双列表布局:左边未启用,右边已启用,一目了然
- 拖拽排序:拖一拖就能调整加载顺序
- 依赖关系可视化:通过详细信息、高亮、依赖线条显示 Mod 之间的依赖关系
- 详细信息面板:查看 Mod 详细信息、标签、备注等

拖动排序

详细信息面板管理
管理功能
依赖关系管理
- 可视化线条:多种颜色表示不同依赖类型,红色表示有问题
- 简单排序:按 Mod 声明的依赖关系自动调整顺序(仅供参考)
- 问题检查:一键检测缺失依赖、顺序错误等问题

问题检测

依赖线管理
配置方案管理
- 多配置支持:保存不同的 Mod 组合,方便切换不同玩法
- 导入/导出:分享和备份配置很方便
- 从存档导入(需插件支持):部分游戏支持从存档恢复 Mod 配置

mod配置管理
个性化标记
- 标签系统:给 Mod 加标签,筛选更方便
- 颜色标记:给 Mod 标颜色,一眼就能认出来
- 备注功能:给 Mod 加备注,有时候还是昵称好记

备注名
搜索筛选
- 关键词搜索:快速找到想要的 Mod
- 结构化搜索:用 @tag=标签名、@author=作者 这样的语法
- 类型筛选:按本体、DLC、创意工坊、本地 Mod 筛选

结构化搜索
主题与语言
- 多主题:默认主题、深色主题等
- 多语言:中文、英文等
- 字体调整:可以调整界面字体大小

主题切换
插件系统
插件系统是本工具的核心特色。
架构设计
传统的 Mod 管理器通常只支持一款游戏,功能也是固定的。而 NightOcean's Mods Manager 用插件驱动:
┌─────────────────────────────────────────────────────────┐
│ NightOcean's Mods Manager │
│ (主程序核心) │
├─────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ 游戏插件 A │ │ 游戏插件 B │ │ 游戏插件 C │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ 功能插件 X │ │ 功能插件 Y │ │ 功能插件 Z │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────┘
双插件体系
- 游戏插件:为特定游戏提供 Mod 解析和启动功能 | 同一时间只能启用一个
- 功能插件:扩展程序功能 | 可以同时启用多个
插件能力
游戏插件必须实现
- 解析游戏元数据和 Mod 元数据
- 提供游戏启动功能(本地启动、Steam 启动)
所有插件都可以实现
- 添加菜单项:在菜单栏加自己的操作
- 添加工具栏按钮:快速访问插件功能
- 添加自定义面板:展示插件特有的界面
- 订阅事件:响应 Mod 列表变化、游戏切换等事件
- 自定义高亮规则:按条件高亮显示 Mod
- 自定义过滤规则:实现复杂的筛选逻辑
- 独立配置存储:保存插件自己的设置
- 扩展错误检测:添加游戏特定的 Mod 问题检测
- 扩展右键菜单:在 Mod 列表右键菜单添加操作
游戏插件还可选实现
- 解析存档文件(从存档导入 Mod 配置)
- 解析外部配置文件
- 自定义拓扑排序逻辑
SDK 化开发
插件开发完全 SDK 化,开发者不需要拿到主程序源码。SDK 会随 Release 一并发布:
bash
pip install yh_mods_manager_sdk-x.x.x-py3-none-any.whl
简单功能插件示例:
```python
from yhmodsmanager_sdk import FeaturePlugin, PluginMenuItem
class MyPlugin(FeaturePlugin):
PLUGINID = "myplugin"
PLUGINNAME = "My Plugin"
PLUGINVERSION = "1.0.0"
def get_menu_items(self):
return [
PluginMenuItem(id="action", label="My Action", action_id="do_it")
]
def on_menu_action(self, action_id, manager_collection):
if action_id == "do_it":
print("Action triggered!")
```
📖 详细开发指南:插件开发文档
📦 示例插件仓库:YHModsManagerPlugins - 可前往查看借鉴
快速开始
程序已打包为一键运行的独立可执行文件,无需配置 Python 环境。
运行程序
- 下载对应平台的可执行文件
- 双击运行即可
首次使用
- 安装游戏插件 - 程序启动后会提示安装游戏插件,选择你要管理的游戏对应的插件
- 设置路径 - 指定游戏安装目录和 Mod 目录(程序会尝试自动检测)
- 扫描 Mod - 程序自动扫描可用 Mod
- 开始管理 - 启用、排序、管理你的 Mod

插件安装
开发者指南
项目结构
YHModsManager/
├── core/ # 核心业务逻辑
├── ui/ # 用户界面
├── plugin_system/ # 插件系统
├── utils/ # 工具函数
├── config/ # 配置文件
├── docs/ # 文档
└── yh_mods_manager_sdk/ # 插件 SDK
核心架构
项目采用分层架构:
- UI 层:界面展示与用户交互
- 业务逻辑层:Mod 操作、依赖解析
- 数据管理层:配置、元数据管理
- 插件系统层:插件加载与调度
- 基础设施层:日志、事件总线等
相关文档
插件开发指南 - 插件开发教程
参与贡献
欢迎参与开发、提问题或给建议!作者对开源项目管理经验有限,如有不足之处还请多多包涵。
问题和建议:通过 Issues 提交问题和功能建议
提交代码:欢迎提交 Pull Request
致谢
感谢所有贡献者和支持者!
(虽然现在只有我自己和GLM5)
(希望能尽快删掉这句话吧)
许可证
本项目采用 GNU Affero General Public License v3.0 (AGPLv3) 许可证。
许可证要点
- ✅ 自由使用:可以自由使用、修改、分发
- ⚠️ 开源要求:修改后的版本必须以相同许可证开源
- ⚠️ 网络服务:网络服务使用也需要提供源代码
- ⚠️ 版权声明:需要保留版权声明和许可证副本

