Desktop mod manager for GameMaker games, with built-in discovery, library management, patching tools, profiles, and plugins.
Download · Wiki · Issues · Changelog · Discord · Telegram
Table of Contents
G3M (Formerly DELTAHUB) is a desktop manager for GameMaker mod workflows. It combines GameBanana browsing, local library management, profile switching, mod and game versioning, patch utilities, custom game support, and optional plugins in one PyQt6 application.
The current codebase is focused on DELTARUNE, DELTARUNE Demo, UNDERTALE, UNDERTALE Yellow, Pizza Tower, and Sugary Spire, while also allowing custom games to be added through the in-app Game Manager.
- Built for both players and modders. G3M covers browsing, installing, launching, editing, converting, and packaging without splitting those workflows across multiple tools.
- Profiles are first-class. Each profile keeps its own library state and launch-related settings, so you can maintain separate playthrough, testing, or modpack setups.
- The built-in toolset is broader than a typical mod manager. Mod editing, manual install setup, patch creation and application, merge tools, diff viewing, and conversion workflows are part of the main app.
- Plugin support is real, not placeholder UI. G3M can load local or catalog plugins, validate API compatibility, expose plugin settings and views, and run lifecycle hooks.
- Recovery workflows are built in. Downloads history, mod versions, and game restore points make it easier to experiment without losing track of what changed.
- Browse supported GameBanana games directly in the app, with metadata, screenshots, descriptions, and per-post file selection when a page has multiple compatible downloads.
- Install from GameBanana, external URLs, local archives, or one-click protocol links.
g3m://is the primary scheme, legacydeltahub://links are still accepted, and external protocol downloads go through an explicit confirmation step. - Use manual install when an archive is not ready for automatic conversion. The manual flow can map DATA files, extra files, and additional xdelta patches to explicit target paths.
- Hide unwanted browser results with the blocklist manager. Entries can be scoped globally or per game, and can block by mod ID, name, or category.
- Manage installed mods in a local library with drag-and-drop import and export, local README viewing, and richer mod details for screenshots and metadata.
- Create multiple library profiles with their own active mod selections and profile-scoped settings. Profiles can be created, renamed, duplicated, deleted, reordered, exported, and imported.
- Save per-mod version snapshots in each mod folder. Versions can be created locally, imported from archives, switched back in place, deleted, and downloaded from GameBanana for supported linked mods.
- Save full game versions as restore points. Game versions can be created from the live game or a profile-backed state, then applied, exported, imported, or removed later.
- Create and edit local mods with the built-in Mod Editor. It supports game-aware file structures, extra files, metadata editing, icons, screenshots, and local export.
- Convert Deltamod packages into G3M mods during import. The converter keeps game mappings and patch layouts instead of treating Deltamod archives as opaque files.
- Convert PizzaOven packages for Pizza Tower into standard G3M mods when the source layout is eligible. GMLoader-style packages are explicitly rejected instead of being installed incorrectly.
- Import CYOP/AFOM-style Pizza Tower archives through a dedicated conversion path. Converted mods keep the required
towersdata and are tagged asCYOP/AFOM.
- Use the built-in Modding Tools window to create patches, apply patches, merge patch sets, inspect patch info, compare files, and export diff reports.
- Convert DATA-based mod content between supported patch formats inside the same toolset, instead of relying on separate patcher plugins.
- Launch multi-mod setups and create packaged modpacks. The patching layer also preserves extra-file overrides and game-specific file handling during use.
- Launch supported games with or without mods, including Steam launch handoff when a game has a configured Steam App ID.
- Create standalone shortcuts that embed the current launch configuration. Shortcuts can run headlessly through
--shortcutwithout opening the full UI first. - Use direct-launch chapter selection where the selected game supports it. DELTARUNE keeps its chapter-aware workflow separate from single-tab games.
- Enable PortProton on Linux instead of the default launch path when that setup is available and Steam launch is not taking over the session.
- Track downloads in a dedicated queue instead of one-off install prompts. Records move through queued, downloading, downloaded, ready, using, overwrite-pending, manual-required, failed, or cancelled states.
- Retry, cancel, install, overwrite, continue manual setup, or delete entries from the downloads window as needed.
- Control download behavior from settings. G3M supports disabling automatic use after download, deleting downloaded files after use, and keeping local imports in download history.
- Load plugins from an online catalog or from local archives and folders. Installed plugins are scanned, validated against the plugin API version, and marked as enabled, incompatible, broken, or local-only.
- Toggle plugins on and off, open plugin settings, and surface plugin-provided main views and hooks through the runtime service.
- The bundled catalog currently exposes the
DR Save Managerplugin, which adds DELTARUNE save collection management, import and export tools, pre-launch collection switching, and a save editor with Simple and Advanced modes. - G3M still includes an anonymous in-app chat dialog with language channels. It is part of the current UI and uses the app's network-backed chat service when that backend is configured and reachable.
- Open built-in About and Changelog dialogs without leaving the app. The About dialog links to releases, wiki, issues, the local G3M data folder, Discord, and Telegram.
- Switch between bundled themes or import and export theme archives. Theme packages can include color settings, media assets, and custom fonts.
- Change UI scale, border radius, theme colors, background media, startup sound behavior, and related appearance options from settings.
- Hide the Library tab if you want a slimmer layout for browsing and tool-focused use.
- Use bundled language packs or add external language files. G3M currently ships with English, Russian, Spanish, Chinese Simplified, and Chinese Traditional.
- Anonymous analytics are opt-in. The analytics service checks the local opt-in flag before recording or flushing batches.
| Game | Browser / GameBanana | Library / Launch | Notes |
|---|---|---|---|
| DELTARUNE | Yes | Yes | Full chapter-aware workflow, Steam App ID, direct-launch restrictions handled in-app. |
| DELTARUNE Demo | No (Download from DELTARUNE) | Yes | Supports local use and has a built-in full-install. |
| UNDERTALE | Yes | Yes | Includes Steam App ID support. |
| UNDERTALE Yellow | Yes | Yes | Includes a built-in full-install. |
| Pizza Tower | Yes | Yes | Includes PizzaOven conversion and CYOP/AFOM handling. |
| Sugary Spire | Yes | Yes | Included in the built-in registry and marked for full-install support. |
Custom games can be added in the Game Manager. A custom game can define its executable, DATA filename, optional Steam App ID, and optional GameBanana ID, and visible custom games can participate in search when a valid GameBanana ID is provided.
G3M has a plugin catalog service, install service, runtime loader, persistent plugin state, API compatibility checks, localization merge support, and hook execution for settings views, main views, lifecycle events, and game/session-related callbacks.
Plugin manifests can also declare required or conflicting plugins, and the runtime enforces those relations when enabling plugins.
The catalog committed in this repository currently contains one published plugin:
DR Save Managerfor DELTARUNE save collections and save editing.
Local plugins are also supported. Manual installs are marked separately from catalog-backed installs so the UI can distinguish local-only plugins from catalog entries.
G3M requires Python 3.14 or newer (project uses latest versions, edit pyproject.toml if you need compatibility changes).
git clone https://github.com/y114git/G3M.git
cd G3M
python -m pip install -e ".[dev,test,build]"
python src/main.pyExtras defined in pyproject.toml:
.[build]installs PyInstaller..[test]installspytest,pytest-qt, coverage helpers, and related test tools..[dev]installs Ruff.
The repository includes a PyInstaller spec at builds/G3MExecutable.spec:
pyinstaller builds/G3MExecutable.specThat spec packages src/main.py, bundles the src/ tree into the frozen app, and includes macOS bundle URL scheme metadata for both g3m and deltahub. A Windows installer script also exists at builds/G3MWindowsInstaller.iss.
Run the full automated suite with:
pytestUseful local commands:
ruff check src tests
pytest tests/unit
pytest tests/integration
pytest tests/uiThe repository includes unit, integration, and Qt UI coverage for core areas such as protocol handling, downloads, profiles, plugin services, GameBanana integration, patching, game versions, dialogs, and widgets.
Bundled themes live in src/assets/themes/, and bundled language packs live in src/assets/lang/. Theme import and export are archive-based, and localization supports external lang_*.json files plus per-language custom fonts loaded from the same directory as the language file.
If you want implementation details or contributor-facing guides for themes, localization, plugins, or mod formats, the README intentionally keeps those out of the main flow. The G3MWiki is the better place for step-by-step documentation.
