PHost - Ein Spiel leiten mit PHost

PHost 4.1h


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. 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.

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.1 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:

  • hullspec.dat: Schiffstypen
  • engspec.dat: Triebwerke
  • beamspec.dat: Geschütze
  • torpspec.dat: Torpedos
  • truehull.dat: Zuordnungen von Schiffstypen zu Spielern
  • race.nm: Namen der Völker
  • planet.nm: Planeten-Namen
  • xyplan.dat: Planeten-Positionen

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.

  • Mit master.exe: wenn du einen DOS-Computer hast, ist master.exe eine schnelle und einfache Möglichkeit, ein Spieluniversum anzulegen. Rufe master.exe mit dem Spielverzeichnis als Parameter auf und beantworte die Fragen. ==> master.exe muss möglicherweise in deinem Planets-Hauptverzeichnis installiert sein.
  • Mit AMaster: die bevorzugte Methode, ein Spiel für PHost anzulegen, ist AMaster[Remote]. AMaster wird mit einer Konfigurationsdatei amaster.src gesteuert, die ein ähnliches Format wie pconfig.src hat. AMaster bietet viele Optionen, um faire, ausgewogene Startbedingungen zu finden und eine Anzahl besonderer Szenarien zu berücksichtigen. AMaster kann auch Sternenkarten erzeugen.
  • Mit PMaster: PMaster von den PUtils / PDK[Remote] ist das alte PHost-Master-Programm. Es funktioniert ähnlich wie AMaster, hat aber weniger Optionen.

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.

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.

  • Alle Spezial-Kommandocodes sollten in xtrfcode.txt aufgeführt sein. PHost betrachtet diese Codes dann als speziell und nimmt sie vom friendly-code matching aus. Siehe Das Format von XTRFCODE.TXT für Details.
  • Alle Addon-Missionen (und die Missionen von PHost) sollten in mission.ini aufgelistet sein.

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. 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. Unter Ein paar Worte über Dateinamen gibt es ein paar Hinweise zur Wahl der Verzeichnisnamen.

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 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.

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.

  • -Ltyp, z.B. -Lplanet, fordert die Protokollierung aller Ereignisse auf Objekten des angegebenen Typs. Mögliche Typen sind
    • planet (ein Planet tut etwas)
    • ship (ein Schiff tut etwas)
    • target (ein Schiff ist Ziel eines anderen Schiffs, z.B. im Frachttransfer)
    • message (eine Nachricht wird gesendet)
    • player (etwas wird für diesen Spieler getan, z.B. Einlesen des Turns)
  • -LtypId, z.B. -Lplanet16, fordert die Protokollierung aller Ereignisse auf dem angegebenen Objekt. Beachte, dass du -Lship99 und -Ltarget99 angeben musst, um alle Ereignisse auf dem angegebenen Schiff zu erwischen.
  • -LSchrittName, z.B. -LPlanetaryLosses, fordert die Protokollierung aller Ereignisse in einem bestimmten Schritt des Hostablaufes. Mögliche Namen sind all die Schritte von PControl sowie noch ein paar weitere.
  • -Lall protokolliert alle Ereignisse.
  • -Ltransitions protokolliert alle Zustandsübergänge. Hierdurch werden viele Daten erzeugt, daher nutze diese Option sparsam.

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:

  • eine Sicherungskopie eines älteren Zuges
  • alle benutzten Turndateien. Du hast sie möglicherweise noch in deinem Postfach.
  • alle host.log-Dateien oder zumindest die darin protokollierten Startwerte (seed) des Zufallsgenerators
  • eine Tasse Kaffee

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.

Überprüfung der Hostdaten

Wenn PHost gestartet wird, überprüft er die Hostdaten. Inkonsistenzen werden berichtet und behoben.

  • Probleme mit den Spieldaten werden korrigiert. Wenn beispielsweise ein Schiff ein anderes abfangen will, welches entfernt wurde (z.B. von Killrace), wird dieser Auftrag storniert. PHost nutzt die geänderten Daten für den Hostlauf.
  • Seit Version 4.1a überprüft PHost die Daten der Schiffsliste. Wenn eine dieser Dateien einen ungültigen Wert enthält, wird der Wert für den Hostlauf intern korrigiert. Die Dateien selbst werden jedoch nicht automatisch aktualisiert! Wenn beispielsweise die Datei hullspec.dat einen Schiffstyp mit einer Regel-Besatzung von 0 definiert, wird intern stattdessen der Wert 1 benutzt, da ein Schiff ohne Mannschaft nicht exisitieren kann. Du solltest die Spezifikationsdateien in diesem Fall korrigieren.

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.

Nach oben


Letzte Aktualisierung 31 May 2015.


Mail support@phost.de for support, ideas, bug reports, questions. Contact Details