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).