Gargi
07.06.2009, 12:57
Für den Shooter Far Cry 2 ist mit der Version 1.03 ein dedizierter Linux Server erschienen. Es besteht nun die Möglichkeit, auch auf einen Linux Server einen Far Cry 2 Spiele Server in Betrieb zu nehmen, was natürlich bei der Verbreitung von Linuxservern im Internet ein wichtiger Schritt war, um eine Verbreitung des Far Cry 2 Multiplayer voran zu bringen.
Die Installation und das Betreiben des Servers ist verhältnismäßig einfach.
Vorbereitende Schritte
Das Tutorial basiert auf einer Debian Lenny Installation. Dieses Howto sollte aber recht einfach auch auf andere Distributionen übertragbar sein.
Wenn eine Firewall (iptables) aktiv ist, sollten zunächst folgende Ports freigeschaltet werden:
IN_ALLOWED_TCP="9000 9001 9002 9003 9004"
OUT_ALLOWED_TCP="3074 3078 3100 9000 9001 9002 9003 9004"
IN_ALLOWED_UDP="3074 3075 9000 9001 9002 9003 9004"
OUT_ALLOWED_UDP="3074 3078 3100 9000 9001 9002 9003 9004"
Wenn vor Eurem Server noch ein Router geschaltet ist, dann muss das Portforwarding Eures Routers wie folgt auf die IP Eures Servers gesetzt werden:
TCP/UDP Range 9000 - 9004 -> IP Eures Servers
UDP Range 3074 -3075 -> IP Eures Servers
Für 64bit Installationen sollte zudem das ia32-libs Paket nachinstalliert werden:
apt-get install ia32-libs
Da wir einen Gameserver im Hintergrund laufen lassen werden und jederzeit die Konsole zur Verfügung haben wollen benötigen wir noch das Programmpaket "screen" :
apt-get install screen
Wir möchten zudem nicht den Gamesarver mit Rootrechten laufen lassen. Deswegen empfiehlt es sich hier, einen eigenen User für den Gameserver mit eigenem Homeverzeichnis zu generieren:
adduser FarCry2
Das hat zudem den Vorteil, dass wir später auch über einen ftp Zugriff Maps usw. hochladen können und eventuell auch lokale Sicherungen des Serververzeichnisses vornehmen können.
Far Cry 2 Server installieren
Meldet Euch nun als Euer Far Cry 2 User an Eurem Server an ( via ssh oder su usw.) Jetzt laden wir die derzeit aktuellen Serverfiles herunter:
wget http://static3.cdn.ubi.com/far_cry_2/FarCry2_Dedicated_Server_Linux.tar.gz
Informationen zum jeweilgen Downloadverzeichnis bekommt Ihr im UBI Forum unter folgender URL, sollte sich der obige Link geändert haben: http://forums-de.ubi.com/eve/forums/a/frm/f/1891045475
Wenn der Download fertig ist, dann liegt nun das Paket FarCry2_Dedicated_Server_Linux.tar.gz vor. Dieses muss noch entpackt werden:
tar xvzf FarCry2_Dedicated_Server_Linux.tar.gz
Die Serverdateien liegen nun im Verzeichnis FarCry2_Dedicated_Server_Linux.
Far Cry 2 Server konfigurieren
Als erstes starten wir den Server kurz an. Dazu wechseln wir in das bin Verzeichnis des Servers:
cd /home/FarCry2/FarCry2_Dedicated_Server_Linux/bin
Wir müssen jetzt einwenig tricksen, um an die Standardserverkonfiguration als User zu kommen. Die Konfigurationsdatei wird im Unterverzeichnis MyGames im jeweiligen Homeverzeichnis angelegt. Allerdings gibt es mit der aktuellen Version ein Problem: Die Zugriffsrechte werden sehr eingeschränkt angelegt und deswegen kann nur Root erstmal alle Verzeichnisse und Dateien unter MyGames schreiben. Also greifen wir zu einen kleinen Trick! Wir sind bereits als normaler User FarCry2 angemeldet. Nun werden wir einfach zuerst root:
su
(Root Passwort eingeben)
Danach starten wir den Server kurz mit Rootrechten:
./FarCry2_server
Der Server sollte normal durchstarten.
Ihr brecht den Server mit einem
STRG+C
wieder ab.
Danach haben wir im Homeverzeichnis von Root das MyGames Verzeichnis vorliegen.
Wir verschieben nun den Konfigurationspfad in unser eigenes Homeverzeichnis:
mv /root/MyGames /home/FarCry2/MyGames
Danach müssen wir die Zugriffsrechte anpassen, damit der Server auch seine Konfigurationsdatei bekommt:
chmod -R 755 /home/FarCry2/MyGames
chown -R FarCry2:FarCry2 /home/FarCry2/MyGames
Mehr müssen wir als root auch nicht tun und geben nun die Adminrechte wieder ab:
exit
Jetzt sind wir wieder normaler User und sollten uns nach wie vor in unserem FarCry2 Serververzeichnis /bin befinden. Falls nicht, wechseln wir wieder dort hin:
cd /home/FarCry2/FarCry2_Dedicated_Server_Linux/bin
Nun starten wir zum Test ein zweites Mal den Server aber nun als normaler User:
./FarCry2_server
Ihr solltet nun einen laufenden Server mit der Standardkonfiguration haben. Das erkennt Ihr daran, dass Ihr nun eine Zeile mit einem
304 - Game message: Entering lobby!
zu sehen bekommt.
Ihr brecht den Server mit einem
STRG+C
wieder ab. In dem jetzigen /bin Verzeichnis findet Ihr noch eine dedicated_log.txt, in der alle Meldungen protokolliert werden.
Nun können wir noch die Konfigurationsdatei verändern. Hierzu empfehle ich dringlich, nicht die Originalkonfiguration zu verändern, sondern eine Sicherungsdatei. Die legen wir einfach wie folgt an:
cp /home/FarCry2/MyGames/FarCry2/Server/dedicated_server.cfg /home/FarCry2/MyGames/FarCry2/Server/myserver.cfg
Jetzt editieren wir die Konfigurationsdatei mit einem Editor wie z.B. nano:
nano /home/FarCry2/MyGames/FarCry2/Server/myserver.cfg
Hier die wichtigsten Punkte, die eventuell angepasst werden sollten:
Setting|Erklärung
SetSetting server_name FC2 Dedicated Server|Gebt hier Euren Servernamen an
SetSetting gamemode TeamDeathmatch|Spielmodus (Deathmatch, TeamDeathmatch, Uprising, Ctf)
SetSetting map_cycle ...|Hier stehen die Maps, die gespielt werden
SetSetting network_type 1|Art des Servers: 1 = Online, 2 = LAN
SetSetting ranked_match 0|Ranglistenspiel: 0 = nein, 1 = ja
;SetSetting matchPassword yourpassword|Passwortschutz für den Server. Entfernt das ; und gebt ein Passwort vor falls gewünscht
SetSetting match_pb_enabled 0|Punkbuster aktivieren: 0 = nein, 1 = ja
SetSetting minplayers 1|Die minimale Anzahl an Spielern
SetSetting maxplayers 16|Maximale Anzahl an Spielern
SetSetting teambalance 1|Bananciert die Teams bereits in der Lobby aus. 0 deaktiviert dies
SetSetting teamswap 0|1 Erlaubt einen Teamwechsel in der Lobby, 0 deaktiviert dies
SetSetting friendly_fire 1|Friendly fire: 1 = ja , 0 = deaktiviert
SetSetting joinprogress 1|1 = Spieler darf während eines Matches teilnehmen. 0 = deaktiviert, Spieler muiss warten
SetSetting inroundtime 900|Dauer des Matches: 0=kein Limit, 300=5min, 600=10min, 900=15min, 1200=20min, 1500=25min, 1800=30min, 3600=60min
SetSetting max_score 20|Maximale Punktezahl im Match. Hier gibt es einige Variablen, die in der cfg direkt erklärt sind
SetSetting detectPublicAddress 1|1 = entdeckt Eure externe IP wenn Ihr hinter einem Router seid. 0 = gibt die IP des Servers vor *)
;SetSetting remotePassword yourpassword|Wenn der ; entfernt wird kann hier ein Adminpasswort vorgegeben werden. Befehle können über die Konsole im Spiel abgesetzt werden.
;SetSetting time_of_day 0|Hier kann wenn der ; entfernt wird eine Tageszeit festgelegt werden: 0= MapDefault, -1=zufällig, 6=morgens, 11=mittags, 21=abends, 23=nachts
;SetSetting weather_type -1|Wenn der ; entfernt wird, kann das Wetter festgelegt werden 0=klar, 25=windig, 50=gemischt, 75=bewölkt, 100=stürmisch, -1=zufällig
http://www.gargi.org/stuff/sonstiges/devider_fc2_table.png|
{colsp=2}*) Wenn Ihr einen Server hinter einem Router am Laufen habt, dann kann es sein, dass Ihr aus dem gleichen Netzwerk heraus nicht auf Euren Server connecten könnt. Zum Test setzt deswegen die detectPublicAdress auf 0. So habt Ihr die Möglichkeit aus dem eigenen Netz heraus den Server zu joinen. Allerdings kommen dann Spieler von außerhalb nicht drauf. In solch einen Fall könnt Ihr nur von einem Netz extern darauf zugreifen. Ich verwende hierfür zum Testen eines lokalen Servers einen UMTS Stick.
Nachdem Ihr die Konfiguration gespeichert habt bauen wir uns noch ein kleines Startscript.
Far Cry 2 Server starten
Wir wechseln dazu wieder in das Standard Homeverzeichnis:
cd /home/FarCry2
Dort legen wir ein /bin und ein /log Verzeichnis an (falls noch nicht vorhanden):
mkdir /bin
mkdir /log
Danach unsere Startdatei:
touch /home/FarCry2/bin/startfc2
Diese Datei muss ausführbar gemacht werden:
chmod +x /home/FarCry2/bin/startfc2
Jetzt editieren wir die Datei mit unserem Lieblingseditor (z.B. nano):
nano /home/FarCry2/bin/startfc2
Fügt folgenden Code ein (Verzeichnisse sind natürlich entsprechend anzupassen, falls nötig):
startfc2
#!/bin/sh
# FarCry2 startscript by Gargi 2009
#logrotation
rm $HOME/log/server_3.log
mv $HOME/log/server_2.log $HOME/log/server_3.log
mv $HOME/log/server_1.log $HOME/log/server_2.log
mv $HOME/log/server.log $HOME/log/server_1.log
#launch server
cd $HOME/FarCry2_Dedicated_Server_Linux/bin
./FarCry2_server -dedicated $HOME/MyGames/FarCry2/Server/myserver.cfg -logFile $HOME/log/server.log
Dieses einfache Startscript holt sich die entsprechend Eure Konfigurationsdatei und schreibt die Logfile in das Verzeichnis /log . Damit diese nicht zu groß werden habe ich noch eine Logrotation eingebaut. Diese gibt die ersten paar Starts einen kleinen Fehler aus, bis dann die entsprechenden Dateien einmal angelegt sind. Nach dem dritten oder vierten Start sind alle logfiles vorhanden und die Fehlermeldungen verschwinden.
Ihr könnt nun mehrere Startdateien anlegen, die auf verschiedene Serverkonfigurationen verweisen. Bennennt dann die Startdateien entsprechend um, damit Ihr leicht den entsprechenden Server starten könnt. Beispielsweise fc2_DM_ranked, fc2_TDM_unranked usw.
Da Ihr sicherlich Euch zum Start über die Konsole auf Euren Server einloggt würde beim Verlassen der Server ebenso abbrechen. Um das zu verhindern startet erstmal das Hilfsprogramm screen:
screen
Dort gebt Ihr dann Euren Startbefehl des Servers ein. Jetzt könnt Ihr die Konsole wieder verlassen. Wenn Ihr Euch das nächste Mal wieder auf Euren Server einloggt lässt sich die Screensession mit einem
screen -R
aufrufen und Ihr seht wieder Euren Serveroutput.
Viel Spaß!
cu
Gargi
Hinweis: Das Tutorial wird sicherlich noch einwenig ausgebaut. Angedacht sind noch der Bereich Punkbuster und ein Skript zur Überwachung des Serverprozesses.
Die Installation und das Betreiben des Servers ist verhältnismäßig einfach.
Vorbereitende Schritte
Das Tutorial basiert auf einer Debian Lenny Installation. Dieses Howto sollte aber recht einfach auch auf andere Distributionen übertragbar sein.
Wenn eine Firewall (iptables) aktiv ist, sollten zunächst folgende Ports freigeschaltet werden:
IN_ALLOWED_TCP="9000 9001 9002 9003 9004"
OUT_ALLOWED_TCP="3074 3078 3100 9000 9001 9002 9003 9004"
IN_ALLOWED_UDP="3074 3075 9000 9001 9002 9003 9004"
OUT_ALLOWED_UDP="3074 3078 3100 9000 9001 9002 9003 9004"
Wenn vor Eurem Server noch ein Router geschaltet ist, dann muss das Portforwarding Eures Routers wie folgt auf die IP Eures Servers gesetzt werden:
TCP/UDP Range 9000 - 9004 -> IP Eures Servers
UDP Range 3074 -3075 -> IP Eures Servers
Für 64bit Installationen sollte zudem das ia32-libs Paket nachinstalliert werden:
apt-get install ia32-libs
Da wir einen Gameserver im Hintergrund laufen lassen werden und jederzeit die Konsole zur Verfügung haben wollen benötigen wir noch das Programmpaket "screen" :
apt-get install screen
Wir möchten zudem nicht den Gamesarver mit Rootrechten laufen lassen. Deswegen empfiehlt es sich hier, einen eigenen User für den Gameserver mit eigenem Homeverzeichnis zu generieren:
adduser FarCry2
Das hat zudem den Vorteil, dass wir später auch über einen ftp Zugriff Maps usw. hochladen können und eventuell auch lokale Sicherungen des Serververzeichnisses vornehmen können.
Far Cry 2 Server installieren
Meldet Euch nun als Euer Far Cry 2 User an Eurem Server an ( via ssh oder su usw.) Jetzt laden wir die derzeit aktuellen Serverfiles herunter:
wget http://static3.cdn.ubi.com/far_cry_2/FarCry2_Dedicated_Server_Linux.tar.gz
Informationen zum jeweilgen Downloadverzeichnis bekommt Ihr im UBI Forum unter folgender URL, sollte sich der obige Link geändert haben: http://forums-de.ubi.com/eve/forums/a/frm/f/1891045475
Wenn der Download fertig ist, dann liegt nun das Paket FarCry2_Dedicated_Server_Linux.tar.gz vor. Dieses muss noch entpackt werden:
tar xvzf FarCry2_Dedicated_Server_Linux.tar.gz
Die Serverdateien liegen nun im Verzeichnis FarCry2_Dedicated_Server_Linux.
Far Cry 2 Server konfigurieren
Als erstes starten wir den Server kurz an. Dazu wechseln wir in das bin Verzeichnis des Servers:
cd /home/FarCry2/FarCry2_Dedicated_Server_Linux/bin
Wir müssen jetzt einwenig tricksen, um an die Standardserverkonfiguration als User zu kommen. Die Konfigurationsdatei wird im Unterverzeichnis MyGames im jeweiligen Homeverzeichnis angelegt. Allerdings gibt es mit der aktuellen Version ein Problem: Die Zugriffsrechte werden sehr eingeschränkt angelegt und deswegen kann nur Root erstmal alle Verzeichnisse und Dateien unter MyGames schreiben. Also greifen wir zu einen kleinen Trick! Wir sind bereits als normaler User FarCry2 angemeldet. Nun werden wir einfach zuerst root:
su
(Root Passwort eingeben)
Danach starten wir den Server kurz mit Rootrechten:
./FarCry2_server
Der Server sollte normal durchstarten.
Ihr brecht den Server mit einem
STRG+C
wieder ab.
Danach haben wir im Homeverzeichnis von Root das MyGames Verzeichnis vorliegen.
Wir verschieben nun den Konfigurationspfad in unser eigenes Homeverzeichnis:
mv /root/MyGames /home/FarCry2/MyGames
Danach müssen wir die Zugriffsrechte anpassen, damit der Server auch seine Konfigurationsdatei bekommt:
chmod -R 755 /home/FarCry2/MyGames
chown -R FarCry2:FarCry2 /home/FarCry2/MyGames
Mehr müssen wir als root auch nicht tun und geben nun die Adminrechte wieder ab:
exit
Jetzt sind wir wieder normaler User und sollten uns nach wie vor in unserem FarCry2 Serververzeichnis /bin befinden. Falls nicht, wechseln wir wieder dort hin:
cd /home/FarCry2/FarCry2_Dedicated_Server_Linux/bin
Nun starten wir zum Test ein zweites Mal den Server aber nun als normaler User:
./FarCry2_server
Ihr solltet nun einen laufenden Server mit der Standardkonfiguration haben. Das erkennt Ihr daran, dass Ihr nun eine Zeile mit einem
304 - Game message: Entering lobby!
zu sehen bekommt.
Ihr brecht den Server mit einem
STRG+C
wieder ab. In dem jetzigen /bin Verzeichnis findet Ihr noch eine dedicated_log.txt, in der alle Meldungen protokolliert werden.
Nun können wir noch die Konfigurationsdatei verändern. Hierzu empfehle ich dringlich, nicht die Originalkonfiguration zu verändern, sondern eine Sicherungsdatei. Die legen wir einfach wie folgt an:
cp /home/FarCry2/MyGames/FarCry2/Server/dedicated_server.cfg /home/FarCry2/MyGames/FarCry2/Server/myserver.cfg
Jetzt editieren wir die Konfigurationsdatei mit einem Editor wie z.B. nano:
nano /home/FarCry2/MyGames/FarCry2/Server/myserver.cfg
Hier die wichtigsten Punkte, die eventuell angepasst werden sollten:
Setting|Erklärung
SetSetting server_name FC2 Dedicated Server|Gebt hier Euren Servernamen an
SetSetting gamemode TeamDeathmatch|Spielmodus (Deathmatch, TeamDeathmatch, Uprising, Ctf)
SetSetting map_cycle ...|Hier stehen die Maps, die gespielt werden
SetSetting network_type 1|Art des Servers: 1 = Online, 2 = LAN
SetSetting ranked_match 0|Ranglistenspiel: 0 = nein, 1 = ja
;SetSetting matchPassword yourpassword|Passwortschutz für den Server. Entfernt das ; und gebt ein Passwort vor falls gewünscht
SetSetting match_pb_enabled 0|Punkbuster aktivieren: 0 = nein, 1 = ja
SetSetting minplayers 1|Die minimale Anzahl an Spielern
SetSetting maxplayers 16|Maximale Anzahl an Spielern
SetSetting teambalance 1|Bananciert die Teams bereits in der Lobby aus. 0 deaktiviert dies
SetSetting teamswap 0|1 Erlaubt einen Teamwechsel in der Lobby, 0 deaktiviert dies
SetSetting friendly_fire 1|Friendly fire: 1 = ja , 0 = deaktiviert
SetSetting joinprogress 1|1 = Spieler darf während eines Matches teilnehmen. 0 = deaktiviert, Spieler muiss warten
SetSetting inroundtime 900|Dauer des Matches: 0=kein Limit, 300=5min, 600=10min, 900=15min, 1200=20min, 1500=25min, 1800=30min, 3600=60min
SetSetting max_score 20|Maximale Punktezahl im Match. Hier gibt es einige Variablen, die in der cfg direkt erklärt sind
SetSetting detectPublicAddress 1|1 = entdeckt Eure externe IP wenn Ihr hinter einem Router seid. 0 = gibt die IP des Servers vor *)
;SetSetting remotePassword yourpassword|Wenn der ; entfernt wird kann hier ein Adminpasswort vorgegeben werden. Befehle können über die Konsole im Spiel abgesetzt werden.
;SetSetting time_of_day 0|Hier kann wenn der ; entfernt wird eine Tageszeit festgelegt werden: 0= MapDefault, -1=zufällig, 6=morgens, 11=mittags, 21=abends, 23=nachts
;SetSetting weather_type -1|Wenn der ; entfernt wird, kann das Wetter festgelegt werden 0=klar, 25=windig, 50=gemischt, 75=bewölkt, 100=stürmisch, -1=zufällig
http://www.gargi.org/stuff/sonstiges/devider_fc2_table.png|
{colsp=2}*) Wenn Ihr einen Server hinter einem Router am Laufen habt, dann kann es sein, dass Ihr aus dem gleichen Netzwerk heraus nicht auf Euren Server connecten könnt. Zum Test setzt deswegen die detectPublicAdress auf 0. So habt Ihr die Möglichkeit aus dem eigenen Netz heraus den Server zu joinen. Allerdings kommen dann Spieler von außerhalb nicht drauf. In solch einen Fall könnt Ihr nur von einem Netz extern darauf zugreifen. Ich verwende hierfür zum Testen eines lokalen Servers einen UMTS Stick.
Nachdem Ihr die Konfiguration gespeichert habt bauen wir uns noch ein kleines Startscript.
Far Cry 2 Server starten
Wir wechseln dazu wieder in das Standard Homeverzeichnis:
cd /home/FarCry2
Dort legen wir ein /bin und ein /log Verzeichnis an (falls noch nicht vorhanden):
mkdir /bin
mkdir /log
Danach unsere Startdatei:
touch /home/FarCry2/bin/startfc2
Diese Datei muss ausführbar gemacht werden:
chmod +x /home/FarCry2/bin/startfc2
Jetzt editieren wir die Datei mit unserem Lieblingseditor (z.B. nano):
nano /home/FarCry2/bin/startfc2
Fügt folgenden Code ein (Verzeichnisse sind natürlich entsprechend anzupassen, falls nötig):
startfc2
#!/bin/sh
# FarCry2 startscript by Gargi 2009
#logrotation
rm $HOME/log/server_3.log
mv $HOME/log/server_2.log $HOME/log/server_3.log
mv $HOME/log/server_1.log $HOME/log/server_2.log
mv $HOME/log/server.log $HOME/log/server_1.log
#launch server
cd $HOME/FarCry2_Dedicated_Server_Linux/bin
./FarCry2_server -dedicated $HOME/MyGames/FarCry2/Server/myserver.cfg -logFile $HOME/log/server.log
Dieses einfache Startscript holt sich die entsprechend Eure Konfigurationsdatei und schreibt die Logfile in das Verzeichnis /log . Damit diese nicht zu groß werden habe ich noch eine Logrotation eingebaut. Diese gibt die ersten paar Starts einen kleinen Fehler aus, bis dann die entsprechenden Dateien einmal angelegt sind. Nach dem dritten oder vierten Start sind alle logfiles vorhanden und die Fehlermeldungen verschwinden.
Ihr könnt nun mehrere Startdateien anlegen, die auf verschiedene Serverkonfigurationen verweisen. Bennennt dann die Startdateien entsprechend um, damit Ihr leicht den entsprechenden Server starten könnt. Beispielsweise fc2_DM_ranked, fc2_TDM_unranked usw.
Da Ihr sicherlich Euch zum Start über die Konsole auf Euren Server einloggt würde beim Verlassen der Server ebenso abbrechen. Um das zu verhindern startet erstmal das Hilfsprogramm screen:
screen
Dort gebt Ihr dann Euren Startbefehl des Servers ein. Jetzt könnt Ihr die Konsole wieder verlassen. Wenn Ihr Euch das nächste Mal wieder auf Euren Server einloggt lässt sich die Screensession mit einem
screen -R
aufrufen und Ihr seht wieder Euren Serveroutput.
Viel Spaß!
cu
Gargi
Hinweis: Das Tutorial wird sicherlich noch einwenig ausgebaut. Angedacht sind noch der Bereich Punkbuster und ein Skript zur Überwachung des Serverprozesses.