Spartac V2.1: Format der Karten-Dateien

© Axel Rogat, 24-Jul-2009

Dieses Dokument ist gedacht für Spartac-Benutzer, die eigene Karten zu Spartac erstellen möchten. Die Kenntnis des Datenformats ist für die reine Anwendung des Programms mit fertigen Karten nicht notwendig.

Die eigentliche Programmdokumentation befindet sich in Manual.html.

Wenn ihr interessante eigene Karten erstellt habt, bitte schickt sie mir doch zu (Adresse ganz am Ende des Dokuments)!

0 Einleitung

Vorausgesetzt werden grundlegendste Kenntnisse in 3D-Geometrie und im Verfassen von Texten mit einem Texteditor ;-)   HTML-Kenntnisse helfen, sind aber nicht erforderlich.

0.1 Koordinatensystem

Das verwendete 3D-Koordinatensystem ist ein (orthogonales) Rechts-System. Bei Galaxienkarten sollte der Mittelpunkt im Ursprung, bei Karten zu Spiralgalaxien die Galaxis-Ebene (in etwa) in der x/y-Ebene liegen. Normalerweise wird als Einheit das Lichtjahr verwendet, und das Programm gibt alle Distanzen in Lichtjahren aus. Wenn eine andere Einheit (z.B. Parsec oder AU) verwendet wird, kann mit dem <prmap>-Attribut scale eine automatische Umrechnung vorgenommen werden (siehe Abschnitt 2.1).

In der Milchstraßenkarte hat Dengejaa Uveso (das Schwarze Loch im Zentrum) die Koordinaten (0,0,0). Das Koordinatensystem ist so gewählt, dass die positive x-Achse genau durch Sol verläuft. In der PR-Serie wird der Einfachheit halber angenommen, dass Sol exakt in der Milchstraßenebene liegt, so dass diese mit der x/y-Ebene (z=0) zusammenfallen kann. Terra hat exakt die Koordinaten (30000,0,0), obwohl neuere Messungen in der Realität eher einen kleineren Abstand zum Zentrum finden (ca. 28000).

Die West-Richtung ist per Definition die positive x-Richtung (Richtung Sol/Terra), Osten die negative x-Richtung (in etwa Richtung Verth/Gatas). Norden ist in positive y-Richtung, Süden in negativer. Die Ebene ist in Quadranten nach Himmelsrichtungen aufgeteilt (Überlappung auf Grenzlinien):

Westen (Westside) x ≥ 0 und |x| ≤ |y|
Süden (Southside) y ≥ 0 und |x| ≤ |y|
Osten (Eastside) x ≤ 0 und |x| ≥ |y|
Norden (Northside) y ≤ 0 und |x| ≤ |y|
  
Nordwesten x ≥ 0 und y ≤ 0
Südwesten x ≥ 0 und y ≥ 0
Südosten x ≤ 0 und y ≥ 0
Nordosten x ≤ 0 und y ≤ 0

Arkon mit den Koordinaten (16728, -23632, 20528) liegt mithin über dem Nordwesten der Milchstraße, über der Northside. (Am Rande: Im arkonidischen Koordinatensystem verläuft die positive x-Achse durch Arkon, der Ursprung ist ebenfalls im Milchstraßenzentrum, so dass die Milchstraßenebene »schräg« im System liegt.)

Die Positionen von stellaren Objekten sind in den Dateien immer als Koordinaten-Tripel x,y,z mit Komma getrennt anzugeben, z.B. position="16728,-23632,20528", Leerraum erlaubt. Es muss immer ein Dezimal-Punkt (kein -Komma) verwendet werden.

Winkel (Kamerawinkel, Drehwinkel von Ellipsoiden etc.) können in Grad (mit nachgestelltem °) oder normalerweise im Bogenmaß (Radian) angegeben werden, also 360° = 2π (Pi, mit π = 3.14159265358...).

0.2 Koordinaten-Verschlüsselung

Die meisten Koordinaten sind geistiges Eigentum und © Rainer Castor, und Rainer möchte momentan noch nicht, dass sie im Klartext veröffentlicht werden. Sie erscheinen daher in den Karten-Dateien verschlüsselt, etwa als Attribut wie folgt:

position="içÖdymkuXÖ#uhöätbAßh$gCnürx/:ZÄeßZxj*?#*|"

Ich bitte ausdrücklich darum, nicht zu versuchen, diesen Code zu entschlüsseln! Koordinaten eigener Objekte stehen in eigenen Dateien natürlich im Klartext.

Wenn bekannte Systeme in eigenen Karten verwendet werden sollen, kann man das durch eine Inkludierung aus einer Bibliothek erledigen. Die kodierten Koordinaten (und andere Angaben) brauchen also nicht in die eigene Karte kopiert zu werden (siehe die Beispiele in Abschnitt 0.4 und Abschnitt 3).

0.3 Kochrezept

Dieser Abschnitt ist für alle Leute gedacht, die sich (zunächst) nicht mit den Details der Karten-Definitionen herumschlagen möchten. Die beste Methode ist da (wie so oft): abgucken. Am besten eine kleine Karten-Datei kopieren, fast alles herauslöschen und den eigenen Wünschen anpassen, was übrigbleibt.

Eine Karten- bzw. Bibliotheksdatei ist eine XML-Datei, besteht also im Wesentlichen aus verschachtelten Elementen, die durch »Tags« begrenzt werden, wie sie vielleicht schon aus HTML bekannt sind (<B>fetter Text</B> etc.). Die Namen der Tags und Attribute sind englisch gewählt (sorry, Gewohnheit), die Bedeutung sollte sich in fast allen Fällen von selbst erschließen.

(Fast) überall sind XML-Kommentare <!-- ... --> zur eigenen Orientierung erlaubt, die Spartac ignoriert.

Die XML-Korrektheit einer Karte kann man z.B. überprüfen, indem man sie in den Internet Explorer zieht, der bei syntaktischen Fehlern abbricht und eine entsprechende Meldung an den Schluss setzt.

0.4 Beispiele

Beispiel 1: Wir definieren eine Karte mit einem einzigen neuen System.

<?xml version="1.0" encoding="ISO-8859-15"?> <!-- test.prmap ein Testsystem --> <prmap name="test" center="Testsonne" radius="10" > <system position="1.23, 4.56, 7.89" planets="1" > <sun name="Testsonne" /> <planet name="Testplanet" moons="1" > <moon name="Testmond"/> <comment> ist <b>wirklich</b> nur ein Testplanet </comment> </planet> </system> </prmap>

Wenn die Karte noch Syntax-Fehler enthält (falsche Verschachtelung, Kommentar nicht geschlossen) oder andere Fehler auftreten (System in keiner Bibliothek gefunden), meldet Spartac dies in einem Fenster. Die Zeilenangabe bezieht sich dabei immer auf die Zeile, in der das Tag beginnt, das den Fehler enthält. Dann editiert man die Karten-Datei und versucht es erneut; Spartac braucht dazu natürlich nicht verlassen zu werden.

Beispiel 2: Die folgende kleine Karten-Datei stellt die wichtigsten Blues-Systeme in der Westside dar.

<?xml version="1.0" encoding="ISO-8859-15"?> <!-- Blues.prmap Blueswelten in der Eastside --> <prmap name="Blueswelten" type="galaxy" center="Gatas" radius="30000" home="Gatas" distances="Gatas,Karrjon" starSize="3" priority="20" > <library file="Milchstraße.prlib" /> <system file="Verth.prsys" /> <!-- Gataser --> <system lookup="Vrizin" /> <!-- Karr --> <system lookup="Pampas" /> <!-- Tratzschoner --> <system lookup="Apas" /> <!-- Apasos --> <system lookup="Simban" /> <!-- Tentra --> <system lookup="Pliyirt" /> <!-- Hanen --> <system lookup="Vyshjiü" /> <!-- Tüftül --> <system lookup="Tlyünosmun" /> <!-- Tlyvenosmun --> <system lookup="Santanz" /> <!-- Santanzer --> </prmap>

Beispiel 3: Mit <line>-Tags definiert man Linien (z.B. für Reiserouten), mit <sphere>-Tags Kugeln (z.B. für Einflussbereiche von Kosmonukleotiden) und mit <ellipsoid>-Tags Ellipsoide (z.B. zum Herumlegen um Spiralgalaxien).

Das folgende kurze Beispiel zeichnet die vier großen Galaxien der Lokalen Gruppe als Objekte, mit umschließenden Volumina und allen 6 Verbindungslinien in verschiedenen Farben. Die Farbnamen sind genau die, die auch die meisten Web-Browser akzeptieren (Liste im Anhang).

<?xml version="1.0" encoding="ISO-8859-15"?> <!-- linetest.prmap Linien- und Ellipsoiden-Test --> <prmap name="Große Galaxien in der Lokalen Gruppe" type="universe" center="Milchstraße" radius="2100000" rasterWidth="100000" > <library file="Lokale Gruppe.prlib" /> <galaxy lookup="Milchstraße" /> <galaxy lookup="Andromeda" /> <galaxy lookup="Triangulum" /> <galaxy lookup="Hangay" /> <line from="Milchstraße" to="Andromeda" color="red" /> <line from="Milchstraße" to="Triangulum" color="yellow" /> <line from="Milchstraße" to="Hangay" color="green" /> <line from="Andromeda" to="Triangulum" color="blue" /> <line from="Andromeda" to="Hangay" color="fuchsia" /> <line from="Triangulum" to="Hangay" color="aqua" /> <library file="Lokale Gruppe Vol.prlib" /> <ellipsoid lookup="Milchstraße Vol" /> <ellipsoid lookup="Andromeda Vol" /> <ellipsoid lookup="Triangulum Vol" /> <ellipsoid lookup="Hangay Vol" /> </prmap>

Das sollte schon für erste Experimente reichen. Im Rest des Dokuments ist der Aufbau der Dateien in allen Einzelheiten beschrieben.

1 Grundsätzliches

Mit Spartac Version 2.0 wurden die Karten-Dateien vom internen Binärformat auf ein XML-ähnliches Format umgestellt. XML ist sehr gut dafür geeignet, Daten, die hierarchisch verschachtelten Datentypen entsprechen, systemunabhängig darzustellen. Es wird so allen Benutzern ermöglicht, mit einem einfachen Texteditor (oder auch XML-Editor) eigene Karten zu erstellen. Außerdem lassen sich so die Daten bei Bedarf besser in andere Programme (und sogar auf anderen Systemen) importieren.

Um Karten zu erstellen, sind keinerlei Vorkenntnisse in XML notwendig. Dieses Dokument ist auch keine formale Einführung in XML, sondern beschreibt nur informell den Dateiaufbau, soweit es zur Erstellung eigener Karten notwendig ist. XML-Dateien sind reine Textdateien. Die Syntax von XML ist HTML-ähnlich und sollte jedem bekannt vorkommen, der einmal »zu Fuß« ein Web-Dokument erstellt hat.

Bemerkung: Spartac-Dateien (Karten-Dateien, Bibliotheken und die Konfigurationsdatei spartac.prcfg) sind »well-formed XML documents« im Sinne der XML-Definition (siehe bei www.w3.org). Die Dokumente sind für sich aber nicht »valid«, da keine DTD (document type declaration, eine Art Grammatik zur Interpretation des Inhalts) mitgeliefert wird, sondern die entsprechende Interpretation fest in Spartac eincodiert ist. Spartac verspricht nicht, beliebige XML-Dateien verarbeiten zu können, nur solche, die den weiteren Beschreibungen in diesem Dokument genügen! Insbesondere werden keine DTD-Deklarationen wie <!ELEMENT>, <!ATTLIST>, <!DOCTYPE> und keine <![CDATA[...]]>-Sektionen unterstützt.

