Universal Gun Mod Manager - A plugin-based mod manager for games
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ugmm-1.0.0.tar.gz.
File metadata
- Download URL: ugmm-1.0.0.tar.gz
- Upload date:
- Size: 3.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de224005c404c3bc1898e9f852afcde328e27970b88cdb940fe87992efb21ee3
|
|
| MD5 |
ef6f3c550b90f961cba94581148849fc
|
|
| BLAKE2b-256 |
0e0b3d75310997235139f04f2ef334c28c70ff2fdbfe25662d2b845e0a7595d0
|
File details
Details for the file ugmm-1.0.0-py3-none-any.whl.
File metadata
- Download URL: ugmm-1.0.0-py3-none-any.whl
- Upload date:
- Size: 3.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef03da873be2223c739658608cce34161ff1f0af9bb979a8e0d76f88f0a9408d
|
|
| MD5 |
d59ff01b60bea0c4e17f8a59d7bd22aa
|
|
| BLAKE2b-256 |
a72e0f6f781de4ea2a281e971f97c0157322a0106428c2d661e60304abe299bd
|