Jump to content

Page navigation


This is a document from the attic. The subject described here has been discontinued. Do not expect any further development, bugfixes or support.

Gamma Patrol


Gamma Patrol is an old-style, vertical scrolling space-shooter. You have to fight your way through lots of enemies using different kinds of weapon systems.

The game was intended to be my first Linux program, but I had to switch to Win95 for a while, because the harddisk with Linux fucked up. Now - with a brand new K6-2 500MHz - development is continued under Linux again.

Gamma Patrol is built on top of the Simple DirectMedia Layer (SDL), a platform independent API for games. My primary target platform is Linux, but I'm able to supply Windows and BeOS versions, too. Thanks to SDL and GCC this is just a matter of ./configure && make

The game features quite nice looking graphics - almost everything has been rendered with the PoVRay raytracer. Title and background music is still to be composed, my wife just began to play with a tracker...


Minimum hardware configuration

Software requirements


You can download the last release Preview release 3


Here I give you some technical informations about compiling and running Gamma Patrol. A section like this is usually called 'FAQ', but nobody asked a question yet, so this title is not apropiate...

Command line options

To get a list of valid command line options, call gammapatrol with '--help'

$ ./gammapatrol --help

Getting maximum performance

This is actually a general topic of SDL and not specific to this particular game. I can only give you tips for the Linux/Unix version here, other systems have different ways of finetuning.

SDL is able to use different 'drivers' for it's graphics. If you start a SDL program out of your X server, the x11 libraries are used by default, but there are different drivers that offer more performance.

You can select a specific driver by setting the environment variable 'SDL_VIDEODRIVER' before running the SDL program.

$ export SDL_VIDEODRIVER=x11
$ ./gammapatrol
# or a one-liner
$ SDL_VIDEODRIVER=x11 ./gammapatrol

Now let's see which drivers are available:

x11: As I said above, this is the default. If your X server supports different screen resolutions and mode switching (like XFree86), than the program can run in windowed and fullscreen mode. Unfortunately the program cannot directly access the videomemory on your graphics card, which is a major drawback for games like Gamma Patrol.

dga: DGA is a feature of XFree86 that allows the program to directly access the videomemory on the graphics card. When running in DGA mode the program always switches to fullscreen mode, windowed mode is not available. Because the hardware is directly accessed the program needs root privileges. Gamma Patrol gains a lot of performance when running under DGA, because it makes heavy usage of the blitter, which can now work on videomemory without slow systemmemory->videomemory transfers. Direct hardware access does also enable 'double-buffering' to reduce flickering.

Note: For some unknown reasons double-buffering is not enables on my system. To reduce the flickering I have to use a back-buffer where the screen is built, then the complete back-buffer is blitted to the screen. It's still faster than the x11 driver but the additional screenblit take a lot of performance.

ggi: I can't really tell you much about this driver except that it uses GGI (General Graphics Interface). If you have a precompiled version of SDL, then this driver is probably not enabled. You have to install libggi (you get it at www.ggi-project.org) and recompile libSDL with '--enable-video-ggi'.

$ cd /path/to/SDL-1.1.x
$ ./configure --enable-video-ggi [more options..]
$ make
$ su
$ make install

fbcon: You don't even have to use a X server to run a SDL program. When started from the console, the program can directly access the video hardware through the framebuffer device. This might be Linux specific, don't know, if other systems have similar features. To use it under Linux you have to enable framebuffer support in your kernel (if you see the little penguin on the console while booting, then it is enabled). See the Framebuffer-HOWTO for installation instructions. When the framebuffer is set up, it has to display 640x480 pixels with at least 16 bits per pixel. The VESA framebuffer device cannot switch videomodes, so you have to set a appropriate mode at boot time (using LILO).

Note: I didn't test this driver yet, so I cannot tell you more about the performance or other problems.

svgalib: SVGA is another low level graphics library for Linux that doesn't use a X server. Like ggi above, it is not enabled by default. Recompile your SDL version like this:

$ cd /path/to/SDL-1.1.x
$ ./configure --enable-video-svga [more options..]
$ make
$ su
$ make install

The game must run with root previleges to use SVGA.

Fullscreen mode

If your graphics device supports both fullscreen and windowed mode, you can switch between these two modes at runtime of the game in the options section. The game save the options for the next session: if you choose fullscreen, the game will start in fullscreen mode on the next run.

To enforce windowed mode when starting the game (e.g. if you have problems with fullscreen mode), use the option '--no-fullscreen'.

$ ./gammapatrol --no-fullscreen

No available audio device

If Gamma Patrol refuses to start, telling you that no audio device is available, you can use the '--no-audio' option.

$ ./gammapatrol --no-audio

This happens, if you don't have a soundcard or if it is not properly installed. If the sound is working for other applications, but not for Gamma Patrol, it can also be a problem of the game. Please tell me about things like this.

Small print