Co-op autobattler roguelike for 1–4 players. In development.
| Architecture | |
| Patterns | |
| Async / UI | |
| Multiplayer | |
| Data | |
| Audio |
🌐 Wiki & docs · 🔧 C# API reference
🎬 Trailer & gameplay GIF — coming soon.
Guildmaster is a co-op autobattler roguelike for 1–4 players — tactical depth (team-building, Hero Memento management, positioning) wrapped in party-game spirit. Inspired by Slay the Spire, Baldur's Gate 3, Divinity: Original Sin 2 and Teamfight Manager.
You lead a guild preparing for the Grand Championship. Your roster is made of Vessels — ordinary people who can't fight on their own; their power comes from the Hero Mementos they equip. Before each battle you decide which Vessel takes which Memento, set positions and target priorities — then the fight plays out automatically while you sway it in real time with the Guildmaster's spells.
Built for 1–4 players: solo, you command the whole guild; in co-op, each player runs their own Vessels.
What this project demonstrates: a deterministic real-time combat simulation, a DI-driven architecture (VContainer + MessagePipe) with no singletons, host-authoritative co-op netcode (NGO + Steam), and a fully data-driven content pipeline (ScriptableObjects + Addressables) — covered by an EditMode/PlayMode test suite in CI.
| Feature | Description |
|---|---|
| Vessels & Hero Mementos | Vessels are ordinary guild members who can't fight alone; equipping a Hero Memento grants them its stats and unique abilities — think a player and their champion in LoL |
| Guildmaster | Doesn't fight directly — casts spells in real time during the battle; your main lever on the outcome |
| Readable auto-battle | Combat runs automatically from your pre-set positions, target priorities and AI rules; deterministic, no crits or dodges — and you can pause any time |
| Roguelike run | A Slay the Spire-style map of events, elite guilds and end-of-act boss fights; rewards are Hero Mementos, resources and gold |
| Co-op for 1–4 | The host shares Vessels across the party; each player runs their own over Steam (host-authoritative NGO) |
Кооперативный автобатлер-рогалик для 1–4 игроков. В разработке.
Guildmaster — кооперативный автобатлер-рогалик для 1–4 игроков: тактическая глубина (сбор отряда, управление Реликвиями (Hero Mementos), позиционирование) в духе весёлой вечеринки. Вдохновлён Slay the Spire, Baldur's Gate 3, Divinity: Original Sin 2 и Teamfight Manager.
Вы возглавляете гильдию, готовящуюся к Великому Чемпионату (Grand Championship). Ваш отряд — это «Сосуды» (Vessels): обычные люди, которые сами не умеют сражаться; их сила приходит из Реликвий (Hero Mementos), которые они принимают. Перед каждым боем вы решаете, кто из «Сосудов» какую Реликвию возьмёт, расставляете позиции и приоритеты целей — а дальше бой идёт сам, и вы влияете на него заклинаниями Гильдмастера (Guildmaster) в реальном времени.
Игра рассчитана на 1–4 игроков: в соло вы ведёте всю гильдию, в кооперативе каждый управляет своими «Сосудами».
Что демонстрирует проект: детерминированную симуляцию боя в реальном времени, DI-архитектуру (VContainer + MessagePipe) без синглтонов, host-authoritative кооп-нетворкинг (NGO + Steam) и полностью data-driven контент-пайплайн (ScriptableObjects + Addressables) — с покрытием EditMode/PlayMode-тестами в CI.
| Механика | Описание |
|---|---|
| «Сосуды» (Vessels) и Реликвии (Hero Mementos) | «Сосуды» — обычные гильдийцы, что сами не сражаются; принятая Реликвия даёт им статы и уникальные способности (как игрок и его чемпион в LoL) |
| Гильдмастер (Guildmaster) | Не сражается напрямую — кастует заклинания в реальном времени по ходу боя; ваш главный рычаг влияния на исход |
| Читаемый автобой | Бой идёт автоматически по заранее заданным позициям, приоритетам целей и AI-правилам; детерминированно, без крита и уклонения — паузу можно ставить в любой момент |
| Рогалик-забег | Карта в стиле Slay the Spire: события, элитные гильдии и босс-бои в конце акта; награды — Реликвии, ресурсы и золото |
| Кооп на 1–4 | Хост делит «Сосудов» по отряду; каждый играет за своих по Steam (host-authoritative NGO) |
Coming soon — the project is in early development. / Скоро — проект в ранней стадии разработки.
For developers
| Engine | Unity 6 (6000.4.8f1) |
| Language | C# |
| Platform | Windows / PC |
| CI/CD | GitHub Actions + GameCI |
| Docs | Quartz v4 + Doxygen + GitHub Pages |
| Category | Package | Purpose |
|---|---|---|
| DI / Events | VContainer | DI container — no singletons |
| MessagePipe | Typed pub/sub EventBus over DI | |
| Async | UniTask | Zero-alloc async/await instead of coroutines |
| UI | UI Toolkit + MVVM | Retained-mode UI (UXML/USS) with View↔ViewModel bindings |
| LitMotion | Zero-alloc tweens for UI and VFX | |
| Multiplayer | NGO 2.11.2 | Netcode for GameObjects — host-authoritative |
| Facepunch.Steamworks | Steam integration and transport for NGO | |
| MPPM 1.3.2 | In-editor co-op testing (up to 4 virtual players) | |
| Data | Easy Save 3 | Saves (disk + Steam Cloud) |
| Newtonsoft.Json | JSON serialization of DTOs | |
| Addressables | Content loading by address | |
| Unity Localization | EN + RU localization | |
| Audio | FMOD | Adaptive music (behind an IAudioService interface) |
| Tooling | Odin Inspector | Extended inspector, [SerializeReference] dropdowns |
| Feel (More Mountains) | Game feel: rumble, camera shake, hitstops | |
| Shapes (Freya Holmer) | Procedural vector graphics for UI and debug | |
| Quantum Console | In-game dev console |
Guildmaster - Autobattler/
├── Assets/
│ └── _Project/ # All game code and content
│ ├── Scripts/
│ │ ├── Core/ # Guildmaster.Core.asmdef
│ │ ├── Units/ # Guildmaster.Units.asmdef
│ │ ├── Combat/ # Guildmaster.Combat.asmdef
│ │ ├── Guild/ # Guildmaster.Guild.asmdef
│ │ └── UI/ # Guildmaster.UI.asmdef
│ ├── ScriptableObjects/
│ ├── Prefabs/
│ ├── Scenes/
│ └── UI/
├── Assets/Tests/
│ ├── EditMode/ # Unit tests
│ └── PlayMode/ # Integration tests
├── docs/wiki/ # GDD and technical docs (Obsidian Vault)
├── quartz-config/ # Quartz v4 config for the docs site
├── doxygen/ # Doxygen config for the C# API reference
├── .github/workflows/ # CI: tests (ci.yml) and docs deploy (docs.yml)
├── .cursor/rules/ # Code standards and git conventions
└── scripts/
└── run-tests.ps1 # Local test runner
Code principles:
ScriptableObjectfor all game data — no hardcodingObjectPool<T>instead ofInstantiate/Destroyon hot paths- Component references cached in
Awake(), never inUpdate() - Unity Input System (not legacy Input)
| File | Purpose |
|---|---|
.github/workflows/ci.yml |
Unity Test Runner (EditMode + PlayMode) on push/PR |
.github/workflows/docs.yml |
Build Quartz + Doxygen → deploy to GitHub Pages |
Run tests locally:
./scripts/run-tests.ps1© 2026 Max Gaida. All rights reserved.
This repository is public for portfolio and demonstration purposes only. No license is granted to use, copy, modify, or distribute any part of it without prior written permission from the author.
See LICENSE.md for details.