Gameye - 2 (a.k.a Latency.GG)
A game server orchestration and hosting platform used by both AAA Game studios and Indie game studios alike
Summary
During my first engagement with Gameye it became evident that because internet routing is constantly changing, it would be beneficial to be continually monitoring the internet from every game console in the world simultaneously in order to maintain a constantly up-to-date map of internet weather. This would enable them to optimise their deployments programmatically in real-time.
To tackle this, I proposed we create a collection of Open-Source libraries (and integrations with popular game engines) and a Platform where hosting providers can register targets. Gameye accepted this proposal and funded a trial project in which the platform was directly integrated with their systems and hosted matchmaking solutions.
Gameye planned to charge game studios an additional fee to ensure that the game server selected for each match was the fairest and had the lowest average latency for all players in the match.
How it was built
Since most game consoles don’t provide support for using ICMP (or Raw) packets, I designed a UDP-based protocol to implement a secure “Ping” protocol with built-in protections against UDP amplification attacks.
To support this, I wrote a Beacon server in C++ that would be installed on the target hosts. This Beacon is multi-threaded and supports massive concurrency, ensuring instantaneous responses even under heavy load.
I then developed Probe libraries for C#, C++, and Python.
The engineering team at Gameye and I collaborated on the APIs used by the Beacons to store measurement data, the API used by the clients to retrieve analytics, and the matchmaking integration with PlayFab.
To demonstrate the total project, I developed a multiplayer Flappy Bird-inspired demo game in C# using Unity (with a game server written in C++ and a backend server in Go), as well as some simpler tech demos in both Python and C# (also using Unity).