This project, undertaken as part of the ELEN4017A: Network Fundamentals course at the University of the Witwatersrand, Johannesburg, illustrates the design and implementation of a synchronization protocol for an online multiplayer reaction game. The project achieved a distinction.
The project aims to design a robust synchronization protocol using socket programming to enable synchronized gameplay for multiple users in a networked environment. A simple mathematics game was implemented to demonstrate the protocol’s functionality. The project focuses on latency checking, delay propagation, and response time capturing to ensure fair and synchronized gameplay.
- Synchronization Protocol: A custom synchronization protocol ensuring all users receive the game challenges simultaneously.
- Multithreading: Utilized to handle multiple client connections efficiently.
- Latency Check and Delay Propagation: Dynamically calculated and applied to ensure fair play.
- Login System: Secure username and password authentication, with passwords 'stored' with hashes.
- Error Handling: Robust error checking and timeout functionalities on both server and client sides.
- Score Calculation: Dynamic calculation and update of players' scores based on response accuracy and speed.
- Programming Language: Python
- Libraries: Pandas, NumPy, Scikit-Learn, Matplotlib, Seaborn, Scipy, OS
- Tools: Wireshark for packet capturing,
The synchronization protocol was successfully implemented and tested, ensuring fair and synchronized gameplay across different network conditions. The project achieved a distinction, demonstrating the effective application of network TCP/IP Knowledge , programming and synchronization techniques.