ClientβServer Netcode
Authoritative servers run game logic while clients predict locally. Snapshots, delta compression and jitter buffering keep gameplay smooth across variable networks
SUNA (official school page) is a multiplayer architecture and codebase built with Unity's DOTS (Data-Oriented Technology Stack), and Netcode for Entities . It combines authoritative server logic, deterministic client prediction and ECS driven performance to deliver high-framerate, competitive multiplayer experiences
This was the first 3D cross-team project and first multiplayer project. I learned the theory in less than 5 months using the resources below. Not a lot of sleep, but a lot of learning and fun, programming is an amazing journey and the results have been extraordinary. The following ressources helped me a lot
Authoritative servers run game logic while clients predict locally. Snapshots, delta compression and jitter buffering keep gameplay smooth across variable networks
Entity-Component-System architecture enables cache-friendly, multithreaded performance for many simultaneous entities and high framerate targets
Local input prediction with authoritative reconciliation reduces perceived latency while guaranteeing server-correct final state
Asynchronous matchmaking with load confirmation and on-demand client-world instantiation so players join seamlessly when ready
Client-side spawn prediction with temporary local IDs remapped to server-assigned IDs and playerID routing for correct ownership
Authoritative simulation implemented in Unity 6 Entities (ECS) + Jobs + Burst: entity-only state on server, deterministic systems, fixed tick scheduler, and isolated world instances for session sharding
Custom NetCode pipeline using snapshot delta compression, reliable/unreliable channel separation (UDP), and client-side prediction to mask latency while preserving server authority
lastProcessedInputSeq
. Clients compare incoming snapshots and, if the divergence exceeds a threshold, restore the authoritative state and deterministically replay unacknowledged inputs (seq > lastProcessedInputSeq
) via the Ghost Component System in Unity ECS to apply snapshots, perform rollback and replay. Corrections are then smoothly interpolated. Ring-buffered predicted states and inputs are used so rollback is cheap and limited to the local player
Runtime config layer supports CLI / JSON configs and env-vars for port, maxPlayers, tickrate, simulation scale, logging levels and snapshot frequency
Robust session manager with graceful shutdown, snapshot persistence, automatic restart on crash or health-check failure, and configurable session rotation for continuous availability
Deployed to a tuned VM with SSH key-based access + optional RDP/VNC for visual tasks: automated build/deploy scripts, systemd service wrapper, Docker image option, and CI integration
Client telemetry channel for debug payloads, server-side ring-buffered logs, structured metrics export (Prometheus-compatible), and on-demand remote console for live troubleshooting and replay trace dumps
Network hardening (UDP rate-limits, port whitelisting), VM tuning (CPU pinning, cgroups, sysctl net/core tuning), swap disabled, NIC offload config and resource limits to maintain low jitter and deterministic ticks for reliable reconciliation
Editor-only pre/post-build processor that strips cameras, lights and renderers for dedicated server builds, and strips unnecessary shaders/compute kernels to reduce size and avoid graphical overhead on headless servers
Deterministic client spawn prediction + authoritative confirm path: local ghost creation, temporary local IDs, remapped to server-assigned authoritative IDs on snapshot
Snapshot apply pipeline with delta decompression, jitter buffer, and local prediction for player-controlled entities; non-player entities interpolated with configurable smoothing windows
PlayerID routed to spawned entities with ownership components; input dispatch ensures local player authoritative input is reconciled with server confirmations
Session resume, entity snapshot diff on reconnect, and reapply of unacknowledged local inputs to avoid desync after transient disconnects
Client waits for asset and scene load with async confirmation hooks; upon completion we create the client ECS World and apply initial snapshot + local prediction buffers
Matchmaking fills sessions concurrently: join queue β allocate session β wait for load confirmations from players β start when fill threshold or timeout is reached. Sessions are rotatable to multiple shards.
Private sessions with invite/PIN: testers can create private rooms that bypass public queue, still benefiting from async load confirmation and automatic world instantiation.
On join/confirm we map playerID β local entity owner and keep deterministic replay buffers so server confirmations can be applied with minimal jitter.
Implemented a concurrent session allocator with priority queues and configurable fill/timeout rules for automated session population, and built a VM-hosted visualizer to monitor queue progress(Note: the VM shell script used for the demo was not retained)
Deployed the online infrastructure across multiple projects and provided hands-on training on multiplayer concepts and best practices. See the related project: Extractionz . This project reuses the same online architecture and multiplayer logic I developed
Acted as project manager: coordinated with team leads to ensure timely feature delivery, streamlined development workflows, and made scope decisions, trimming or reprioritizing features when necessary to meet milestones
Used profiling and optimization tools to measure bandwidth usage, latency, and packet flow. Applied tuning strategies to minimize round-trip delays, reduce jitter, and maintain consistently low-latency multiplayer experiences
Provided ongoing technical support when bugs were encountered: partnered with other developers to investigate critical logic points, walked through and triaged complex issues, and in many cases handled fixes directly to keep systems stable
Core technical abilities developed and applied across the project
Human skills that improved how I interacted with a team or person