Die Dateien haben nicht die Endung .xml, da sie bei Spartac in unterschiedlichen Zusammenhängen verwendet werden und die Art der Datei bereits am Namen ablesbar sein soll, ohne dass in die Datei hineingeschaut werden muss. Die Endungen sind .prmap für die eigentlichen Karten-Dateien (die einzigen Dateien, die Spartac momentan direkt lädt), .prlib für Bibliotheken (eine Art Include-Dateien), .prsys für Beschreibungen eines einzelnen Systems (gesondertes Format, gedacht für spätere Spartac-Erweiterungen) und .prcfg für die Konfigurationsdatei spartac.prcfg. Wenn man eine Datei z.B. in einen Browser wie Firefox oder den Internet Explorer zieht, erkennt dieser aber die Datei trotz Endung als XML und zeigt sie entsprechend formatiert als Quelltext an.

1.1 Dateikopf

Zu Beginn jeder Spartac-Datei erscheint ein XML-Prolog, der die verwendete XML-Version und die Zeichencodierung enthält, und der am besten in jeder Datei so übernommen wird. Erlaubt sind momentan ISO-8859-1 (alte mitteleuropäische Kodierung, also mit Vokalen mit Akzenten etc.) und ISO-8859-15 (dasselbe mit Euro-Zeichen), also z.B. nicht UTF-8.

<?xml version="1.0" encoding="ISO-8859-15" ?>

Danach folgt per Spartac-Konvention ein Kommentar, der in der ersten Zeile den Namen der Datei wiederholt und danach eine Kurzbeschreibung enthält. Diese Beschreibung erscheint dann z.B. im Lade-Display von Spartac als zweite Zeile hinter dem Dateinamen. Damit beim Anzeigen dieses Displays nicht eine komplette XML-Interpretation aller Dateien durchgeführt werden muss, ist diese Beschreibung hier zu Beginn vor der eigentlichen XML-Struktur untergebracht. XML-Kommentare sind wie die typischen HTML-Kommentare aufgebaut; beispielsweise steht in Thatrix.prmap dort dies:

<!-- Thatrix.prmap Entwicklung von Tradom / Thatrix-Zivilisation in 4 Phasen -->

Der Kommentar darf durchaus länger sein, aber nur seine zweite Zeile erscheint im Lade-Display.

Tags">

1.2. Tags

Daten im XML-Format bestehen aus verschachtelten Definitionen von »Elementen«. Wie in HTML wird die Definition eines Elements mit dem Namen name begonnen mit einem »Start-Tag« der Form <name> und beendet mit einem »End-Tag« der Form </name>. Anders als in HTML darf das End-Tag nicht entfallen, so dass eine korrekte Verschachtelung von Elementen immer gewährleistet ist. Wenn ein Element keine weiteren Elemente enthalten soll, können Start-Tag und End-Tag zusammengefasst werden in der Form <name/>. Groß- und Kleinschreibung ist signifikant, standardmäßig werden nur Kleinbuchstaben verwendet.

Alle momentan in Spartac-Dateien verwendeten Tags sind folgende:

<area>, <clusters>, <comment>, <config>, <continent>, <continents>, <ellipsoid>, <galaxy>, <issue>, <issues>, <keyword>, <keywords>, <library>, <line>, <moon>, <phase>, <planet>, <prmap>, <race>, <races>, <scenery>, <sphere>, <sun>, <system>, <systems>.

Im Start-Tag kann dem Element ein Satz von »Attributen« mitgegeben werden. Jedes Attribut besteht aus einer Zuweisung der Form attributname="wert". Anders als in HTML dürfen die Anführungszeichen nicht entfallen. Mehrere Attribut-Zuweisungen werden durch Leerraum getrennt. Auch hier ist Groß- und Kleinschreibung signifikant, zum Trennen von Wortbestandteilen verwendet Spartac hier gelegentlich einige Großbuchstaben, z.B. playSounds="true". Die Reihenfolge der Attribute ist völlig gleichgültig (auch bei Attributen wie lookup und file in Spartac), und jedes Attribut darf maximal einmal verwendet werden.

Wenn das Element einen Inhalt hat, steht zwischen Start-Tag und End-Tag eine Zeichenfolge, die eine Sequenz von Textstücken und weiteren Element-Definitionen ist, beispielsweise:  <tag1> text1 bla bla <tag2> text2 etc. </tag2> <tag3/> </tag1>

Zwischen den Tags ist beliebiger Leerraum (auch Zeilenumbrüche, Kommentare) erlaubt, je nach interpretierendem Programm kann dieser Leerraum dann aber im Ergebnis erscheinen. Spartac ignoriert momentan diese Leerräume. Besser lesbar (weil die Hierarchie widerspiegelnd) sieht obiges Beispiel also wie folgt aus:

<tag1> <!-- das Root-Element --> text1 bla bla <tag2> <!-- ein Unter-Element --> text2 etc. </tag2> <tag3/> <!-- noch eins, hat keine Unter-<span lang="en"><span lang="en">Tags</span></span> --> </tag1>

Wenn im Text zwischen den Tags die Zeichen < > & vorkommen sollen, müssen sie als XML-Entities &lt; &gt; &amp; (less-than, greater-than, ampersand) geschrieben werden; das abschließende Semikolon ist erforderlich. Zusätzlich versteht Spartac auch (ohne XML-Deklaration) die Entities &laquo; («) und &raquo; (»), obwohl die Zeichen keine XML-Bedeutung haben und im ISO-Code direkt in der Datei erscheinen können.

Jede XML-Datei enthält genau eine äußere Element-Definition, niemals eine Folge mehrerer Elemente. Dieses äußere Element wird Root-Element genannt. Hinter seinem End-Tag sind noch Kommentare und einige XML-Definitionen erlaubt. Beachte: Spartac hört nach diesem End-Tag (nicht ganz XML-konform) auf, die Datei zu lesen. Dadurch kann man Teile einer Karte austesten, indem man das End-Tag mitten in die Datei schreibt und somit den Rest der Datei »ausblendet«

Jede der vier Datei-Arten von Spartac muss ein fest vorgegebenes Root-Element definieren:

.prcfg<prcfg>Konfigurationsdatei
.prmap<prmap>Karten-Datei
.prlib<library>Bibliothek/Include-Datei
.prsys<system>System-Definition

Zwischen Start- und End-Tag des Root-Elements spielt sich also die eigentliche Definition der Daten ab.

1.3 Unter-Elemente vs. Attribute

Bei der Entwicklung des Formats erwies es sich als lesbarer, einige Dinge als Attribute statt als Unter-Elemente zu implementieren. Die Verschachtelung von Elementen entspricht nun fast immer der Verschachtelung physischer Objekte. Beispielsweise sind in die Karte Systeme eingeschachtelt, die Sonnen und Planeten einschachteln und Planeten Monde. Dagegen sind Eigenschaften wie Name, Atmosphäre, Gravitation etc. üblicherweise als Attribute abgebildet. Wir haben also NICHT

<!-- keine korrekte Spartac-Struktur! --> <planet> <name> Terra </name> <nummoons> 1 </nummoons> <atmosphere> O2 </atmosphere> <gravity> 1 </gravity> <moon> <name> Luna </name> <gravity> 0.162 </gravity> </moon> </planet>

sondern mit Attributen Folgendes:

<planet name="Terra" nummoons="1" atmosphere="O2" gravity="1" > <moon name="Luna" gravity="0.162" /> </planet>

Möglicherweise wird in späteren Versionen die Tag-Version aber zusätzlich erlaubt werden.

Sowohl als Attribut wie auch als Unter-Element gibt es:

comment="normaler Text" <comment> Text mit <b>Formatierung</b> </comment>
race="Volk1, Volk2" <races> Volk1, Volk2 </races>
  <race> Volk </race>
keywords="Begriff1, Begriff2" <keywords> Begriff1, Begriff2 </keywords>
  <keyword> ein Begriff, der ein Komma enthalten kann </keyword>
systems="Sonne1/Planet1, /Planet2" <systems> Sonne1/Planet1, /Planet2 </systems>
  <system> System, Blaues </system>
issues="Heft1, Heft2" <issues> Heft1, Heft2 </issues>
  <issue> Heft3, n-te Auflage </issue>

Genauso verhalten sich die geografischen Angaben cities, continents, mountains, streams und oceans bei Planeten. Alle Tags werden in den weiteren Abschnitten genauer beschrieben. Außer <comment> gibt es hier alle in Einzahl- und Mehrzahl-Version. Nach reiner XML-Philosophie sollte man nur die Einzahl-Versionen verwenden, was die Dateien aber sehr länglich macht. In den Mehrzahl-Versionen werden die Einzelteile durch Kommas getrennt; bei den Einzahl-Versionen ist es möglich, Kommas in den jeweiligen Begriff einzubauen. Kommentartexte, die HTML-Formatangaben wie Fettschrift enthalten, müssen immer als Elemente geschrieben werden!

1.4 Attribut-Typen

In den folgenden Tabellen zu den jeweils erlaubten Attributen gibt es eine Spalte »Typ«, in der der Typ der Werte für das Attribut angegeben sind. Dabei bedeutet:

TypBedeutung
bool ein Wahrheitswert, erlaubte Werte true, false, on, off, yes, no mit offensichtlicher Bedeutung
integer eine Ganzzahl: ... -3, -2, -1, 0, 1, 2, 3,...
float eine Fließkommazahl mit Dezimal-Punkt (nicht -Komma!): 3.1415926 oder 299792.458e3
hex24 eine 24-Bit-Hexadezimalzahl, z.B. für RGB-Farbangaben: #ffffff (weiß), #ff0000 (rot)
hex32 eine 32-Bit-Hexadezimalzahl für ARGB-Farbangaben (A=Transparenz, #ffxxxxxx = ganz durchsichtig, #00xxxxxx = ganz undurchsichtig)
vector3d ein 3D-Vektor aus 3 Fließkommazahlen, für Positions- oder Richtungs-Angaben: 0,0,0 (Zentrum) oder 16728,-23632,20528 (Arkon); Spaces sind erlaubt, die Kommas erforderlich
string eine Zeichenkette (ohne Anführungszeichen, ohne XML-Entities wie &raquo;)
color eine Farbangabe, wahlweise durch eine hex24-Angabe wie oben oder über einen Farbnamen wie red oder mediumvioletred. Alle in Browsern erlaubten Namen sind möglich, eine Tabelle findet sich im Anhang.

Ein Stern * hinter einem Argumentnamen bedeutet, dass die Angabe dieses Arguments für das jeweilige Tag zwingend erforderlich ist. Wenn nicht erforderliche Attribute nicht angegeben werden, erhält die Eigenschaft intern einen Standardwert oder wird als »nicht definiert« markiert.

Für die meisten astrophysikalischen Größen (Sonnenmasse, Umlaufzeit, Planeten-Durchmesser etc.) ist bei Spartac eine Default-Einheit festgelegt (Masse von Sol, Tage, Kilometer). Diese Einheit braucht in den Attribut-Werten nicht mit angegeben zu werden, d.h. dort erscheint eine einheitenlose Zahl. Es sind aber an allen sinnvollen Stellen die gängigen physikalischen Einheiten erlaubt:

für Abstände: m, km, AE (astronomische Einheit), AU (astronomical unit), LJ, lj, LY, ly (Lichtjahr), pc (Parsec)
für Durchmesser/Radien zusätzlich: Sol, Jupiter, Terra
für Zeitintervalle: s (Sekunde), min (Minute), h (Stunde), d (Tag),
a (Jahr = Julianisches Jahr = 365,25 d),
at (ein tropisches Terra-Jahr ~ 365.2422 d)
für Massen: kg, Sol, Jupiter, Terra
für Temperaturen: °C, C, K (Kelvin), Default ist immer Celsius
für Winkel: ° (Grad), Default ist immer Radian

1.5 Konventionen

An allen Stellen, an denen stellare Objekte angesprochen werden (z.B. home="Terra" im <prmap>-tag), werden sie über irgendeinen der beteiligten Namen gefunden, also Sonnensysteme über den Systemnamen oder über den Namen einer Sonne, eines Planeten oder eines Monds, Galaxien über den Eigennamen oder über eine Katalognummer wie »M 87« oder »NGC 3190«.

In Listen (in Attribut-Werten oder im Text zwischen Tags) werden die Einzelteile (»Wörter«) mit Kommas getrennt. Zu Beginn, am Ende und vor und nach den Kommas ist Leerraum erlaubt (zwischen Tags inklusive Zeilenumbrüche) und wird von Spartac ignoriert. Leerraum innerhalb eines Worts ist erlaubt und wird zu einem einzigen Leerzeichen zusammengezogen. Beispiele:

issue="PR 450-500, PR 569, PR 722, PR 1276/77" <keywords> NISAARU, Sonnenwürmer, Sonnentresor </keywords>

Die Wörter werden auch intern nicht alphabetisch sortiert und erscheinen ggf. in der angegeben Reihenfolge in der Ausgabe. Werden mehrere Listen zusammengehängt (z.B. bei mehrere keywords-Angaben), erscheinen die Listenteile in Reihenfolge der Tags bzw. der Bibliotheksangaben in der Datei.

2 Kartendateien

2.1 <prmap>

Eine Kartendatei definiert nach dem Prolog genau ein <prmap>-Tag.

Als Attribute werden Eigenschaften wie Name und Copyright angegeben, ebenso Einstellungen (wie »Raster einzeichnen«), die dann die entsprechenden Einstellungen aus der Konfigurationsdatei überschreiben. Zu den Typen siehe Abschnitt 1.4.

erlaubte Attribute von <prmap>
Attribut Typ Bedeutung Beispiel
author string Autor der Karten-Datei, erscheint im Info-Fenster author="Axel Rogat"
bgColor hex24 Hintergrundfarbe, Standard Schwarz bgColor="2020f0"
center vector3d Koordinaten des Kartenzentrums center="0,0,0"
cloudGiants float Anteil der großen Szenerie-Wolken an allen Wolken (0 bis 1) cloudGiants="0.1"
cloudSize float relative Größe der großen Szenerie-Wolken, 1=Kartenradius cloudSize="0.025"
  string Name eines Objekts als Kartenzentrum center="Terra"
clusters integer Anzahl Cluster in eine Richtung (siehe Dommrath-Karte und Abschnitt 2.10) clusters="24"
colors hex24 hex24 ... Farben für die Zugehörigkeiten (Mächtigkeitsballungen etc.), bei zu wenig Angaben werden Zufallsfarben verwendet colors="#ff0000 #00ff00 #0000ff"
copyright string Copyright-Angabe, erscheint im Info-Fenster copyright="Koordinaten © Rainer Castor"
date string Erstellungsdatum, freies Format, erscheint im Info-Fenster date="8-Jun-1936"
distances string Liste von Objekten für die Entfernungsangaben (siehe Abschnitt 1.5) distances="Terra, Arkon, Gatas, Zentrum Milchstraße"
home string Heimat-Objekt home="Terra"
infoInfluence bool soll die Angabe »Einflussbereich« im Info-Display erscheinen? infoInfluence="true"
labelColor hex32 Farbe für die Beschriftung (ARGB) labelColor="#ff000000"
labelling int Art der Objekt-Beschriftung: 0=Voreinstellung des Benutzers, 1=Standard (Planeten/Galaxiennamen), 2=alternativ (Sonnen/Katalognummern), 3=keine labelling="2"
labelFactor float Beschriftungs-Faktor, je höher, desto schneller werden Objekte bei Annäherung beschriftet (Standard 1) labelFactor="3"
minDistance float minimaler Abstand zum anvisierten Objekt beim Zoom minDistance="150"
minDistance float maximaler Abstand zum anvisierten Objekt beim Zoom minDistance="350000"
name* string Name der Karte (erscheint z.B. im Fenstertitel) name="Milchstraße"
phases integer Anzahl Phasen (siehe z.B. Thatrix) phases="4"
priority integer Detailstufe zu Beginn priority="3"
radius float Radius des Kartenbereichs radius="3"
rasterWidth float Abstand zweier Rasterlinien rasterWidth="10000"
scale float Skalierungsfaktor für alle Koordinaten, z.B. zur Umrechnung von Parsec in Lichtjahre etc. scale="3.2633"
sceneryColor hex24 Einfärbung der Wolken-Szenerie sceneryColor="#ff00ff"
showCoordSys bool sollen die Koordinatenachsen eingezeichnet werden? showCoordSys="no"
showFilledVolumes bool sollen die Volumina ausgefüllt gezeichnet werden? showFilledVolumes="on"
showHalos bool sollen um Objekte Halos gezeichnet werden? showHalos="true"
showLabels bool sollen Objekte beschriftet werden? showLabels="yes"
showLegendAffiliations bool soll die Legende für Zugehörigkeiten gezeigt werden (rechts oben oder unten)? showLegendAffiliations="true"
showLegendVolumes bool soll die Legende für Volumina gezeigt werden (rechts oben oder unten)? showLegendVolumes="false"
showLines bool sollen Linien (nicht Auflinien!) gezeichnet werden? showLines="no"
showNEWS bool sollen die Himmelsrichtungen eingezeichnet werden? showNEWS="on"
showRaster bool soll ein Raster in der x/y-Ebene gezeichnet werden? showRaster="false"
showSkybox bool soll eine Skybox gezeichnet werden? showSkybox="off"
showTransparentScenery bool soll die Wolken-Szenerie gezeichnet werden? showTransparentScenery="yes"
showUplines bool sollen Auflinien gezeichnet werden? showUplines="on"
showVolumes bool sollen Volumina gezeichnet werden? showVolumes="no"
skyboxBrightness float relative Helligkeit der Skybox skyboxBrightness="0.2"
skyboxName string Name der Textur-Datei für die Skybox skyboxName="sky_default.jpg"
starSize vector3d x=relative Größe der Sterne, y=Verkleinerungsfaktor bei starker Annäherung, z=relative Größe der Halos starSize="1,1,1"
subdivisions integer Unterteilungen der Kugeln und Ellipsoide (Verfeinerung der Dreiecks-Struktur), 1=Ikosaeder, 2=jedes Dreieck in vier geteilt, etc. (<=5) subdivisions="3"
type string Art des Szenarios, erlaubt: universe, galaxy, galaxy.spiral und galaxy.elliptic, s.u. type="galaxy.spiral"
version string Versionsangabe, freies Format, erscheint im Info-Fenster version="1.0"
view vector3d anfängliche Kamera-Position, x=Abstand zum Zentrum, y=Winkel in der Ebene, z=Winkel über der Ebene view="70000 , 0.7 , 0.3"

Karten zu einer Galaxie (type="galaxy") und zu größeren Universums-Ausschnitten (type="universe") unterscheiden sich darin, dass im ersten Fall Objekte je nach Detailstufe und ihrer Priorität eingezeichnet werden oder nicht, während im zweiten Fall immer alle Objekte gezeichnet werden. Welche Objekte beschriftet werden, hängt dagegen in beiden Fällen von Priorität und Kamera-Abstand ab. Die Erweiterungen .spiral und .elliptic haben momentan keine Bedeutung; sie dienten in älteren Versionen zur Bestimmung der Art der zu zeichnenden Szenerie.

Als Unter-Elemente sind physische Unter-Strukturen implementiert, die wichtigsten sind sicher <system> und <galaxy>, die beliebig gemischt vorkommen dürfen. Alle Elemente sind in späteren Abschnitten ausführlich beschrieben.

erlaubte Unter-Elemente von <prmap>
Tag Bedeutung siehe
<clusters> Angabe der Cluster-Nummern, quadratische Anzahl von Integers, Breite als Attribut cluster im <prmap>-Tag; momentan nur für Dommrath Abschnitt 2.10
<ellipsoid> Definition eines Ellipsoiden, der als (ggf. flächig ausgefülltes) Drahtmodell eingezeichnet wird Abschnitt 2.6
<galaxy> Definition einer Galaxie (bzw. irgendeines allgemeinen Sternhaufens) Abschnitt 2.5
<label> Definition einer Sonderbeschriftung, die nicht an ein physisches Objekt gebunden ist Abschnitt 2.11
<library> Einbindung einer Bibliotheksdatei Abschnitt 3
<line> Definition einer Linie, z.B. für Reiserouten etc. Abschnitt 2.7
<phase> Definition der Überschrift einer Phase (siehe Thatrix); es sollten nacheinander so viele Tags angegeben werden, wie das Attribut tags im <prmap>-Tag angegeben hat Abschnitt 2.8
<scenery> Definition eines Szenerie-Elements (Wolken bzw. Pseudo-Sterne) Abschnitt 2.9
<script> Definition eines Skripts, das eine Bewegungsabfolge definiert und über das Menü gestartet werden kann Abschnitt 2.12
<sphere> Definition einer Kugel (spezieller Ellipsoid, zur Abkürzung) Abschnitt 2.6
<splash> Definition des Begrüßungstextes (splash page); es sind dieselben HTML-Tags zur Formatierung erlaubt wie bei <comment> Abschnitt 2.2.1
<system> Definition eines Sonnensystems (oder irgendeines allgemeinen Objekts auf Kartenebene, z.B. auch Quinto-Center, Lookout-Station etc.). Abschnitt 2.4

2.2 Allgemeine Objekte

Alle Elemente einer Karte sind als Datentypen intern in einer Klassenhierarchie implementiert, d.h. Unterklassen übernehmen Attribute und mögliche Unter-Tags von ihrer Oberklasse und fügen ggf. eigene hinzu.

Beispielsweise sind »Marker« Objekte, die in der Karte mit einer optischen Markierung dargestellt werden, spezielle Marker sind Sonnensysteme und Galaxien. Marker haben als Attribute Position, Farbe, etc., darin unterscheiden sich Systeme und Galaxien nicht. Wohl unterscheiden sie sich in anderen Attributen und Unter-Tags.

Die alleroberste Klasse überhaupt ist das allgemeine Spartac-Objekt. Auf dieser Ebene gibt es die folgenden möglichen Attribute bzw. Unter-Elemente:

erlaubte Attribute aller Elemente in einer Karte
Attribut Typ Bedeutung Beispiel
name string Name bzw. Namensliste, erscheint je nach Objektart als Beschriftung,
wird benötigt zur Identifikation eines Objekts in einer Bibliothek
name="Drorah, Sphinx"
comment string Kommentar ohne Formatierungsangaben,
erscheint im Info-Display des markierten Objekts
comment="Hauptwelt der Akonen"

erlaubte Unter-Elemente von <prmap>
Tag Bedeutung
<comment> Kommentar mit möglichen Formatierungsangaben,
erscheint im Info-Display des markierten Objekts

2.2.1 <comment>

In den Kommentaren sind folgende HTML-ähnliche Formatierungs-Angaben erlaubt:

<b> ... </b> Fettschrift
<i> ... </i> Kursivschrift
<br/> Zeilenumbruch
<p/> Paragraph (mit kleinem vertikaler Abstand)
<hr/> horizontaler Balken

Beim Info-Display kann im Kommentartext bei Leerraum, - und / ein automatischer Zeilenumbruch erfolgen.

Bei den Tag-Namen ist auch Großschreibung erlaubt; Start- und End-Tag müssen wegen der XML-Struktur aber gleich geschrieben werden. Die <b>- und <i>-Tags müssen geschlossen werden. Sie dürfen beliebig ineinander geschachtelt sein; fette Schrägschrift ist möglich. Der Inhalt des <comment>-Elements ist der einzige Ort in Spartac-Dateien, an dem diese Formatierungs-Tags erlaubt sind!

Kommentare sind erlaubt in <system>, <planet>, <moon>, <galaxy>; Bei anderen Objekten werden sie momentan mit einem Fehler abgewiesen.

2.3 Marker

Marker sind Objekte, die in den Karten als Symbole erscheinen, momentan (Sonnen-)Systeme (<system>) und Galaxien (<galaxy>). Ihre gemeinsamen Attribute und Unter-Tags werden hier aufgeführt.

erlaubte Attribute von <system> und <galaxy>
Attribut Typ Bedeutung Default Beispiel
von Objekt geerbt: name, comment (siehe Abschnitt 2.2)
affiliation string Zugehörigkeit, z.B. zu einer Mächtigkeitsballung; wird im Info-Display angezeigt und bestimmt die Farbe in Universums-Karten (und die entsprechende Legende)   affiliation="Seth-Apophis"
area string entspricht dem Unter-Tag <area>   area="Zentrumsballung"
color color Farbe der optischen Markierung, überschreibt eine mögliche marker-Angabe   color="tomato"
constellation string Sternbild (von der Erde aus) und optional entsprechende Sternbezeichnung   constellation="Lyra, Alpha Lyrae" (Wega)
fake bool markiert das Objekt als Pseudo-Objekt: nicht anwählbar, ohne Beschriftung (z.B. als Wegpunkte auf einer Reiseroute etc.) false fake="true"
goto string gibt den Namen eines Ersatz-Objekts an, zu dem geflogen wird, wenn die Koordinaten noch unbekannt sind   goto="Sethdropoon"
halo bool gibt an, ob bei allgemein eingeschalteten Halos um dieses Objekt ein Halo gezeichnet werden soll true halo="false"
image string Name der Datei zum Bild im Info-Display, ohne Endung .jpg   image="DaGlausch"
issues string Entspricht dem Unter-Tag issues. Bei einer längeren Liste sollten besser die Unter-Tags <issue>, <issues> statt des Attributs benutzt werden.   issues="PR 1001ff, PR 1900-1999"
keywords string Entspricht dem Unter-Tag <keywords>. Bei einer sehr langen Liste sollten besser die Unter-Tags <keyword>, <keywords> statt des Attributs benutzt werden.   keywords="Algiotische Wanderer"
label string Beschriftung, die vor allen anderen Vorrang hat (vor Sonnen- / Planeten- / Galaxiennamen, Katalognummern, etc.)   label="Click Me!"
marker string Kurz-Beschreibung der Art der optischen Markierung, siehe Tabelle unten ? marker="Ge"
position* Vector3D x,y,z-Position des Objekts   position="16728,-23632,20528"
  string kodierte x,y,z-Position des Objekts (siehe Abschnitt 0.2)    
  * Position unbekannt, nur das Info-Display kann angezeigt werden   position="*"
position_x string Positionsangabe von der Erde aus, momentan noch Free-Format (typischerweise das Paar Rektaszension/Deklination)   position_x="Rekt 12:40.0 Dekl -11.37"
priority integer >=0, Wichtigkeit (0 sehr wichtig), nach oben »unbegrenzt«, s.u.   priority="5"
races string Entspricht dem Unter-Tag <races> Bei einer sehr langen Liste sollten besser die Unter-Tags <race>, <races> statt des Attributs benutzt werden.   races="Arkoniden"
rotate bool gibt an, ob die Markierung schräg rotiert werden soll oder nicht, s.u. true rotate="false"
sizefactor float relative Größenangabe für die optische Markierung 1.0 sizefactor="0.7"
type string Typ-Beschreibung, Free-Format, erscheint im Info-Display, wenn möglich rechts neben dem Bild 1.0 type="Kugelsternhaufen"
upline bool soll für das Objekt eine Auflinie gezeichnet werden, s.u. true upline="false"

Bemerkungen:

goto
In die Karten sind mittlerweile einige Galaxien aufgenommen, zu denen noch keine Positionsangabe vorliegt, die aber doch so wichtig sind, dass sie zumindest beim Suchen über das Suchfenster gefunden werden sollten. Ihr Info-Fenster erscheint dann in der linken oberen Bildschirmecke. Mit goto kann ein Ersatz-Objekt angegeben werden, zu dem eine Kamerafahrt erfolgt. Beispielsweise kennt man noch nicht die Position der Seth-Apophis-Galaxis Wethromoon, anstatt dessen wird in die (vermutlich nahe) Galaxis Sethdropoon geflogen. Dagegen kann bei Vayquost leider nirgendwohin geflogen werden, weil die Position "im Limbus zwischen ES und Seth-Apophis" zu vage ist.
 
image
Normalerweise wird bei der Anzeige des Info-Displays nach einer Datei gesucht, die so heißt wie das markierte Objekt (oder einer seiner Katalog-Namen). Hier kann ein Alternativ-Name angegeben werden, z.B. DaGlausch bei Salmenghest, da das Bild zu DaGlausch ohnehin beide Whirlpool-Galaxien darstellt.
 
marker
Mit dem Attribut marker gibt man ein ein- oder zweibuchstabiges Kürzel an, das Größe und Farbe der optischen Markierung bestimmt. Mit sizefactor und color können diese Werte bei Bedarf überschrieben werden (z.B. bei importierten Objekten). Beachte, dass in Universumskarten (z.B. mit Zugehörigkeiten zu Mächtigkeitsballungen) die Farben stattdessen aus der Liste des colors-Attributs des <prmap>-Tags übernommen werden! Wenn bei einem Sonnensystem marker und color nicht angegeben werden, wird die Farbe ggf. aus der Spektralklasse der ersten Sonne rekonstruiert (type-Attribut des ersten <sun>-Tags).
 
marker beeinflusst außerdem Typangabe im Info-Display und den Halo: Wird kein Type (type) angegeben, wird im Info-Display ein generischer Eintrag (»Spiralgalaxis« etc.) abhängig vom Marker angezeigt. Black Holes und Kosmonukleotide haben zusätzlich spezielle Halos mit Farbwechseln.
 
erlaubte Werte für das Attribut  marker
Kürzel Bedeutung Form Farbe Größe
?unbekanntKugelgraunormal
Xgroß (Kugelsternhaufen in Galaxis)Kugelweißgroß
*kein System (Raumstation etc.)Kugelgrauklein
.Dummy, Wegpunkt etc.Kugelgrausehr klein
Rrote SonneKugelrotnormal
Grgrüne SonneKugelgrünnormal
B, Blblaue SonneKugelblaunormal
Y, Gegelbe SonneKugelgelbnormal
W, Whweiße SonneKugelweißnormal
Ororangerote SonneKugelorangenormal
BHBlack HoleKugelschwarznormal
E0, Sphkugelförmige GalaxisKugelweißnormal
E*, Ellelliptische GalaxisEllipsoidweißnormal
Sspiralförmige Galaxisflacher Ellipsoidweißnormal
SBBalkenspiralgalaxisflacher Ellipsoidweißnormal
Irirregulärer Sternhaufenunregelmäßigweißnormal
CN, KNKosmonukleotidKugelweißnormal
SoSombrero (Gruelfin)Ellipsoid + Ringweißnormal

 
priority
Ein Objekt mit Priorität n wird in Galaxienkarten (z.B. Milchstraße) von der Detailstufe n an aufwärts angezeigt (in Universumskarten werden immer alle Objekte angezeigt). Die Priorität beeinflusst in beiden Fällen, ab welcher Nähe zur Kamera das Objekt beschriftet wird. Die Start-Priorität beim Anzeigen einer Karte wird mit dem <prmap>-Attribut priority festgelegt (siehe Abschnitt 2.1).
 
rotate
Spiralgalaxien werden durch Ellipsoide angezeigt, die aus ästhetischen Gründen normalerweise etwas schräg zum Koordinatensystem rotiert dargestellt werden. Da die Milchstraße aber nun per Definition gerade genau in der x/y-Ebene liegt. Für solche Fälle setzt man rotate auf false.

 
upline
Auch zu den normalen (nicht-Fake-) Objekten sollen manchmal die Auflinien unterdrückt werden, wenn sie optisch mit Spezial-Linien »clashen«. Das geschieht z.B. in der Sonnentransmitter-Karte (Verbindungslinien) mit den besonders weit entfernten Objekten der Lokalen Gruppe.
erlaubte Unter-Elemente von <system> und <galaxy>
Tag Bedeutung
von Objekt geerbt: <name>, <comment> (siehe Abschnitt 2.2)
<area> Gebiet, z.B. Sektor einer Galaxis; wird im Info-Display angezeigt, wenn möglich, rechts neben dem Bild.
<issues> Liste von Heften (PR, Atlan, TB etc.), in denen das Objekt eine besondere Rolle spielt (Free-Format), wird im Info-Display angezeigt.
<issue> Definition einer einzelnen neuen Heft-Angabe. Enthaltene Kommas werden hier nicht als Trenner zwischen Heften interpretiert (z.B. Seiten- oder Auflagen-Angaben)
<keywords> Liste von Schlüsselwörtern; sie werden selbst nie angezeigt, über sie kann aber das Objekt im Such-Fenster gefunden werden.
<keyword> Definition eines einzelnen neuen Schlüsselworts. Enthaltene Kommas werden in das Schlüsselwort übernommen (z.B. »System, Blaues«)
<races> Liste von Völkern, die im System/in der Galaxis angesiedelt sind. Sie erscheinen im Info-Display, nach ihnen kann im Such-Display gesucht werden.
<race> Definition eines einzelnen neuen Volks. Enthaltene Kommas werden in den Namen übernommen (z.B. »Kurztreter, Kleinschnäblige«)

Bemerkung:

issues

Die Einträge haben momentan noch kein vorgeschriebenes Format und werden unverändert in das Info-Display übernommen (im Abschnitt »siehe:« ganz am Ende). Man kann momentan nicht über Heftnummern nach Objekten suchen. Im Hinblick auf Kompatibilität mit späteren Versionen sollte man sich am besten in etwa an die folgenden Muster halten:

PR 1000, PR 1001-1099, PR 1100ff, PR 1105/06, AT 2, TB 415

Für die einzelnen Atlan-Miniserien sollte man Atlan-Centauri etc. schreiben - ich gebe aber die Hoffnung nicht auf, dass die alte Nummerierung wieder auflebt, spätestens kurz vor Atlan 1000 ;-)   Seitenzahlen sind im Moment noch nicht vorgesehen (vielleicht mit Klammern?).

