Jump to content

GSoC/2025/StatusReports/SrisharanVS

From KDE Community Wiki

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.

Links to Blogs and other writing

GSoC Phase 1

GSoC Phase 2

The Repo Link

https://invent.kde.org/srisharanvs/mankalanextgen