You can sign up to get a daily email of our articles, see the Mailing List page.

Open Source Game Achievements with Gamerzilla

By - | Views: 25,535

For a while, I've been suggesting an open source game achievement system. Some people liked the idea but no one wanted to build it. Finally after LibrePlanet 2020, I decided to tackle the problem.

But who cares if open source has game achievements or not?

Achievements are a feature game players expect at this point. By not having any support, the audience looks at our platform as outdated. Currently the data is controlled by one company. Can it be misused? Maybe or maybe not but we don't have to ability to control that at the moment. Game developers are the ones who should be fighting against it. Right now they are making multiple builds and coding support multiple times.

Beyond those arguments, game achievement systems are our virtual bookshelf for games. Many games are bought digitally these days so you can't go to friends' houses and see what they've been playing. If you look at a friend's achievements you can find other games that might interest you or maybe they played a game you were interested in so you can ask for their opinion.

What is Gamerzilla?

Gamerzilla is a multitude of pieces. The web interface is served by Hubzilla, a federated social network service. Hubzilla has extensive addon capabilities which could implement game achievements. Perhaps the biggest contributing factor to choosing Hubzilla was FreeGameDev site setting up an instance.

Asking developers to interact with a web interface probably wouldn't get much traction. LibGamerzilla is a C library that handles interfacing with the Hubzilla instance. It should be as easy for developers to use as the Steam API.

However that would still require every game to add a setting page where you specify your Hubzilla instance and login information. No one wants to do that. Instead LibGamerzilla can also be added to a game launcher like Lutris or GameHub. Connection information would be configured once and the launcher would relay all achievements to the Hubzilla instance. If you don't want to upload your data, no problem the game launcher saves data locally and could display your achievements.

Everything is saved locally and synchronized. If you play a game without the game launcher running, it will synchronise next time you run it from the game launcher. You can also play offline and upload achievements at a later date.

What about languages other than C?

C was chosen for the library because of the ease of integrating with other languages. LibGamerzilla has been used from Vala, Nim, Python, Godot, and the Love game engine. It has minimal dependencies to make it easier to use. Fedora includes a mingw cross compiled library to make Windows ports easy.

How do I use it now?

To my knowledge, FreeGameDev Hubzilla instance is the only one running the addon at this time. You could always ask another instance to include the addon. A standalone server could also be implemented but nothing is currently being done for that.

Fedora is the only distribution that I know includes the library. I have mentioned it to Debian developers and presented at the MiniDebConf in November. Let the distributions know if you want support.

No game launcher has built in support yet. I have modified GameHub to support Gamerzilla but the changes have yet to be merged. Recently I modified the test program included with LibGamerzilla to be a temporary solution. If you install libgamerzilla-server on Fedora, you can run the command line gamerzillaserver. On first run it will ask for your Hubzilla instance and login information. After that it can run without interaction. (There is currently no way to correct a mistake except deleting the file .local/share/server.cfg and running the server again.)

At the moment the game support is limited. A new release of Seahorse Adventures and Shippy 1984 have been released with support and will hopefully get added to Fedora soon. SuperTuxKart has merged support but unless you build it yourself, you will have to wait. Me & My Shadow and Smalltrek have shown no interest in merging support but can be built from my repositories. Pinball Disc Room has support under Linux but the update has yet to be uploaded to Marvellous Inc. and BYTEPATH are two open source Steam games modified to the latest version of Love and Gamerzilla support. It is unlikely those changes will be accepted by the original developers. Support for Unreal or Unity has not been investigated. While it would be useful to have a simple addon for those engines to help commercial developers, I have kept to open source games at the moment.

It might seem kinda depressing by the lack of support but Gamerzilla is young. Game players need to ask for support. Game developers need to learn about the system and how it can simplify things for them. Steam is unlikely to change but has no achievement system. Fewer developers spend the time adding support for GOG or other achievement systems. We need to convince them to adopt an open standard.

Article taken from
Tags: Open Source
We do often include affiliate links to earn us some pennies. We are currently affiliated with GOG and Humble Store. See more here.
About the author -
author picture
I am an open source game developer. I write about games and try to restore ones that no longer work. As a Fedora packager, I try to improve the games available with the distribution.
See more from me
Page: 1/2»
  Go to:

Akien 12 Dec, 2020
View PC info
  • Godot Engine
  • Supporter Plus
Great initiative! I'm happy to see something like this finally available in the FOSS toolkit, and kudos to you for creating bindings for so many FOSS languages and engines. I'm sure Godot folks will find a good use for your GDNative implementation at :)
TheSHEEEP 12 Dec, 2020
View PC info
  • Supporter Plus
