====== Geforkte "Left 4 Dead"-Server mit SourceMod ======
Ein "Left 4 Dead"-Server lässt sich unter Linux in mehreren Instanzen((fork)) starten. Der große Vortiel ist, dass Speicher gespart wird. In dieser Anleitung wird beschrieben, wie man das Forking bei L4D-Server einrichtet und SourceMod für das Forking installiert. Wir setzen einen bereits installierten Server voraus. Im Artikel [[:tutorial:server:l4d]] wird alles genau beschrieben. In diesem Artikel geben wir ein Beispiel.\\ \\
**In diesem Beispiel starten wir insgesamt sechs Server-Instanzen aus einem Verzeichnis heraus:**
^Servername ^Einstellungen ^
|ZombieFrag COOP #1 |Public, eigener Banner, eigene MOTD, SourceMod |
|ZombieFrag COOP #2 |sv_search_key, eigener Banner, eigene MOTD, kein SourceMod |
|ZombieFrag VERSUS #1 |Public, eigener Banner, eigene MOTD, SourceMod |
|ZombieFrag VERSUS #2 |sv_search_key, eigener Banner, eigene MOTD, kein SourceMod |
|ZombieFrag SURVIVAL #1 |Public, eigener Banner, eigene MOTD, SourceMod |
|ZombieFrag SURVIVAL #2 |sv_search_key, eigener Banner, eigene MOTD, kein SourceMod |
Alle Server sollen in der gleichen Gruppe sein, das gleiche Rcon-Passwort besitzen und die Netkonsole mit Passwort für den Daemon und alle Server-Instanzen anbieten.
===== Vorgehensweise =====
Da die Server #01, #03 und #05((nicht mit dem Servernamen verwechseln)) mit SourceMod gestartet werden sollen, ist für jeden Serverinstanz ein eigenes SourceMod-Verzeichnis notwendig. Server #02, #04 und #06 sollen ohne SourceMod für Matches gestartet werden. Mit einem Trick lässt sich das Laden von SourceMod verhindern. MetaMod: Source bleibt aber weiterhin geladen. Es wird in diesem Fall einfach ein anderes Basisverzeichnis und eine andere metaplugins.ini angegeben, bevor eine Map geladen wird. Durch die unterschiedlichen Configs, lassen sich für jeden geforkten Server unterschiedliche Einstellungen vornehmen. Die server.cfg wird als globale Konfigurationsdatei verwendet, um die anderen Konfigdateien für die Serverinstanzen übersichtlicher zu gestalten.
===== Vorbereitung =====
- [[:metamod:installation|MetaMod: Source]] und [[:sourcemod:installation|SourceMod]] installieren und den Server einmal starten, um die Konfiguration zu testen. Nur fortfahren, wenn SourceMod funktionsfähig ist.
- Das Verzeichnis sourcemod, welches sich in ''left4dead/addons'' nach ''sourcemod01'', ''sourcemod03'' und ''sourcemod05'' kopieren.
- Im Verzeichnis ''left4dead/addons/sourcemod/'' alles außer das Verzeichnis ''bin'' löschen.
- Im Verzeichnis ''left4dead/addons/'' das Verzeichnis disabled erstellen.
- Im Verzeichnis ''left4dead/addons/disabled'' die eine leere Datei namens ''metaplugins.ini'' erstellen.
===== Konfiguration =====
Die folgenden Konfigurationsdateien müssen erstellt werden. Alle genannten Dateien befinden sich im Verzeichnis ''./left4dead/cfg''.
==== server.cfg ====
rcon_password "xxxxxxxx"
sv_region 3 //Europa
sv_contact "e-mail@domain.xy"
sv_steamgroup 1234 //ID der Steam-Gruppe
sv_allow_lobby_connect_only 0 //Die direkte Verbindung durch den Befehl connect wird zugelassen.
==== Konfiguration der Server-Instanzen ====
Jede Server-Instanz bekommt ihre individuelle Konfiguration.
=== fork_server01.cfg ===
hostname "ZombieFrag COOP #1" //Jeder Server bekommt einen eigenen Namen
sv_gametypes "coop" //Nur coop wird zugelassen
motdfile "motd_coop1.txt //Datei für die Message of the Day wird festgelegt
hostfile "host_coop1.txt //Datei für den Server-Banner wird festgelegt
map l4d_hospital01_apartment coop //Map wird geladen und der Spiel-Modus coop wird gesetzt
=== fork_server02.cfg ===
hostname "ZombieFrag COOP #2"
sv_gametypes "coop"
motdfile "motd_coop2.txt
hostfile "host_coop2.txt
sv_search_key "clanxy" //Der SearchKey wird für diesen Server festgelegt.
mm_basedir "addons/disabled" //Basisverzeichnis von MetaMod: Source wird auf addons/disabled gesetzt.
mm_pluginsfile "addons/disabled/metaplugins.ini" //Plugindatei von MetaMod: Source wird auf die leere Datei metaplugins.ini gesetzt.
map l4d_hospital01_apartment coop
=== fork_server03.cfg ===
hostname "ZombieFrag VERSUS #1"
sv_gametypes "versus"
motdfile "motd_versus1.txt
hostfile "host_versus1.txt
map l4d_vs_hospital01_apartment versus
=== fork_server04.cfg ===
hostname "ZombieFrag VERSUS #2"
sv_gametypes "versus"
motdfile "motd_versus2.txt
hostfile "host_versus2.txt
sv_search_key "clanxy"
mm_basedir "addons/disabled"
mm_pluginsfile "addons/disabled/metaplugins.ini"
map l4d_vs_hospital01_apartment versus
=== fork_server05.cfg ===
hostname "ZombieFrag SURVIVAL #1"
sv_gametypes "survival"
motdfile "motd_survival1.txt
hostfile "host_survival1.txt
map l4d_sv_lighthouse survival
=== fork_server06.cfg ===
hostname "ZombieFrag SURVIVAL #2"
sv_gametypes "survival"
motdfile "motd_survival2.txt
hostfile "host_survival2.txt
sv_search_key "clanxy"
mm_basedir "addons/disabled"
mm_pluginsfile "addons/disabled/metaplugins.ini"
map l4d_sv_lighthouse survival
=== Server-Banner und MOTD ===
Da in diesem Beispiel für jeden Server ein anderer Banner und MOTD genutzt werden soll, müssen die einzelnen Dateien erstellt werden.
^ Message of the day ([[:tutorial:server:l4d#message_of_the_day|Beschreibung]]) ^^^
^Dateiname ^Inhalt ^Beschreibung ^
|motd_coop1.txt |http://clanseite.de/l4d/motd_coop1.htm |MOTD für ZombieFrag COOP #1 |
|motd_coop2.txt |http://clanseite.de/l4d/motd_coop2.htm |MOTD für ZombieFrag COOP #2 |
|motd_versus1.txt |http://clanseite.de/l4d/motd_versus1.htm |MOTD für ZombieFrag VERSUS #1 |
|motd_versus2.txt |http://clanseite.de/l4d/motd_versus2.htm |MOTD für ZombieFrag VERSUS #2 |
|motd_survival1.txt |http://clanseite.de/l4d/motd_survival1.htm |MOTD für ZombieFrag SURVIVAL #1 |
|motd_survival2.txt |http://clanseite.de/l4d/motd_survival2.htm |MOTD für ZombieFrag SURVIVAL #2 |
^ Server-Banner ([[:tutorial:server:l4d#banner|Beschreibung]]) ^^^
^Dateiname ^Inhalt ^Beschreibung ^
|host_coop1.txt |http://clanseite.de/l4d/host_coop1.htm |Banner für ZombieFrag COOP #1 |
|host_coop2.txt |http://clanseite.de/l4d/host_coop2.htm |Banner für ZombieFrag COOP #2 |
|host_versus1.txt |http://clanseite.de/l4d/host_versus1.htm |Banner für ZombieFrag VERSUS #1 |
|host_versus2.txt |http://clanseite.de/l4d/host_versus2.htm |Banner für ZombieFrag VERSUS #2 |
|host_survival1.txt |http://clanseite.de/l4d/host_survival1.htm |Banner für ZombieFrag SURVIVAL #1 |
|host_survival2.txt |http://clanseite.de/l4d/host_survival2.htm |Banner für ZombieFrag SURVIVAL #2 |
===== Startbefehl =====
Wir starten den Server direkt im Screen.
screen -mdS l4d ./srcds_run -game left4dead -ip xxx.xxx.xxx.xxx -port 27015 -netconport 90## -netconpassword "geheim" -fork 6 +exec fork_server##.cfg -autoupdate +sm_basepath addons/sourcemod##
^Teil des Befehls/Parameter ^Kurze erklärung ^
|screen -mdS l4d |Startet den Screen l4d direkt im Hintergrund |
|./srcds_run -game left4dead |Startet left4dead |
|-ip xxx.xxx.xxx.xxx |Gibt die IP an |
|port 27015 |Startet die erste Instanz bei 27015 und alle weiteren den nächsthöheren Port. |
|-netconport 90## |Startet die Netconsole auf dem Port 9000 für den Daemon, der die anderen Instanzen startet. Port 9001 ist der erste Gameserver, der nach diesem Beispiel auf Port 27015 läuft. |
|-netconpassword "geheim" |Setzt das Passwort der Netconsole auf "geheim". |
|-fork 6 |Startet 6 Instanzen des Servers. |
|+exec fork_server##.cfg |Führt für den ersten Server fork_server01.cfg aus, für den 2. fork_server02.cfg usw.. |
|-autoupdate |Server wird bei einem Absturz neugestartet. |
|+sm_basepath addons/sourcemod## |SourceMod bekommt für jede Instanz ein eigenes Basisverzeichnis zugewiesen. In unserem Beispiel wird ''sourcemod01'', ''sourcemod03'' und ''sourcemod05'' geladen. Durch den Trick((mm_basedir "addons/disabled"; mm_pluginsfile "addons/disabled/metaplugins.ini")) in der ''fork_server02.cfg'', ''fork_server04.cfg'' und ''fork_server06.cfg'' werden bei diesen Serverinstanzen keinerlei MetaMod: Source Plugins geladen. Im Verzeichnis ''sourcemod'' wird nur das Verzeichnis ''bin'' benötigt. Gleichzeitig muss sich das Verzeichnis ''bin'' aber auch in den anderen Basisverzeichnissen((sourcemod01, sourcemod03, sourcemod05)) vorhanden sein. |