Hamza Ahmed Siddiqui and Bill Long Pham
June 2021
[Link to Capstone Presentation]
Advancements in technologies have made it easier and quicker for small teams to develop cross platform multi user interactive applications. With this project we explored the issues and challenges that arise when developing such an application by creating vertical slices of a game that would implement networking elements. This was a group project that involved a networking team consisting of Bill Pham and Hamza Siddiqui and a gameplay team consisting of Ryan Le and Max Trinh. We all undertook this project in order to gain knowledge about certain topics and its relation to game development. For the networking team this was networking and for the gameplay team this was creative writing and project management.
As part of the networking team, our goals were to understand how to implement multiplayer into the game and how to support cross platform compatibility between Windows PC and Android. The main challenge came from the fact that we had no previous experience with networking let alone game networking.
To solve this problem we conducted research into different game network architectures including: peer-to-peer, client-server, and their variants. We also explored the different connectivity types such as port forwarding and relay servers to cloud based solutions and services like Azure Playfab and Amazon GameLift. In the end we chose a listen server architecture with relay server connection implementation as it was the quickest for us and suited our needs. With this solution we implemented a server authoritative model where clients send commands to the server to verify and execute actions which then get reflected to other clients. Two popular games: Mordhau and Valheim are also based on this general solution and were inspirations for our system. Using this model as well as synchronization tools such as remote procedure calls and synchronized variables we developed workflows for incorporating networking into gameplay logic.
As a result of this project we have gained a good understanding of how to approach game networking in regards to architecture, connectivity methods, and workflows. Creating a multiplayer game proved to be very accessible for a small team such as ours but the networking aspect meant that there was another layer of complexity that had to be considered when designing our systems. This was evident early on when multiple systems had to be redesigned to support multi user interaction. In our future endeavors this experience should prove useful for developing cross platform multi user applications.