top of page
Double.png

NetworkingDLL

Engine: Visual Studio, Raylib, and Raknet    Role: Solo Developer

As part of my Complex Games Systems Assessments, we were required to create an external tool that could be used within the game industry. I elected to create a networking DLL integrate RakNet into the project to allow multiplayer capabilities.

My Contribution to this Project

The project started by following a tutorial created by AIE that would create a small networking project that could show multiple "players" which consisted of a ball that moved left and right on the screen, when connected to the server. From here we were required to upgrade the server system to allow more input types (such as moving in 2 dimensions instead of one), create some dead reckoning systems to reduce the number of inputs sent to the server and clients, then convert this into a DLL that could be integrated into a project. While I completed this I also added in a collision and object recognition system. This would allow the player to shoot a ball, which if it collides with another, would reset them to their spawn position.

Main Responsibilities:

  • Add more dimensions to movement

  • Create Dead Reckoning systems to remove data sent to server and clients

  • Convert the project into a DLL

  • Create a Collision system

  • Create a 3rd person shooting system.

What I Learnt from this Project

Having barely touched any networking projects, this Assessment really opened my eyes on the complexity of these systems. While Introducing Dead reckoning was required, it wasn't until I was attempted adding collision recognition that I understood the reasoning. On Initial introduction of collision, I had the server send all collisions recognised to the clients, which worked fine until I removed testing print logs. This caused the clients to hang and freeze as soon as any collision occurred. I eventually learnt that the print logs would delay the server just enough for the clients to catch up with the sent data packets, allowing it to work fine. once these were removed the clients would freeze because they could not handle the number of packets set from the server. To fix this I added in a delay of 1 second to each set collision packet.

Key Learnings:

  • Networking basics

  • How to Create a DLL

  • Importance of Dead Reckoning, and reducing packet size and frequency

bottom of page