Full-stack turn-based RPG with server-authoritative combat and event-driven battle replay
- Overview
- Gameplay Loop
- Map System
- Combat System
- Event-Based Combat Reconciliation
- Progression System
- Move System
- Save System
- Backend Architecture
- Architecture Overview
- How to Run
- Known Limitations
- Planned Improvements
A full-stack turn-based RPG with server-authoritative combat, event-based reconciliation, and run-based progression built in Unity + ASP.NET Core.
A full-stack turn-based RPG prototype featuring a server-driven combat system, run-based progression, and modular game architecture built in Unity.
The player progresses through a 5-node encounter map, fighting monsters in sequential battles, learning new abilities, leveling up, and managing their loadout between encounters.
- Start new run → fetch configuration from server
- Traverse encounter map (5 nodes)
- Enter turn-based combat
- Resolve battle via server-driven logic
- Learn new monster abilities on win
- Level up and progress
- Repeat until final encounter
- 5-node encounter map (designed for future procedural generation)
- Node states:
- 🔒 Locked
- ⚪ Available next encounter
- 🟢 Completed
- Re-playable encounters for XP and move farming
- Move management available between battles
📽️ Demo: Map Navigation & Node States
- Turn-based combat (player vs monster)
- Server-authoritative turn resolution
- Client sends action → server returns:
- updated battle state
- event list (damage/heal/status)
- Client reconstructs battle visually from event stream
- Physical & Magic scaling system
- Defense mitigation system
- Status effects system (extensible)
- Battle log (color-coded actions)
- Floating combat text (damage/heal feedback)
📽️ Demo: Full Battle Showcase
Instead of directly applying results, the server returns structured events:
- Damage events
- Heal events
- Status application events
Client responsibility:
- Replay events sequentially
- Reconstruct battle visualization deterministically
📽️ Demo: Battle Log + Event Replay
- XP-based leveling system
- Flat stat scaling per level:
- Attack
- Defense
- Magic
- Health (+max HP scaling)
- Monster kill → XP gain
- Level-up triggers stat increase
- 4 equipped move slots
- Full move library (learned from monsters)
- Move Manager UI:
- equip / swap system
- disables already-equipped moves
- ScriptableObject-based asset system:
- Move definitions
- Hero sprites (idle/attack/hit)
- Effect sprites
📽️ Demo: Move Management System
- Single-slot save system
- Save & Exit flow from map
- Load disabled if no save exists
- Overwrites previous run intentionally
📽️ Demo: Save/Load Flow
- Server-driven run configuration (5 encounters)
- Monster move selection endpoint (per turn)
- Result pattern for structured responses
- Custom validation pipeline (rule-based system)
- Unity (C#)
- GameManager (global state singleton)
- BattleManager (scene-scoped singleton)
- ApiClient (global singleton)
- Combat System
- Progression System
- Map System
- UI System
- Stateless battle logic
- Config-driven encounter generation
- Turn resolution engine
- Open Unity Hub
- Click Open Project
- Select:
/Unity - Open scene:
MainMenu - Press Play
▶️
-
Navigate to server project folder:
/TurnBasedRPG.API -
Restore dependencies:
dotnet restore -
Run the API:
dotnet run -
API will be available at:
https://localhost:7203orhttp://localhost:5192
Make sure the backend is running before starting the Unity client, as the game depends on runtime API calls for:
- run configuration
- combat resolution
- Start backend (
dotnet run) - Open Unity project
- Press Play
- Click "Start New Run"
- No final victory screen after last encounter
- No visible XP/level UI during run
- Single save slot only
- Map is static (procedural generation planned)
- Move system is not drag-and-drop yet
- Procedural map generation
- Drag & drop move system
- Status effects expansion (poison, bleed, etc.)
- Resource system (mana/energy)
- Improved battle animations
- Smarter AI (context-aware decisions)
- End-game victory screen
- Hero class system
Full demo included above
Includes:
- Start new run
- Map navigation
- Multiple battles
- Level-up showcase
- Move management usage
- Save & exit flow
David Novaković
LinkedIn: https://www.linkedin.com/in/novakovic-david




