Battlefield 2142 Battlefield 2 Battlefield Vietnam Battlefield 1942 Forum BF-Games Blog Battlefield Downloads
IPB
IPB


Willkommen Gast ( Login | Registrieren )

Diskussion
> BF2Server

Inhaltsverzeichnis

Software besorgen

Die Software ist frei verfügbar und unterliegt den jeweiligen Lizenzbestimmungen, die es zu beachten gilt!

Wir führen die gesamte Installation im root-Kontext durch, da einige Einstellungen am System zwischendurch gemacht werden wollen. Erstelle zunächst ein neuen Verzeichnis im Homeverzeichnis und wechsele dorthin:

cd ~
mkdir download
cd download

BF2CC

Das Remotecontrol Tool für den BF2 Server unserer Wahl ist der BF2CC. Aus der Downloadsection laden wir uns die aktuelle Realease herunter:

wget http://www.bf2cc.com/Downloads/BF2CCD_1.4.2446.zip

und entpacken das Archiv in ein neues Unterverzeichnis bf2cc

unzip BF2CCD_1.4.2446.zip -d bf2cc

BF2CC ist eine .NET Framework Applikation, welches seinen Ursprung im Windowsumfeld hat. Es gibt jedoch eine Umsetzung des Frameworks unter Linux, das Mono Project. Dort in der Downloadsection gibt es für die meisten Distributionen passende Pakete. Es hat sich herausgestellt, daß die neuesten Versionen nicht sauber mit dem BF2CC laufen. Als beste Mono-Version hat sich die 1.1.10 erwiesen. Für eine Suse 9.3 x86 und Mono 1.1.10 wären das also

mkdir mono
cd mono
wget http://go-mono.com/download/x86/mono-1.1/1.1.10-2/mono-core-1.1.10-2.novell.i586.rpm
wget http://go-mono.com/download/x86/mono-1.1/1.1.10-2/mono-data-1.1.10-2.novell.i586.rpm
wget http://go-mono.com/download/x86/mono-1.1/1.1.10-2/mono-web-1.1.10-2.novell.i586.rpm

Diese Pakete installieren wir auch gleich mit

rpm -i mono-*.rpm

Probleme sollten dabei nicht auftreten. Wenn doch, hätte ich gerne eine Info dazu.

So. Nun haben wir alle Kleinigkeiten beisammen, um den BF2 Server selbst zu installieren.

Der Gameserver

Einen User, in dessen Kontext der Gameserver aus SIcherheitsgründen laufen sollte, legen wir mit

useradd -m -k /dev/null bf2srv

an. Statt bf2srv kann natürlich jeder andere (zulässige) Username genommen werden. Er benötigt keine weiteren Rechte, nur eine Shell (und die hat er nach dem obigen Befehl). Ein Paßwort braucht er nur, wenn man sich direkt mit dem User per ssh anmelden möchte. Beim Umweg über su als root ist es unnötig.

Die jeweiligen Releases liegen bei direkt bei EA. Die Filenamen beginnen mit bf2-linuxded- und daran schliesst sich die Versionsnummer an. Unsere aktuelle (Stand: 01.09.2009) Version ist [1], was der Version 1.50 entspricht, die wir jetzt herunterladen und am besten per FTP auf den Server kopieren. Es liegt bereits der eigentliche Installer vor uns, den wir noch schnell ausführbar machen und auch gleich an die Arbeit schicken:

chmod 744 bf2-linuxded-1.5.3153.0-installer.sh
./bf2-linuxded-1.5.3153.0-installer.sh

Er meldet sich nach kurzem Dekomprimieren mit Press return to continue., was wir dann auch machen. Mit ein paarmal Space oder direkt q geht es dann nach Studie des Lizenzvertrages *hust* weiter, indem wir accept+Enter eintippen. Ein weiteres Enter zeigt den Punkbuster Lizenzvertrag. Wieder mehrfach Space oder q und den Vertrag mit yes+Enter bestätigen. Enter your target installation directory: will nun wissen, wohin der Server installiert werden soll. Es bietet sich natürlich das Homeverzeichnis des Users an, unter dem der Server nachher laufen soll. Also geben wir /home/bf2srv (analog zu dem oben erstellten User) +Enter ein. In diesem Verzeichnis erstellt der Installer nun das Verzeichnis bf2 und installiert darin das Servergerüst.

