Pitboss (Civ4)

Aus CivWiki
Version vom 10. Juli 2015, 18:08 Uhr von Ramkhamhaeng (Diskussion | Beiträge) (Korrupte Savegames unter Linux)

Wechseln zu: Navigation, Suche

In diesem Artikel wird die Konfiguration eines Pitboss-Servers (PB-Server) und häufige Fehlermeldungen beschrieben. Die meisten Dinge wurden von Redarg bereits zusammengefasst und in diesem Thread gebündelt. In dem PDF im ersten Beitrag dieses Threads sind weitere Details zu finden, die bisher nicht auf diese Seite übertragen wurden

Allgemeine Konfiguration

Nützliche Parameter der Civilization.ini

Linux

Erweiterte Administration

Siehe PB Mod

Benutzung auf entfernten Rechnern (Headless)

Verwendung des Altroot-Parameters

Um mehrere Instanzen des PB-Servers auf einem Rechner laufen zu lassen, kann man beim Start einen Pfad übergeben. Dieses Verzeichnis übernimmt dann die Funktion des „My Games“-Verzeichnises bei einem normalen Start.

Beispiel-Skript (startPB.bat):

 SET ALTROOT=C:\PBs\PB1
 SET CIV4BTS_PATH=C:\Civ4\Beyond the Sword\
 SET MODNAME=YOURMOD
 
 rem Use new exe if possible
 SET CIV4BTS_EXE=%CIV4BTS_PATH%\Civ4BeyondSword_PitBoss2014.exe
 IF not exist "%CIV4BTS_EXE%" (
   SET CIV4BTS_EXE=%CIV4BTS_PATH%\Civ4BeyondSword_PitBoss.exe
 )
 IF not exist "%CIV4BTS_EXE%" (
   echo.Exe not found. Is the Path %CIV4BTS_PATH% correct?
   goto exit
 )
 
 "%CIV4BTS_EXE%" mod= "%MODNAME%"\" /ALTROOT=%ALTROOT%
 :exit

Das Leerzeichen hinter „mod= “ darf nicht weggelassen werden, da anderenfalls der erste Buchstabe des Modnames verloren geht.

Unerwünschtes Verhalten beim ersten Start

Achtung, falls die Pitboss-Exe beim Start feststellt, dass bestimmte Dateien/Unterordner nicht in dem angegebenen Ordner gefunden werden können, verschiebt er den gesamten Inhalt des „My Games/Beyond the Sword“-Ordners in das neue Verzeichnis! Falls also plötzlich alle Spielstände, etc verschwunden sind sollte man in den Ordnern nachschauen, die man als Altroot-Argument angegeben hat. Am besten erstellt man ein Backup des My Games-Ordners, bevor man mit dem Altroot-Argument experimentiert.

Einrichtung mehrerer Spiele

Wählt man beim Start unterschiedliche ALTROOT-Parameter, kann man mehrere Instanzen gleichzeitig starten. Die Spielstände werden dann in den jeweiligen Unterverzeichnissen ([...]/Saves/Multi) angelegt. Die Auto-Speicherstände werden (sofern dass nicht per Mod geändert wurde) nur beim Rundenwechsel und dem Login der Spieler angelegt.

Login der Spieler beschleunigen

Der PB-Server überträgt seine Daten mit maximal 10kB/s. Das führt in fortgeschrittenen Spielen zu einer minutenlangen Wartezeit, weil der Spielstand auf mehrere MB anwächst. Um dieses Problem zu lösen wurde eine Modifikation der BTS-Exe entwickelt mit der die Spielstände per HTTP(S) übertragen werden: Binaries, Anleitung & Quellcode. Als Pitboss-Host muss neben dem PB-Server dann auch einen (simplen) Webserver laufen lassen, damit die Spielstände auf dem neuen Weg erreichbar sind!

Für das PB73 wurde in diesem Beitrag ein Zip + Installationsanleitung für den Schnelllader veröffentlicht.

Hinweise zum Betrieb des Servers

Fernwartung eines Servers

RDP, VNC

Feste Serveradresse für dynamische IPs

Will man seinen Server im Heimnetz mit häufig wechselnder IP betreiben kann man einen der zahlreichen DynDNS-Dienste nutzen. Man erhält eine URL, welche man den Spielern mitteilt. Der eigene Server (oder Router, je nach Konfiguration) meldet sich dann bei beim entsprechendem Anbieter, sobald sich die eigene IP ändert. Es gibt viele freie sog. DynDNS-Dienste

