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

Hier ist der ideale Ort um über Scripts und Mods für X³: Reunion zu diskutieren.

Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators

Contingency
Posts: 13
Joined: Fri, 30. Jan 04, 23:26
x3tc

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

Post by Contingency » Thu, 22. Dec 05, 14:04

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

stk
Posts: 304
Joined: Tue, 7. Dec 04, 11:26
x3ap

Post by stk » Thu, 22. Dec 05, 14:23

spitzen arbeit!

danke schön ;)

User avatar
Orka
Posts: 798
Joined: Wed, 7. Apr 04, 15:19
xr

Post by Orka » Thu, 22. Dec 05, 14:30

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 ;)

XxNe0xX
Posts: 157
Joined: Sat, 9. Oct 04, 00:48
x3

Post by XxNe0xX » Fri, 23. Dec 05, 00:32

wow bin beeindruckt. spitzen arbeit.

aber kleine frage. wie kommt man auf sowas? du zufall entdecken stell ich mior schwierig vor ^^
Do you like secrets?
Try to find some.....
Goner-Secrets Mod

skylinedr
Posts: 1003
Joined: Wed, 30. Nov 05, 13:09
x4

Post by skylinedr » Sat, 31. Dec 05, 14:41

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.
Last edited by skylinedr on Sat, 31. Dec 05, 17:13, edited 2 times in total.
Ich mag den Gedanken einer "Spukhaften Fernwirkung" nicht. - A.Einstein

ticaki
Posts: 4585
Joined: Wed, 6. Nov 02, 21:31
x3

Post by ticaki » Sat, 31. Dec 05, 14:49

Tolle Arbeit!

Gruß ticaki

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

User avatar
Moonraven
Posts: 965
Joined: Wed, 27. Aug 03, 11:13
x3

Post by Moonraven » Sat, 23. Sep 06, 07:43

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".
Gruß Moonraven
Wer lesen kann, ist ganz klar im Vorteil.
Image

Mapper484
Posts: 634
Joined: Fri, 28. Jul 06, 08:18
x3

Post by Mapper484 » Sat, 23. Sep 06, 14:37

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.

wanderer
Posts: 236
Joined: Wed, 6. Nov 02, 21:31
x3tc

Wegen neue Sektoren in bestehendes Spiel integrieren

Post by wanderer » Mon, 16. Oct 06, 17:13

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

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 13949
Joined: Sun, 20. Nov 05, 23:45
x4

Post by UniTrader » Mon, 16. Oct 06, 17:34

probiers mal hiermit ;)
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

User avatar
IFRAIL
Posts: 199
Joined: Sun, 10. Apr 05, 01:18
x3

Post by IFRAIL » Sun, 17. Dec 06, 16:25

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

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 13949
Joined: Sun, 20. Nov 05, 23:45
x4

Post by UniTrader » Sun, 17. Dec 06, 16:34

schau mal in die tool-Sammlung, da findest du ein Tool, das dir dies abnimmt ;)
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

schneida
Posts: 3
Joined: Tue, 3. Apr 07, 18:19

Post by schneida » Tue, 3. Apr 07, 18:27

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! :?:

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 13949
Joined: Sun, 20. Nov 05, 23:45
x4

Post by UniTrader » Tue, 3. Apr 07, 19:20

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???
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

schneida
Posts: 3
Joined: Tue, 3. Apr 07, 18:19

Post by schneida » Wed, 4. Apr 07, 09:47

Nein ich glaub ich hab sie aus der 3er cat.

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

Post Reply

Return to “X³: Reunion - Scripts und Modding”