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 itch.io. 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 itch.io 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.
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
Last edited by Julius on 12 December 2020 at 10:33 am UTC
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.
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
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.
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.)
Quoting: Dennis_PayneQuoting: 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.)
Hmm, D-bus exists on windows as well (if you bring your own). Have a standalone GUI to configure it if you must, leave the option to have a config file: I migrate those across my PCs :)
See more from me