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.

6 comments:

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.

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.