Inibuilds · Software Engineer · Aug 2022 – Jan 2023
Real-time Multiplayer Game Backend
C#/.NET backend for a Unigine multiplayer game: SignalR/WebSocket telemetry and entity sync, Redis state and leaderboards, auto-scaling on AWS.
Private codebase. A walkthrough is available on request.
Problem
A multiplayer game built on the Unigine engine needed backend systems for real-time play: keeping entities in sync between players, collecting telemetry for analytics, and managing sessions and leaderboards.
My role
Software Engineer on a 6-month contract, working on the C#/.NET backend, real-time messaging, AWS deployment and testing.
Architecture
Key technical decisions
SignalR for real-time traffic
Telemetry and entity synchronization run over SignalR/WebSockets, for real-time analytics and consistent game state.
Redis as shared state
Redis holds session state and leaderboards and provides pub/sub messaging between services.
Elastic infrastructure
Services run on AWS EC2 with Auto Scaling behind an Elastic Load Balancer, monitored with CloudWatch.
Load-tested with custom tools
C# automation and load-testing tools built on the Task Parallel Library, plus unit and integration tests with NUnit and Moq.
Results
- Real-time telemetry and entity synchronization for the game.
- Game services deployed on auto-scaling AWS infrastructure with monitoring.
Stack
- C#
- .NET
- SignalR
- WebSockets
- Redis
- AWS EC2
- Auto Scaling
- ELB
- CloudWatch
- NUnit
- Moq