Skip to content

Kaliguri/Guildmaster-Autobattler

Repository files navigation

English  ·  Русский

Guildmaster — Autobattler

Co-op autobattler roguelike for 1–4 players. In development.

Unity Platform Status License CI Docs

Architecture DI MVVM EventBus VContainer MessagePipe
Patterns State Machine Command Object Pool Strategy
Async / UI UniTask LitMotion UI Toolkit
Multiplayer NGO Facepunch.Steamworks
Data Addressables Unity Localization Easy Save 3 Newtonsoft.Json Odin Inspector
Audio FMOD

🌐 Wiki & docs  ·  🔧 C# API reference


Trailer & gameplay

🎬 Trailer & gameplay GIF — coming soon.


English

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.

Key features

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)

Screenshots

Coming soon — the project is in early development. / Скоро — проект в ранней стадии разработки.


For developers

Tech stack

Engine Unity 6 (6000.4.8f1)
Language C#
Platform Windows / PC
CI/CD GitHub Actions + GameCI
Docs Quartz v4 + Doxygen + GitHub Pages

Architecture & packages

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

Project layout

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:

  • ScriptableObject for all game data — no hardcoding
  • ObjectPool<T> instead of Instantiate/Destroy on hot paths
  • Component references cached in Awake(), never in Update()
  • Unity Input System (not legacy Input)

CI/CD

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

License

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

About

Co-op real-time-with-pause autobattler roguelike. Unity 6 - C# - DI/EventBus - host-authoritative NGO co-op. Portfolio project.

Topics

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors