Dieser Abschnitt wird aus der Sicht eines Spielers bzw. dessen Programm geschrieben, der die Datei lesen will. Informationen für die Host-Seite finden sich weiter unten.
Die Datei wird im DOS-Format gespeichert. Alle Einträge mit mehr als einem Byte sind daher Little-Endian, Zweierkomplement. Die folgenden Datentypen werden verwendet:
byte | ein 8-Bit Byte (0..255) |
char | ein 8-Bit ASCII-Zeichen |
word | ein 16-Bit Wort (-32768..32767) |
long | ein 32-Bit Wort (-2147483648..2147483647) |
typ[NN] | ein Feld mit Elementen des angegebenen typs, üblicherweise von 1 an indiziert |
Jede utilX.dat besteht aus einer Anzahl Datensätze (records). Jeder Datensatz beginnt mit einem Header der Form:
word Record Type word Record Size
Der Record Type gibt an, was für Daten der Eintrag enthält. Der Header wird vom eigentlichen Inhalt des Datensatzes gefolgt, die Länge dieser Daten ist mit Record Size angegeben. Alle Typen, die PHost verwendet, sind unten beschrieben.
Die maximale Größe eines Eintrages inklusive Header beträgt 32k, um Probleme mit Programmen zu vermeiden, die die Record Size als vorzeichenbehafteten Wert interpretieren (in Programmiersprachen wie Java oder BASIC gibt es keine vorzeichenlosen Datentypen).
Im Allgemeinen werden Zeichenfolgen (strings) im BASIC-Format abgespeichert, also mit Leerzeichen auf die Feldbreite aufgefüllt werden. ► Note: Da PHost aus der C-Ecke stammt, erzeugen manche Versionen versehentlich C-Strings (mit Nullbyte abgeschlossen), einige Addons ebenfalls. Daher sollten deine Programme beide Formate unterstützen. In der Dateiformatliste gibt es weitere Hinweise.
Es gibt keine allgemeine Konvention über den in Zeichenketten verwendeten Zeichensatz (außer 7-bit-ASCII). Die am häufigsten verwendeten erweiterten Zeichensätze sind höchstwahrscheinlich die DOS-Codeseiten, nicht die ISO-Latin-Zeichensätze oder Windows-Codeseiten. Dieses Problem betrifft vor allem Schiffs- und Spieler-Namen.
► Note: Programme sollten das Record Size Feld auswerten, um zu ermitteln, wieviele Daten nach dem Header folgen, anstelle feste Werte zu verwenden. Damit kann das Programm neu eingeführte oder erweiterte Datensätze korrekt überspringen. Einige Datensätze wurden bereits erweitert und waren in älteren PHost-Versionen kürzer. Soweit bekannt werden solche Versionsabhängigkeiten hier erwähnt.
► Note: Record Size kann 0 sein, dann folgt der nächste Datensatz direkt darauf, ohne Daten zu dem aktuellen Datensatz.
Die Reihenfolge der Einträge entspricht im Groben dem Hostablauf. Wenn Informationen über ein Objekt mehrmals hintereinander folgen, steht die aktuellste Information also ganz hinten. Die Typnummern der Einträge haben mit der Reihenfolge in der Datei nichts zu tun.
Jede utilX.dat beginnt mit einem Steuer-Datensatz (control record).