2.4 <system>

Ein Sonnensystem wird durch das Tag <system> definiert. Es erscheint als Unter-Tag von <prmap> in Kartendateien oder von <library> in Bibliotheksdateien.

erlaubte Attribute von <system>
Attribut Typ Bedeutung Default Beispiel
von Objekt geerbt: name, comment (siehe Abschnitt 2.2)
von Marker geerbt: affiliation, area, color, constellation, fake, goto, halo, image, issue, keywords, label, marker, position, priority, race, rotate, sizefactor, type, upline (siehe Abschnitt 2.3)
file string Name der System-Datei, aus der die eigentlichen Daten übernommen werden sollen inklusive Endung .prsys (siehe ???)   file="Arkon.prsys"
lookup string Name des Systems, dessen Daten aber aus einer Bibliothek übernommen werden sollen (siehe Abschnitt 3)   lookup="Hundertsonnenwelt"
mainworld string Name des Haupt-Planeten (dieser muss später auch definiert werden); erscheint im Info-Display in der Titelzeile (es sind auch Monde erlaubt)   mainworld="Terra"
planets integer Gesamtanzahl der Planeten im System (auch wenn nicht alle namentlich bekannt sind) 0 planets="9"

Da bei Mehrfach-Sternsystemen eventuell keine eindeutige Zuordnung eines Planeten zu einer der Sonnen besteht, werden die Planeten nicht der Sonne untergeordnet. Ein System braucht aber weder Sonnen, noch Planeten zu enthalten. Beispielsweise sind die beiden Quinto-Centers als <system> definiert, und die Hundertsonnenwelt enthält keine (!) Sonne, nur einen Planeten. (Wer gerne 100 <sun>-Tags einfügen möchte, nur zu!)

