While working on an RTS game with a custom networking solution / backend, we were tasked with improving the networking protocol – making it more extensible, easier to work with, and simpler to add new functionality.
The client side was built in Unity 3D, and the backend was powered by Node.js.
To achieve these goals, we implemented:
- Remote Procedure Call (RPC) System supporting global calls, server-side calls, and client-specific calls.
- Network Event Bus for streamlined communication.
- Network Object System featuring:
- Network spawning.
- Object-specific event system and message bus.
- Synchronized network variables and network behaviours.
- Optimized serialization/deserialization with selective (cherry-picked) updates.
Technologies Used:
- Client Side: Unity 3D, C#, WebSockets, JavaScript (for web plugin).
- Server Side: Node.js, TypeScript, AWS EC2 & CodeDeploy.