Running Alpha Centauri in Linux
Getting the Loki Planetary Pack to run on a modern distro

UPDATE

Since writing this, most newer distros will no longer work with these instructions. However, the process has gotten a lot easier. So, just take the following steps, and if they don't work, then try the complicated directions below.

  1. Install the game.
  2. Update the game using the Loki Update tool
  3. Turn off Beryl or Compiz if you're running them (they won't work after the next step)
  4. Add the following three lines to /etc/X11/xorg.conf:
    Section "Extensions"
            Option  "Composite"     "Disable"
    EndSection
    
  5. Reboot (or restart X, CTRl-ALT-BACKSPACE)
  6. /usr/local/games/smac/smacpack should now work!

Old directions for older kernels:

  1. Introduction
  2. What this is NOT
  3. Installing Planetary Pack
  4. Installing the Latest Patches
  5. Fixing Libraries
  6. File Ownership Issues
  7. Additional Resources
Introduction

Loki Entertainment Software produced Linux versions of a number of popular computer games. Unfortunately, they shut their doors in January 2002, and haven't patched or updated any of the software since then.

When glibc 2.3 was released, it "broke" many of the Loki games -- they would segfault, if not immediately, fairly quickly into a game. Installing a "fresh" copy of Alpha Centauri causes a crash within two turns, or immediately if I attempt to edit a city. Before closing shop, Loki issued a patch that fixed some of this; unfortunately, the patcher won't work on a modern Linux distro.

Starting with glibc 2.4, LD_ASSUME_KERNEL no longer works. I'm running Ubuntu on a 2.6.15 kernel, and the game wouldn't start unpatched. After patching Alpha Centauri I could play -- but it crashed hard any time I tried to start or join a multiplayer game. Nothing on the web would help me out, so after a few e-mails and experimentations, I found a way to get Alpha Centauri and Alien Crossfire to work in Linux -- multiplayer and all!

These directions should work in any major 2.4.x or 2.6.x distribution, however, I've only tested it in Ubuntu. If you have success in any other distros, please let me know via e-mail and I'll include that information here.

What this is NOT

Installing Planetary Pack

1. Mount your Alpha Centauri CD-ROM, and execute the setup.sh located in the CD-ROM's root. Installing as root will allow you to install to /usr/bin/games.

2. The install script will offer to install the Loki Updater. Say NO -- it won't work anyway, so why waste hard drive space?

3. The install script will offer to install the Loki Uninstaller. I don't know if this works anymore, but who would ever uninstall Alpha Centauri?

4. The install script will ask how much of the game you want installed. Choosing all options will allow the game to be played without inserting the CD into the drive. Don't bother allowing it to create Desktop or Menu icons -- chances are they won't work anyway.

5. Sit back and wait for the install to complete. Congratulations! You are ready to play, assuming you are using a version of Linux that hasn't been updated since 2001!

Installing the Latest Patches

To patch Alpha Centauri and Alien Crossfire requires several steps. You need to obtain the latest patch from Loki's site, and run it with the --keep option. It will crash, but the --keep option prevents the uncompressed files from being deleted. Now you have to traverse the directory tree it produces and replace the loki_patch in smac-6.0a-alpha/bin/Linux/x86/ with one obtained here. Now run the update.sh in the smac-6.0a-alpha directory.

OR

Skip all that and install the patch I've already fixed here. Run update.sh (as root, assuming you installed the game in /usr) and it should update the game just fine.

Fixing Libraries

This step may or may not be optional for you. I had to do this in order to get multiplayer to work, but I've been told by others that Alpha Centauri wouldn't work for them at all until they did this.

Download and install this set of library files into /usr/local/games/smac/Loki_Compat (or your SMAC install directory).

Unfortunately, the smacpack binary used to select between Alpha Centauri and Alien Crossfire uses static binaries, so you'll have to use two different commands to launch the two games. I suggest creating scripts, aliases, or menu items to avoid typing these each time:

To start Alpha Centauri:
LD_PRELOAD=/usr/local/games/smac/Loki_Compat/libstdc++-3-libc6.2-2-2.10.0.so /usr/local/games/smac/smac.dynamic

To start Alien Crossfire:
LD_PRELOAD=/usr/local/games/smac/Loki_Compat/libstdc++-3-libc6.2-2-2.10.0.so /usr/local/games/smac/smacx.dynamic

File Ownership Issues

The Loki installer has a tendancy to create configuration files owned by root in the users directory when executed through sudo. If you used sudo, you'll need to run "chown -R (username) ~/.loki" in order to correct the file ownership.

Additional Resources

Old Loki Games Under New(ish) Linux
Linux Gamer's FAQ
HOWTO Running Old Loki Games

And by last resort, feel free to ask me for help, although I'm unlikely to be able to do much -- I'm not a Linux guru, and if I can't recreate your problem on my end, chances are I'll just note it here and wait until someone finds a solution.