erlaubte Unter-Elemente von <system>
Tag Bedeutung Abschnitt
von Objekt geerbt: <name>, <comment> Abschnitt 2.2
von Marker geerbt: <area>, <issue>, <issues>, <keyword>, <keywords>, <race>, <races> Abschnitt 2.3
<sun> Definition einer Sonne im System Abschnitt 2.4.1
<planet> Planet im System Abschnitt 2.4.2

2.4.1 <sun>

Dieses Element definiert eine Sonne im System und kann nur innerhalb eines <system>-Elements verwendet werden. Wenn nur die Anzahl der Sonnen, weitere Daten aber nicht bekannt sind, kann man entsprechend viele leere <sun>-Tags verwenden.

erlaubte Attribute von <sun>
Attribut Typ Bedeutung Beispiel
von Objekt geerbt: name, comment (siehe Abschnitt 2.2)
color color Farbe der Sonne; momentan nicht verwendet - ist für spätere Darstellung von Sonnensystemen gedacht color="#f03030"
colorStr string[,string] Beschreibung der Farbe der Sonne, erscheint im Info-Display des Systems colorStr="schwachrot, schwachrote"
diameter float Durchmesser der Sonne (Default-Einheit Mio. km); es kann entweder diameter oder radius angegeben werden diameter="1.79 Sol" (Arkon)
mass float Masse der Sonne (Default-Einheit Solmassen) mass="3.07" (Wega)
radius float Radius der Sonne (Default-Einheit Mio. km); es kann entweder radius oder diameter angegeben werden radius="0.69685" (Sol)
rotation float Rotation der Sonne am Äquator (Default-Einheit Tage) rotation="25.38" (Sol)
temperature float Oberflächentemperatur temperature="6000 K" (Sol)
type string Spektralklasse der Sonne, erscheint im Info-Display des Systems und beeinflusst ggf. die Darstellung des Markers in der Karte type="G2V" (Sol)

erlaubte Unter-Elemente von <sun>
Tag Bedeutung
von Objekt geerbt: <name>, <comment> (siehe Abschnitt 2.2)
zu colorStr:

Nicht zu verwechseln mit dem RGB-Farbcode des Markers! Die Angabe ist nur notwendig, wenn type nicht angegeben wurde oder die Farbbeschreibung vom Standard abweicht (z.B. »grün« oder »lachsrot«). Die erste Angabe ist das nicht flektierte Adjektiv (»grün«), die zweite die geschlechts-, typischerweise auf »Sonne« bezogene Form (»grüne« für »grüne Sonne«). Wird die zweite Angabe ausgelassen, wird im Display die erste verwendet, was zu Grammatikfehlern führen kann.

zu type und colStr:

Im Info-Display wird der erste Großbuchstabe der Spektralklasse wie folgt zusätzlich in eine Farbbeschreibung umgewandelt (DWRNS werden nicht unterstützt):

Oblau  Bweißblau   Aweiß  Fweißgelb
GgelbKorange   Mrot 

Wenn eine genauere Farbbeschreibung gewünscht ist, kann sie in colorStr angegeben werden und hat dann Vorrang. Führende Kleinbuchstaben in type werden wie folgt umgesetzt:

gRiesensonne (giant)
dZwergstern (dwarf)
sdUnterzwerg (subdwarf)

Kleinbuchstaben am Schluss (sollten das Spektrum noch genauer beschreiben) werden ignoriert. Wenn type keiner Spektralklasse zu entsprechen scheint, wird der angegebene Text ohne Interpretation übernommen.

Wenn die Farbe des Markers eines Sonnensystems nicht durch marker oder color festgelegt wird, wird ggf. die Farbe aus den (angegebenen) Spektralklassen der Sonne im System rekonstruiert (momentan gleich gewichtet zusammengemischt).

2.4.2 <planet>,  <moon>

Das <planet>-Element ist ebenfalls nur im Inneren eines <system>-Elements zu verwenden und definiert einen Planeten. Mögliche Monde erscheinen als Unter-Elemente <moon> in seinem Inneren.

Monde von Monden werden momentan nicht unterstützt: Sie können zwar so verschachtelt definiert werden, erscheinen aber nicht im ausführlichen Info-Display und werden nicht über das Such-Display oder beim Importieren aus Bibliotheken gefunden!

<moon> und <planet> haben identische Attribute und Unter-Elemente. Lediglich die Interpretation des Werts von distance (Abstand von der Sonne bzw. Abstand vom Planeten, mit anderen Einheiten) ist unterschiedlich!

erlaubte Attribute von <planet> und <moon>
Attribut Typ Bedeutung Beispiel
von Objekt geerbt: name, comment (siehe Abschnitt 2.2)
aphelion float (nur Planet) Aphel; größter Sonnenabstand (Default-Einheit Mio. km); erscheint im ausführlichen Info-Display aphelion="152" (Terra)
atmosphere string Atmosphäre, z.B. Hauptbestandteil und Dichte; erscheint im ausführlichen Info-Display atmosphere="O2 (dünn)"
capital string Hauptstadt; erscheint im ausführlichen Info-Display und im Such-Display capital="Sol-Town" (Gäa)
cities string Städte; entspricht dem Unter-Element <cities>. Bei einer längeren Liste sollten besser die Unter-Tags <city>, <cities> statt des Attributs benutzt werden. cities="Wuppertal"
continents string Kontinente; entspricht dem Unter-Element <continents>. Bei einer längeren Liste sollten besser die Unter-Tags <continent>, <continents> statt des Attributs benutzt werden. continents="Laktranor, Shargabag" (Arkon I)
diameter float Durchmesser (Default-Einheit km); erscheint im ausführlichen Info-Display; es kann entweder diameter oder radius angegeben werden diameter="12756" (Terra)
distance float mittlerer Abstand zur Sonne, bzw. bei Monden zum Planeten (Default-Einheit Mio. km); erscheint im ausführlichen Info-Display distance="1 AU" (Terra)
distance="406676 km" (Luna)
eccentricity float Exzentrizität; Abweichung der elliptischen Umlaufbahn vom Kreis (Abstand Brennpunkt/Zentrum dividiert durch große Halbachse); wird auch automatisch aus Aphel und Perihel berechnet eccentricity="0.007" (Venus)
gravity float Oberflächen-Gravitation in g (Terra=1), erscheint im ausführlichen Info-Display gravity="3.6" (Halut)
heightMax float höchste Erhebung (Default-Einheit m), erscheint im ausführlichen Info-Display heightMax="8847" (Terra)
inclination float (nur Planet) Neigung der Bahnebene zur Ebene der Hauptwelt, erscheint im ausführlichen Info-Display inclination="3.395°" (Venus zu Terra)
mainworld bool Hauptwelt im System? (falls keine per <system>-Attribut mainworld definiert wurde; true nur einmal pro System erlaubt) mainworld="true"
mass float Masse (Default-Einheit Erdmassen) mass="1.35e23kg" (Titan)
moons integer Anzahl der Monde des Planeten, erscheint im Info-Display moons="2" (Mars)
  oo unbekannte große Anzahl von Monden des Planeten, erscheint im Info-Display als »viele« moons="oo" (Jupiter)
mountains string Berge/Gebirge; entspricht dem Unter-Element <mountains>. Bei einer längeren Liste sollten besser die Unter-Tags <mountain>, <mountains> statt des Attributs benutzt werden. mountains="Shuluk-Ahaut" (Arkon I)
number integer Nummer des Planeten, nummeriert von innen nach außen number="3" (Terra)
obliquity float Neigung der Drehachse zur Umlaufebene in °, erscheint im ausführlichen Info-Display obliquity="23.45" (Terra)
oceans string Ozeane; entspricht dem Unter-Element <oceans>. Bei einer längeren Liste sollten besser die Unter-Tags <ocean>, <oceans> statt des Attributs benutzt werden. oceans="Sha'shuluk" (Arkon I)
perihelion float (nur Planet) Perihel; kleinster Sonnenabstand (Default-Einheit Mio. km); erscheint im ausführlichen Info-Display perihelion="147" (Terra)
radius float Radius (Default-Einheit km); erscheint im ausführlichen Info-Display; es kann entweder radius oder diameter angegeben werden radius="6378" (Terra)
revolution float Umlaufzeit des Planeten um die Sonne bzw. des Mondes um den Planeten (Default-Einheit Erdtage); erscheint im ausführlichen Info-Display revolution="1 a" (Terra)
revolution="27.32" (Luna)
rotation float Dauer einer Eigendrehung, Tageslänge (Default-Einheit Stunden); erscheint im ausführlichen Info-Display rotation="24" (Terra)
streams string Flüsse; entspricht dem Unter-Element <streams>. Bei einer längeren Liste sollten besser die Unter-Tags <stream>, <streams> statt des Attributs benutzt werden. streams="Druncen" (Arkon I)
temperature_avg float durchschnittliche Oberflächentemperatur; erscheint im ausführlichen Info-Display temperature_avg="34°C" (Arkon I)
temperature_min float niedrigste Oberflächentemperatur; erscheint im ausführlichen Info-Display temperature_min="-200°C" (Pluto)
temperature_max float höchste Oberflächentemperatur; erscheint im ausführlichen Info-Display temperature_max="427°C" (Merkur)
type string Typ als Kurzbeschreibung: Eiswelt, Gasriese, etc.; erscheint im Info-Display type="erdähnlich"

