So I've been recently submitting a variety of old X games to Mobygames, and figured I may as well document them here too, since it is my web site after all. Most of the games I will be posted were discovered when messing around with Caledra OpenLinux 1.3, though others were located through some other browsing and searches.
They even get an entirely new category!
The general scope of the first set of articles is to list games released prior to the year 2000, and written using technology from the 1980s. So, no to Qt, GTK, SDL, SVGAlib, or OpenGL/Vulkan, but yes to Athena, Motif or direct use of the X Toolkit Intrinsics. This scope allows for games that generally originated on Unix first, or used similar technologies or feel.
That said, I will probably post info on SVGAlib games in the future, as they were a fascinating and forgotten stepping stone towards SDL.
I am also going to omit extremely well-known games that are still under active development, such as the Athena version of Nethack and Freeciv (the latter of which now uses GTK anyways). The main (initial) purpose of this category is to highlight games that might have otherwise been forgotten. Most of these early X games have no sound, and have sparse graphics with very few (or no) colours.
The first set of articles will be posted in rough chronological order, based on whatever information I can find on the original release date. The release date is based on the first graphical version for the application, even if that wasn't technically for X windows, so long as it was similar to what was eventually ported. Such pre-X technologies include SunView on SunOS or Display Manager (DM) on Apollo Domain/OS, though there are several others. Going through the history of Unix graphics is quite a rabbit hole, so I suggest instead that you check out the Wikipedia article on the history of the graphical user interface if you are curious on how everything fits together.
Build Information
Most of these early games use the imake build automation system, which may be unfamiliar to most users, even those who are familiar with compiling source releases. These can be recognised by the prescence of an Imakefile in the distribution. The build steps are actually pretty simple, once you have the dependencies though:
$ xmkmf
$ make
Yup, that's all. You can also run make install
, but be careful,
as these will typically install to /usr/bin
by default. You can define
DESTDIR and BINDIR variables to redirect this, or use
a tool like checkinstall
to track what files are installed so they
can be easily removed later. Either way, I suggest reading the
generated Makefile before doing an automated install so you have
an idea of what gets installed where. Or you can install
by hand; there's typically only the one output binary and
a single manpage for games this old.
On a modern Debian machine, the following dependencies should get you everything you need to build most of them (barring build issues):
- build-essential for any builds on Debian
- xorg-dev is a meta package that pulls in most of the core Xorg libraries and development tools, including the Athena widgets.
- xaw3dg-dev for 3D Athena widgets
- libmotif-dev for Motif widgets
Some old games could theoretically also use XView, though none of the set that I am currently writing about. If you find one, you will unfortunately need to use an older distro, as it has been mostly abandonded and was never upgraded to be compatible with 64-bit processors.
If you are downloading older Debian source packages to rebuild, be sure
to download the original (orig) source archive, the gzipped diff file,
and the description (dsc) file. On a Debian system, these can be
automatically extracted and patched using the command
dpkg-source -x {package}.dsc
, optionally adding --force (prior to -x)
if the old build dependencies can no longer be met. You can then
attempt to use the Debian package build process to automatically rebuild
the package. If it works, you don't even need to deal with the specifics;
just type debuild -b -uc -us
to try it (potentially with -d to override
outdated dependency checks).
If you are on a non-Debian system, or if the above gives you trouble, they can also be extracted and patched fairly easily. To extract manually, simply extract the orig archive into a work folder, uncompress the diff file, change into the application's folder, then apply the diff file using patch, with a command similar to:
$ patch -p1 < $PATCHFILE.diff
Or, to do in one step from a gzip compressed diff file:
$ gunzip < $PATCHFILE.diff.gz | patch -p1
Then refer to the documentation or the scripts in the debian folder for build instructions.
A couple of the games were never packaged for Debian, but a Red Hat source package is available. In that case, the .src.rpm file can be extracted with rpm2cpio as follows:
$ rpm2cpio $PACKAGE.src.rpm | cpio -idmv
Note that this will extract everything into the current directory, so creating a separate work folder before extracting is recommended. The origial source package is one of the extracted files, which will need to be extracted as well. Once fully extracted, I suggest then reading the .spec file, as it will include the patches and build steps for the package.
Some games have additional issues building, but the fix was fairly simple. In these cases, I will also include my own patch to be applied on top of the source package. These can be applied using the patch command as well.