[Kde-games-devel] GSoC Proposal Draft: Porting Games to QGraphicsView

Mehmet Emre maemre2 at gmail.com
Fri Mar 23 00:11:28 UTC 2012


Hello,

I intend to contribute the kdegames since it fits well for me and my
prior experience with Qt & C++ and this is my would-be proposal for
Google Summer of Code, I know that proposals will be submitted to
Google directly so I'm writing this for a review.

Name: Mehmet Emre

E-mail Address: maemre2 at gmail.com - mehmet.emre at boun.edu.tr

Freenode IRC Nick: mehmetemre

IM Service and Username: Google Talk - maemre2 at gmail.com

Location: Istanbul/Turkey UTC+3 in summer.

Proposal Title: Porting Games to More Modern Frameworks

Motivation: The QGraphicsView was immature when KDE 4 released and
KGameCanvas is created QGraphicsView developed and became mature and
now there's no need for KGameCanvas anymore. Also, most games were
rewritten for using vector graphics rather than bitmaps in porting
from KDE 3 to KDE 4 and they are using different mechanisms for that
and there's a class for this need: KGameRenderer. It's created in
order to make use of themes and vector graphics in games convenient
and unify them.

This project aims to port the existing games to QGraphicsView and
KGameRenderer. Six games will be ported:

1- kbounce
2- kbreakout
3- kiriki
4- kjumpingcube
5- ktron
6- lskat

Implementation Details:

For each game that will be ported:
1- The game's documentation and code is analysed
3- The game will be ported gradually to the new class hierarchy.
4- The first tests and a personal code review will be done.
5- The patch will be sent to Review Board.
6- If any errors will come up, then they will be fixed and from 4th
step everything will be repeated.
7- After the patch is accepted, it will be submitted to KDE
repositories and game will be completely ported.

For porting from KGameCanvas to QGraphicsView, every class that
inherits a related class must be rewritten and their interactions must
be regenerated. Mostly the regeneration will be like the following:
- All children KGameCanvasPixmapItem and relative classes will become
QGraphicsItem and relative classes respectively.
- A class that inherits QGraphicsScene will be generated for managing
objects on the game scene.
- The main game widget will inherit QGraphicsView and make
interactions with game scene and the parts from game logic.
- The parts of game logic will be separated in a class or will be put
in main game widget, and they'll interact with some functions of the
main game widget to change the scene.

Tentative Timeline:

April 23 - May 21
The documentation and codes of the games will be ported and the APIDOX
of libkdegames will be read and the necessary questions will be asked
to maintainers of games.

May 21-May 30
The detailed design of porting process for each game will be completed
and properly documented to accelerate the porting process. It takes
time because My finals will be in May 28 - June 9

June 1-June 14
The kbounce will be ported and sent to Review Board after reviews it
will have a completely fixed patch and it'll be submitted to KDE
repositories.

June 15-June 28
The kbreakout will be ported and sent to Review Board after reviews it
will have a completely fixed patch and it'll be submitted to KDE
repositories.

June 29-July 12
The kiriki will be ported and sent to Review Board after reviews it
will have a completely fixed patch and it'll be submitted to KDE
repositories.

July 13-July 26
The kjumpingcube will be ported and sent to Review Board after reviews
it will have a completely fixed patch and it'll be submitted to KDE
repositories.

July 27-August 9
The ktron will be ported and sent to Review Board after reviews it
will have a completely fixed patch and it'll be submitted to KDE
repositories.

August 10-August 20
The lskat will be ported and sent to Review Board after reviews it
will have a completely fixed patch and it'll be submitted to KDE
repositories.

- End of GSoC

About Me:
I'm a freshman from Bogazici University CmpE (Computer Engineering) Dept.

I started using Qt4 in 2009. I've already written some small
application like an unnecessary file cleaner for Pardus 2009 (A linux
distro that developed by Turkish government) and GUIs for some simple
system tools and everyday-use scripts I've written.

I've already ported bomber from KGameCanvas to QGraphicsView.

-- 
Mehmet Emre


More information about the kde-games-devel mailing list