Skip to main content

Architecture

Titan uses a microservices architecture powered by Microsoft Orleans virtual actors (Grains).

Overview

┌─────────────────┐
│ UE5 Client │
└────────┬────────┘
│ SignalR (WebSockets)

┌─────────────────┐
│ Titan.API │ ◄── SignalR Gateway (Orleans Client)
└────────┬────────┘
│ Orleans RPC

┌────────────────────────────────────────────────────────┐
│ Orleans Cluster │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ IdentityHost │ │InventoryHost │ │ TradingHost │ │
│ │ │ │ │ │ │ │
│ │ UserIdentity │ │ Inventory │ │ Trade │ │
│ │ UserProfile │ │ ItemHistory │ │ │ │
│ │ Social │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└────────────────────────────────────────────────────────┘


┌─────────────────┐
│ YugabyteDB │ ◄── Distributed ACID Storage
│ (Postgres) │
└─────────────────┘

Microservices

IdentityHost

Manages user accounts, authentication, and profiles.

GrainPurpose
UserIdentityGrainFederated login (Steam/Epic), account linking
UserProfileGrainDisplay name, avatar, settings
SocialGrainFriends list, block list

InventoryHost

Manages player items and history.

GrainPurpose
InventoryGrainAdd, remove, get items
ItemHistoryGrainAudit trail for item events
ItemTypeRegistryGrainItem definitions and valid types

TradingHost

Handles trade sessions with 2-phase commit.

GrainPurpose
TradeGrainTrade lifecycle, validation, execution
SeasonRegistryGrainSeason lifecycle management
SeasonMigrationGrainCharacter migration between seasons

Key Technologies

  • Microsoft Orleans 9.x - Virtual actors for distributed state
  • Microsoft Aspire 13 - Container orchestration and observability
  • Redis - Orleans cluster membership
  • YugabyteDB (PostgreSQL) - Grain persistence
  • SignalR - Real-time full-duplex communication
  • Serilog - Structured logging and auditing