![]() |
Ein Spiel leiten mit PHost
|
Dieses Dokument beschreibt, wie PHost installiert, eingerichtet und benutzt wird. Dieser Text richtet sich an Hosts, Spieler kommen üblicherweise auch ohne ihn aus.
Dieses Dokument geht davon aus, dass du mit allgemeiner Planets-Terminologie vertraut bist. In Zweifelsfällen schlage unsere Definitionen von Hauptverzeichnis, Spielverzeichnis, Schiffsliste und Sternenkarte im Glossar nach.
Um PHost zu installieren, entpacke einfach das Distributions-Archiv in ein Verzeichnis deiner Wahl. Dieses Verzeichnis ist nun dein Hauptverzeichnis für diese PHost-Version. Die Distributions-Archive von PHost 4 enthalten Unterverzeichnisse, in diesen Unterverzeichnissen befinden sich die Beispiel-Konfigurationsdateien. Wenn du pkunzip nutzt, musst du daher beim Entpacken die Option -d angeben, damit die Verzeichnisstruktur wiederhergestellt wird.
Auf allen Plattformen gibt es PHost in Form eines fertig gebundenen Programmes (phost.exe, phost). Die einzelnen Distributionspakete enthalten, falls nötig, weitere Informationen in einer README-Datei.
Im Lieferumfang von PHost ist keine Schiffsliste und keine Sternenkarte enthalten.
Lies die Hinweise in der Datei mit den Änderungen zwischen den Versionen. Normalerweise musst du nur ein paar Konfigurationseinstellungen vornehmen.
Stelle sicher, dass alle verwendeten Addon-Programme mit PHost 4.x umgehen können. Programme, die auf dem PDK 4.4 oder neuer basieren, können beide Formate handhaben.
Einige neue Konfigurationsoptionen wurden eingeführt, einige entfernt. Aktualisiere die Konfigurationsdatei. Um zu sehen, was du ändern musst, starte PHost als Turnchecker mit der Option -oConfigLevel=1, etwa so:
$ ./phost -oConfigLevel=1 -c0 test_game WARNING: pconfig.src: Parameter 'AllowNewNatives' is not recognized WARNING: pconfig.src: Parameter 'CPEnableMessage' is not recognized WARNING: pconfig.src: default value used: 'StructureDecayOnUnowned = 1' WARNING: pconfig.src: default value used: 'PALIncludesESB = Yes' WARNING: pconfig.src: default value used: 'PBPCostPer100KT = 200' WARNING: pconfig.src: default value used: 'PBPMinimumCost = 400' WARNING: pconfig.src: default value used: 'PBPCloneCostRate = 200' WARNING: pconfig.src: default value used: 'NumShips = 500' WARNING: pconfig.src: default value used: 'ShieldKillScaling = 0' Using custom hull functions defined in 'hullfunc.txt' Game name is 'PHOST Game' This is Turn #39. Checking host data... Looking for player6.trn Turn not found! [...] |
Schlage die bemängelten Konfigurationsparameter in der Dokumentation zur Konfiguration nach und passe deine Konfiguration entsprechend an.
Als kleine Hilfestellung haben wir eine Liste aller zwischen PHost 3.4c und 4.1 hinzugekommenen Optionen beigelegt (config/upgrade.src).
Es gelten die selben Schritte wie beim Aktualisieren von Version 3. Zwischen Version 2 und Version 3 haben sich jedoch ebenfalls einige Parameter geändert. Die Dokumentation von PHost 3 enthält detailliertere Anweisungen, und ich bin zu faul, die hier her zu kopieren :-)
Wenn das Spiel auf einem anderen System als DOS geleitet wurde, musst du es in das DOS-Format konvertieren. PHost 4.x nutzt auf allen Systemen das gleiche Dateiformat, nämlich das, was unter DOS benutzt wird.
Lege zuerst ein Verzeichnis für das Spiel an. PHost wird mit ein paar Beispiel-Konfigurationsdateien im Unterverzeichnis config/ ausgeliefert; wähle eine aus, kopiere sie in das Spielverzeichnis, und benenne sie in pconfig.src um. Analog, wähle die passende Datei aus dem Verzeichnis shiplist/ und lege sie als shiplist.txt im Spielverzeichnis ab.
Bearbeite die pconfig.src entsprechend deiner Wünsche. Alle möglichen Konfigurationsparameter sind auf der Seite über die Konfigurationsdatei beschrieben.
Die Datei shiplist.txt enthält Schiffslisten-spezifische Konfigurationseinstellungen und Schiffsfunktionen, und bleibt daher im Allgemeinen unverändert.
Alternativ kannst du auch shiplist.txt komplett ignorieren, alle Konfigurationseinstellungen in pconfig.src vornehmen und die Schiffseigenschaften in hullfunc.txt definieren -- wie in PHost 3.x. Wir empfehlen trotzdem, die "neue" Version zu verwenden, da das die Komplexität der Konfiguration der einzelnen Spiele senkt. Idealerweise ist shiplist.txt ein unveränderlicher Teil der Schiffsliste, genauso wie hullspec.dat.
Wenn du eine Karte und/oder Schiffsliste ständig verwenden möchtest, kopiere sie in das Hauptverzeichnis. Wenn du eine Karte oder Schiffsliste nur in einem Spiel verwenden willst, kopiere die Dateien in das Spielverzeichnis. PHost sucht nach den Dateien immer zuerst im Spielverzeichnis, dann im Hauptverzeichnis.
Betroffene Dateien:
Diese Dateien müssen nicht alle im selben Verzeichnis liegen. PHost findet sie auch, wenn einige im Spielverzeichnis liegen und andere im Hauptverzeichnis.
Um ein Universum anzulegen, benötigst du ein "Master"-Programm. PHost selbst kann kein Universum erzeugen.
Du kannst auch mit einem Host-Editor das Universum nach dem Mastern nachträglich verändern. Das Programm, welches das Universum anlegt, bzw. der Host-Editor müssen PHost nicht ausdrücklich unterstützen; alle Master- und Editor-Programme für HOST funktionieren auch mit PHost.
Wenn alles korrekt eingerichtet ist, starte PHost zum ersten Mal, um die ersten Results zu erstellen.
PHost unterstützt die Auxhost1- und Auxhost2-Funktionen von HOST, sowie weitergehende Kontrolle mittels "PControl". Wenn du ein Host-Addon verwenden möchtest, lies Den Host-Ablauf beeinflussen. Die Dokumentation des Addons beschreibt, wo im Hostablauf das Addon hingehört.
Wenn du ein Addon nutzt, welches neue Kommandocodes oder Missionen anbietet, solltest du diese dem PHost und den Spielern mit den dafür vorgesehenen Dateien bekannt machen.
VPHost ist quasi ein "Ersatz" für HOST / PHost, der nur einen kleinen Teil der Funktionalität von HOST oder PHost nutzt. Fast alle anderen Funktionen werden von VPHost ausgeführt.
Wenn du VPHost einsetzt, solltest du PHost mit der Option -V aufrufen (siehe unten). Dieser Schalter ist nötig, da VPHost alle Turndateien löscht (es werden allerdings Sicherungskopien als *.ORG erstellt), und die darin enthaltenen Befehle selbst abarbeitet. Das bedeutet leider auch, dass alle Befehle an den Befehlsprozessor niemals am PHost vorbeikommen. Mit dem Schalter -V liest PHost die player*.org-Dateien und verarbeitet die darin enthaltenen Befehlsnachrichten. Alle anderen Befehle aus den Turns werden ignoriert, da VPHost sie bereits ausgeführt hat.
PHost wird folgendermaßen aufgerufen:
phost [-optionen] spielverzeichnis [hauptverzeichnis] |
Als optionen können beliebig viele Optionen angegeben werden. Optionen können zusammengefasst werden, -riT ist das gleiche wie -r -i -T. Optionen müssen vor den Verzeichnisnamen angegeben werden.
Die Parameter game-directory und root-directory geben das Spielverzeichnis und das Hauptverzeichnis an. Wenn diese Parameter nicht angegeben sind, wird jeweils das aktuelle Verzeichnis verwendet.
-h | Hilfetext anzeigen und Programm beenden. |
-q | Keine Ausgaben (quiet). Die normalen Statusmeldungen werden nur in host.log geschrieben, nicht angezeigt. Fehler und Warnungen werden weiterhin angezeigt. Das ist nützlich, wenn PHost aus einem cron-Job gestartet wird. |
-Q | Wirklich keine Ausgaben (totally quiet). Wie -q, allerdings werden auch keine Warnungen und Fehler angezeigt. |
-c spieler |
Turncheck. PHost überprüft die Turndatei des angegebenen
Spielers und zeigt die Ergebnisse an. Außerdem werden die Ergebnisse
in check.log geschrieben. Wenn für die Spielernummer 0 angegeben wird, werden alle vorhandenen Turndateien auf einmal geprüft. Der Turncheck ist auch Bestandteil des normalen Hostlaufes. Vor den Turndateien werden die Hostdaten überprüft. ![]() |
-r |
Read-only. PHost führt einen normalen Hostlauf durch,
verändert aber die Hostdaten nicht. Die Turndateien werden nicht
gelöscht. PHost kann mit dieser Option beliebig oft ohne Nebenwirkungen
aufgerufen werden. Diese Option dient vor allem für Tests. Es werden
dennoch neue Resultdateien erstellt (und die existierenden damit
überschrieben). Diese Option impliziert -k und -i. |
-k | Turndateien aufheben (keep). Normalerweise werden die Turns nach dem Hostlauf gelöscht, da sie nicht mehr benötigt werden. |
-s zahl |
Startwert für Zufallsgenerator. Die Zahl muss eine nichtnegative
ganze Zahl sein, und wird zur Initialisierung von PHost's Zufallsgenerator
benutzt. Wenn PHost mehrfach mit dem selben Startwert, den selben Turndateien
und den selben Hostdaten gestartet wird, liefert er das selbe Ergebnis.
Diese Option ist hilfreich für die Fehlersuche und für das
Wiederherstellen einer Sicherheitskopie. Damit das korrekt funktioniert, müssen auch Addon-Programme einen Startwert für ihren Zufallsgenerator akzeptieren, um ebenfalls zum selben Ergebnis zu kommen. |
-S | Startwert entspricht der Zugnummer. Diese Option entspricht -s, allerdings wird die aktuelle Zugnummer als Startwert benutzt. |
-u | Keine utilX.dat erstellen. Dieser Schalter unterdrückt die Erstellung der Dateien für Hilfsprogramme. Wer seine Spieler mag, nutzt diese Option nicht :-) |
-i | Keine INI-Dateien. Es werden keine PControl oder Auxhost-Programme ausgeführt. |
-T |
Results im alten Format. Forciert die Erstellung von
Result-Dateien im "alten" Format von Host 3.15. Diese enthalten
weder Minenscans, noch Explosionen, Ufos oder Spielernamen
(diese Informationen stehen auch in util.dat, sind
dort aber für Winplan nicht sichtbar). Normalerweise sendet PHost Dateien im Format von Host 3.20 an Winplan-Spieler, und Dateien im Host-3.15-Format an DOS-Spieler. Du solltest diesen Schalter nie benötigen. |
-t | Turn-Nummer anzeigen. Zeigt nur eine Zeile mit der Turnnummer an. |
-d | Zeitstempel (timestamp) anzeigen. Zeigt den erwarteten Zeitstempel für Turndateien an. |
-l | (kleines "L") Schiffsliste ausgeben. Zeigt nur die Schiffsliste an,
führt keine weiteren Aktionen aus. Die Schiffe werden in 20er-Gruppen
aufgelistet, jede Gruppe entspricht einem Eintrag der
truehull.dat. Für jeden Schiffstyp werden Name, Masse,
Frachtraum, Kosten usw. angezeigt, sowie die besonderen Schiffsfunktionen.
Wenn die Schiffsfunktionen auf bestimmte Spieler
beschränkt sind, wird das ebenfalls angezeigt. Diese Option ist nützlich, um eine Auflistung der Schiffe zu generieren, wenn der Host die Schiffsliste geändert hat. Die Funktion ist auch nützlich, um Änderungen an den Schiffsfunktionen zu überprüfen. Außerdem wird mit dieser Option die hullfunc.dat erstellt. |
Der Exit-Status (Errorlevel) ist 0, wenn PHost die gewünschte Funktion erfolgreich ausgeführt hat. Wenn du -c verwendet hast, heißt Exit 0, dass alles in Ordnung war.
PHost liefert einen Rückgabewert von 1, wenn die Zugriffsrechte für das Spielverzeichnis oder das Hauptverzeichnis falsch sind, oder wenn du -d oder -t in einem frisch aufgesetzten Spiel verwendest.
PHost liefert einen Rückgabewert von -1, wenn ein anderer Fehler auftrat (zu wenig Speicher, fehlende Datei), oder wenn eine interne Sicherheitsüberprüfung fehlschlug (du also einen Fehler in PHost gefunden hast). Der Wert -1 wird vom Betriebssystem üblicherweise in 255 umgewandelt.
Wenn PHost mit Signal X beendet wurde, liefert er den Status -X. Beispielsweise hat das Interrupt-Signal (Strg-C) die Nummer 2, so dass PHost sich mit Code -2 beendet (was vom Betriebssystem auf den Wert 254 abgebildet wird).
Wenn du Turndateien überprüfst (-c) bedeutet ein Status ungleich Null, dass mit der Datei etwas nicht in Ordnung war.
Wert | Bedeutung |
---|---|
1 | Turndatei fehlt |
2 | Turndatei veraltet |
4 | Turndatei zu kurz |
8 | Turndatei beschädigt (ungültiger Befehl) |
16 | Turndatei enthält falschen Absender |
32 | Prüfsumme stimmt nicht |
64 | Gelber Status |
128 | Roter Status |
Wenn du mehrere Dateien auf einmal überprüfst (-c0) ist der Exit-Status die bitweise Summe (OR) aller zutreffenden Werte. Ein Wert von 10 = 8+2 bedeutet also, dass mindestens ein Zug veraltet (stale) und einer beschädigt war.
Um Spielleitern zu erleichtern, Probleme zu finden, bietet PHost eine Tracing-Funktion. Diese Funktion ist noch nicht vollständig, große Teile von PHost sind noch nicht entsprechend instrumentiert. Allerdings werden bereits nützliche Meldungen erzeugt. Um diese Funktion zu nutzen, musst du eine oder mehrere -L-Optionen angeben.
Zu jedem Zeitpunkt befindet sich PHost in einem bestimmten Kontext. Der Kontext PlanetaryLosses:planet16 bedeutet beispielsweise, dass PHost gerade im Schritt PlanetaryLosses den Planeten 16 bearbeitet. Du kannst PHost auffordern, Ereignisse in bestimmten Kontexten zu protokollieren. Ein Ereigniss könnte z.B. so aussehen:
PlanetaryLosses:planet16:base removed |
Hier wurde die Basis auf Planet 16 entfernt, weil der Planet aufgrund von Aufständen besitzerlos wurde.
Normalerweise solltest du Sicherungskopien des Spielverzeichnisses erstellen. Idealerweise sicherst du nach jedem Hostlauf das Spielverzeichnis und vor dem nächsten Hostlauf die Turndateien. Damit kannst du die Situation einfach wiederherstellen, wenn mal etwas schiefgeht.
Normalerweise reicht es, Sicherungskopien der letzten drei Züge aufzubewahren. Allerdings ist heutzutage Plattenplatz billig, da kannst du auch das komplette Spiel sichern.
Wenn du den obigen Rat nicht befolgt hast, kannst du immer noch teilweisen Datenverlust ausgleichen. Dazu brauchst du:
Angenommen, dein Backup stammt vom Zug 17. Kopiere alle Turndateien vom Turn 17 in das Spielverzeichnis und lasse PHost mit dem Startwert von Zug 18 laufen, den du in host.log des originalen Zug 18 findest. Deine Kommandozeile sieht dann ungefähr so aus: phost -s 13285 gamedir. Nun hast du ein Spielverzeichnis, das bis auf den Zeitstempel identisch zu dem von Zug 18 ist.
Kopiere alle Turndateien von Zug 18 in das Verzeichnis und starte den PHost mit dem originalen Startwert (random seed) von Zug 19. Diesmal benötigst du die Option -F, sonst weist PHost die Dateien als veraltet ab. Wiederhole diese Schritte während du den Kaffee trinkst, bis du bei dem wiederherzustellenden Zug angekommen bist. Viel Erfolg.
Das funktioniert nur, wenn du für jeden wiederholten
Hostlauf genau die gleiche PHost-Version benutzt, die du für den
originalen Hostlauf benutzt hast. Auch dürfen keine Addons im Spiel
sein, die zufällige Aktionen durchführen.
Du kannst den Kaffee auch durch ein anderes Getränk
ersetzen. Whiskey taugt allerdings nicht, da du dich dann bei den
Zahlen vertippst.
Wenn PHost gestartet wird, überprüft er die Hostdaten. Inkonsistenzen werden berichtet und behoben.
Momentan werden die Spieldaten nur einmal überprüft, wenn PHost gestartet wird. PHost "vertraut" allen Add-Ons, die über die Auxhost- und PControl-Schnittstelle gestartet werden. Wenn eins dieser Programme die Spieldaten zu stark beschädigt, kann PHost abstürzen.
Letzte Aktualisierung 15 July 2007.