Adminpasswort ändern

Wenn man als Spieler eingeloggt ist, kann man das Adminpasswort, welches man beim Einrichten des Spieles definiert hat ändern. Dazu geht man ins Hauptmenü („Esc“ drücken) und wählt dort „Spieldetails“ aus. Bei der Frage nach dem Passwort gibt man das Alte ein. Im nächsten Fenster kann das neue Passwort vergeben werden. Nun kann man (innerhalb des Spieles oder im Pitboss-Fenster) das Spiel speichern und erhält einen Spielstand mit dem neuen Passwort.


Häufige Probleme

Cpu-Auslastung

Auch wenn kein Spieler eingeloggt ist verursacht der PB-Server eine nicht unerhebliche Last auf der CPU. Ursache ist das häufige Neuzeichnen des Fensters, was leider eine reative sinnlose Stromverschwendung darstellt und außerdem verhindert, dass man viele Spiele auf alter Hardware laufen lassen kann.

Man kann den Pythoncode des PB-Servers ändern und die Anzahl der Draw-Calls reduzieren. Leider müssen aber auch alle Spieler die geänderten Dateien benutzen, damit sie dem Spiel beitreten können. Daher sollte man seine Änderungen innerhalb einer Mod durchführen.

Die PB Mod enthält die radikale Option, das PB-Fenster gleich komplett auszublenden.

Netzwerk-Auslastung & Upload-Problem

Das sogenannte „Uploadproblem“ ist die gefährlichste Fehlfunktion des Pitboss. Es macht den Betrieb eines PB-Servers sehr betreuungsintensiv. Mittlerweile gibt es aber einen Lösungsansatz, bei dem die neg. Auswirkungen stark reduziert werden.

Problembeschreibung: Normalerweise tauschen Client (Spieler-PC) und Server so lange Datenpakete aus, bis der Spieler die Partie verlässt. Unter bestimmten Umständen erkennt der Server aber nicht, dass der Spieler die Partie verlassen hat und beginnt mit dem Senden von Daten ins Internet (an einen nicht vorhandenen Empfänger). Am Anfang wird man diesen Vorgang nicht bemerken, aber die dadurch verbrauchte Bandbreite nimmt kontinuierlich zu und zwingt auch starke Internetanschlüsse in die Knie.

Es wurden schon rekordverdächte 450 Gigabyte innerhalb einer Woche berichtet. Weiterhin waren auch schon PB-Server die mit 100 Mbit am Netzwerk hingen, aufgrund des Uploadproblems nicht mehr über das Netzwerk zu erreichen, da der PB-Server die komplette Bandbreite beansprucht hat.

Lösungsmöglichkeiten:

  • Man kann das Problem eindämmen, indem man den PB-Server häufig neu startet. Das ist allerdings sehr umständlich, wenn man das Laden der Spielstände nicht automatisiert hat (nur mit PB Mod mgl.)
  • Man kann die Bandbreite des PB-Servers mit Programmen wie z.B. NetLimiter begrenzen. Wenn die Bandbreite dann aber schon durch den Upload-Bug belegt wird, können sich Spieler nur noch schwer verbinden.
  • Man kann seinen Netzwerkverkehr analysieren und dem PB-Server UDP-Pakte der Spieler vorgaukeln, damit dieser die Verbindung schließt. Dafür wurde folgendes Tool entwickelt: fix_upload_bug.

Das Tool ist Teil einer Mod, läuft aber auch ohne diese.

Speicherproblem beim Login

Bei jedem Login eines Spielers wird ein Spielstand erzeugt. Manchmal schlägt das fehl und der Server ist solange nicht erreichbar, bis die Fehlermeldung weggeklickt wurde. Diese Meldung erscheint auch, wenn man die Python-Fehlermeldungen deaktiviert hat.

Lösungsmöglichkeiten: Keine bekannt.


Einfrieren des PB-Fensters

Die meisten Sonderzeichen (z.B. Umlaute) im Spielernamen oder Titel des Spieles frieren das Adminfenster des PB-Servers ein. Dann kann das Spiel auch nicht mehr im Adminfenster gespeichert werden.

