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