For the first term at Level 5 of my Computer Games Programming (BSc) degree at University of Staffordshire, I had a Multiplayer Games Programming module where I created a networked game of Pong that could support multiple pairs of clients. This was all coded in C#, using the MonoGame library, and .NET for its socket functionality.
I implemented a variety of features required for networking such as:
- Multithreading for multiple clients
- TCP connections
- Packet serialisation using JSON
- UDP connections
- Basic lobby system
- RSA encryption
- Replication and synchronisation including prediction
- Pong game loop
During the course of this module, I learnt how to properly implement networking in games in order to synchronise clients and have a server that could host multiple clients in several different games that are properly replicated through the use of features listed above.