YHModsManager

NightOcean’s Mods Manager

Game-Agnostic · Plugin-Driven

License No Commercial Use Python

GitHub Downloads (all assets, all releases)

中文文档

![Main Interface Demo](/YHModsManager/docs/images/%E4%BB%8B%E7%BB%8D.gif)

Table of Contents


Introduction

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.

Core Characteristics

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

Scope of Functionality

✅ What It Can Do

This tool focuses on Mod management and organization:

❌ What It Cannot Do

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

Suitable Scenarios

Suitable Mod Types

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).

Usage Recommendations

Development Advantages

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.


Core Features

Multi-Game Support

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.

Game Switching

Interface Design

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.

Drag Sorting

Info Panel Management

Management Features

Dependency Management

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

Dependency Line View

Problem Detection

Profile Management

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)

MOD Profile Switching

Personalized Marking

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

Custom Name

Search and Filter

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

Structured Search

Themes and Languages

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

Theme Switching


Plugin System

The plugin system is the core feature of this tool.

Architecture Design

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    │  │
│  └─────────────┘  └─────────────┘  └─────────────────┘  │
└─────────────────────────────────────────────────────────┘

Dual Plugin System

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

Plugin Capabilities

Game Plugins Must Implement

All Plugins Can Implement

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

Game Plugins Can Also Implement

SDK-Based Development

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


Quick Start

The program is packaged as a standalone executable for one-click operation, no Python environment configuration needed.

Running the Program

  1. Download the executable for your platform
  2. Double-click to run

First Time Use

  1. Install Game Plugin - After the program starts, it will prompt you to install game plugins; select the plugin for the game you want to manage
  2. Set Paths - Specify the game installation directory and Mod directory (the program will attempt auto-detection)
  3. Scan Mods - The program automatically scans available Mods
  4. Start Managing - Enable, sort, and manage your Mods

Plugin Installation


Developer Guide

Project Structure

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

Core Architecture

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.

License

License No Commercial Use

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:

  1. Non-Commercial Use: Subject to GNU Affero General Public License v3.0 (AGPL-3.0), with full rights to use/modify/distribute;
  2. Commercial Use: Any form of use, modification, distribution, and derivation is strictly prohibited.

Non-Commercial Use License Terms (AGPL-3.0 Applicable)

License Text and Effect

Legitimate Use Scenarios (Non-Commercial Use Only)

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.

Rights You Can Freely Exercise

Mandatory Obligations to Comply With

Commercial Use Terms

Explicitly Prohibited Commercial Scenarios (Including but not limited to)

Prohibition Statement

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.

General Statements

  1. This software is provided as is without any form of warranty (including merchantability, fitness for a particular purpose), and the project team is not responsible for the software’s use effects, stability, and possible losses;
  2. If this project contains third-party open source code, that part of the code will be separately marked with its license agreement and subject to the corresponding terms;
  3. Derivative works for non-commercial use are also prohibited from any commercial conversion;
  4. The final interpretation right of this license agreement belongs to the project team.

Contributing

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.

Contributor Notice

All code contributors who submit Pull Requests to this project, the act of submission is deemed as agreement to the following terms:

  1. The contributor owns the complete copyright of the submitted code and has not infringed any third-party intellectual property rights;
  2. Grants the project team permanent, global, non-exclusive, free, irrevocable usage rights;
  3. Allows the project team to incorporate contributed code into this licensing system, only for non-commercial distribution and modification, and prohibits any commercial use;
  4. The project team has the right to modify, integrate, and distribute contributed code without further notice;
  5. If you do not agree to the above terms, please do not submit code.

Acknowledgments

Thanks to all contributors and supporters!