Network Specialization


Developed in 8 weeks half-time

 
 

For my specialization project I decided to continue my UDP network system which I started on during Charger. The idea was to make it easy for gameplay programmers to create, send and receive messages to create gameplay. I also created a 2.5D Arena Shooter in a client-to-server architecture with an authoritative server to showcase my system and to get more experience from problems you might run into when making a multiplayer game.

Below I start by explaining problems and techniques I've had the opportunity to learn from together with an explanation of how my network system works. I end with some features I would have implemented if I had more time and sum it up with a conclusion.

 
 

Problems I encountered

There are many interesting problems you may encounter when making a multiplayer game. Here are some problems I ran into and how I solved them.

Network techniques I used

There are some well-known network techniques on the Internet. Here is how I applied some of those in my game.

How the system works

Explaining the system structure, built on UDP with support for reliable messages.

 

 

The Game

 
 

Special thanks to Rasmus Björk and the rest of my team Feather Fall Games for helping me record this footage. 

 

Time ran out

As with any other project, this project reached its deadline and there were a lot of features I would love to have had the time to implement. Besides improving the gameplay and adding graphics, I wanted to explore how small I would manage to get the size of the data sent using delta compression and snapshot compression. Another feature I had to cut due to time was creating multiple game servers running on multiple threads with a lobby where you could choose what game instance to join.


Conclusion

This project has been a blast to work on. Developing a game in a network environment has been a challenge but also a great reward seeing me and my friends laughing, competing and having fun together. I've learned the importance of prioritizing, as well as having good debug tools available. I've learned a lot from techniques used in network programming and problems you can encounter while developing a multiplayer game. I would love to continue working on multiplayer games to solve more fun problems and share my passion.


 

Thank you for taking your time to read about my project and my experience!