Game-Agnostic · Plugin-Driven
NightOcean’s Mods Manager is a plugin-driven universal Mod management tool that is not bound to any specific game but uses plugins as its core, supporting various games through game plugins.
| Feature | Description |
|---|---|
| One Manager, Multiple Games | Manage Mods for multiple games with a single manager |
| Community Extension | The community can develop support plugins for any game |
| Feature Extension | Features can be continuously extended through plugins |
This tool focuses on Mod management and organization:
| Limitation | Description |
|---|---|
| Does Not Load Mods | Mods are actually loaded by the game; this tool only generates configuration files |
| Does Not Provide Downloads | No Mod download functionality; obtain Mods through Steam Workshop or other means |
| Limited Deep Features | Some games’ deep customization features may not match dedicated managers |
This tool is suitable for managing non-intrusive Mods:
| Characteristic | Description |
|---|---|
| Independent Directory | Each Mod has its own directory and does not directly overwrite game files |
| Metadata File | Mods come with description files containing name, version, dependencies, etc. |
| Unique Identifier | Different Mods can be distinguished by ID or folder name |
Typical Examples:
| Game | Mod Metadata File |
|---|---|
| RimWorld | About.xml |
| Mount & Blade II: Bannerlord | SubModule.xml |
| Kenshi | *.info files |
⚠️ Note: For “intrusive Mods” that directly overwrite game files, this tool cannot manage them well.
I think this tool has a promising future: if the plugin ecosystem can be perfected, for those indie games or games that lack deep Mod management support, external Mod order management can be quickly achieved through this tool (of course, they need to handle Mod support and loading themselves).
The biggest advantage of this manager is that it is not bound to any game. Developing game plugins is very simple:
| Plugin Type | Lines of Code | Scope of Functionality |
|---|---|---|
| Basic Plugin | 400-500 lines | Basic Mod metadata parsing and management |
| Advanced Plugin | ~800 lines | Includes advanced features like save file reading |
💡 AI-Friendly Development: This project is developed in collaboration with AI, and plugin development is also very suitable for AI completion. Just tell AI your game’s Mod structure, and AI can generate a usable game plugin.
Supports multiple games through game plugins:
⚠️ Note: The main program itself does not contain any plugins. Plugins can only be developed by the community, since the vast number of games each may have different metadata parsing methods, only collective effort can handle this.
| Example Games | Steam App ID | Notes |
|---|---|---|
| Mount & Blade II: Bannerlord | 261550 | Multiplayer and singleplayer separated |
| RimWorld | 294100 | Includes save file Mod order import |
| Kenshi | 233860 | Basic functionality only |
💡 Example game plugins can be obtained from the Example Plugin Repository.
Want to support a new game? Just write a game plugin, no need to modify the main program.

| Feature | Description |
|---|---|
| Dual-List Layout | Disabled on the left, enabled on the right, clear at a glance |
| Drag-and-Drop Sorting | Adjust load order by dragging |
| Dependency Visualization | Display dependencies between Mods through detailed info, highlighting, and dependency lines |
| Info Panel | View Mod details, tags, notes, etc. |


| Feature | Description |
|---|---|
| Dependency Visualization | Display dependencies between Mods through detailed info, highlighting, and dependency lines |
| Simple Sorting | Automatically adjust order based on Mod-declared dependencies (for reference only) |
| Problem Detection | One-click detection of missing dependencies, order errors, and other issues |


| Feature | Description |
|---|---|
| Multiple Profiles | Save different Mod combinations for easy switching between playstyles |
| Import/Export | Easy to share and backup configurations |
| Import from Save | Some games support restoring Mod configurations from save files (requires plugin support) |

| Feature | Description |
|---|---|
| Tag System | Add tags to Mods for easier filtering |
| Color Marking | Mark Mods with colors for instant recognition |
| Notes Feature | Add notes to Mods; sometimes nicknames are easier to remember |

