[PHost Logo]

Ein Spiel leiten mit PHost
Der Portable Host
Version 4.0j

Inhalt

Übersicht

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.

Nach oben


PHost installieren

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.

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.

Von einer älteren Version aktualisieren

Aktualisieren von 4.x

Lies die Hinweise in der Datei mit den Änderungen zwischen den Versionen. Normalerweise musst du nur ein paar Konfigurationseinstellungen vornehmen.

Aktualisieren von 3.x

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.0 hinzugekommenen Optionen beigelegt (config/upgrade.src).

Aktualisieren von 2.x

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.

Nach oben


Ein neues Spiel einrichten

Das Spiel konfigurieren

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.

Die Klassische Methode

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.

Karten und Schiffslisten

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.

Das Universum erzeugen

Um ein Universum anzulegen, benötigst du ein "Master"-Programm. PHost selbst kann kein Universum erzeugen.

Du kannst das Universum nach dem Erstellen auch mit einem Hosteditor bearbeiten.

Wenn alles korrekt eingerichtet ist, starte PHost zum ersten Mal, um die ersten Results zu erstellen.

Addons

Addons vom PHost aufrufen

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.

Neue Kommandocodes und Missionen

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

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.

Nach oben


PHost aufrufen

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.

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.

Kommandozeilen-Optionen

-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.
==> Diese Option kann auch in HOST-Spielen verwendet werden, um HOST's schwächeren Turnchecker zu ergänzen.
-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 UTIL.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.
-ll (zwei kleine "L") Schiffsliste ausgeben. Wie -l, zeigt aber genau eine (lange) Zeile pro Schiff. Damit wird die Nachbearbeitung einfacher. Schiffsfunktionen werden hier nicht angezeigt.
-F Zeitstempel ignorieren. Dieser Schalter kann beim Verwenden einer Sicherungskopie hilfreich sein.
-V VPHost-Unterstützung aktivieren. Wenn VPHost eingesetzt wird, solltest du diesen Schalter benutzen. PHost wird dann die *.org-Dateien statt der *.trn lesen und nur Befehlsnachrichten auswerten. VPHost enthält einen eigenen Nachrichtenprozessor; ohne diesen Schalter würde PHost seine eigenen Befehlsnachrichten nicht finden.
-v Versionsnummer. Zeigt die Versionsnummer an und beendet das Programm.
-C Kampfprotokoll (combat log) erstellen. Erstellt eine Datei combat.log mit Informationen über alle Kämpfe diesen Zug. Diese Datei kann dann von einem Kampfsimulator ausgewertet werden.
-o option=wert Konfigurationsoption setzen. Ändert den Wert einer Konfigurationsoption. Dieser Schalter ist insbesondere zur Fehlersuche oder während dem Aufsetzen eines Spieles nützlich. Beispielsweise setzt -oConfigLevel=2 den ConfigLevel vorübergehend auf 2, so dass PHost eine Warnung ausgibt, falls du eine optionale Einstellung vergessen hast. Wenn du diese Option benutzt, um eine Option zu ändern, die bereits in pconfig.src definiert ist, erhältst du eine Warnung. Das ist Absicht; wenn du permanente Änderungen vornehmen willst, solltest du pconfig.src ändern anstatt diesen Schalter zu verwenden.
-L schlüsselwort Ereignisse protokollieren (logging). Protokolliert alle Ereignisse bezüglich des schlüsselworts in einer Datei trace.log. Siehe Protokollierung weiter unten.

Fehlercode (exit code)

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.

Protokollierung (Tracing)

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.

Backups

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.

Nach oben


Dieses Dokument wird vom Portable Host Projekt[Remote] (support@phost.de) gepflegt.

Letzte Aktualisierung 03 September 2006.