© 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)!
Vorausgesetzt werden grundlegendste Kenntnisse in 3D-Geometrie und im Verfassen von Texten mit einem Texteditor ;-) HTML-Kenntnisse helfen, sind aber nicht erforderlich.
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):
|
|
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...).
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).
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.
Um bekannte Systeme aus Bibliotheken zu übernehmen, reicht die Angabe <system lookup="Systemname" /> bzw. <galaxy lookup="Galaxienname" />. Systeme werden hier auch über Planeten- oder Mond-Namen und Galaxien über Katalognamen wie »M 13« gefunden. Die Bibliothek, in der die eigentlichen Daten stehen, muss weiter oben mit der Angabe <library file="Bibliotheksname.prlib" /> geöffnet worden sein.
Die Daten aus der Bibliothek können durch eigene Angaben »überschrieben« werden. Beispielsweise erscheint mit <system lookup="Blaues System" color="red" /> das Blaue System nicht mehr blau, sondern rot. Genauso kann man mit comment eigene Kommentare hinzufügen, etc.
Beachte: Die Systeme Sol und Arkon sind in eigenen Dateien definiert und werden mit <system file="Sol.prsys" /> etc. eingebunden.
(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.
Beispiel 1: Wir definieren eine Karte mit einem einzigen neuen System.
|
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.
|
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).
|
Das sollte schon für erste Experimente reichen. Im Rest des Dokuments ist der Aufbau der Dateien in allen Einzelheiten beschrieben.
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.
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:
|
Der Kommentar darf durchaus länger sein, aber nur seine zweite Zeile erscheint im Lade-Display.
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:
|
Wenn im Text zwischen den Tags die Zeichen < > & vorkommen sollen, müssen sie als XML-Entities < > & (less-than, greater-than, ampersand) geschrieben werden; das abschließende Semikolon ist erforderlich. Zusätzlich versteht Spartac auch (ohne XML-Deklaration) die Entities « («) und » (»), 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.
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
|
sondern mit Attributen Folgendes:
|
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!
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:
Typ | Bedeutung |
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 ») |
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 |
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:
|
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.
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 |
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 |
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.
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" |
erlaubte Werte für das Attribut marker | ||||
Kürzel | Bedeutung | Form | Farbe | Größe |
? | unbekannt | Kugel | grau | normal |
X | groß (Kugelsternhaufen in Galaxis) | Kugel | weiß | groß |
* | kein System (Raumstation etc.) | Kugel | grau | klein |
. | Dummy, Wegpunkt etc. | Kugel | grau | sehr klein |
R | rote Sonne | Kugel | rot | normal |
Gr | grüne Sonne | Kugel | grün | normal |
B, Bl | blaue Sonne | Kugel | blau | normal |
Y, Ge | gelbe Sonne | Kugel | gelb | normal |
W, Wh | weiße Sonne | Kugel | weiß | normal |
Or | orangerote Sonne | Kugel | orange | normal |
BH | Black Hole | Kugel | schwarz | normal |
E0, Sph | kugelförmige Galaxis | Kugel | weiß | normal |
E*, Ell | elliptische Galaxis | Ellipsoid | weiß | normal |
S | spiralförmige Galaxis | flacher Ellipsoid | weiß | normal |
SB | Balkenspiralgalaxis | flacher Ellipsoid | weiß | normal |
Ir | irregulärer Sternhaufen | unregelmäßig | weiß | normal |
CN, KN | Kosmonukleotid | Kugel | weiß | normal |
So | Sombrero (Gruelfin) | Ellipsoid + Ring | weiß | normal |
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«) |
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?).
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 |
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) |
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.
Im Info-Display wird der erste Großbuchstabe der Spektralklasse wie folgt zusätzlich in eine Farbbeschreibung umgewandelt (DWRNS werden nicht unterstützt):
O | blau | B | weißblau | A | weiß | F | weißgelb |
G | gelb | K | orange | M | rot |
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:
g | Riesensonne (giant) |
d | Zwergstern (dwarf) |
sd | Unterzwerg (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).
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).
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
<sphere>, subdivisions=1 |
<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>, axes="3,2,1", rotation="0,0,0.78" |
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.
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.)
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.
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" | |
float, float | 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):
|
In den Standard-Bibliotheken werden die Szenerie-Objekte von gleichnamigen stellaren Objekten durch ein Anhängsel "Sz", bzw. "Sz2" etc. unterschieden.
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.
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" |
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* | string | Name des Flags wie in der Konfigurationsdatei | |
value* | bool | zuzuweisender Wert | |
<mark> | Markieren eines Objekts aus der Karte (System, Planet, Galaxie, etc.) | ||
object* | string | Name eines zuvor definierten Objekts aus der Karte | |
info | bool | Info-Display des Objekts einschalten, Default: nein | |
<move> | Kamerafahrt oder -Schwenk | ||
camera | vector3d | Kameraposition des Zielpunkts | |
string | Objektname als Kameraposition des Zielpunkts | ||
* | Standardposition relativ zu lookat | ||
camTrans | vector3d | Translation der Kameraposition | |
dist | float | Abstand zum Zielobjekt am Schluss der Kamerafahrt | |
lookat | vector3d | Blickpunkt, auf den am Ziel geschaut wird | |
lookTrans | vector3d | Translation des Blickpunkts | |
string | Objektname als Ziel-Blickpunkt | ||
period | float | Zeit für die Kamerafahrt in Sekunden (0=Sprung, Default:0) | |
<text> | Text zwischen <text> und </text> als Display anzeigen | ||
period | float | Dauer der Anzeige in Sekunden (default: bis der Benutzer das Display schließt) | |
title* | string | Fenster-Titel | |
<wait> | Pause | ||
period* | float | Dauer der Pause in Sekunden |
Bemerkungen:
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.
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!
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" /> |
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:
|
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:
|
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.
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.
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