[Kde-games-devel] Project proposal for GSOC 2013

ANANT PUSHKAR anantpushkar009 at gmail.com
Fri Apr 26 17:46:10 UTC 2013


Hi,

This is my first draft of proposal for GSOC 2013. Please leave your
comments and views about the same.

Regards,
Anant Pushkar
__________________________________________________________________________________________________________________________________________

*Name:* Anant Pushkar

*Email Address: *anantpushkar009 at gmail.com

*Free node IRC Nick:* anant

*IM Service and Username: *Google, anantpushkar009

*Location (City, Country and/or Time Zone): *Kharagpur,* *India, GMT +05:30

*Proposal Title: *Port a KDE Game to QtQuick

*Motivation for Proposal / Goal:***

*Games have always been a very integral part of KDE right from the
beginning and with time KDE has accumulated a vast number of games over
numerous genres. With significant improvement in QGraphicsView, most of the
KDE games today use QGraphicsView and KgameRenderer. *

* *

*The next big leap forward in this regard has been the decision to port KDE
games to qml (games like kbreakout and kdiamonds have already been ported).
Various advantages that qml offers in this regard include ease of
programming in the declarative language and logic computation using
JavaScript. This way the developer can separate out the game-related and
the UI-related logic easily. Maintenance becomes easy. In addition, this
makes it easy for the community to make the game available on mobile
devices (especially with projects like necessitas coming up). There has
also been a recent addition of QtQuick support to KDE Games library
including qml component to display elements from SVGs.*

* *

*My enthusiasm to develop games lead me to start off with Qt and
subsequently qml and fall in love with it right then. I am a passionate
game developer and have also developed a space arcade game before using Qt
and qml [1] for experience and fun. Hence, this project turns out to be a
perfect one for me to work on. *

* *

*I have chosen Bomber and Kollision, being very involving and addictive
games and my personal favorites, to port to qml. Also, I have a number of
new features that can be implemented into the game play along with this
port to enhance the user experience. Some of these new features that can be
implemented in Bomber include:*


   - *Real life projectile motion** of bombs to improve the user experience
   of the game. I have already submitted a patch [2] implementing the same in
   C++ using the present class hierarchy.*
   - *Bonus target objects: These would be movable objects (like birds, or
   enemy planes) moving horizontally in the sky above the buildings. The
   player can gain extra bonus points by bombing these objects. The heights of
   these objects will be randomly distributed between the present height of
   the plane and the highest building. Each such object shall make its
   appearance only once and would disappear once out of the screen.*
   - *Ability to move down: The player will be able to move down by
   pressing down button on the keyboard. This will help the player take better
   aim on the targets.*

*The primary focus would be to come up with a stable port. Implementation
of new features will be done towards the end of the project.*

* *

*Implementation Details:*

*The first task would be to separate the game-related logic (such as
pausing the game) from UI-related logic (such as motion of the bomb or the
balls). The class hierarchy will have to be modified and a corresponding
functions will have to be implemented in JavaScript. This will not only
make the code-base more precise but more readable as well. This will also
include identifying which components of the game can/should be ported to
qml.*

* *

*Presently, the animation and the game play is done on C++. As a result,
most of the logic related to the game is spread across various classes and
greatly depends upon the class hierarchy for implementation. An
event-oriented approach will be taken to implement these operations to make
it more intuitive and simultaneously change them as less as possible. *

* *

*So, the project can be divided into the following phases:*


   1. *Porting Bomber*
   2. *Porting Kollision*
   3. *Implementing new features and debugging*

*Each of the first two phases will be sub divided into following sub phases:
*


   - * **Study of documentation and code and identification of components
   to be ported*
   - *Write qml objects for the game including basic view and layout*
   - *Implement game related operations in JavaScript.*
   - * Implement animations and transitions and ensure coherent working of
   mouse and keyboard events*
   - *Finishing touch and debugging.*

*Tentative Timeline:*

*1st to 7th June-** Start reading up the code and related documentation of
Bomber and identify components that will be ported to qml.*

*8th to 14th June- **Write various qml objects for the game (Bomber)
including the basic view for the game and layout of the elements.*

*15th to 21st June- **Implement the various game related operations of
Bomber in JavaScript. Implementing most of the keyboard and mouse events
will be done in this period.*

*22nd to 28th June-** Implementing various animation and transition
elements wherever required to enhance the game play (Bomber) and ensure
that all the keyboard and mouse events are working as expected.*

*29th June to 5th July-** Giving a finishing touch to the game and ensure
that the port is stable. Simultaneously start with the documentation and
the code for Kollision.*

*5th to 12th July- **Fully understand the code and documentation for
Kollision and identify components that will be ported to qml.*

*13th to 19th July- **Write the qml objects for Kollision including the
basic view for the game and layout of the elements.*

*20th to 26th July- **Implement the various game related operations of
Kollision in JavaScript. Implementing most of the keyboard and mouse events
will be done in this period.*

*27th July to 2nd August- **Implementing various animation and transition
elements wherever required to enhance the game play (Kollision) and ensure
that all the keyboard and mouse events are working as expected.*

*3rd to 9th August- **Give a finishing touch to the game and ensure that
the port is stable. Simultaneously, discuss with the mentor and other
fellow KDE game developers about new features that can be implemented in
the games (Kollision and Bomber).*

*10th to 16th August- **Fix the bugs found in the ported game. Continue
with discussion and identification of features that can be added to the
games (Kollision and Bomber).*

*17th to 23rd August- **Implement new features into the game play and test
the implemented features.*

*24th August onwards- **Find and fix as many bugs as possible in the ported
games and ensure that the new features run smoothly and are stable.
Continue to enhance the new implementations.*

* *

*Do you have other obligations from late May to early August (school, work,
vacation, etc.)? Please note that we expect the Summer of Code to be a
full-time, 40-hr a week occupation. It is important to be clear and upfront
about other commitments that you may have during that time.*

*I have just finished my second year (in the last week of April) and the
registrations for the next semester will be held on or after 3rd August. I
have no commitments other than this during the summer vacation. So, I will
be available full time till 3rd August. Hence, I have planned the timeline
so that most of the job is completed before this date. Mainly debugging
will be left to be done after this. I will still have enough spare time in
the month of August for bug fixes and new feature implementations.*

* *

*About me (let us know who you are!):*

*I am a second year student at Indian Institute of Technology (IIT),
Kharagpur pursuing B.Tech. in computer Science and Engineering. *

* *

*I have been a Linux and KDE user since one and a half years. I have
consequently developed a great interest in contributing to the FOSS. I have
been following a number of mailing lists in last several months and found
the KDE community to be very interactive and helpful in this regard.*

* *

*I love to develop games for fun and experience. I have developed several
small games from scratch including a space arcade game on Qt and qml [1], a
multiplatform online strategy game presently supported on android and
common web browsers [3]. *

* *

*Besides being proficient in C/C++, I have extensively worked on languages
like JAVA, JavaScript, C# and PHP and have been a part of various projects
right from my first year at college [4].*

* *

*Relevant Links:***

*[1]* *https://github.com/anant-pushkar/qmlGame*

*[2]* https://git.reviewboard.kde.org/r/109885/

[3] http://introbots.in/index.php/welcome/deal

[4] http://anantpushkar.com



________________________________________________________________________________________________________________________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-games-devel/attachments/20130426/bc88da39/attachment-0001.html>


More information about the kde-games-devel mailing list