GSoC/2025/StatusReports/SrisharanVS
Appearance
Mankala: Developing a cross-platform App with Multiplayer Support
This project aims to develop a cross-platform application for Mankala using Qt and QML, extending the capabilities of the existing MankalaEngine maintained by the KDE Community. The application will feature a responsive, touch-friendly interface and support both local gameplay modes and real-time multiplayer using the Extensible Messaging and Presence Protocol. By combining a modern UI with networked communication, the project seeks to bring traditional Mankala gameplay to mobile devices while promoting open-source tools and accessibility.
Mentor
Benson Muite
Work Report
Week 0 (Community Bonding Period):
- Learned the basics of Qt, XMPP, and QXmpp, and explored foundational concepts relevant to the project setup and communication systems.
- Got familiar with the KDE ecosystem — used applications like AudioTube and Krita, and created sketches to understand their design principles and user workflows.
Week 1:
- Set up the project environment and familiarized myself with previous implementations.
- Studied João Gouveia’s implementation of Mankala.
- Reviewed Nidhish’s minimalistic implementation of QXmpp for Mankala.
- Examined Ashutosh’s implementation of mankala-gui to understand the UI structure and integration flow.
Weeks 2–3:
- Focused on the Board Component of the game.
- Designed and implemented a responsive layout adaptable to multiple screen sizes.
- Ensured seamless responsiveness across mobile and desktop platforms.
- Refined visual scaling and interaction behaviour for a consistent gameplay experience.
Weeks 4–5:
- Implemented the Main Menu and developed the Pass-and-Play mode.
- Integrated MankalaEngine to handle moves for both Player 1 and Player 2.
- Fixed various gameplay and synchronization bugs during local testing.
- Improved UI flow between board and menu states.
Weeks 6–9:
- Integrated AI bots from MankalaEngine for multiple variants — Bohnenspiel, Oware, and Pallanguli.
- Ensured functional AI support for Bohnenspiel and Oware, Pallanguli.
- Added a Rules Page describing gameplay mechanics for all three variants.
- Suffered from Typhoid during mid-July, which significantly slowed development progress.
Week 10:
- Midterm Evaluation — prepared blog and summarized progress up to this point.
Weeks 11–12:
- Studied QXmpp in depth.
- Explored its usage in real-world projects such as Kaidan.
- Researched multiplayer implementation patterns by reading about Chesspark’s use of XMPP.
- Recovered from illness and resumed steady development pace.
Weeks 13–15:
- Implemented XMPP Login and the Game Invitation System.
- Added persistent login sessions for XMPP users.
- Developed the GameInvite logic and ensured reliable invitation handling (send/receive).
- Tested user flows for different connection scenarios.
Weeks 16–17:
- Worked on Game Room Implementation using XMPP.
- Experimented with multiple approaches, including PubSub for game rooms and IQ stanzas, for session initialization.
- Finalized the implementation using Multi-User Chat (MUCs) for game room handling.
- Fixed numerous stability and synchronization bugs during multiplayer testing.
Week 18:
- Final Evaluation — reviewed the overall codebase, and finalized it for submission.