Die Temperaturangaben können (wie die Oberflächentemperatur bei <sun>) die Suffizes "C", "°C" (Celsius) und "K" (Kelvin) besitzen; Default ist Celsius.

Beachte: Es brauchen nicht alle astronomischen Daten angegeben zu werden. Viele werden vom Programm aus physikalischen Zusammenhängen (näherungsweise) rekonstruiert, beispielsweise:

Ebenso wird in einem Ein-Sonnen-System die Masse der Sonne aus den Distanzen und Umlaufzeiten der Planeten berechnet, sofern die Planetendaten einigermaßen dem 3. Keplerschen Gesetz gehorchen.

Als Unter-Tags werden geografische Details definiert, die im erweiterten Info-Display und im Such-Display erscheinen:

erlaubte Unter-Elemente von <planet> und <moon>
Tag Bedeutung
von Objekt geerbt: <name>, <comment> (siehe Abschnitt 2.2)
<city> Name einer wichtigen Stadt des Planeten
<cities> Liste von wichtigen Städten des Planeten
<continent> Name eines Kontinents des Planeten
<continents> Liste von Kontinenten des Planeten *
<moon> nur bei <planet>! Definition eines Mondes
<mountain> Name eines wichtigen Erhebungen/Gebirges des Planeten
<mountain> Liste von wichtigen Erhebungen/Gebirgen des Planeten
<ocean> Name eines Ozeans auf dem Planeten
<oceans> Liste von Ozeanen auf dem Planeten *
<stream> Name eines wichtigen Flusses auf dem Planeten
<streams> Liste von wichtigen Flüssen auf dem Planeten

Beachte*: Bei den beiden Listen zu <continents> und <oceans> darf das erste Wort eine positive ganze Zahl sein, die dann die Gesamtanzahl der Kontinente bzw. Ozeane angibt (sinnvoll, wenn nicht all deren Namen bekannt sind), etwa continents="6, Pront" (bei Gäa).

2.5 <galaxy>

Mit dem <galaxy>-Tag werden Sternhaufen diverser Größen und Formen definiert. Enthaltene Systeme können nur dem Namen nach angegeben werden; weitere Details sind auf dieser Stufe nicht vorgesehen - dafür würde dann eine eigene Karte fällig. Wenn man einige Systeme genauer beschreiben will, hält einen aber nichts davon ab, gesonderte <system>-Elemente anzufügen, die dann aber keine interne Zugehörigkeit zum <galaxy>-Element besitzen.

erlaubte Attribute von <galaxy>
Attribut Typ Bedeutung Beispiel
von Objekt geerbt: name, comment (siehe Abschnitt 2.2)
von Marker geerbt: affiliation, area, color, constellation, fake, goto, halo, image, issue, keywords, label, marker, position, priority, race, rotate, sizefactor, type, upline (siehe Abschnitt 2.3)
catalog string Liste von Katalognamen außer Messier und NGC; erscheinen im Info-Display und im Such-Display catalog="HCG 44A" (Laren)
diameter float Durchmesser (Default-Einheit LJ); erscheint im Info-Display; es kann entweder diameter oder radius angegeben werden diameter="100000" (Milchstraße)
lookup string Name der Galaxie, deren Daten aber aus einer Bibliothek übernommen werden sollen (siehe Abschnitt 3) lookup="Andromeda"
mass float ungefähre Masse in Sonnenmassen; erscheint im Info-Display mass="500000" (Tradom)
messier integer Nummer im Messier-Katalog; erscheint ggf. als Beschriftung, im Info-Display und im Such-Display messier="31" (Andromeda)
ngc integer Nummer im NGC-Katalog; erscheint ggf. als Beschriftung, im Info-Display und im Such-Display ngc="224" (Andromeda)
radius float Radius (Default-Einheit LJ); erscheint im Info-Display; es kann entweder radius oder diameter angegeben werden radius="50000" (Milchstraße)
systems string Entspricht dem Unter-Tag systems. Bei einer längeren Liste sollten besser die Unter-Tags <system>, <systems> statt des Attributs benutzt werden. systems="K'uhnar/Gumollz"

Für das Attribut type werden folgende Werte automatisch erkannt und in der ausführlicheren Textform im Info-Display ausgegeben (nicht erkannte werden unverändert übernommen):

type Bedeutung / Ausgabe
S Spiralgalaxis
S* Spiralgalaxis Typ S* (* beliebige Zeichen, bekannt z.B. Sab)
SB*, SAB* Balkenspiralgalaxis Typ SB* bzw. SAB* (* beliebig, auch leer, z.B. SAB, SBa)
E elliptischer Sternhaufen
E0 kugelförmiger Sternhaufen Typ E0
En elliptischer Sternhaufen Typ En (n Integer > 0, z.B. E3)
E* Typ E* (* kein Integer)
Ir irregulärer Sternhaufen
So sombreroförmige Galaxis

Mit den (gegenüber Marker neuen) Unter-Elementen werden in Kurzform namentlich Sonnen und Planeten angegeben, die dann im Info-Display aufgeführt werden. Im Such-Display kann die Galaxie über sie gefunden werden.

erlaubte Unter-Elemente von <galaxy>
Tag Bedeutung Abschnitt
von Objekt geerbt: <name>, <comment> Abschnitt 2.2
von Marker geerbt: <area>, <issue>, <issues>, <keyword>, <keywords>, <race>, <races> Abschnitt 2.3
<system> Definition eines Satzes System-/Planetenname, s.u. hier
<systems> Liste von Sätzen System-/Planetenname, s.u. hier

In einem Datensatz wird ein Name vor einem Schrägstrich als Systemname, einer nach einem Schrägstrich als Planet interpretiert (Monde können nur als Planeten angegeben werden). Sternhaufen, Wolken, etc. werden als Systeme angegeben. Jeder Satz hat eines der Formate

  Sonne
  Sonne/Planet
  Sonne/Planet1/Planet2...
  /Planet
  /Planet1/Planet2...

Leerraum vor und nach den Schrägstrichen ist erlaubt. Ein Satz darf auf einen Schrägstrich enden, z.B. um für den menschlichen Leser der Karten-Datei eine Sonne definitiv als solche zu kennzeichnen.

Beispiele: Point Ultra Kugelsternhaufen, Kimb/, Truhterflieng/Pröhndome, Thorrtimer/Thorrim/Cletternam, /Chircool

2.6 <ellipsoid>, <sphere>

Ellipsoid 1
<sphere>, subdivisions=1
Ellipsoid 2
<sphere>, subdivisions=2

Ellipsoide sind - grob gesprochen - Kugeln, die in die 3 Koordinatenrichtungen unterschiedlich stark gestreckt oder gestaucht (und anschließend gedreht) sein können. Mit dem <ellipsoid>-Tag kann ein allgemeiner Ellipsoid, mit dem <sphere>-Tag als Abkürzung eine Kugel definiert werden, jeweils als Unter-Element des <prmap>-Elements.

Ellipsoide dienen zur Darstellung von Raumbereichen, etwa um in Universumskarten die Umrisse von Spiralgalaxien (flacher Ellipsoid) anzudeuten, oder um die Einflussbereiche von Kosmonukleotiden oder Superintelligenzen (Mächtigkeitsballungen) zu markieren.

Die Darstellung von Ellipsoiden kann per Menü bzw. mit dem <prmap>-Attribut showVolumes abgeschaltet werden. Die Ellipsoide werden als Drahtmodelle gezeichnet. Wenn ein Ellipsoid keinen anderen schneidet, wird zusätzlich seine Oberfläche halbdurchsichtig dargestellt (abstellbar per Menü bzw. mit dem <prmap>-Attribut showFilledVolumes). Die Feinheit der Unterteilung der Fläche in Dreiecke wird nicht im Ellipsoiden, sondern im <prmap>-Tag der jeweiligen Karte für alle Ellipsoide in der Karte festgelegt. In der Unterteilungsstufe 0 wird ein Ikosaeder gezeichnet (20 Dreiecke), für Stufe 1 wird jedes Dreieck in vier Unterdreiecke zerlegt, etc. bis maximal Stufe 5 (20480 Dreiecke), Default ist Stufe 3 (1280 Dreiecke).

Ellipsoid flach rotiert
<ellipsoid>, axes="3,2,1",
rotation="0,0,0.78"
Zur Lage der Ellipsoiden:

Das Zentrum wird mit dem Attribut center definiert, die halben Achsenlängen (analog zu Radius = halber Durchmesser) mit dem Vektor axes (bzw. dem einem Wert radius bei der Kugel).

Außerdem kann ein Ellipsoid beliebig im Raum gedreht sein. Mit rotation werden 3 Winkel für die Rotation um die x-, y- und z-Achse angegeben. Es wird im mathematisch positiven Sinn (gegen den Uhrzeigersinn) gedreht, wenn man auf die positive Achse schaut.

Die richtigen Winkel zu bestimmen, kann manchmal etwas mühsam sein. Meistens sind die Ellipsoide aber sehr einfach ausgerichtet, etwa zigarrenförmig entlang einer bestimmten Raumrichtung. Daher kann man alternativ mit dem Vektor orientation eine solche Ausrichtung definieren: Die x-Achse wird in die durch orientation angegebene Richtung hineingehoben.

Beispiel: Wenn ein langer schmaler Ellipsoid die Punkte A und B »verbinden« soll, ist center der Mittelpunkt zwischen A und B, die x-Halbachse der halbe Abstand zwischen A und B, die anderen Halbachsen sind viel kürzer zu setzen. Als Orientierung nimmt man den Differenzvektor der Positionen von A und B.

Die Standard-Orientierung ist (1,0,0). Damit ergibt z.B. axes=(5,5,1) einen flachen Diskus in der x/y-Ebene, axes=(5,1,1) eine Zigarre entlang der x-Achse, etc.

Normalerweise wird entweder nur orientation oder nur rotation angegeben, die beiden können aber kombiniert werden; es wird dann zuerst rotation, dann orientation angewendet.

In der Legende für Volumina erscheint als Beschriftung der Name; mit dem Attribut label kann eine Alternativ-Beschriftung angegeben werden. So enden die Namen der Volumina in den Bibliotheken meist auf "Vol", um sie von sonst gleichnamigen Objekten zu unterscheiden (z.B. <galaxy> "Milchstraße" vs. <ellipsoid> "Milchstraße Vol").

Außerdem wird bei Universumskarten im Info-Display eines Systems, das innerhalb eines Ellipsoiden liegt, der Name bzw. das Label des Ellipsoiden als »Einflussbereich« aufgeführt (abstellbar in der Kartendatei mit infoInfluence="off"). Wenn ein System in mehreren Ellipsoiden gleichzeitig liegt, wird der Name des Ellipsoiden mit dem kürzeren Mittelpunkts-Abstand angezeigt. Außerdem lassen sich Ellipsoide über den Namen aus Bibliotheken importieren.

Bei Bedarf kann man Ellipsoide nur in bestimmten Phasen sichtbar werden lassen, siehe dazu Abschnitt 2.8.