Ist der Installer fertig, kopieren wir noch die BF2CC Dateien hinein.

cp bf2cc/* /home/bf2srv

und entpacken die Modmanager Scripts mit

cd /home/bf2srv
unzip modmanager-v1.2.zip
rm modmanager-v1.2.zip

Um die benötigten Symlinks automatisch anlegen zu lassen, starten wir den Gameserver nun einmal ganz kurz:

cd /home/bf2srv/bf2
./start.sh

Sobald die Statusoberfläche des Gameservers erscheint und die Ladeanzeige in Prozenten läuft, brechen wir ihn mit Strg-C gleich wieder ab. Der entsprechende Link für die Punkbuster-Binaries ist nun erstellt und wir wissen, daß die benötigten Libraries im Zugriff sind. Kommen beim Start Fehlermeldungen, sind diese zunächst mit Hilfe der FAQ und/oder dem BF-Games.net Forum zu lösen.

Punkbuster aktualisieren

Der Punkbuster sollte sich normalerweise automatisch im Hintergrund aktualisieren, wenn der BF2 Server läuft. Das funktioniert i.d.R. ganz gut, nur bei einer Neuinstallation habe ich schlechte Erfahrungen gemacht. Wenn sich der Punkbuster nicht erstmalig richtig initialisiert und aktualisiert, fliegen die Spieler gleich wieder vom Server. Dafür hat Evenbalance ein feines Tool geschrieben, welches aktuell aber nur noch in einer Version angeboten wird, die eine X-Oberfläche benötigt ... und wer hat die schon auf einem Rootserver ? Die Vorgängerversion habe ich hier im Angebot, die läuft in der Kommandozeile.

cd pb
wget http://www.alfa-freaks.de/files/pbweb.x86
chmod 744 pbweb.x86
./pbweb.x86

Das dauert nun ein paar Minuten, und am Ende sollte - wenn keine Fehler auftreten - eine topaktuelle und vollständige Punkbusterversion auf dem Server liegen.

Startskript

Es gib verschiedene Möglichkeiten, einen Prozeß oder Dienst beim Hochfahren eines Linuxservers zu starten. Wir gehen davon aus, daß der BF2 Gameserver sofort nach einem Reboot des Servers ohne weiteres Eingreifen wieder starten soll. Das eleganteste und sauberste Verfahren dafür ist, den BF2-Server in das Runlevelkonzept einzubinden. Ich will nicht allzu tief darauf eingehen, nur das Wichtigste sei erwähnt. Bei SuSE liegen im Verzeichnis /etc/init.d eine Reihe von Skripten, die mit dem entprechenden Parameter (start, stop, reload, u.a.) den zugehörigen Dienst starten, stoppen, oder dessen Konfiguration neu einlesen. Mit dem Befehl chkconfig -a kann man ein neues Skript automatisch in die gewünschten Runlevel integrieren. Dieses Skript biete ich hier zum Download an.

cd /etc/init.d
wget http://www.alfa-freaks.de/files/bf2-server
chmod 744 bf2-server
chkconfig -a bf2-server

Wenn der BF2 nicht unter dem hier verwendeten User bf2srv in dessen Homeverzeichnis installiert ist, müssen die entprechenden Variablen im Skript bf2-server angepasst werden. Dieses Startskript ruft ein weiteres Skript auf, das den BF2CCD unter Mono startet. Dieses muß im BF2 Installationsverzeichnis angelegt werden:

cd /home/bf2srv/bf2
wget http://www.alfa-freaks.de/files/startdaemon.sh
chmod 744 startdaemon.sh

Möchte man als Admin des Rootservers verhindern, daß übereifrige Admins auf dem Gameserver über den BF2CCD unerwünschte Änderungen machen, kann man dies von vorneherein verhindern, indem diese Parameter in der startdaemon.sh hinter mono bf2ccd.exe eingefügt werden:

  • -locknetsettings : verhindert das Ändern der IP und Ports, auf denen der Gameserver lauscht (sehr empfehlenswert)
  • -playerlimit 32 : verhindert, daß der Server mit mehr als x (hier 32) Slots betrieben wird, was bei hohen Zahlen (64) schnell zu unschönen Lags führen kann und meistens auch wird (ebenfalls sehr empfehlenswert)
  • -autostart [profile] : startet den Gameserver automatisch mit dem angegebenen Profil, ohne dies muß man den Start im BF2CC von Hand einleiten

Abschluß

Da wir die Installationsarbeiten als root gemacht haben, der Server aber später als User bf2srv laufen soll, müssen wir die Rechte an den Verzeichnissen und Dateien noch übergeben:

cd /home/bf2srv
chown -R bf2srv:users bf2

Konfiguration

Nachdem nun die gesamte benötigte Software versammelt ist, machen wir uns an die Konfiguration.

BF2CCD konfigurieren

Der BF2CCD benötigt ein wenig Installationsarbeit. Die Anleitung vom Autor gibt es hier

Zunächst muß die Konfigurationsdatei der Modmanager Scripts bearbeitet werden.

vi /home/bf2srv/bf2/mods/bf2/settings/modmanager.con

Anzupassen sind ab Zeile 86 die Werte

mm_rcon.rconIp "0.0.0.0"
mm_rcon.rconPassword "mein-pw"
mm_rcon.rconPort 6711

Für den Anfang sind die Werte OK, man kann die 0.0.0.0 (bedeutet: lausche auf allen IPs) durch die öffentliche IP des Servers ersetzen und ggf. auch den RCON Port ändern. Jede Instanz eines BF2 Servers auf dem Rootserver benötigt einen eigenen Port auf der IP des Servers, nicht aber, wie in der Readme angegeben, eine eigene IP. Das Paßwort sollte man aus Sicherheitsgründen kryptisch wählen, denn man wird nicht in den Genuß kommen, es von Hand irgendwo einzugeben.

Nun muß der BF2CCD einmal gestartet werden, damit er seine Konfigurationsdateien im XML-Format anlegt.

mono bf2ccd

Da keine Konfiguration gefunden wird, kommt automatisch der Konfigurationsdialog. Dieser fragt die folgenden Punkte ab:

  • Root Game Folder: der Ordner, in dem BF2 installiert ist, hier /home/bf2srv/bf2
  • Game executable: die zu startende Datei, die Standardvorgabe start.sh ist OK
  • Game executable arguments: weitere Parameter, die dem BF2 Server übergeben werden sollen, lassen wir leer
  • Daemon listen IP: die öffentliche IP des Servers, auf dem der BF2CCD lauschen soll
  • Daemon listen port: der Port für diese Instanz des BF2CCD, Standardvorgabe ist 4712, dies kann jedoch mit einem BF1942 Server Konflikte geben. Ich nehme gerne 6712, in Anlehnung an den BF2 RCON Port 6711 (siehe oben).
  • Admin Password: ein beliebiges Paßwort für den automatisch erstellten Admin-Account

BF2 Server konfigurieren

Die vermutlich einfachste Methode ist die Konfiguration via BF2CCD. Nachdem der Daemon gestartet ist, verbindet man sich mit dem passenden (gleiche Versionsnummer!) Client darauf, logt sich als Admin mit dem wenige Zeile weiter oben vergebenen Admin Passwort ein, und stellt alle Parameter nach persönlichem Gusto ein, speichert die Einstellungen als default-Profil, und startet die Büxe. Fertig.

Diskussion
Diese Seite wurde zuletzt am 16. Dezember 2009 um 07:11 Uhr geändert.  Diese Seite wurde bisher 4.475-mal abgerufen.  Impressum