Lösungsmöglichkeiten: Die Spieler mit den Sonderzeichen müssen sich mit einem unkritischen Namen einloggen. Danach sollte das Fenster wieder reagieren. (Falls nicht muss man ausnutzen, dass beim Login die Recovery-Spielstände angelegt werden. Man muss das Spiel dann mit einem Spielstand ohne kritische Sonderzeichen laden.

Thread zu diesem Thema: http://forums.civfanatics.com/showpost.php?p=6830192&postcount=16


Blockade durch Popup mit Python-Fehler

Vor allem bei der Benutzung von Mods löst der Pythoncode manchmal einen Fehler aus. Das Popup der Fehlermeldung blockiert dann das Spiel.

Lösung: In der Civilization.ini des PB-Servers können die Pythonfehlermeldungen deaktiviert werden.


Abschaltung der Gamespy-Server

Auch das Pitboss Hosting ist vom Fehlen der Gamespy NatNeg Server beeinträchtigt. Dabei kann es zu langen Wartezeiten (Timeout) beim Starten des Pitboss kommen, nachdem man auf "Direct IP" geklickt hat. Hierfür gibt es eine eine gepatchte EXE oder man editiert die Hosts-Datei um auf einen neuen NatNeg Server zu verweisen. Weitere Informationen sind hier zu finden.


Weltraumrennen

Kurz nachdem ein Spieler das Raumschiff gestartet hat, stürzt der PB-Server immer ab. Mit folgender Methode kann man das Spiel wieder zum Laufen bekommen:

  1. Spielstand kurz vor dem Raumschiffstart laden
  2. Spieler loggt sich ein und startet sein Raumschiff.

Danach drückt er schnell Str+S und speichert das Spiel lokal. Dieser Spielstand wird dem Admin des PB-Spieles übermittelt.

  1. Der Serverbetreiber läd das neue Save und das Spiel geht normal weiter.

Korrupte Savegames unter Linux

Erster Kommentar im Forum http://www.civforum.de/showthread.php?p=3691873#post3691873

Während dem Spiel 'PB73' trat der Fehler wiederholt auf. Die Spielstände waren unter Windows ladbar, wurden aber unter Wine als korrupt bemängelt. Es wurde die Vermutung aufgestellt, dass es mit den Alt+S-Schildertexten zusammenhängen kann ( http://www.civforum.de/showthread.php?93932-PB73-Thread-f%FCr-Server-und-Verbindungsprobleme&p=6456478&viewfull=1#post6456478 ). Verändert man diese, so kann der Spielstand wieder ladbar werden.

Später wurde folgende Lösung gefunden: Damit die Wine-Version einer bestimmten Bibliothek verwendet wird, müssen die DLLs „msvcp71.dll“ und „msvcr71.dll“ innerhalb der Civ4-Verzeichnisse entfernt werden.

Update Juli 2015: Die obige Lösung hilft bei unserem derzeitigen Spiel nicht mehr. Entweder die DLL haben sich mittlerweile geändert oder es war Zufall, dass diese Lösung geholfen hatte. Derzeit wird vermutet, dass die Fehlerursache in einem Bufferoverflow bei der Erzeugung der Checksumme liegt. Wenn man die Überprüfung der Prüfsumme aus der Pitboss-Exe patcht kann man die Spiele weiterhin starten.

Benutzen von Mods

Einrichtung der PB Mod

Im PB73 kommt zum ersten mal eine Mod zum Einsatz, welche einige der obigen Probleme beseitigt und außerdem die Spieleranzahl auf 52 erhöht. Derzeit wird mit der vierten Version der Mod gespielt, welche hier herunter geladen werden kann: http://civ.zulan.net/misc/PB_Mod_v4.zip

Um die Mod zu installieren, muss sie in das Verzeichnis

 [Civ Installationsverzeichnis]/Beyond the Sword/Mods/

entpackt werden. Achtung dabei darf beim Entpacken kein weiterer Unterordner erstellt werden. Auf dem Server und Client muss das Setup identisch sein, damit es nicht zum Absturz kommt. Die richtige Struktur (Leerzeichen nach dem PB!) wäre

 [Civ Installationsverzeichnis]/Beyond the Sword/Mods/PB Mod_v4/Assets

Falsch ist beispielsweise

 [Civ Installationsverzeichnis]/Beyond the Sword/Mods/PB_Mod_v4/PB Mod_v4/Assets

und zum Absturz kommt es auch, wenn die Mod innerhalb der Eigenen Datein (My Games-Verzeichnis…) installiert wird.

Um Civ gleich mit Mod zu Starten kann man eine neue Verknüpfung anlegen. In den Eigenschaften schreibt man dann hinter den Pfad zur Exe noch das Argument „mod=\PB Mod_v4“.

Probleme auf Client/Spielerseite

Andere Spieler werden geblockt, während man im Spiel ist

Für Hinweise zur Portweiterleitung und Umstellung auf einen neuen NatNEG-Server, siehe http://www.civ-wiki.de/wiki/Mehrspieler_(Civ4)#Pitboss

Absturz beim Verbinden mit dem Server

Dieser Fehler tritt meist dann auf, wenn man keine (bzw. die falsche) Mod geladen hat. Es darf auf Client- und Server-seite kein Unterschied bestehen. Auch der Speicherpfad der Mod darf nicht abweichen. Nutzt man den BUG-Mod, welcher das Interface erweitert, kann es auch zu Abstürzen kommen. Man sollte diese Mod daher lieber so installieren, dass man sie während der PB-Partien deaktivieren kann.

Spielstand schreibgeschützt

Man kann sich mit dem Server verbinden aber nachdem der Spielstand vom PB-Server geladen wurde, erscheint sehr kurz eine Fehlermeldung und das Programm schließt sich. Der genaue Wortlaut der Fehlermeldung ist: „Ladevorgang gescheitert. Der von Ihnen gewählte Spielstand ist schreibgeschützt, um sicherzustellen, dass die Daten in Ihrem Mod-Verzeichnis nicht verändert wurden.“

Fehlermeldung

Der Fehler nur auf, wenn sich die Daten des Servers von den eigenen unterscheiden. Nutzt man des CustomAssets-Ordner um beispielsweise die BUG-Mod in normalen Civ4:BTS-Spielen zu benutzen, kann das zu Problemen führen. Auch Rückstände von anderen Mods oder minimal andere Dateien reichen aus, um den Fehler auszulösen. Interessanterweise wird der Fehler nicht immer ausgelöst so dass Spieler sich manchmal verbinden können und manchmal der Fehler auftritt.

Um die eigene Installation zu reparieren, ist sicherzustellen, dass die Daten mit denen des Servers übereinstimmen, kann man folgende Dinge probieren:

  • Umbennenen des My Games-Verzeichnisses (oder der Unterordner Sid Meier's Civilization, Warlords und Beyond the Sword). Beim nächsten Start wird eine frische Variante ohne modifizierte Dateien erzeugt.
  • Bei der Verwendung von Mods:
Mods können an zwei unterschiedlichen Orten abgelegt werden:
  1. [Installationsverzeichnis von Civ]\Beyond the Sword\Mods
  2. Eigene Dateien\[...]\My Games\Beyond the Sword\Mods
Man muss sicherstellen, dass die Mod nur(!) in dem Verzeichnis installiert ist, welches auch auf dem Server verwendet wird. Es wird empfohlen immer die erste Variante zu nutzen.
Außerdem sollte man überprüfen, ob beim Entpacken eine Ebene zu viel angelegt wird. Falsch wäre "[...]\Modname\Modname".
  • Einigen Spielern half es die FPK-Dateien einer Mod zusammenzu fassen.
  • Neuinstallation von Civ + Addons. Danach unbedingt auch den Patch 3.19 einspielen.

Blockieren anderer Spieler

Damit die Spieler sich untereinander verbinden können, wenn sie gleichzeitig eingeloggt sind, müssen sie einen sogennannten NATNEG-Server nutzen. Seit der Pleite von Gamespy muss man einen Server aus der Community nutzen. Dafür kann man entweder eine gepatche EXE nutzen oder die Hosts-Datei seines Computers ändern, siehe Alternative Exe.

Außerdem muss man weiterhin die Portweiterleitung im Router einrichten. Fuer Civ4 sind vor allem die Ports 2056-2107 UDP wichtig.

Pausen-Bug

Mit Hilfe der Pause-Taste kann man den Timer eines Spieles anhalten. In der Pause werden alle Aktionen ( Bewegen von Einheiten, Sklavrei-Button klicken, Feldbelegung ändern) zwischengespeichert und erst ausgeführt, wenn das Spiel fortgesetzt wird.

Aktiviert man allerdings bei offenem Diplomenü die Pause, so ist man im Menü gefangen. Andererseits kann man die Pause auch nicht mehr entfernen. Es kann auch sein, dass man beim Login vom Diploscreen eines Mitspielers begrüßt wird, aber wegen einer aktiven Pause nichts machen kann. Schließt man Civ4, weil man im Diplomenü gefangen ist, löst man außerdem das Upload-Problem aus.

Lösungsmöglichkeiten:

  • Spieler ohne offenen Diploscreen können die Pause für gefangene Spieler entfernen.
  • Es gibt Mods, in denen man die Pause auch im Diplomenü entfernen kann: PB Mod, Pitboss Mod (Vorgänger von PB Mod, welcher nur diesen Pausenbug beseitigt) (unvollständige Liste?!)


Leere Diploschirme beim Login

Sofern in den Spielregeln die direkte Kommunikation nicht untersagt ist, verfassen Spieler oft auch Textnachrichten zu ihren Handelsangeboten. Wenn man beim Login von einem leeren oder ungewöhnlichem Handelsbildschirm begrüßt wird, hat der andere Spieler wahrscheinlich einen Fehler beim Absenden begangen. (Das ist vor allem im Krieg unangenehm, denn in dem Fall wird das Handelsangebot immer mind. einen Waffenstillstand beinhalten, siehe nächsten Punkt.) Damit die Textnachrichten nicht verloren gehen, *muss man darauf achten, dass die Textzeile selektiert ist, wenn man Enter drückt.* Achtung, wenn man die Maus bewegt können andere GUI-Elemente den Focus erhalten und dann wird das Diploangebot beim Druck auf Enter abgesendet. Dann fehlt der Text! D.h. man sollte vorm Absenden des Textes die Maus ins Textfeld bewegen. (Man kann es an dem hellen Rahmen erkennen.)


Ungewollter Waffenstillstand

Versendet man im Krieg Diplonachrichten, enthalten sie mindestens einen Waffenstillstand als Angebot. D.h. wenn sich der Absender verklickt und im Diplomenu unabsichtlich einen Handel anbietet(siehe vorigen Punkt), kann es zu Problemen kommen. Andererseits kann man auch unabsichtlich einen Waffenstillstand annehmen, wenn man beim Login mehrere Diploschirme erhält! Klickt man bei einem Angebot von Spieler A auf Annehmen/Ablehnen, kann die Entscheidung unabsichtlich auch gleich noch auf das Angebot von Spieler B übernommen werden, welches danach aufploppt. (Man sieht dann nur ganz kurz einen zweiten Bildschirm.)

Um dieses Problem zu vermeiden, sollte man im Krieg eher über externe Kanäle (Forum) kommunizieren.


Langes Warten auf Liste der Anführer

Falls die Liste der Anführer erst nach einigen Minuten oder nie erscheint, ist man von diesem Fehler betroffen.

Paket zu lang
Paket kurz genug
Normaler Auswahlbildschirm
Gekürzte Namen durch PB Mod_v2

Ursache:

Kurz nach dem Aufbau der Verbindung zum PB-Server sendet dieser die Liste der Anführer und weitere Metainformationen an den Client.
Unter ungünstigen Bedingungen ist dieses Paket zu groß, um von allen Netzwerk-Zwischenstationen im Ganzen übertragen zu werden ( siehe IP-Fragmentierung ) und es kommt zur Fragmentierung.
In den meisten Fällen, ist die Fragmentierung kein Problem und die Teile werden fehlerfrei zusammengesetzt, aber vor allem in stark beanspruchten Netzwerken oder hoher Distanz zum Server treten dabei Probleme auf.
Es kann auch sein, dass das Paket vom Provider immer herausgefiltert wird und den Spieler nie erreicht.
Auf den zwei Bildern werden beide Situationen in Wireshark dargestellt. Im ersten ist da Paket zu groß. Hier war es kein Problem und wurde empfangen, aber bei anderen würde es nicht ankommen. Im zweiten blieb die Größe unter 1500 Bytes.


Lösungsvorschläge:

  • Eigene Netzwerkverbindung entlasten
  • Alle Spielernamen und Zivilisationsnamen kürzen, um unter der kritischen Paketgröße (meist 1500 Bytes) zu bleiben.
  • Auch hier kann die PB Mod helfen, die ab Version 'v2' die Option enthält, das kritische Datenpaket zu verkleinern. Durch wird allerdings die Darstellung im Anmeldebildschirm gekürzt. Der Vorteil der Mod-Variante im Unterschied zum manuellen Verkürzen den Namen liegt darin, dass innerhalb des Spiels die langen Namen zum Einsatz kommen.

Links