I’ll try to summarize the problems I usually encounter when packaging a game for Debian:
- Game data is not DFSG-Free: There are lots of games in which this problem seem to appear, including some of the most famous ones, maybe because of the influence these might have in new game developers. Many games have a free engine, and then decide to restrict game contents, mostly not allowing commercial use of these, or not granting the rights to modify them. This usually includes game maps, models, textures, sounds, fonts and so on. Sometimes those rights are granted under a Creative Commons license, which I hope will be DFSG-compliant sometime.
- Some game data might not be redistributable, even in non-free: It seems that many game developers don’t really understand copyright laws, or not care much about them, and pick images, models, textures or even fonts from random places without crediting their authors or even telling under which license they can be used. Thus, many games include data which might be not legal to redistribute. Not having a license means that no rights are granted at all.
- Game developers seem not to be very careful especially about fonts. Many of the fonts included with game data must be replaced by free ones.
- Releases seem to be quite atypical. Usually there’s a binary release including the game data and another different release just with the source code, but without any data file, you need both to make the game go. That means that repackaging is often needed. Game developers also tend to include in the same package whatever binary libraries are needed to run the game, mostly for Windoze.
- Build chain for data files often doesn’t exist. Some game developers even use their own packaging format to include all the data in a single file, and distribute only those packaged stuff with the game.
- Games tend to be very difficult to internacionalize. Many times texts are written graphically in screens. Some other times they use their own translation system, which might be relatively difficult to handle.
- Many games use relative directories to store their data, sometimes needing writing permissions too. As this doesn’t conform to Linux and Debian standards, the code must often be adjusted to use standard Linux paths and home directories to store whatever the program needs to save.
- Some games also need writing permissions in global files, for example for storing “hall of fame” lists. This is usually solved in Linux world by making a games group with permission to write on those files, but it’s quite a dirty hack in my opinion.
- There’s often not a clear documentation on which copyright and license applies to each file. Especially for non-code stuff, it’s hard to find out if it has been created by the game developers, where it comes from, or which license applies to it. I guess there’s a misunderstanding in that, when no license is explicitly said, all restrictions apply, and not the reverse as many people seem to think. No license means no rights at all.
I’m sure I’m leaving lots of points out of this list, it doesn’t mean to be exhaustive in any way. Maybe I’ll remember more things later.
Seems like this list could be turned into its opposite: a HOWTO or checklist for game makers that would like their games to be distributed as free software, something that perhaps could be read even before the game is written…
Josh Triplett says:
Some games check for a mandatory environment variable to point at their data
directory; this forces the Debian packaging to either patch in a hardcoded
directory or use a simple wrapper /usr/games/thegame to set the environment
variable before running /usr/lib/games/thegame/thegame.
Some games require files in ~/.thegame in order to run, but don’t create these
files if not present; this again requires a wrapper to copy the necessary
files if not present.
Josh Triplett says:
Related to your point about data build chains, sometimes the game author has programs to create and edit the game data (such as level layout tools), but refuses to distribute these programs.
Joe Wreschnig says:
Having recently started work as a game programmer, I can say that most of these are not specific to free software (our data build chains are a big hack, and there’s no supported way to automatically regenerate all the “compiled” data from source, and even then “source” is not always real editable source, e.g. just PNG files instead of XCF files; real internationalization is super-painful thanks to features like text on 3D models or the desire for polished font effects).
Especially on GNU/Linux, the issue is that such things like installers or configuration files are often an afterthought for games. After all, that’s not exactly the fun part to write.
When making Angry Drunken Dwarves I tried to pay attention to these details (for example, the data builds happen on make install, and source for all data files is included). Even then, since the music was composed (almost out of necessity) in a proprietary application, those source files are useless for GNU/Linux users. It also seems that most people don’t care; if they don’t like your graphics, it’s rare that they’ll open up the XCF rather than munge around with the PNG or just redo it from scratch.
Is there any checklist or HOW-TO about preparing games for linux packaging? Some friends and me created a game at the last Campus Party, and we want to polish it and release this final version under the GPL (both code and data). It’d be great if we manage to get it into Debian
Miry says:
Thanks for the comments. I guess it would be nice to develop a checklist for game developers, so that they could quickly have a look at whether they have unsolved issues with the games they’re developing. There are more problems with games, some of them specific to packaging, for example right now, when minor changes are made to some data in the game, the whole bunch of data files must be updatedm which doesn’t really make sense as an smaller differential system could do. Anyway, that’s not an easy thing to solve right now.
As for BenKo’s comment, I do not know of any game-specific HOWTO packaging manual. I guess Debian New Maintainers’ Guide is still the way to go. Anyway, you can ask for help to the Debian Games Team ( http://lists.debian.org/debian-devel-games/ ) whenever you want, you’ll be welcome. I’ll try to have a look at that game
Hi Miry, just curious, what games have you packaged lately ?
Licencias Creative Commons 3.0…
Desde hace poco tiempo he estado utilizando las licencias otrogadas gratuitamente por Creative Commons para la jurisdicción de México, y les he dado uso para los trabajos desarrollados por mi empresa.Muchos debates se han generado entorno a estas lic…
Leave a Reply