Titan
Titan is a distributed game backend built with Microsoft Orleans and .NET 10 for handling player accounts, inventory management, trading, and seasonal leagues.
Overview
Titan implements a "Global Server" architecture where game state lives in a distributed mesh of virtual actors called Grains. This enables:
- Horizontal Scalability: Add Orleans silos to handle more players
- Strong Consistency: Each grain is single-threaded, eliminating race conditions
- Location Transparency: Grains can live on any silo, Orleans handles routing
- Real-time Communication: SignalR WebSockets for bidirectional messaging
Key Features
| Feature | Description |
|---|---|
| Accounts & Characters | Global accounts with per-season characters (PoE-style leagues) |
| Inventory System | Grid-based bags, equipment slots, stash tabs |
| Item Generation | ARPG-style items with base types, modifiers, and currency orbs |
| Trading | Secure peer-to-peer trades with atomic swaps and real-time updates |
| Seasons | Temporary leagues with character restrictions (Hardcore, Solo Self-Found) |
| Rate Limiting | Redis-backed API throttling with configurable policies |
Architecture at a Glance
Quick Start
# Prerequisites: .NET 10 SDK, Docker
# Clone and run with Aspire
cd src
dotnet run --project Titan.AppHost
The Aspire Dashboard will open, showing all services, logs, and metrics.
Documentation Sections
- Architecture - Deep dive into system design
- Getting Started - Setup and first API calls
- Authentication - JWT, EOS, and auth flows
- SignalR Hubs - Real-time API reference
- Orleans Grains - Virtual actor implementations
- Items System - ARPG item mechanics
- Trading - Peer-to-peer trade system
- Seasons - Leagues and character restrictions
- Client SDK - .NET SDK usage