Optymalizacja rozwiązania sieciowego dla gry RTS: RPC, Event Bus i Network Objects

Podczas pracy nad grą RTS z własnym rozwiązaniem sieciowym naszym zadaniem było usprawnienie protokołu sieciowego – tak, aby był bardziej rozszerzalny, łatwiejszy w obsłudze i prostszy do rozbudowy o nową funkcjonalność.

Część kliencka została zbudowana w Unity 3D, a backend oparty był na Node.js.
Aby osiągnąć te cele, wdrożyliśmy:

  • System Remote Procedure Call (RPC) obsługujący wywołania globalne, po stronie serwera oraz specyficzne dla klienta.
  • Network Event Bus do usprawnionej komunikacji.
  • System obiektów sieciowych, obejmujący:
    • Spawnowanie obiektów w sieci.
    • System zdarzeń i bus wiadomości specyficzny dla obiektu.
    • Synchronizowane zmienne i zachowania sieciowe.
    • Optymalizowaną serializację/deserializację z selektywnymi aktualizacjami.

Wykorzystane technologie:

  • Część serwerowa: Node.js, TypeScript, AWS EC2, CodeDeploy.
  • Część kliencka: Unity 3D, C#, JavaScript, WebSockets (dla wtyczki webowej).