Tic-Tac-Toe but two boards deep and three player, all hosted on a local server for multiplayer gameplay.
- All players should join the same WiFi network (not eduroam or DurStudent).
- All players should run the client.py file.
- One player should host the game and should select the number of players.
- The other players should input the IP address displayed onto the host's screen.
Our inspiration came from Ultimate Tic-Tac-Toe, a game we’d seen played on paper but rarely encountered as an online or digital version. After spending several hours struggling to get a hardware-based project off the ground, we decided to shift our focus toward something we could bring to life more effectively within the hackathon timeframe. Creating a playable digital version of Ultimate Tic-Tac-Toe in Python felt like the perfect challenge - combining familiar game mechanics with our interest in multiplayer interaction and programming.
Our project allows multiple devices on the same Wi-Fi network to connect to a central host server using their IP addresses and play a three-player game of Ultimate Tic-Tac-Toe. The game is written in Python and uses the Pygame library to provide an interactive graphical interface. Players can join the host server, make moves in real time, and compete in an expanded version of classic Tic-Tac-Toe designed for multiplayer gameplay.
To build our project, we divided the work into smaller teams so we could develop different components simultaneously and later integrate them into a single program. Mia and Rory focused on implementing the core game logic, ensuring the main mechanics worked smoothly. Matthew handled the graphics and visual elements to make the game engaging and intuitive, while Jack set up the server to enable communication and data management. Once each part was functional, we merged the components, debugged integration issues, and refined the final product together.
One of the main challenges we ran into was working with hardware. We initially planned to build a hardware-based project, but quickly realized that we didn’t have enough experience or the right tools to make it work effectively. After spending a lot of time troubleshooting and making little progress, we decided to pivot and focus on developing a game instead. This shift allowed us to better use our strengths in software development and creativity, and ultimately helped us deliver a more complete and polished final product.
We’re proud that we managed to complete the hackathon with a functioning project. Despite several early setbacks and a complete change in direction, we were able to adapt quickly, learn new tools, and produce a game that actually works. Finishing with a playable prototype was a big accomplishment for us given the time constraints and our initial challenges.
Throughout the hackathon, we learned several valuable lessons. First, we realized the importance of understanding our tools and not diving into hardware projects without prior experience or preparation. We also discovered that even simple ideas can be expanded and developed into something much more engaging and complex when approached creatively. Finally, we gained practical experience using Git for version control - learning how to collaborate effectively, manage branches, and merge code across multiple contributors.
Moving forward, we’d like to expand the project beyond its current local setup. Our next steps include developing a website version of the game and introducing user accounts so players can log in and track their progress. We also plan to improve networking by hiding IP addresses and streamlining connections between players. On the gameplay side, we’d like to add more variety in player shapes, experiment with deeper or larger boards, and potentially support more players at once to make the experience even more dynamic and competitive.