UGMM - Universal Gun Mod Manager
A plugin-based mod manager that supports multiple games through a JSON configuration system.
Features
- Plugin System: Load and execute plugins from the
plugins/directory - Game Management: JSON-based game support with automatic Steam detection
- GUI Interface: Modern GUI built with CustomTkinter
- Extensible: Easy to add new games and plugins
Installation
- Install Python dependencies:
pip install -r requirements.txt
- Run the application:
python main.py
How It Works
Game Management
- Games are defined in
supported_games.json - The system automatically detects installed Steam games
- Only games listed in the JSON file will appear in the game selector
- Plugins can add/remove games from the supported list
Plugin System
- Plugins are Python files in the
plugins/directory - Each plugin must inherit from
PluginBase - Plugins can access the game manager to modify the supported games list
- Plugins receive the selected game's path for execution
File Structure
ugmm/
├── main.py # Main application
├── game_selector.py # Game selection GUI
├── game_manager.py # JSON game management
├── plugin_loader.py # Plugin discovery and loading
├── plugin_base.py # Base plugin class
├── supported_games.json # Supported games configuration
├── requirements.txt # Python dependencies
├── plugins/ # Plugin directory
│ ├── mod_manager_plugin.py
│ ├── nexus_mods_plugin.py
│ ├── json_writer_plugin.py
│ └── game_manager_plugin.py
└── README.md
Creating Plugins
Create a new Python file in the plugins/ directory:
from plugin_base import PluginBase
class Plugin(PluginBase):
def __init__(self):
super().__init__()
self.name = "My Plugin"
self.description = "Description of what this plugin does"
self.version = "1.0.0"
self.required_game_id = None # Set to specific AppID if needed
def execute(self, *args, **kwargs):
# Your plugin logic here
print(f"Running {self.name} for game at: {self.game_path}")
return True
def validate(self) -> bool:
# Validate if plugin can run
return True
Game Manager Plugin
The included game_manager_plugin.py provides a GUI for managing the supported games list. You can:
- Add new games to the supported list
- Remove games from the supported list
- View all currently supported games
Adding Games
Games can be added in several ways:
- Manually edit
supported_games.json:
{
"name": "Game Name",
"appid": 123456,
"launcher": "steam",
"vdf_number": 123456,
"description": "Game description"
}
-
Use the Game Manager Plugin: Run the "Game Manager Plugin" from the main application
-
Programmatically via plugins: Use
self.game_manager.add_game()in your plugins
Supported Game Properties
name: Display name of the gameappid: Steam AppIDlauncher: Game launcher (currently supports "steam")vdf_number: VDF file number (usually same as AppID)description: Game description
Metadata
Release files for ugmm 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ugmm-1.0.0.tar.gz | 3.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ugmm-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.1 kB
Release files / ugmm-1.0.0.tar.gz
| Download URL | ugmm-1.0.0.tar.gz |
|---|---|
| Size | 3.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
de224005c404c3bc1898e9f852afcde328e27970b88cdb940fe87992efb21ee3
|
|
BLAKE2b-256 checksum How to use checksums |
0e0b3d75310997235139f04f2ef334c28c70ff2fdbfe25662d2b845e0a7595d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / ugmm-1.0.0-py3-none-any.whl
| Download URL | ugmm-1.0.0-py3-none-any.whl |
|---|---|
| Size | 3.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ef03da873be2223c739658608cce34161ff1f0af9bb979a8e0d76f88f0a9408d
|
|
BLAKE2b-256 checksum How to use checksums |
a72e0f6f781de4ea2a281e971f97c0157322a0106428c2d661e60304abe299bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|