Skip to content


tbaugis edited this page · 15 revisions

A Gnome achievement service


  • The main idea is to enable user to explore the features of the application.
  • We don’t care about the security – the simpler the fake, the more boring it actually is
  • Apps register available achievements by copying an XML configuration file into a predefined location – that allows the exploration to happen via the achievement viewer and also it deals with localization
  • Updates to achievements are performed via D-BUS calls that are also available in a wrapped form (currently just python)
  • Trophy system does it’s best to assist with state storage – counters, flags and such so that the app does not have to save trophy-related states itself.
  • Fun is as important as the function

The plan

  • the basic service and rudimentary trophy browsing is there
  • finished brainstorming trophies for our first guinea pig – the project hamster
  • now going through the list and implementing them all – this is causing changes to service API.
  • writing guidelines in parallel
  • after hamster will be done, will pick another test project
  • expecting more changes and more guideline updates
  • fully flesh out the trophy browser
  • announce and beg for integration

The system

  • app defines trophies in an xml file that is then put in /usr/share/achievements – more about format
  • trophy system offers basic state management – getCounter, incrementCounter, decrementCounter to manage any states (and those happen on lengthier observations)
  • communication is happening via D-Bus, but they have been also wrapped in python
    from gnome_achievements.client import Storage; storage = Storage(); storage.get_trophies()
  • when user reaches target, app happily calls unlockAchievement(app, trophy_id).
  • Also, user can check all trophies available for hunt via the browser and through them go into app and explore the nice bits that there are to explore
Something went wrong with that request. Please try again.