erlaubte Attribute von <ellipsoid> und <sphere>
Attribut Typ Bedeutung Beispiel
von Objekt geerbt: name (siehe Abschnitt 2.2 und oben)
von Phasenobjekt geerbt: phase (siehe Abschnitt 2.8)
axes* vector3d nur für <ellipsoid>: Länge der drei Halbachsen axes="3.6, 2.5, 1.4"
center* vector3d Position des Mittelpunkts center="0,0,0"
  string Objektname als Position des Mittelpunkts center="Milchstraße"
color* color Farbe der Linien des Drahtmodells (ARGB oder Farbname) color="#80e0e000"
color_text color Farbe der Beschriftung in der Legende (RGB oder Farbname) color_text="darkkhaki"
label string Name des Ellipsoiden zur Beschriftung in der Legende (s.o.) lookup="DORIFER"
lookup string Name des Ellipsoiden zum Importieren aus einer Bibliothek, siehe Abschnitt 3 lookup="DORIFER Vol"
nocaption bool Unterdrückung des Eintrags in der Volumina-Legende nocaption="true"
orientation vector3d nur für <ellipsoid>: Ausrichtung, siehe oben, Default (1,0,0) orientation="0.27, 0.54, 0.81"
radius* float nur für <sphere>: Radius radius="25000000" (Nukleotid)
rotation vector3d nur für <ellipsoid>: Rotation um die Achsen, siehe oben, Default (0,0,0) rotation="0.7854, 0, 0"
status bool zu Beginn eingeschaltet? status="on"

In den Standard-Bibliotheken werden die Volumen-Objekte von gleichnamigen stellaren Objekten durch ein Anhängsel "Vol" unterschieden.

2.7 <line>

Das <line>-Tag (als Unter-Tag von <prmap>) dient zum Einzeichnen einzelner Linien in die Karte, beispielsweise als Reiseroute, Transmitterverbindung, etc.

Diese Art von Linien lässt sich in Spartac momentan nie abstellen. Man kann aber wie bei Ellipsoiden festlegen, dass eine Linie nur in einer bestimmten Phase erscheint (siehe Abschnitt 2.8) - so ist beispielsweise in PR-Universum.prmap die Verbindung Mahlstrom-Erranternohre-Milchstraße-Algstogermaht auf Phase 2 beschränkt (durch F9 ein/ausschaltbar).

Die Linien werden von der Engine momentan nicht am vorderen Ende des Sichtbereichs geclippt, d.h. bei sehr langen Linien kann es passieren, dass DirectX sie nicht mehr zeichnet, wenn einer der beiden Endpunkte zu weit hinter dem Beobachter liegt. Mit dem Attribut subdivisions wird dafür einfach die Linie in Teilstücke zerlegt. (Mag in zukünftigen Versionen von Spartac überflüssig werden.)

erlaubte Attribute von <line>
Attribut Typ Bedeutung Beispiel
von Objekt geerbt: name (siehe Abschnitt 2.2)
von Phasenobjekt geerbt: phase (siehe Abschnitt 2.8)
color* color Farbe der Linie (ARGB oder Farbname) color="royalblue"
from* vector3d Anfangspunkt der Linie from="10,20,30"
  string Objekt als Anfangspunkt der Linie from="Terra"
subdivisions integer Anzahl der Unterteilungspunkte (s.o.) subdivisions="3"
to* vector3d Endpunkt der Linie to="123,456,-789"
  string Objekt als Endpunkt der Linie to="Arkon"

from und to sind natürlich vollständig austauschbar. name kann vergeben werden, wird aber nicht verwendet (insbesondere sind Linien nicht aus Bibliotheken importierbar.)

2.8 <phase>

Eine Karte kann einen zeitlichen Ablauf in mehreren Phasen darstellen, zwischen denen mit F9 (eine Phase vorwärts) und Shift-F9 (rückwärts) hin- und hergeschaltet werden kann. Der Ablauf kommt dadurch zustande, dass einige Objekte nur in bestimmten Phasen sichtbar sind; es gibt also keine wirkliche Bewegung.

Die Anzahl der Phasen wird im <prmap>-Attribut phases festgelegt, die Phasen sind von 1 bis phases nummeriert. Auf die obige Art schaltbare Objekte heißen Phasenobjekte; momentan sind das genau <ellipsoid> (und <sphere>) und <line>. Sie geben in ihrem Attribut phase eine Liste von den Phasen an, in denen sie sichtbar sein sollen: Ein Eintrag in der Liste ist eine einzelne Phasennummer oder ein Bereich phase1-phase2, beispielsweise:

phase="1,3-5,9,10-12"

Objekte ohne phase-Definition sind in allen Phasen sichtbar.

2.9 <scenery>

Die Szenerie (der »Sternenstaub« und die »Sternwolken«) werden über <scenery>-Objekte definiert. Im Objekte wird das Zentrum eines Sternenstaub-Bereichs, seine Form, Größe und Dichte (gestaffelt in drei Bereichen) definiert. Die eigentlichen Sterne und Wolken werden während des Programmablaufs zufällig und von der momentanen Szeneriestufe abhängig erzeugt.

Es gibt vier Formen von Szenerie-Objekten:

class="sphere" kugelförmig, z.B. für Kugelsternhaufen
class="ellipsoid" Ellipsoid-förmig, z.B. für ellipsoide Sternhaufen. Die Szenerie wird von einem Ellipsoiden umhüllt, der wie ein <ellipsoid>-Objekt positioniert wird.
class="disk" scheibenförmig, z.B. für Spiralgalaxien. Entspricht ellipsoid; die Szenerie ist allerdings leicht »verbeult«, um realen Verteilungen mehr zu entsprechen. Da diese Verbeulung immer in z-Richtung erfolgt, sollte immer die z-Achse die kleinste sein und die x- und y-Achse die Ausdehnung in der Ebene beschreiben. Außerdem wird eine Zentrumsballung erzeugt, deren Größe und Dichte angegeben werden kann.
class="discrete" Angabe diskreter Punkte, d.h. einer Liste von Positionen. Dieser Typ eignet sich gut zur Nachbildung von Armen einer Spiralgalaxis, am besten zusätzlich zu einer dünnen Disk-Szenerie.

Die Szenerie-Objekte der Typen disk, ellipsoid und sphere dürfen keine Unter-Elemente haben. Bei der Szenerie ohne Typ-Angabe steht zwischen Start- und End-Tag eine Liste von x/y/z-Koordinaten von kleinen Sternenballungen - und zwar ausnahmsweise ohne trennende Kommas.

erlaubte Attribute von <scenery>, alle Typen
Attribut Typ Bedeutung Beispiel
von Objekt geerbt: name (siehe Abschnitt 2.2)
brightness float relative Helligkeit des Halos (0..1) brightness="0.5"
class* string sphere, disk oder discrete, s.o. class="disk"
clouds bool Wolken-Szenerie für dieses Objekt erzeugen? clouds="false"
density vector3d Dichte für nahen, mittleren und fernen Bereich (je nach Abstand vom Zentrum, normal 1) density="3,2,1"
lookup string Name der Szenerie zum Importieren aus einer Bibliothek, siehe Abschnitt 3 lookup="Milchstraße Sz"

erlaubte Attribute von <scenery>,  class="sphere"
Attribut Typ Bedeutung Beispiel
von Objekt geerbt: name (siehe Abschnitt 2.2)
von Szenerie geerbt: brightness, clouds, density, lookup (s.o.)
center* vector3d Mittelpunkt der Kugel center="0,0,0"
  string Objektname als Mittelpunkt der Kugel center="Milchstraße"
radius float Radius der Kugel radius="50000"

erlaubte Attribute von <scenery>,  class="ellipsoid" oder class="disk"
Attribut Typ Bedeutung Beispiel
von Objekt geerbt: name (siehe Abschnitt 2.2)
von Szenerie geerbt: brightness, clouds, density, lookup (s.o.)
axes* vector3d Länge der Halbachsen, wie bei <ellipsoid> axes="50000,50000,5000"
center* vector3d Mittelpunkt der Scheibe center="0,0,0"
kernel float nur bei disk: Größe des Ballungsbereichs kernel="1000"
  floatfloat nur bei disk: Größe des Ballungsbereichs und relativer Anteil der Ballung am Ganzen (0..1) kernel="1000, 0.1"
orientation vector3d Ausrichtung der x-Achse, wie bei <ellipsoid> orientation="1,0,0"
rotation vector3d Rotation um die 3 Achsen, wie bei <ellipsoid> rotation="0.78,0,0"

erlaubte Attribute von <scenery>,  class="discrete"
Attribut Typ Bedeutung Beispiel
von Objekt geerbt: name (siehe Abschnitt 2.2)
von Szenerie geerbt: brightness, clouds, density, lookup (s.o.)
variation vector3d Abweichung der Pseudo-Sterne von den Listen-Einträgen orientation="1,0,0"

Bei discrete werden immer kleine achsenparallele Ellipsoide gefüllt, deren Halbachsen mit variation festgelegt werden.

Beispiele (bis auf die Koordinatenliste aus Milchstraße.prlib):

<scenery class="disk" name="Milchstraße Sz" center="0,0,0" axes="50000,50000,7500" density="50,100,600" kernel="7500,0.05" /> <scenery class="sphere" name="Sagittarius Sz" center="Sagittarius" radius="4935" density="1,2,10" /> <scenery class="discrete" name="Milchstraße Sz2" variation="12000,12000,3000" density="2,2,3" > 1 2 3 10 20 30 ... </scenery>

In den Standard-Bibliotheken werden die Szenerie-Objekte von gleichnamigen stellaren Objekten durch ein Anhängsel "Sz", bzw. "Sz2" etc. unterschieden.

2.10 <clusters>

Das <clusters>-Tag existiert im Moment allein für die Dommrath-Karte, kann aber natürlich bei Bedarf auch in anderen Karten verwendet werden. Wie beim normalen Raster wird der Kreis in der x/y-Ebene um den Mittelpunkt und mit dem Radius der Karte in Quadrate unterteilt; der Linienabstand wird dem <prmap>-Attribut rasterWidth entnommen. Es wird aber zusätzlich ein Cluster-Würfel der Kantenlänge rasterWidth oberhalb der Ebene über das Quadrat gezeichnet, über dem sich der Mauszeiger befindet. (Praktischerweise liegen alle bekannten Systeme Dommraths in diesem Bereich der »Cluster-Ebene 1«.)

Beachte:

Die Anzahl Quadrate in einer Richtung ergibt sich automatisch als 2*radius/rasterWidth, sie muss aber zum Einzeichnen von Clustern erneut als <prmap>-Attribut clusters angegeben werden. In Dommrath haben wir beispielsweise clusters = 2 * 38125,548 / 3177,129 = 24. Bei nicht zusammenpassenden Angaben ist das Verhalten undefiniert.

Im Innern des <clusters>-Elements folgt dann eine Liste von clusters*clusters Integer-Zahlen, die als Cluster-Nummern oberhalb des Cluster-Würfels erscheinen. Die Zeilenstruktur ist gleichgültig; in der Dommrath-Karte stehen aber der Übersicht halber immer 24 Zahlen pro Zeile. Die Nummern erscheinen wiederum von Norden nach Süden zeilenweise, in jeder Zeile von Osten nach Westen, d.h. Süden (positive y-Achse) ist oben in der Mitte, Westen (positive x-Achse) rechts, etc.

