Wednesday, August 21, 2013

KDE Games on SoK

If you're willing to be part of this year's SoK then don't be so eager to pick a project, consider working with KDE Games having fun with one of the coolest parts of programming: game development.

I wrote the following proposals related to KBounce and KNavalBattle, which are the games I currently maintain and therefore feel more confident regarding mentoring related projects. However this is not a problem, if you have a project or at least a good idea for a project related to any game in KDE, then feel free to talk to me and submit your proposal.

This is just an "official" post for publicizing the proposals to the KDE community, you can also find them on SoK's wiki.

1: Reveal opponent's ships when losing a game in KNavalBattle.

Brief Explanation: After losing a game it would be interesting for the defeated player to see the opponent's ships. This way a player is allowed to study the adversary and plan ahead for future matches.

Currently there's a branch on KNavalbattle's repository with some code that implements this feature. However, it only works on single player mode and has no entry at the settings menu. Some polishing and a thorough review is needed

Expected Results:
  • The feature shall be optional, with a correspondent entry at the settings menu. 
  • It shall work in all game modes.
Knowledge Prerequisites: C++ and Qt focused on QGraphicsView.

2: Make the number of ships and size of grid configurable in KNavalBattle. 

Brief Explanation: Currently the player has not the option to decide how much of each ship will be placed on the sea before a match. This way many users complain that KNavalBattle has basically become a game of luck, not allowing a player to define a good strategy for guessing where the smaller ship is hidden. 

Implementing this feature can be accomplished by letting the players individually select the quantity for each kind of ship -- something ranging from zero up to a number still undefined -- through a new special menu that will appear during the pre match stage.

Expected Results
  • A new dialog menu shall be designed. This menu must contain a chat widget case the game is being played through a network, as well as a system allowing a game to be played only if both players agree on the selected set of ships.
  • The new feature shall work in all game modes.
Knowledge Prerequisites: C++ and Qt.

3: Fix as much KBounce's or KNavalBattle's bugs as possible.

Brief Explanation: Simple as the title says. The accepted student will pick a game and within two or three months, with my help naturally, will try to fix as much bugs as possible.

Expected Results: At least three bugs fixed within the scheduled planned.

Knowledge Prerequisites: C++, Qt and a basic notion on how to use Review Board and generate diffs.


  1. Some other possible ideas (may or may not be any good);

    Add additional weapons to knavalbattle. These would be limited in number (probably configurable, with a few presets). There would be weapons that hit multiple squares and weapons that reveal the presence of a ship without doing damage.

    Add block holding to kblocks. A user would be able to use a keyboard shortcut to hold a single block for later use. Using the same keyboard shortcut releases the block and puts the next block in storage. Another shorcut puts the stored block in the queue before the current next block.

    Block "shadow" in kblocks. Display an outline of where the current block will land if it is dropped now.

    Optional 1, 2, and 3-sized blocks in kblocks. Option to have blocks 1, 2, and 3 squares instead of just 4.

    Implement irregular starting grids in Shisen-Sho. Shisen-Sho starts with a solid grid of blocks. Implement other block layouts that the user can start with, like KMahjongg has.

    Implement layouts and voids in kdiamond. Rather than a grid, support having kdiamond layouts have irregular edges and "empty" spaces that diamonds can't occupy.

    Implement a fixed-length mode in kdiamond. Implement a mode in kdiamond where you have to destroy a certain number of diamonds to win.

    1. Thank you for all these suggestions.

      Sadly, nowadays I barely have time to work on the games I maintain. But I promise to take into consideration your ideas and see what I can do about them.

      Anyway, your proposal are also good ideas for any student with some interest to work with KDE Games on SoK. All I need is a well planned schedule and a dedicated mentee.

    2. Yes, I understand that, these were intended as SoK suggestions.

  2. All I want to see from KDEGames personally is getting KiGo actually working again! It broke in some update, though to be fair, it was pretty broken in the first place. ;)

    1. Didn't know that. Thanks for pointing this out.

      Go is a very complex game, its AI is also very hard to implement. So, being "broken" -- which I think KiGo wasn't -- is acceptable to some extent.

      I've played KiGo a few times. It was slow under certain conditions -- due the AI issues I mentioned --, but far from being broken. Anyway, it's been a long time since my last KiGo match. Gonna check the repository and see what's happening.

  3. I came onto your blog while focusing just slightly submits. Nice strategy for next, I will be bookmarking at once seize your complete rises
    Lol boost