You can sign up to get a daily email of our articles, see the Mailing List page.
We do often include affiliate links to earn us some pennies. See more here.

Open Source Game Achievements with Gamerzilla

By - | Views: 27,384

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
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
The comments on this article are closed.
Page: «2/2
  Go to:

Maath 16 Dec, 2020
Quoting: Dennis_Payne
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.)

Storing the user's config and presenting a GUI to modify it are two different things. How does the user configure it now, through those aforementioned launchers? From there it could be saved into the config file, then it is able to be used always, not only when a game is run from a launcher.

I don't think it needs to be an always-on service.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

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!
The comments on this article are closed.