Quadrate, die außerhalb des Kreises liegen, sollten mit 0 markiert werden; dort erscheint dann kein Cluster-Würfel. Solche Löcher können aber auch mitten in der Karte platziert werden.

2.11 <label>

Mit diesem Tag positioniert man eine Beschriftung in die Szenerie, die nicht an ein physisches Objekt wie ein Sonnensystem oder eine Galaxie gebunden ist, z.B. können damit Raumbereiche beschrieben werden.

erlaubte Attribute von <label>
Attribut Typ Bedeutung Beispiel
von Objekt geerbt: name (siehe Abschnitt 2.2)
von Phasenobjekt geerbt: phase (siehe Abschnitt 2.8)
align integer Ausrichtung, Bitmaske, 1: nach rechts (sonst horizontal zentriert), 2 nach unten (sonst vertikal zentriert); Default 0=in beide Richtungen zentriert align="1"
color* color Farbe der Beschriftung color="red"
position* vector3d Position des Referenzpunkts position="30000,0,0"
  string Objekt als Referenzpunkt position="Sol"
size float relative Größe, Default 1 size="0.75"
text* string Beschriftungstext text="Imperium XY"

2.12 <script>

Achtung: Dieses Feature befindet sich noch im frühen Experimentalstadium. Die Syntax könnte sich in zukünftigen Versionen noch ändern!

Ein Skript ist eine lineare Abfolge von einfachen Anweisungen, die Kamera, Einstellungen und die Anzeige von Overlays steuern. Variablen und Schleifen sind momentan nicht implementiert. Das Skript erscheint unter seinem Namen am Schluss des Menüs Aktionen und kann von dort gestartet und über den Menüpunkt "Skript anhalten" vorzeitig beendet werden.

Wenn sich Skript-Befehle auf Objekte beziehen, müssen diese vorher in der Karte definiert worden sein. Typischerweise stehen Skripte daher am Ende der Kartendatei (oder werden dort importiert).

erlaubte Attribute von <script>
Attribut Typ Bedeutung Beispiel
von Objekt geerbt: name (siehe Abschnitt 2.2), gibt auch den Menütext an
lookup string Name des Skripts, das aus einer Bibliothek übernommen werden soll lookup="LFT-Tour"

Jedes Unter-Element entspricht einem Befehl in der Sequenz. Keines der Elemente außer <text> hat Unter-Elemente.

erlaubte Unter-Elemente von <script>
Tag Bedeutung / Attribute
<flag> Setzen/Löschen eines Flags
 name*stringName des Flags wie in der Konfigurationsdatei
 value*boolzuzuweisender Wert
<mark> Markieren eines Objekts aus der Karte (System, Planet, Galaxie, etc.)
 object*stringName eines zuvor definierten Objekts aus der Karte
 infoboolInfo-Display des Objekts einschalten, Default: nein
<move> Kamerafahrt oder -Schwenk
 cameravector3dKameraposition des Zielpunkts
  stringObjektname als Kameraposition des Zielpunkts
  *Standardposition relativ zu lookat
 camTransvector3dTranslation der Kameraposition
 distfloatAbstand zum Zielobjekt am Schluss der Kamerafahrt
 lookatvector3dBlickpunkt, auf den am Ziel geschaut wird
 lookTransvector3dTranslation des Blickpunkts
  stringObjektname als Ziel-Blickpunkt
 periodfloatZeit für die Kamerafahrt in Sekunden (0=Sprung, Default:0)
<text> Text zwischen <text> und </text> als Display anzeigen
 periodfloatDauer der Anzeige in Sekunden (default: bis der Benutzer das Display schließt)
 title*stringFenster-Titel
<wait> Pause
 period*floatDauer der Pause in Sekunden

Bemerkungen:

3 Bibliotheken, <library>

Bibliotheken sind Spartac-Dateien mit der Endung .prlib, die das Root-Tag <library> definieren. Sie enthalten im Innern Definitionen von Elementen der Arten <system>, <galaxy>, <ellipsoid>, <sphere>, <scenery> und <script>. Andere (z.B. Linien) sind momentan noch nicht vorgesehen.

Der Vorteil von Bibliotheken ist erstens, dass jede Information möglichst nur an einer Stelle gespeichert sein soll, damit nicht mögliche Änderungen an mehreren Stellen durchzuführen sind. Zweitens lassen sich so auf einfachste Art und Weise Detailkarten oder aus mehreren Datenbereichen zusammengestellte Karten erstellen, ohne Daten irgendwoher einkopieren zu müssen.

Angesprochen werden die Objekte in einer Bibliothek über einen Namen - neben dem direkt vergebenen Namen ist bei Systemen möglich ein Sonnen- oder ein Planeten- oder Mondname, bei Galaxien der Messier-, NGC- oder ein anderweitiger Katalogname. Am besten hängt man an die Namen von Volumina immer ein "Vol" und an die von Szenerie-Objekten ein "Sz" an, zur Unterscheidung von korrespondierenden stellaren Objekten ansonsten gleichen Namens.

3.1 Anlegen einer Bibliothek

Eine .prlib-Datei hat denselben Kopf wie eine .prmap-Datei; das Root-Tag ist allerdings <library>. Als Attribute erlaubt sind name, version und date, die momentan allerdings vollständig ignoriert werden. Es ist also z.B. nicht möglich, eine Bibliothek in mehreren Versionen vorliegen zu haben und in der Karte dann eine Version auszuwählen, etc.!

Zwischen Start-Tag und End-Tag müssen die eigentlichen Objekte platziert werden. Objekte ohne Namensangabe werden beim Einlesen ignoriert!

3.2 Ansprechen einer Bibliothek in der Kartendatei

Eine Bibliothek wird mit einem <library>-Tag mit dem Attribut file (im Innern des <prmap>-Elements) eingebunden. Diese Angabe muss vor jeder Bezugnahme in einem Objekt in der Datei stehen. In Bibliotheken kann keine weitere Einbindung (geschachtelt) erfolgen.

erlaubte Attribute von <library> innerhalb von <prmap>
Attribut Typ Bedeutung Beispiel
clear bool Leeren des internen Namensspeichers vor dem Einbinden clear="true"
file* string Name der einzubindenden Bibliotheksdatei, mit der Endung .prlib file="Galaxien.prlib"
translate vector3d negativer Verschiebevektor für alle Positionen aus dieser Bibliothek translate="16728,-23632,20528"

Beispiel:

<library clear="true" file="Galaxien.prlib" translate="1000,2000,3000" />

Bemerkungen:

3.3 Referenzieren von Objekten aus Bibliotheken

Objekte, die aus irgendeiner vorher eingebundenen Bibliothek übernommen werden sollen, erhalten das Attribut lookup, das das Attribut name ersetzt. Andere Attribute im Objekt-Tag überschreiben die Angaben aus der Bibliothek. Die Platzierung des lookup-Attributs im Tags ist dabei gleichgültig, auch davor stehende Attribute überschreiben alte. Beispiele:

<galaxy lookup="Milchstraße" affiliation="" /> <!-- wird nicht mehr ES zugeordnet --> <system lookup="Sci'dhor" priority="0" /> <!-- aufgewertet von 14 auf 0 --> <system lookup="Dengejaa Uveso" color="red" /> <!-- ups, Black Hole läuft rot an! -->

Zu beachten ist, dass an Listen wie issues, keywords und races (siehe Abschnitt 2.3) immer angehängt wird. Wenn man die Liste aus dem Bibliotheks-Objekt ganz ignorieren möchte, muss man zunächst als Attribut issues="" etc. verwenden! Beispiel:

<library file="Galaxien.prlib" /> <galaxy lookup="Gruelfin" races="" > <races> Wuppertaler </races> </galaxy>

Ohne das races="" erscheinen als Völker im Info-Display Cappins, Ganjasen und diverse andere, und die Wuppertaler am Schluss. So wie oben angegeben erscheinen nur noch die Wuppertaler. Die neuen Einträge müssen als Unter-Tags angegeben werden, da kein Attribut doppelt auftauchen darf.

Analog kann man mit dem Attribut comment="" den Kommentar aus der Bibliothek löschen. Das ist nur sinnvoll, wenn man wirklich gar keinen Kommentar haben möchte. Wenn man mit <comment> einen neuen angibt, überschreibt er den alten ohnehin. Aber beachte: So löscht man bei <system> nur den Kommentar zum System, nicht die aus Sonnen und Planeten, die ggf. weiterhin im Info-Display erscheinen.

3.4 Systeme aus .prsys-Dateien

Ein zweiter Mechanismus zur Datenübernahme ist der der Einbindung einer .prsys-Datei. Darin wird genau ein Sonnensystem sehr detailliert definiert; entsprechend funktioniert das Ganze nur mit <system>-Objekten. Gedacht ist dies für die spätere Darstellung von Planetenbahnen und Planetenoberflächen, -Karten etc. Momentan gibt es diese Dateien für Sol und Arkon.

Diese Art von Referenzierung arbeitet mit dem file-Attribut, beispielsweise

<system file="Sol.prsys" marker="BH" color="mediumorchid" />

Der Mechanismus des Überschreibens von Eigenschaften funktioniert hier genauso wie beim lookup. So wie oben wird Sol lila eingefärbt und erhält einen Black-Hole-Halo mit Farbwechseln.


A Anhang: Farbnamen

Hier werden aus Platzgründen nur die für den Typ color verwendbaren Farbnamen aufgeführt, nicht deren RGB-Entsprechung (dazu siehe z.B. SelfHTML o.ä.). Die Namen mit gray sind in beiden Schreibweisen (also auch grey) erlaubt.

aliceblue antiquewhite aqua aquamarine azure beige
black blue blueviolet brown burlywood cadetblue
chartreuse chocolate coral cornflowerblue cornsilk crimson
darkblue darkcyan darkgoldenrod darkgray darkgreen darkgrey
darkkhaki darkmagenta darkolivegreen darkorange darkorchid darkred
darksalmon darkseagreen darkslateblue darkslategray darkslategrey darkturquoise
darkviolet deeppink deepskyblue dimgray dimgrey dodgerblue
firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite
gold goldenrod gray green greenyellow grey
honeydew hotpink indianred indigo ivory khaki
lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral
lightcyan lightgoldenrodyellow lightgray lightgreen lightgrey lightpink
lightsalmon lightseagreen lightskyblue lightslategray lightslategrey lightsteelblue
lightyellow lime limegreen linen maroon mediumaquamarine
mediumblue mediumorchid mediumpurple mediumseagreen mediumslateblue mediumspringgreen
mediumturquoise mediumvioletred midnightblue mintcream mistyrose moccasin
navajowhite navy oldlace olive olivedrab orange
orangered orchid palegoldenrod palegreen paleturquoise palevioletred
papayawhip peachpuff peru pink plum powderblue
purple red rosybrown royalblue saddlebrown salmon
sandybrown seagreen seashell sienna silver skyblue
slateblue slategray slategrey snow springgreen steelblue
tan teal thistle tomato turquoise violet
wheat white whitesmoke yellow yellowgreen  


Spartac und die Kartendateien sind © 2003-2006 Axel Rogat. Die den beigelegten Karten zugrundeliegenden Koordinaten und viele andere Daten sind © 2000-2006 Rainer Castor. Perry Rhodan ist © 1961-2006 Pabel-Moewig Verlag KG, Rastatt

http://www.axelrogat.de
mailto:Axel.Rogat@arcor.de