Falls Game

abstract

This report presents the "Falls Game" project, realized for the "Distributed Systems" course at the University of Bologna. The project is a multiplayer game inspired by one of the levels of Fall Guys: players compete in a multi-layered arena where the platforms disappear beneath their feet, and the last one standing wins. The game is written in Python with the Ursina engine. The main focus of the project is the networking. The matchmaking mode relies on a matchmaking server that creates a separate game process for each match, while in the peer-to-peer mode there is no server: all the players run the same program and one of them, the host, also acts as the authority of the match (a peer-to-peer architecture with a host). Both modes are played on a local network; hosting the matchmaking server on a cloud service is left as future work. In both modes an authoritative host or server decides the state of the match and the clients only send their positions and requests. The system uses TCP for the operations that must be reliable (matchmaking and joining) and UDP for the real-time game traffic, and it uses Redis to keep track of the matches in progress. It also tolerates failures: a player who loses the connection can rejoin the match, and a peer-to-peer match survives the loss of its host thanks to an automatic host migration.