| Feature | Description |
|---|---|
| Keyword Search | Quickly find the Mod you want |
| Structured Search | Use syntax like @tag=tagname, @author=author |
| Type Filter | Filter by base game, DLC, Workshop, local Mod |

| Feature | Description |
|---|---|
| Multiple Themes | Default theme, dark theme, etc. |
| Multiple Languages | Chinese, English, etc. |
| Font Adjustment | Adjust interface font size |

The plugin system is the core feature of this tool.
Traditional Mod managers usually only support one game with fixed functionality. NightOcean’s Mods Manager uses plugin-driven architecture:
┌─────────────────────────────────────────────────────────┐
│ NightOcean's Mods Manager │
│ (Main Program Core) │
├─────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ Game Plugin │ │ Game Plugin │ │ Game Plugin │ │
│ │ A │ │ B │ │ C │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ Feature │ │ Feature │ │ Feature │ │
│ │ Plugin X │ │ Plugin Y │ │ Plugin Z │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────┘
| Plugin Type | Description | Mutual Exclusivity |
|---|---|---|
| Game Plugin | Provides Mod parsing and launch functionality for specific games | Only one can be enabled at a time |
| Feature Plugin | Extends program functionality | Multiple can be enabled simultaneously |
| Capability | Description |
|---|---|
| Add Menu Items | Add own operations to menu bar |
| Add Toolbar Buttons | Quick access to plugin features |
| Add Custom Panels | Display plugin-specific interfaces |
| Subscribe to Events | Respond to Mod list changes, game switching, etc. |
| Custom Highlight Rules | Highlight Mods by conditions |
| Custom Filter Rules | Implement complex filtering logic |
| Independent Config Storage | Save plugin’s own settings |
| Extend Error Detection | Add game-specific Mod problem detection |
| Extend Context Menu | Add operations to Mod list right-click menu |
Plugin development is fully SDK-based; developers don’t need access to the main program source code. The SDK is released alongside the main program:
pip install yh_mods_manager_sdk-x.x.x-py3-none-any.whl
Simple Feature Plugin Example:
from yh_mods_manager_sdk import FeaturePlugin, PluginMenuItem
class MyPlugin(FeaturePlugin):
PLUGIN_ID = "my_plugin"
PLUGIN_NAME = "My Plugin"
PLUGIN_VERSION = "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!")
📖 Detailed Development Guide: Plugin Development Documentation 📦 Example Plugin Repository: YHModsManagerPlugins - Check it out for reference
The program is packaged as a standalone executable for one-click operation, no Python environment configuration needed.

YHModsManager/
├── core/ # Core business logic
├── ui/ # User interface
├── plugin_system/ # Plugin system
├── utils/ # Utility functions
├── config/ # Configuration files
├── docs/ # Documentation
└── yh_mods_manager_sdk/ # Plugin SDK
The project adopts a layered architecture:
| Layer | Responsibility |
|---|---|
| UI Layer | Interface display and user interaction |
| Business Logic Layer | Mod operations, dependency resolution |
| Data Management Layer | Configuration, metadata management |
| Plugin System Layer | Plugin loading and scheduling |
| Infrastructure Layer | Logging, event bus, etc. |
The usage rights of this project are strictly divided into the following two modes, and users must comply with the corresponding rules according to their scenarios:
Personal learning and research, internal operations of non-profit organizations, open source community technical exchange, free sharing of modified non-commercial versions, and no direct/indirect economic benefits generated during use.
This project does not provide any commercial authorization channels. Any unauthorized commercial use is considered an infringement of this project’s intellectual property rights, and the project team reserves the right to pursue legal liability.
Welcome to participate in development, submit issues, or give suggestions! The author has limited experience in open source project management, please bear with any shortcomings.
All code contributors who submit Pull Requests to this project, the act of submission is deemed as agreement to the following terms:
Thanks to all contributors and supporters!