Verbesserungsvorschlag für MK3, BPH, SDS, ... / Diagonalflug
Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators
Verbesserungsvorschlag für MK3, BPH, SDS, ... / Diagonalflug
Abkürzen von Flugrouten über Diagonalen.
Kann man so programmieren, dass man erst eine einfache Route zwischen zwei Sektoren ermittelt und dann versucht die Ecken dieser Route zu optimieren. Also jeweils an einer dieser Ecken einen bis mehrere Sektoren vorher abbiegen und damit den Diagonalflug durch die Sektoren verlängern.
Sven
Kann man so programmieren, dass man erst eine einfache Route zwischen zwei Sektoren ermittelt und dann versucht die Ecken dieser Route zu optimieren. Also jeweils an einer dieser Ecken einen bis mehrere Sektoren vorher abbiegen und damit den Diagonalflug durch die Sektoren verlängern.
Sven
---------------------------
---------------------------
---------------------------
- StarTrekMarc
- Posts: 2143
- Joined: Sat, 3. Apr 04, 16:38
Die Berechnungen die innerhalb der Engine laufen nehmen sicher einen Haufen Last aus der Sache raus. Da es sich hier aber nur um eine Rückmeldung nach jedem Sektordurchflug handelt...warum nicht? Die direkte Flugbewegung wird davon ja nicht tangiert.sdack wrote:@ticaki: Das ist bestimmt richtig, nur wenn man dich ernst nimmt, dann dürfte es in letzter Konsequenz gar kein BPH, MK3 oder SDS geben.
Andererseits - es gibt nur sehr wenige Gebiete in denen dies überhaupt was bringen kann...seh ich doch richtig, oder? Die Sektoren um Argon Prime. Wo noch? Nur wenige Gebiete bilden einen grösseren Block, in dem man länger diagonal reisen kann.
Aber vielleicht in TR?
Have fun: Gala Do.
@Ghalador: Um Argon Prime herum, im Teladi Gebiet östlich davon, im Split Gebiet noch weiter östlich und südlich im Gebiet der Paraniden.
Ausserdem stelle ich mal dreist die Behauptung auf, dass wenn die Frachter kürzerer Strecken fliegen, sie damit allgemein weniger fliegen und dadurch CPU Zeit sparen. Die Route müsste ja nur einmal aufgestellt werden. BPH z.B. überprüft bei jedem Sektor den es durchquert die Preise. So problematisch wie es Skript-Meister Ticaki darstellt kann es nicht sein.
Übrigens vermisse ich den Hinweis auf meiner Verpackung die da lauten müsste: Der Bau von Fabriken kann zu einer Überschreitung der minimalen Hardware Anforderung führen.
Da ihr das jetzt wisst und es damit auf die Schachtel des Add-On schreiben werdet, fügt vielleicht auch noch dazu: ... Sowie der Einsatz von Bonus Material.
Sven
Ausserdem stelle ich mal dreist die Behauptung auf, dass wenn die Frachter kürzerer Strecken fliegen, sie damit allgemein weniger fliegen und dadurch CPU Zeit sparen. Die Route müsste ja nur einmal aufgestellt werden. BPH z.B. überprüft bei jedem Sektor den es durchquert die Preise. So problematisch wie es Skript-Meister Ticaki darstellt kann es nicht sein.
Übrigens vermisse ich den Hinweis auf meiner Verpackung die da lauten müsste: Der Bau von Fabriken kann zu einer Überschreitung der minimalen Hardware Anforderung führen.
Da ihr das jetzt wisst und es damit auf die Schachtel des Add-On schreiben werdet, fügt vielleicht auch noch dazu: ... Sowie der Einsatz von Bonus Material.
Sven
---------------------------
---------------------------
---------------------------
Schön das du die Route berechnest aber deswegen fliegt das Schiff diese immernoch nicht ab. Es muss trotzdem von Sektor zu Sektor geschickt werden da es keinen direkten Befehl dafür gibt.
Desweiteren gibt es schon eine LIB zur Routenberechnung womit man auch einzelne Sektoren sperren kann. Das Teil ist aber so CPU-lastig das es nicht eingesetzt wird. Wäre nicht verkehrt wenn das direkt in der Engine wäre aber Scripte sind halt viel zu langsam für sowas. Du soltest bedenken das gerade für Frachter solche Scripte tötlich sind da man nicht nur 10 oder 20 davon besitzt sondern gut und gerne schon mal um die 500 und mehr rumwuseln hat. Ausserdem MUSS jedes rechenintensive Script künstlich ausgebremst werden damit der Rechner nicht völlig in die Knie geht. So auch die von dir angesprochende BPH.
Mach dich bitte erstmal mit den Möglichkeiten von Scripten und deren rechenaufwand vertraut bevor du hier wilde Berechnungen auf die Scripterwelt loslässt. Ich nicht böse gemeint aber denkst du wirklich das sowas noch nicht versucht wurde?
Desweiteren gibt es schon eine LIB zur Routenberechnung womit man auch einzelne Sektoren sperren kann. Das Teil ist aber so CPU-lastig das es nicht eingesetzt wird. Wäre nicht verkehrt wenn das direkt in der Engine wäre aber Scripte sind halt viel zu langsam für sowas. Du soltest bedenken das gerade für Frachter solche Scripte tötlich sind da man nicht nur 10 oder 20 davon besitzt sondern gut und gerne schon mal um die 500 und mehr rumwuseln hat. Ausserdem MUSS jedes rechenintensive Script künstlich ausgebremst werden damit der Rechner nicht völlig in die Knie geht. So auch die von dir angesprochende BPH.
Mach dich bitte erstmal mit den Möglichkeiten von Scripten und deren rechenaufwand vertraut bevor du hier wilde Berechnungen auf die Scripterwelt loslässt. Ich nicht böse gemeint aber denkst du wirklich das sowas noch nicht versucht wurde?
Spar dir deinen Hass, ich bin zu alt dafür. Und ja, hier wurde offensichtlich noch nicht alles versucht, da es ständig neues gibt.Mach dich bitte erstmal mit den Möglichkeiten von Scripten und deren rechenaufwand vertraut bevor du hier wilde Berechnungen auf die Scripterwelt loslässt. Ich nicht böse gemeint aber denkst du wirklich das sowas noch nicht versucht wurde?
Sven
---------------------------
---------------------------
---------------------------
Irgendwie kürzen meine sowieso immer ab. ( siehe : du hast stationen in
Profitbrunnen / sendest die frachter zu nachrüsten nach RolksLos "BHP" und
wieder zurück, dann kürzen die immer diagonal über "ProfitLoch" ab )
Es wäre sicher nicht schlecht, Frachtern gewisse routen vorgeben zu können,
aber dann bin ich schon bei "MacGyver", wenn ich 500 frachter habe, geht mir mein rechner sicher in die Knie.
Profitbrunnen / sendest die frachter zu nachrüsten nach RolksLos "BHP" und
wieder zurück, dann kürzen die immer diagonal über "ProfitLoch" ab )
Es wäre sicher nicht schlecht, Frachtern gewisse routen vorgeben zu können,
aber dann bin ich schon bei "MacGyver", wenn ich 500 frachter habe, geht mir mein rechner sicher in die Knie.
Erste Bedingung für den Diagonalflug bzw. einen solchen Algorithmus, wäre es, dass die Strecke aus mindestens 3 Sektoren bestehen muss. Das sollte also nicht für jeden der erwähnten 500 Frachter zu treffen.
Wenn ich in das MSCI Handbook schaue, sehe ich folgende Befehle:
- get jumps from sector <> to sector <>
- get next sector on route from sector <> to sector <>
- get universe x index
- get universe y index
- get sector from universe index: x=<> y=<>
Damit sollte sich ein einfacher Algorithmus aufbauen lassen. Man muss sich nur die Flugrichtung merken und schauen, ob man über ein Abbiegen (Nicht-gerade-aus-fliegen), eine Route erhält, die gleich lang ist. Schon hat man eine Abkürzung gefunden. Macht man dies einmal pro Sektor und nur wenn der Ziel Sektor noch weit ist, wählt man automatisch die Diagonale.
Die Anzahl der Abfragen mittels "get next sector on route ..." würde sich zwar verdreifachen, aber auch nur, wenn es dafür in jedem Sektor ein Sprungtor in diese Richtung gibt. Merkt man sich die Himmelsrichtung der letzten Abkürzung, wird der Algorithmus noch sparsamer.
Würde mich freuen, wenn es mal jemand unvoreingenommen und mit positiver Erfahrung im Schreiben von X2 Skripten versuchen würde.
Sven
Wenn ich in das MSCI Handbook schaue, sehe ich folgende Befehle:
- get jumps from sector <> to sector <>
- get next sector on route from sector <> to sector <>
- get universe x index
- get universe y index
- get sector from universe index: x=<> y=<>
Damit sollte sich ein einfacher Algorithmus aufbauen lassen. Man muss sich nur die Flugrichtung merken und schauen, ob man über ein Abbiegen (Nicht-gerade-aus-fliegen), eine Route erhält, die gleich lang ist. Schon hat man eine Abkürzung gefunden. Macht man dies einmal pro Sektor und nur wenn der Ziel Sektor noch weit ist, wählt man automatisch die Diagonale.
Die Anzahl der Abfragen mittels "get next sector on route ..." würde sich zwar verdreifachen, aber auch nur, wenn es dafür in jedem Sektor ein Sprungtor in diese Richtung gibt. Merkt man sich die Himmelsrichtung der letzten Abkürzung, wird der Algorithmus noch sparsamer.
Würde mich freuen, wenn es mal jemand unvoreingenommen und mit positiver Erfahrung im Schreiben von X2 Skripten versuchen würde.
Sven
---------------------------
---------------------------
---------------------------
Endlich. Ein ganzer Satz als Antwort. Ich freue mich, Ticaki. Du hast mich glücklich gemacht.
Aber ich behaupte, dass es doch geht. Du musst nicht wissen wohin ein Sprungtor geht. Du musst nur wissen, ob es einen Sektor neben an gibt und ob beide zueinander ein Sprungtor haben.
Gegenfrage zum Nachdenken: Wiviele Sektoren in X2 gibt es, die nebeneinander liegen und auch jeweils ein Tor zueinander haben, die nicht mit einander verbunden sind?
EDIT:
Man kann auch mit "get next sector on route" feststellen, ob der x-1 oder y-1 Sektor eine Verbindung hat (oder x+1, y+1, x und y plus 1 ...).
Ich hab bisher keines entdeckt. Es ist zwar technisch möglich, aber gehe bitte nicht von irgendwelchen theoretischen Labyrinth-Universen aus. Die Erweiterung braucht nur im original X2 Universum zu funktionieren (und den Hinweis tragen: geht nur im original X2 Universum).
Sven
Aber ich behaupte, dass es doch geht. Du musst nicht wissen wohin ein Sprungtor geht. Du musst nur wissen, ob es einen Sektor neben an gibt und ob beide zueinander ein Sprungtor haben.
Gegenfrage zum Nachdenken: Wiviele Sektoren in X2 gibt es, die nebeneinander liegen und auch jeweils ein Tor zueinander haben, die nicht mit einander verbunden sind?
EDIT:
Man kann auch mit "get next sector on route" feststellen, ob der x-1 oder y-1 Sektor eine Verbindung hat (oder x+1, y+1, x und y plus 1 ...).
Ich hab bisher keines entdeckt. Es ist zwar technisch möglich, aber gehe bitte nicht von irgendwelchen theoretischen Labyrinth-Universen aus. Die Erweiterung braucht nur im original X2 Universum zu funktionieren (und den Hinweis tragen: geht nur im original X2 Universum).
Sven
---------------------------
---------------------------
---------------------------
4 oder 6 und wieviele gibt es in einer Custom Map?sdack wrote:Aber ich behaupte, dass es doch geht. Du musst nicht wissen wohin ein Sprungtor geht. Du musst nur wissen, ob es einen Sektor neben an gibt und ob beide zueinander ein Sprungtor haben.
Gegenfrage zum Nachdenken: Wiviele Sektoren in X2 gibt es, die nebeneinander liegen und auch jeweils ein Tor zueinander haben, die nicht mit einander verbunden sind?
btw. wieviele Sektoren gibt es die von einer solchen Abkürzung profitieren würden und in wieviele wäre es nur vergeudete Rechenzeit?
Gruß ticaki
Zur Zeit nicht aktiv
Herr schmeiss Hirn vom Himmel!!!!!!!ticaki wrote:4 oder 6 und wieviele gibt es in einer Custom Map?sdack wrote:Aber ich behaupte, dass es doch geht. Du musst nicht wissen wohin ein Sprungtor geht. Du musst nur wissen, ob es einen Sektor neben an gibt und ob beide zueinander ein Sprungtor haben.
Gegenfrage zum Nachdenken: Wiviele Sektoren in X2 gibt es, die nebeneinander liegen und auch jeweils ein Tor zueinander haben, die nicht mit einander verbunden sind?
Gruß ticaki
Und wenn du eben genau an diesen Sektoren ankommst (ich denke ich weiss welche du meinst), dann fliegst du eben nur den vorgegebenen Sektor an und machst eben keine Abkürzung.
Erklär mir, wo mein Fehler ist. Ich sehe keinen!!!!
Sven . o O (Kein Grund aggressiv zu werden, meint er ...)
---------------------------
---------------------------
---------------------------