Coming up to the middle of the quarter, the goal was to have a functioning barebones multiplayer game. We had a solid foundation for the game on the front-end using the Phaser3 framework (spoiler alert: not so much, but more on that later) but we needed a server to facilitate multiplayer. That’s where my teammate (Thomas Headland) came through and built a FastAPI server.
Now that we had this server to host the game a small hurdle presented itself in that the project spec requires the use of an authoritative server, we interpreted that as a server that validates all actions of each player. So for example if a player hits a key on their keyboard the client notifies the server that a key has been struck and the server then determines the appropriate response. The problem we had here was that our server is a python framework that is incapable of using many of the built-in features of Phaser3 such as physics and collision detection. This mean we had to recreate all of these in Python which kind of rendered most of initial front-end functionality useless.
Now the good news is we have mostly been able to do this as we now have the following features built:
Player connect/disconnect
Movement (acceleration/deacceleration included)
Projectiles
Collision detection
Health and score tracking
Power-ups
Meaning we not only have a basic functioning multiplayer game but the power-ups add that little extra to make it not completely barebones. Even better is I’m not sure how long the last two features listed above took to implement because I’ve hit my runner’s high and am having a blast seeing this game become what I hoped for in the beginning.