For this week’s Thousander Club update:
Game Hours: 409.25(previous two years) + 35 (current year) = 444.25 / 1000
Game Ideas: 710 (previous two years) + 35 (current year) = 745 / 1000
Since starting to do beta testing on Killer Kittens, I learned about system library dependencies that my game had. The first problem was a quick fix. I had followed the advice of Dirk Dashing‘s creator in his series, Linux Game Development, which I first read in the ASP newsletter before GameDev.net picked up the articles. In part 2, Troy Hepfner talks about creating binaries that are distributable, and reducing dependencies allows you to ensure that you only provide what you need and no more. One of the options to pass SDL’s configure script was “–enable-sdl-dlopen”, which allows SDL to dynamically link to certain low-level libraries without requiring that they exist. For some reason, my game wouldn’t run on someone’s system because of one of these low-level libraries. It turns out that I had typed “-enable-sdl-open” instead, which failed silently.
The next difficulty involved someone using Ubuntu 64-bit. Apparently there was still a dependency on libaa, which I found was some ascii graphics library. Why was my game depending on it? It wasn’t. The Kyra Sprite Engine was. I spent a few hours digging through the autotools script for it before figuring out that it was including all sorts of random libraries for no good reason. It was like –enable-sdl-dlopen worked for libSDL but Kyra was ignoring the use of it. In the end, I believe the problem involved certain library flags defined in configure.in that really had no business being there. One I removed those flags, libkyra had fewer dependencies and seemed to pay attention to the fact that I am using custom libraries.
Then I found out that SDL_mixer had dependencies on libvorbis and libogg, and since I am not using OGG files, I don’t need those dependencies, either. A quick update of my build scripts, and the problem was fixed.
I’ve posted a thread on HappyPenguin.org to help solve another problem. A couple of beta testers informed me that my game would not run on older distros, such Debian Stable or Slackware 11. They find the following error message: ./killerkittens.bin: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.4′ not found (required by ./killerkittens.bin)
I’m really tempted to switch to Java, but it may just be that I can switch away from using the Kyra Sprite Engine and solve most of my dependency problems. I thought that maybe I can release my game and then switch from it to using just SDL (and save 10MB or so, since Kyra is a large library) or changing to Allegro. I may need to change before release.
[tags]game, game design, productivity, personal development, video game development, indie[/tags]