- Your Name: Adrien Pilleboue
Email Address: firstname.lastname@example.org
- IRC nickname: adrienpilleboue
- Launchpad ID: adrien-pilleboue
- College-University: Université Claude Bernard Lyon I (France)
- Name : Ubuntu One Achievements (UOA)
- Description : Develop an achievement system for Ubuntu's games and an easy-to-use library for video game developers.
- The project is subdivide in three parts: UOA (deamon with DBus interface), Achievement viewer (use UOA to get information) and a library.
Achievements are a very popular concept to extend shelf life of video games and to give challenges to gamers. Achievements are unlockable along the game by specific action or record, and give points in return.
Benefits for Ubuntu
Ubuntu needs to become more attractive for gamers and video game developers. Add an achievements system in Ubuntu One may improve gamers experience on Ubuntu. XBox and Steam (for windows) have already made their own system and PlayStation will have its one soon. It's the moment to purpose a free alternative.
XML based concept : The achievement list is a XML file stocked in /usr/game/achievements, installed by the game package. The XML can't be edited by an other software than the game. Ubuntu One Achievements just copy this file in ~/Ubuntu One/Achievements and update the XML file function of DBus signal. View the example
Ubuntu one Achievements contains the list of achievements for all games, receives game signal for each event, updates counter and records values and checks if an achievement is unlocked.
Achievement Viewer is a GTK interface to show achievements timeline and the achievements list for each game.
The library uses DBus to send event at UOA. A game can increase a counter (killed monster, earned money...) and purpose a record (time, score in one shot ...) View the library header example
To do after GSoC
- Add Steam support (a XML based API exist)
- Add on-line viewer in Ubuntu One website
- Add progress bar for achievement in game view
- Add more complex rule for achievements
- Please describe any previous Open Source development experience
Personal project with DBus (RSS reader daemon with DBus Interface) and few contributions on Cairo-Dock.
- Why are you interested in Open Source?
In many ways, Open Source helped me in my student's life or for my projects. For instance, it gave me sources example to use some libraries. Moreover, Open Source softwares are a way to share knowledge, and to have stronger software (bug detection). Considering that, it's seems important to me to develop Open Source software.
- How long will the project take? When can you begin?
I can start the work now. I need three week to make UOA, three week to make the viewer, and two week to make the library.
- How much time do you expect to dedicate to this project?
15 hours per week, and no limits during holidays.
- Where will you based during the summer?
Lyon (France), with a good internet connexion, a crammed fridge and a lot of coffee !
- Do you have any commitments for the summer? (holidays/work/summer courses)
- Have you ever participated in a previous GSoC? (describe your project)
- Have you applied for any other 2010 Summer of Code projects? If yes, which ones?
- Why did you choose Ubuntu as a mentoring organization?
I am using Ubuntu since Breezy Badger and I am very interesting in desktop development. What I really appreciate in Ubuntu is that it tries to be usable and useful for everybody.
- Why do you want to participate and why should Ubuntu choose you?
I know DBus and Gtk and have already develop DBus based application (a RSS reader, on Launchpad, but not finish for the moment)
XML achievements definition for TeeWorld (~/Ubuntu One/Achievements/teeworld.xml)
<game name="teeworld" version="1.0"> <counter name="" unit="pts"> <title>Damages cumulate with all weapons</title> <value>42583</value> </counter> <record name="damage_record" unit="pts"> <title>Damage record with any weapons</title> <value>12</value> </record> <counter name="sword_taken" unit="swords"> <title>Sword taken</title> <value>0</value> </record> <achievement name="padawan" unlocked="0" points="5"> <rule type="counter" value="1"></rule> <title>Padawan</title> <description>Take the sword</description> </achievement> <achievement name="ninja" unlocked="0" points="15"> <rule type="counter" value="10"></rule> <title>Ninja</title> <description>Take the sword 10 times</description> </achievement> <achievement name="delicacy" unlocked="1" points="30"> <rule type="damage_record" value="10"></rule> <title>A film of great delicacy</title> <description>Inflict more than 10 damage points in one shot</description> </achievement> </game>
Header example :
void uoa_start_connexion(uoaConnexion *game); void uoa_increase_counter(uoaConnexion *game, const char *counter_name, int value); void uoa_send_record(uoaConnexion *game, const char *record_name, int value); ... void uoa_close_connexion(uoaConnexion *game);