IoQuake3 dedicated Server aufsetzen

Ich habe gestern für ein paar Freunde und meine Wenigkeit einen IoQuake3 Server auf meinem Vserver aufgesetzt. Das coole an IoQuake3 ist, dass der Client bzw. Server für jede Plattform vorhanden ist (Linux, Mac OS, Windows). Das Vorgehen möchte ich mit meiner Außenwelt natürlich teilen :)

Voraussetzungen

IoQuake3 basiert auf Quake3, sodass ihr das Spiel besitzen müsst, da die *.pk3 Dateien benötigt werden. Ansonsten braucht ihr einen Server, auf dem ihr das Spiel laufen lassen könnt. Softwaremäßig benötigen wir einige Pakete, die wir einfach über den Paketmanager installieren können.

sudo apt-get install build-essential git screen libcurl4-openssl-dev libsdl1.2-dev libopenal-dev

Installation des Servers

Als nächstes erstellen wir uns ein Verzeichnis im RAM, in dem wir den Quelltext kompilieren werden:

cd /tmp/quake

Daraufhin laden wir uns den Quelltext von Github herunter und kompilieren diesen:

git clone git://github.com/ioquake/ioq3.git .
make -j3

Ist das ohne weitere Fehler passiert, können wir die entstandenen Dateien nach /usr/local/games/quake3 kopieren. Das erledigt uns das Make-File mit dem folgenden Aufruf:

sudo make copyfiles

Ein Symlink nach /usr/bin vereinfacht uns später die Aufrufe.

sudo ln -s /usr/local/games/quake3/ioq3ded.x86_64 /usr/bin/q3ded

 Konfiguration des Servers

Bevor wir mit der Konfiguration anfangen, legen wir uns einen neuen Benutzer an, mit dessen Rechten das Spiel laufen wird.

sudo useradd -s /bin/false ioquake

Ist der Schritt getan, nehmen wir des Benutzers Identität an.

sudo su -s /bin/bash ioquake

Damit der Server funktioniert, legen wir einen versteckten Ordner im Homeverzeichnis an:

cd ~
mkdir -p .q3a/baseq3

In diesen Ordner müsst ihr dann die *pk3 Dateien von der CD-ROM (oder anderen Quellen ;) ) hochladen.

Habt ihr das erledigt, dann muss nur noch eine Konfigurationsdatei angelegt werden, in dem die Spielmodi festgelegt werden. Diese legt ihr als „server.cfg“ ebenfalls im baseq3-Ordner ab. Deren Inhalt kann folgendermaßen aussehen:

// ************************************
// FILENAME: server.cfg
// FILEPATH: /usr/games/ioquake3/baseq3
// FILETYPE  Server Configuration File
// GAMETYPE  "Team Deathmatch"
// ************************************
// "//" als kommentarzeichen

// multikern-prozessor?
// 0 = nein  1 = ja
  seta r_smp "1"

// Spieltyp
// 0 = "Free for All"
// 1 = "Tournament"
// 2 = "Free for All" (yes, it's listed again)
// 3 = "Team Deathmatch"
// 4 = "Capture The Flag"
   g_gametype 3

// sollen bots mitspielen?
// 0 = nein  1 = ja
   bot_enable "1"

// minimale spieleranzahl (wird durch bots aufgefüllt)
   bot_minplayers "10"

// wie oft muss in ctf die flagge erobert werden?
   capturelimit 10

// fraglimit
   fraglimit 50

// zeitlimit
   timelimit 15

// maximale spieleranzahl (zuschauer zählen mit)
   sv_maxClients 32

// servername
   sv_hostname "Gehaxelts Ioquake Server"

// message of the day
   g_motd "Happy Fragging!"

// downloads erlauben?
// 0 = nein  1 = ja
   sv_allowdownload "1"

// 0 = nein  1 = ja
   sv_floodProtect "1"

// passwortschutz
// 0 = nein  1 = ja
   sv_privateClients 0

// passwort
// "" = kein passwort
    sv_privatePassword ""

// admin passwort
    rconPassword "ChangeMe!"

// pure-server?
// 0 = nein  1 = ja
   sv_pure 1

// maximale bandbreite für einen spieler in bytes
   sv_maxRate 10000

// masterserver
   sv_master2 ""
   sv_master3 ""
   sv_master4 ""
   sv_master5 ""

// level-auswahl
   set d1  "map q3dm1  ; set nextmap vstr d2"
   set d2  "map q3dm2  ; set nextmap vstr d3"
   set d3  "map q3dm3  ; set nextmap vstr d4"
   set d4  "map q3dm4  ; set nextmap vstr d5"
   set d5  "map q3dm5  ; set nextmap vstr d6"
   set d6  "map q3dm6  ; set nextmap vstr d7"
   set d7  "map q3dm7  ; set nextmap vstr d8"
   set d8  "map q3dm8  ; set nextmap vstr d9"
   set d9  "map q3dm9  ; set nextmap vstr d10"
   set d10 "map q3dm10 ; set nextmap vstr d11"
   set d10 "map q3dm11 ; set nextmap vstr d12"
   vstr d1

// waffen-respawn-zeit
   g_weaponrespawn 5

// votings erlauben?
// 0 = nein  1 = ja
   g_allowvote 0

// schadensvervielfachung quaddamage
   g_quadfactor 4

// demo aufzeichnung erlauben?
// 0 = nein  1 = ja
   g_syncronousClients 1

// zusätzliche angaben
    sets "Administrator" "admin"
    sets "Email"         "accs@gehaxelt.in"
    sets "URL"           "http://gehaxelt.in"
    sets "Location"      "Germany"
    sets "CPU"           "CPU"
//    sets "mappack"       "http://www.myserver.com/mappack.zip"

Speichert die Konfiguration ab, und loggt euch mit der Eingabe von „exit“ aus.

Server starten

Um den Server permanent laufen zu lassen, bieten sich „screens“ an. Diesen erzeugen wir mit dem folgenden Aufruf:

screen -S ioquake

Ihr habt nun eine neue Bash-Session, in der ihr euch wieder als Benutzer „ioquake“ ausgeben müsst:

sudo su -s /bin/bash ioquake

Zum Starten des Servers genügt dann ein einfacher Aufruf der q3ded Binary:

q3ded +set dedicated 1 +exec server.cfg

Mittels der Tastenkombination „Strg+A+D“ löst ihr euch von dem virtuellen Screen. Diesen Schritt dürft bzw. solltet ihr nicht vergessen ;)

Stoppen könnt ihr den Server ganz einfach, in dem ihr wieder zum Screen verbindet (screen -r ioquake) und mit der Tastenkombination „Strg+C“ den Prozess killt.

Fazit

Das Einrichten eines IoQuake3-Servers ist nicht sehr schwer, wenn die benötigten Spiel-Dateien vorhanden sind. Ansonsten wünsche ich Euch viel Spaß beim Zocken.

Wer mit mir eine Runde spielen möchte, kann sich einfach per Twitter (@gehaxelt) melden :)

~Sebastian