The game uses Unity Netcode for GameObjects (NGO) as the core networking library. I implemented a full client‑authoritative model with server‑side authority for critical state (drivable vehicles, player ownership, lobby data) to prevent cheating.
Authentication & session flow:
Players can sign in with Google or join instantly as a guest. The system silently reconnects returning users via tokens. After authentication, the client connects to Epic Online Services (EOS) – EOS handles lobby creation, matchmaking, join‑by‑code, and publishes dynamic player attributes (e.g., “ready”, “character type”). EOS Lobbies then resolve Quick Play (auto‑match into an existing lobby or create a new one) and Join‑by‑Code flows.
Why EOS is good long‑term for this project:
EOS abstracts platform‑specific networking (Steam, Epic, console, mobile) behind one SDK. That means Pocket World can launch on multiple stores without rewriting lobby code. EOS also provides free cross‑platform identity, NAT traversal, and scalable matchmaking, basically things I would otherwise have to build and maintain myself. For a solo developer, EOS removes the operational burden of running dedicated lobby servers while still offering enterprise‑grade reliability. And because EOS supports persistent lobbies and rich presence, players can invite friends directly from the platform overlay, which increases retention.
Networked entity system:
I wrote a generic Entity<T> base class that handles replication, interpolation, ground detection, moving platforms, spline‑based rails, gravity fields, and state machines. All networked movement data (velocity, owner, transforms) uses NetworkVariable with owner write permissions. The DrivableVehicle component demonstrates a more advanced pattern: ownership transfer when a player enters a vehicle, server‑authorised entry validation, and seamless handoff of input from the player’s character controller to the vehicle controller – all without latency spikes or desync.
Most people list “Unity networking” after following a simple room‑based tutorial. I built an entire open‑world multiplayer game with persistent lobbies, authentication, dynamic ownership, and vehicle systems, all while keeping the code clean and scalable. I also made strategic decisions about using EOS instead of building my own lobby server, showing I understand engineering trade‑offs (time‑to‑market vs. control, cross‑platform reach vs. lock‑in).