In my previous post, I introduced the hardware for my new Quake 3 server. I evaluated multiple Quake 3 projects that could be used for both the client and the server. Ultimately, I decided to use the ioquake3 open source version for both client and server. After some testing with various numbers of bot and human participants, I found the settings that I feel utilize the limited resources on the BeagleBone best. As I tested, I optimized both the server configuration and launch script, and I believe the server is ready to rock. Here's the steps I took to make it happen:

  1. Install ioquake3 server
    apt-get install ioquake3-server
  2. List files installed by the ioquake3-server package
    dpkg -L ioquake3-server
  3. Extract files from dusty old (Mine was last touched in 2005) This will fail but what you need is in setup.tmp
    ./ --keep
  4. Copy all the necessary files from the point release to the server
    cp setup.tmp/baseq3/* /usr/lib/ioquake3/baseq3/
  5. Copy pak0.pk3 from your original Quake 3 Arena CD
    cp pak0.pk3 /usr/lib/ioquake3/baseq3/
  6. Run the server (very odd location)
  7. Stop it immediately
  8. Create a server config
    vi ~/.q3a/baseq3/server.cfg
    seta r_smp "1"
    g_gametype 2
    bot_enable "0"
    capturelimit 10
    fraglimit 30
    timelimit 15
    sv_maxClients 32
    sv_hostname "Hostname"
    g_motd "MOTD"
    sv_allowdownload "1"
    sv_privateClients 0
    sv_privatePassword ""
    rconPassword ""
    sv_pure 0
    sv_maxRate 10000

    set d1 "map q3dm2 ; set nextmap vstr d2"
    set d2 "map q3dm3 ; set nextmap vstr d3"
    set d3 "map q3dm4 ; set nextmap vstr d4"
    set d4 "map q3dm5 ; set nextmap vstr d5"
    set d5 "map q3dm6 ; set nextmap vstr d6"
    set d6 "map q3dm7 ; set nextmap vstr d7"
    set d7 "map q3dm8 ; set nextmap vstr d8"
    set d8 "map q3dm9 ; set nextmap vstr d9"
    set d9 "map q3dm10 ; set nextmap vstr d10"
    set d10 "map q3dm11 ; set nextmap vstr d1"
    vstr d1

    g_weaponrespawn 5
    g_allowvote 1

    g_quadfactor 4
    g_syncronousClients 0

This basic configuration is what I consider the minimum to run a usable deathmatch server. Depending on what you plan to do this configuration can be tweaked to meet your needs. Also, on a pure gameplay note quad damage should really be quad damage; don't nerf it.
9. Create a script to launch the server

    /usr/lib/ioquake3/ioq3ded +set sv_punkbuster 0 +set dedicated 1
    +set com_hunkMegs 256 +set net_ip < dynamic IP > +set net_port
    27960 +set g_log /dev/null +exec server.cfg

The keys here are the memory and the log. The memory uses half of what is available on the BeagleBone and the logs are sent to /dev/null to maximize the disk life expectancy.

I expect this server to run for fairly short periods (1 to 2 hours), so the server will just run in the foreground. If you need the server to run for longer you will definitely want to consider running the server via screen or nohup.

In the environment that I will run this server I will have clients running almost every common operating system. So, I tested with almost every client operating system available at ioquake3 and found they worked flawlessly. Regardless of operating system, when I wanted to enter a multiplayer game I had to click the Specify button and enter the IP of the server.

Here are some quick notes:

Linux install

Similar to server except you want ioquake3 (on Debian, Ubuntu, etc) there are packages available for other package managers and if all else fails you can install with the scripts on the clients page.

  1. Install the package or install the engine and the data via the client scripts.
  2. Copy the necessary *.pk3 to the baseq3 directory, depending on how you install
  3. Fire it up and give it your CD key

Mac install

  1. Download the DMG and install
  2. Copy pak0.pk3 into /Applications/ioquake3/baseq3/ folder
  3. Fire it up and give it your CD key

Windows install

  1. Download and install the engine and the data scripts.
  2. Copy pak0.pk3 into C:\Program Files (x86)\ioquake3\baseq3\
  3. Fire it up and give it your CD key

Once you get it started the necessary stat is your frames per second:

  1. Bring up the command prompt with ~
  2. /cg_drawfps 1
  3. ~

This is the bare minimum you need to run a Quake 3 server on a BeagleBone and to frag from various operating systems. Enjoy!