Am 23.01.2008 um 16:08 schrieb Gabriele Greco:
> Alvin wrote:
>>> Too hard to distribute binaries for linux, sorry.
>> It can't really be that hard. Take a look at:
>> * Tremulous (http://www.tremulous.net)
>> * TrueCombat:Elite (http://www.truecombatelite.net/)
>> * Wolfenstein: Enemy-Territory
>> * Many more...
>> I've been installing those binary-only, SDL-based, 3D games on many
>> of Linux.
> The fact that there are games distributed as binary doesn't sadly
> that they work on every linux distribution...
> There are a few problem distributing linux binaries (expecially if you
> need to dynamic link and you'll probably do):
First of all, it's enough if it runs only on the recent distributions.
Someone who like to play games would not install a very old Linux
distribution (wouldn't make much sense as he will always have problems
then to install recent software).
> - Different function calls avaliable in glibc 2.2, 2.3, 2.4:
> You need something like autopackage apgcc to avoid 2.3 and 2.4
> specific symbols.
All the standard ones are the same. I use glibc-2.6.1 and I have no
problems to run any binary shipped game (which were probably linked to
a much older version of glibc).
> - Different C++ abi libstdc++.so.3, 5, 6:
> You need to ship your version of libstdc++ or provide different
> binaries for your executable and all your dependencies.
Or just use a recent one like 5 or 6. Most distributions supports a
mechanism to easily install the missing libstdc++. You don't have to
take care about this. This is done automatically by the packager of
the distribution as a dependency for the package of your game.
> - Different versions of libraries with different features:
> for instance in the binary distribution of Ankh-2 I didn't include
> libSDL (mainly because every distro package a version of SDL best
> for the particular AUDIO daemon it uses by default), but the game was
> relying on the fact SDL_VideoInfo contains the desktop width/height
> the game failed to run on systems with SDL 1.2.8 or earlier.
That's an old version of SDL. Even if a user has an old version, it's
easy to define in the package for the specific distribution that it
needs >SDL-1.2.8. The distribution normally installes the needed
> - Different audio systems:
> You must target at least OSS and ALSA and be aware that Pulse, ARTs,
> ESD... may screw your audio code (this is true also if you ship your
> version of SDL and use it for audio), but bind your game to asound for
> instance may be a problem cause you'll find very different versions in
> different systems.
ALSA is enough and the preferred choice. Though, if you use SDL you
don't really have to take care about as SDL will do.
> Then there are linux specific problem not related to the "binary"
> - 3d accelerated drivers difficult to install and often incomplete/
> (ATI is the classic example...)
> - compiz/beryl/compiz-fusion effects incompatible with opengl apps.
This is not related to your game. And the installation of a driver
depends on the distribution, it's not really difficult on most.
> - different ways to install desktop/menu shortcuts expecially on old
> distros (freedesktop stuff is solving this but only distro of the
> last 2
> years support it).
You don't have to care about this, normally a maintainer of the
distribution will take care about this and create a package for your
game. You should also not try to force another more general way (like
an installer) because the user wants to use the packager of the
distribution and nothing else. If you want to distribute your game
really fast, you can also create the package by yourself (create at
least a DEB-package as Debian-based distributions are the most often
You should perhaps create at least one package (or perhaps a very
basic shell-script which does the most important steps) that a
maintainer of a distribution can easily use this to create his own
Sample: (ebuild for Gentoo-based distributions)
Sample: (basic shell-script; I recommend not to use it, it's more like
SDL mailing list