Not sure if I misunderstand what it is, but wouldn't it make more sense to have a system that automatically translates game achievements into the right format for a given platform?

At least from a developer's perspective, what would be most useful would be to code your achievements once and then have them work on all platforms (Steam, GOG, open source) without having to do any platform-specific coding. It would just detect if you're building for Steam/GOG/etc. (or you set a flag) and automagically work.

Of course, this would also work the other way around, if e.g. Steam supported an open source platform and converted it to its own system automatically. But I do find the chances for that relatively low.

But (again, if I understood this right), this platform would actually increase the work for developers. That's a pretty tough sell.

Last edited by TheSHEEEP on 12 December 2020 at 9:53 am UTC
Julius 12 Dec, 2020
This isn't so much about creating a useful library for commercial game developers to easily use Steam achivements, but offering a FOSS alternative to this walled garden. Think of it in terms of Mastodon Vs. Twitter. Gamerzilla is trying to do what Mastodon does, not just write an alternative front-end client for Twitter.

Last edited by Julius on 12 December 2020 at 10:33 am UTC
eldaking 12 Dec, 2020
This looks very cool. While I don't have much hope that major studios will use this, it opens a great possibility for FOSS games of all kinds - from engine recreations that might have trouble re-implementing this element, to the reasonably big projects, but maybe even small games like Sudoku or Solitaire implementations? It could also be very useful for non-FOSS indies that want to use itch or distribute in other, non-Steam channels.

Achievements can be pretty important (though it is all over the place, not all games make good use of it). It may seem like a small thing, but goals to accomplish are a crucial element of games. Comparing yourself to your friends, having a register of what you accomplished, having different side-goals to aim for, getting cool landmarks for progressing are all natural elements of gameing.
Hori 12 Dec, 2020
Just make sure it is secure and the achievements can't be (easily) cheated.

Last edited by Hori on 12 December 2020 at 5:35 pm UTC
Dennis_Payne 12 Dec, 2020
@Hori: It's impossible for it to be secure. The source code for every game using it right now is available. Gamerzilla achievements are like golf scores. Sure you can cheat but it doesn't matter.
MayeulC 13 Dec, 2020
Quoting: HoriJust make sure it is secure and the achievements can't be (easily) cheated.

I don't know about this. It isn't really secure on other platforms either. (See that kind of tools).

What if you already unlocked achievements on another platform and would prefer not to start over?

What if you wanted to lock them again as you decide to start afresh?

I don't like playing with cheaters, but that's generally a trust issue, and a web of trust could do wonders. Achievements are for you only, it doesn't really matter to me.

I applaud this initiative!

It would be even better if this library could take care of abstracting achievements for other platforms, especially as GPL apps can't easily link to the Steam runtime.

Last edited by MayeulC on 13 December 2020 at 12:54 pm UTC
Doc Angelo 13 Dec, 2020
I just realized that I really don't care about achievements in the way they were intended. If the achievements are *inside* the game or displayed via a third party frontend (Steam for example) doesn't interest me. For me, those are like quests so to speak. I don't care about them being visible for others online.

Imagine the Witcher 3 having an online display for the quest progress of ALL quests in the game, for every player. I don't give a shit, neither for random users, nor my friends. Nobody of us takes a look at those statistics other than their own.
Maath 14 Dec, 2020
I wonder, why does this need a launcher to be able to publish your achievements to hubzilla? Why can't it just read a config file in ~/.config/gamerzilla/ ?
Dennis_Payne 14 Dec, 2020
Quoting: MaathI wonder, why does this need a launcher to be able to publish your achievements to hubzilla? Why can't it just read a config file in ~/.config/gamerzilla/ ?
It could be setup that way. How would you configure it? I don't like telling people to manually edit a file. I don't think most games are going to want to include a configuration screen for it. I have wondered about the possibility of making it some sort of service in the desktop. What exact technology would be used for that I don't know? I want to support Windows as well so any solution needs to have an answer for that. (It doesn't have to be the exact same answer but more code to maintain is a minus.)
While you're here, please consider supporting GamingOnLinux on:

Patreon, Liberapay or PayPal Donation.

This ensures all of our main content remains totally free for everyone with no article paywalls. We also don't have tons of adverts, there's also no tracking and we respect your privacy. Just good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register

Or login with...
Sign in with Steam Sign in with Twitter Sign in with Google
Social logins require cookies to stay logged in.