Page 1 of 1

[Tutorial] Wir basteln uns einen neuen Sektor in die Galaxiekarte

Posted: Thu, 22. Dec 05, 13:04
by Contingency
Das Problem ist bekannt: Auf der Galaxiekartenansicht werden nur dort Sektoren dargestellt, wo von Hause aus schon Sektoren vorhanden sind. Wer an anderer Stelle einen Sektor erstellt sieht, das er nichts sieht. Das ist zwar kein Beinbruch, da neue Sektoren auch auf der Galaxiekarte anwählbar sind, lästig ist es aber mithin aber schon.

Dem kann abgeholfen werden. Man braucht dafür - neben Grundkenntnissen im X-Modding und X3 selbst natürlich - lediglich folgende Dinge:
1) Den ModManager 0.0.3 von Doubleshadow. Zur Zeit das einzige frei erhältliche und zuverlässige Programm zum extrahieren und komprimieren von X3.
2) Einen Texteditor, etwa den Windows Editor, zum – wer hätte es gedacht – editieren von Texten.
3) Evtl. einen Taschenrechner


Je nachdem ob man lediglich das X-Universum um ein oder wenige Sektoren erweitern möchte oder ein weitgehend bzw. komplett neues Universum erstellen will, sind unterschiedliche Vorgehensweisen zweckmäßig. Für ein kleine Erweiterung ist es am einfachsten die 00749.bod zu ergänzen, für eine große Umstrukturierung erstellt man besser die ganze Datei komplett neu.

Die Datei 00749.bob kann mit dem ModManager aus der 03.dat unter dem Pfad objects\cut\00749.pbd extrahiert werden. Öffnet man die 00749.bod im Texteditor, wirkt das ganze durch die vielen Datensätze etwas unübersichtlich, ist aber eigentlich ganz leicht zu verstehen. Nehmen wir mal folgenden Datensatz als Beispiel:


/ Mon Sep 26 20:53:40 2005
/ Node 1005 Class [Box, GEOMOBJECT_CLASS_ID]
P 308; B 101; N 0101;
{ 0x2002; -36433; 34776; 2242; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // 0


/
Alles was dort hinter steht, ist Kommentar und wird von X nicht ausgewertet.


P 308
Das ist die fortlaufende Nummer der Datensätze, beginnend mit P 2 und endend mit P 697. P 0 ist für die Kameraperspektive reserviert und braucht uns nicht zu kümmern. Keine zwei Datensätze dürfen selbstredend die gleiche Nummer besitzen.


B 101; N 0101;
Die tatsächlichen Koordinaten der Position des Sektors. Die erste Ziffer bzw. das erste Ziffernpaar jeweils hinter dem B und N gibt die X-Koordinate (Spalte, waagerecht) an, das zweite Ziffernpaar die Y-Koordinate (Zeile, senkrecht). Die Koordinaten hinter B sind immer identisch mit denen hinter dem N. Einzig bei einem einstelligen X-Wert wird bei der Angabe hinter dem B die vorausgehende 0 weggelassen. Klingt umständlich, ist aber ganz einfach. B 101; N 0101; bezeichnet dem Sektor X=1, Y=1. B 1713; N 1723; bezeichnet den Sektor X=17, Y=23. B 413; N 0413; ist Sektor X=4, Y=13.
Im Spiel selbst beginnt die Zählung der Sektoren bei X=0 und Y=0. In der 00749.bod beginnt die Zählung jedoch mit X=1 und Y=1. „Königstal“ wird im Spiel auf der Galaxiekarte als Sektor X=0, Y=0 bezeichnet, der dazu gehörige Datensatz kennt ihn aber unter Sektor X=1, Y=1.


{ 0x2002; -36433; 34776; 2242; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // 0
Diese Daten geben die Koordinaten an, an denen ein Sektor auf der Galaxiekarte angezeigt wird. (D.h., ein Sektor kann an etwa links von „Königstal“ angezeigt werden, auch wenn er sich tatsächlich unterhalb von „Omikron Lyrae“ befindet.) Die 0x2002 braucht uns nicht zu kümmern. Der nächste Wert, die -36433 ist die X-Koordinate. Die 34776 ist die Y-Koordinate, die 2242 die Z-Koordinate. Die folgenden Werte sind für die Rotation zuständig und sollten besser bei Null bzw. -1 belassen werden.


Wenden wir uns der Praxis zu. Es soll ein neuer Sektor auf der freien Position zwischen „Predigers Einsamkeit“ und „Reich des Pontifex“, bzw. „Herzogs Reich“ und „Weisheit des Imperators“ angezeigt werden. Die Koordinaten sind X=2, Y=8 auf der X-Universumkarte. Also muss ein Sektor mit X=3, Y=9 in der 00749.bod hinzugefügt werden.


Wir kopieren einen beliebigen Datensatz aus der 00749.bod ans Ende der Datei. Etwa diesen hier:

P 308; B 101; N 0101;
{ 0x2002; -36433; 34776; 2242; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // 0


Die Nummer wird geändert. Die letzte vergebene Nummer lautet P 697, unser Datensatz wird folglich in P 698 umgetauft. Bei der Gelegenheit korrigieren wir direkt die Koordinaten für die tatsächliche Position.

P 698; B 309; N 0309;
{ 0x2002; -36433; 34776; 2242; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // 0


Jetzt müssen nur noch die richtigen Koordinaten für die angezeigte Position gefunden werden. Am einfachsten ist, jeweils die Koordinate eines anderen, möglichst benachbarten, Sektors mit der gleichen tatsächlichen X bzw. Y Koordinate zu übernehmen. Nachbar auf der X-Achse unseres Sektors hier im Beispiel ist etwa Predigers Einsamkeit [1,8] zu seiner linken. Wir suchen also in der 00749.bod nach dem String „B 209; N 0209;“. Aus dem dazugehörigen Datensatz entleihen wir uns den gesuchten Wert für Y.

P 698; B 309; N 0309;
{ 0x2002; -36433; -44072; 2242; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // 0


Den Wert für X ermitteln wir analog aus den Daten von Herzogs Reich [2,7]

P 698; B 309; N 0309;
{ 0x2002; -15293; -44072; 2242; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // 0


Als letztes brauchen wir nur noch die Z-Koordinate. Die Z-Koordinate gibt an, wie weit ein Sektor auf der Galaxiekarte vom Betrachter entfernt scheint. Je kleiner der Wert, desto größer und dem Betrachter näher scheint Sektor. Praktikabel sind Werte zwischen -10000 bis 10000. Ist der Wert zu klein, wird der Sektor bildfüllend oder liegt gar hinter dem Betrachter (Kameraperspektive) und ist nicht mehr zu sehen, ist er zu groß, braucht man `ne Lupe um ihn zu finden. Wir machen es uns ganz einfach und setzen Z=0.

P 698; B 309; N 0309;
{ 0x2002; -15293; -44072; 0; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // 0


Das war’s eigentlich schon. Man braucht nur noch die Datei mit dem ModManager in eine .dat unter bekanntem Pfad packen und diese von X laden lassen. Würde jetzt von Hand oder mit einem Galaxieeditor an entsprechender Stelle ein Sektor erzeugt, würde dieser auf der Galaxiekarte fortan angezeigt.


Zwei Schönheitsfehler gibt es jedoch noch: Die Linien, die die Torverbindungen zwischen den Sektoren darstellen, existieren für unseren neuen Sektor nicht und der Sektorname wird mitunter an ungewollter Stelle angezeigt. Lange Erklärungen will ich mir hier schenken.

Torverbindungen lassen sich im Prinzip analog zu bei den Sektoren oben beschriebenem erstellen. Lediglich die Angabe der tatsächlichen Koordinaten ist etwas anders. Es wird nicht nur ein Koordinatenpaar, wie bei den Sektoren angegeben, sondern die Angabe setzt sich aus den Koordinaten der beide Sektoren, die miteinander verbunden werden sollen zusammen. Beispiel:

P 534; B 10111010; N 10111010;
{ 0x2002; 62277; -57322; -4159; 0.449396; 0.560238; 0.818829; -0.125112; -1; -1; } // 0

Diese Linie verbindet also Sektor X=10, Y=11 mit Sektor X=10, Y=10. Unser Beispiel beschreibt also die Verbindung von „Zweifel des Cheos“ mit „LooManckStrats Vermächtnis“. Das herausfinden der „richtigen“ Werte, vor allem für die Rotation, erfordert ein wenig Rechenakrobatik und/oder Mut zum Experiment.


Weiterhin ist es noch möglich, die Position der Anzeige des Sektornamens zu beeinflussen. Die Koordinatenangabe entspricht, bis auf eine vorangestellte „1“, der des Sektors. Beispiel:

P 273; B 10101; N 10101;
{ 0x2002; -34920; 37740; 2039; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // 0

Dieser Datensatz im Beispiel sorgt dafür, dass der Text „Königstal“ nicht in der Mitte des Sektor „Königstal“ beginnend angezeigt wird, sondern etwas verschoben wird, wie ein Vergleich mit den Anzeigekoordinaten von „Königstal“ (s.o.) zeigt. Geeignete Werte lassen sich ganz einfach durch Vergleich mit anderen Sektoren finden. Ich möchte es hierbei belassen, da Sektornamen auch ohne diesen Datensatz korrekt angezeigt werden.


Wer größeres im Sinn hat, macht sich das Leben wesentlich einfacher, wenn er von Hand eine komplett neue 00749.bod erstellt, mit übersichtlicher Formatierung und mit glattzahligen Werten für die Anzeigekoordinaten. Empfehlenswert sind z.B. Vielfache von 8000, 9000, 10000, 11000 oder 12000 für X und Y. Der Wertebereich kann auf jeden Fall zwischen -250000 < X,Y < 250000 liegen. Ob noch kleinere oder größere Werte funktionieren, habe ich nie ausprobiert. Wie groß eine Galaxie maximal sein darf, kann ich ebenfalls nicht sagen.


So, dabei will ich es erst mal belassen. Viel Spaß beim modden!


1. Fassung, Stand: 22.12.05

Posted: Thu, 22. Dec 05, 13:23
by stk
spitzen arbeit!

danke schön ;)

Posted: Thu, 22. Dec 05, 13:30
by Orka
Super erklärt!

@mod bitte Pinnen! Aber heut noch bevor das Schwarze Loch des Forum, auch bekannt unter den Namen Seite 2, wieder zuschlägt ;)

Posted: Thu, 22. Dec 05, 23:32
by XxNe0xX
wow bin beeindruckt. spitzen arbeit.

aber kleine frage. wie kommt man auf sowas? du zufall entdecken stell ich mior schwierig vor ^^

Posted: Sat, 31. Dec 05, 13:41
by skylinedr
Hmm, ich hab es genau so gemacht wie du es beschrieben hast, hab auch Sektorname und Sektorbeschreibung in einer neuen 490003.xml aufgeführt.
Anschließend alles zusammengepackt in einen Mod.

Wenn ich nun im Ingame-GalaEd an dieser Stelle einen neuen Sektor platzieren will, funzt es nicht, weil da nichts zu sehen ist. (Patch 1.3)

Wenn ich z.B. die Z-Koordinate von Königstal verändere, nur um zu schauen ob das überhaupt Auswirkungen hat -> funzt korrekt. Nur mein neuer Sektor wird nicht angezeigt, bzw. die Stelle wo er hin soll. (zw. Herzogs Reich - Predigers Einsamkeit)
Hab ich evtl. noch was vergessen zu editieren?


Edit: Anscheinend stimmt B 309; N 0309; nicht, stattdessen müsste es B 903; N 0903; heißen. Der neue Sektor wird jedoch immer noch nicht angezeigt, obwohl er nun immerhin anwählbar ist...

Edit2: Meine Vermutung war richtig. Die Sektorbeschreibung und -name allerdings bekommen die Koordinaten: 0309. Unbedingt darauf achten! Jetzt wird mein Sektor auch angezeigt. :) Warum das nur mit diesem Zahlendreher funzt, ist mir aber nicht klar.

Posted: Sat, 31. Dec 05, 13:49
by ticaki
Tolle Arbeit!

Gruß ticaki

P.S. gepinnt wird nix - dafür haben wird die FAQ :)

Posted: Sat, 23. Sep 06, 07:43
by Moonraven
Nach dem ich mir die 00749 mal in Max angeschaut hab, hier noch eine
kleine Ergänzung zu den Verbindungslinien.

Im orginal Uni wird die Verbindung 2-fach beschrieben.

Beispiel:

für die Verbindung "Zweifel des Cheos" mit "LooManckStrats Vermächtnis" und einmal die Verbindung "LooManckStrats Vermächtnis" nach "Zweifel des Cheos".

Posted: Sat, 23. Sep 06, 14:37
by Mapper484
Also die X- und Y- und Z- Koordinaten eines Sektors können über 2.000.000 gehen. Sieht dann zwar etwas komisch aus, aber sonst läuft alles normal. :D

Ich glaube eher das die Begrenzung bei 2.000.000.000 leigt, werds mal ausprobiern.

Wegen neue Sektoren in bestehendes Spiel integrieren

Posted: Mon, 16. Oct 06, 17:13
by wanderer
Hallo Zusammen,


suche nun schon einige Zeit Infos, wie ich in ein bestehendes Spiel neue Sektoren reinkriegen kann.

Das es geht hat EGOSOFT mir bereits bestätigt, nur nicht wie :evil: :cry:
Hier meine Anfrage und die Antwort von BurnIt:

http://forum2.egosoft.com/viewtopic.php ... &start=255
(Seite 18 etwas weiter unten)

Hat vielleicht jemand 'da draußen' hierzu schon was in Erfahrung gebracht? Eventl. einer der Erfahrenen Modder?

mfg
Wanderer

Posted: Mon, 16. Oct 06, 17:34
by UniTrader
probiers mal hiermit ;)

Posted: Sun, 17. Dec 06, 15:25
by IFRAIL
Hi!

Da muss man einträge machen ohne ende! :cry:
Kann den nicht jemand so nett sein und den 00749. bob schon bearbeitet/modifiziert (Sektoren zu gefügt) und das zum downloaden bereitstellen?
So zu sagen für faule User. :roll:
Man muss ja nicht alles noch mal machen wen jemand das schon bearbeitet hat, ist mit viel arbeit verbunden.
So ungefähr das ist mit 50 neuer Sektoren und da sind 100 neue Sektoren usw.
(eventuell noch ein Info wo man die Sektoren neu machen kann)
So was wäre sehr hilfreich!

Cu
IFRAIL

Posted: Sun, 17. Dec 06, 15:34
by UniTrader
schau mal in die tool-Sammlung, da findest du ein Tool, das dir dies abnimmt ;)

Posted: Tue, 3. Apr 07, 18:27
by schneida
Ich habe einen neuen Sektor zwei auf x 11 y 11 (also in der Nähe von Mi Tons Zuflucht) erstellt und ihn die 00749.bod das eingetragen:

Code: Select all

P 698; B 1111; N 1111;
   { 0x2002; -15293; -44072; 2242; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // 0
Habs auch gepackt, doch es erscheint kein neuer Sektor!

Was mach ich falsch! :?:

Posted: Tue, 3. Apr 07, 19:20
by UniTrader
hast du die 00749.bod/pbd aus der höchsten CAT/DAT genommen, in der es eine solche gibt und diese auch wieder dort gespeichert???

Posted: Wed, 4. Apr 07, 09:47
by schneida
Nein ich glaub ich hab sie aus der 3er cat.

Problem hat sich aber erldigt, hab einfach mal das RussenTool genutzt! :lol:

Posted: Mon, 7. Jan 08, 13:47
by zorry
schneida wrote:Nein ich glaub ich hab sie aus der 3er cat.

Problem hat sich aber erldigt, hab einfach mal das RussenTool genutzt! :lol:

wäääää?????

wo gibts den?? :? :? :? her damit!! :o :o :o

Posted: Mon, 7. Jan 08, 13:52
by Iifrit Tambuur-san
LINK

;)

Die Universumkarte ist aber danach flach wie ein Schachbrett.

Posted: Mon, 7. Jan 08, 14:13
by zorry
Danke :D

Posted: Fri, 25. Jan 08, 17:48
by Shikn
Was cool wäre, wäre ein programm das die Datei vom spiel ausliest und man dann in dem Programm "neuer Sektor" Wählen kann. Dann wird in einem Fenster das gesamte X-Universum angezeigt und Der neue Sektor in einem extra-fenster in dem man ihn vorab schon benennen kann(mit Farbe wäre auch cool) dann kann man ihn per Drag&Drop in das andere Fenster mit der X-Karte ziehen und dort positionieren(am besten wir in einem extra Fenster der code angezeigt) dann drückt man auf "neues Tor" wählt einen Sektor und welches Tor es in dem Sektor sein soll(N, S, O, W) und dann wählt man "zu verknüpfender Sektor" und wählt den anderen Sektor an mit dem das Tor fungieren soll und dort auch welches Tor es sein soll(oder automatisch je nachdem was man vorher gewählt hat z.B. bei N-->S) Dann kann man es als mod abspeichern oder ins normale spiel einfügen.

Es könnte gehen wäre aber verdammt viel arbeit!!! Wenn das programm nicht gehen wird nennt es 1.0 dann könnt ihr die überarbeitung 1.1 oder 2.0 nennen!
Wer so etwas hinbekommt :o respekt