Rotierende Asteroiden

Hier ist der ideale Ort um über Scripts und Mods für X³: Terran Conflict und X³: Albion Prelude zu diskutieren.

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

User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz »

Ded_Moros wrote:Wahrscheinlich nicht perfekt, aber wenig Rechenaufwand. Und habe noch keine Probleme festgestellt.
Nun ja, das ist der maximal mögliche Rechenaufwand. Kein Wunder daß das mit Trümmern nicht mehr funktioniert. =P
My complete script download page. . . . . . I AM THE LAW!
There is no sense crying over every mistake. You just keep on trying till you run out of cake.
User avatar
Ded_Moros
Posts: 76
Joined: Mon, 6. Nov 06, 22:43
x3tc

Post by Ded_Moros »

Gamma-Rotation kannst du vermutlich ohne "optischen Verlust" komplett rausnehmen.
Spart schon wieder Rechenzeit. =)
Das werde ich allerdings mal ausprobieren.
|K.O.S.H.
Posts: 3728
Joined: Fri, 19. Dec 03, 10:36
x3tc

Post by |K.O.S.H. »

Gazz wrote: Außerdem würde ein so komplexer Filter vermutlich schon weit mehr Rechenzeit verbraten als die vielleicht 10 Zeilen, die man braucht um einen Astro zu drehen.
da wär ich mir nicht so sicher.
habe grade ausführlich darüber anchgedacht.
fakten:

ein astro hat mehrere 10000 vertices.
die sind aber referentiell zum lokalen koordinatensystem gehalten -> die rotation ist beim rendern egal.

bei meien rmethode geht es um mini-astros.
davon sind mehrere hundert, oder gar tausend in manchen sektoren vorhanden.

wenn du von sagen wir mal 200 miniastros 150 ausblenden kannst, hast du definitiv nen vorteil.

wir können das ja mal durchexerzieren.

eine rotation benötigt was?
2 mal sin(x), einmal -sin(x) und einmal cos(x), wenn du um nur eine achse rotierst.

was bei -sin(x) rauskommt ist das zweierkomplement von sin(x), also trivial...

sind wir imemrnoch bei zwei trigonometrischen funktionen.

die sind meist per lookup-table implementiert und zwar so
http://www.forth-ev.de/wiki/doku.php/words:sinus


wenn du dir dne algo dot anguckst, dann wirst du feststellen, dass dort wesentlich mehr gemacht wird, als 3 integer-vergleiche und 0.5 mal setzen eines flags.

eigentlich ist es völlig egal, wie man den sinus berechnet.
du kommst niemals so effizient hin, wie mit den angesprochenen 3 vergleichen.
die frage ist nur, ab welcher anzahl es sich lohnt.

wobei die 3 vergleiche ja nicht korrekt sind.
im schnitt müssten es weniger sein, nämlich 1,5.

und da dürfte dann die ausbeute doch enorm hoch sein.

so.
um das ganze mal zu untermauern hab ich in c++ ein miniprog geschrieben.

10000000 mal sinus berechnen vs genauso oft 2 integervergleiche

ergebnis:
sinus. 1.453 sekunden
integervergleiche: 0.032 sekunden

also lächerliche 45 mal schneller

achja, wir haben ja zwei winkelberechnungen -> 90 mal schneller
ach ja, der durchschnitt würfte bei 1,5 und nicht bei 2 liegen -> 120 mal schneller.

q.e.d.
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!
User avatar
Ded_Moros
Posts: 76
Joined: Mon, 6. Nov 06, 22:43
x3tc

Post by Ded_Moros »

Wow.
Hiermit erteile ich Gazz und Kosh im Namen aller, die rotierende Astros, Minis, Trümmer wollen, den Auftrag, ein vernünftiges Skriptpaket dazu zu schreiben. Sagen wir, bis Sonntag nachmittag :P. Ihr habt euch gerade durch eure Beiträge qualifiziert (durch eure Skriptarbeit wart ihr eh schon im Recall, also los).
Und bitte lasst benachbarte Trümmerfelder um ein gemeinsames Zentrum kreisen, sieht sonst nicht so gut aus.

mfg
Väterchen Frost
|K.O.S.H.
Posts: 3728
Joined: Fri, 19. Dec 03, 10:36
x3tc

Post by |K.O.S.H. »

das letzte ist ohnehin kein problem.
denke immer daran mein sohn: matrizenmultiplikation ist nicht kommutativ.

mit sonntag wirds wohl eher nichts werden ;)
im ernst, ich würde das sogar machen, aber nicht mit dem ekligen scripteditor.

außerdem laufen für tc andere projekte.
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!
User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz »

|K.O.S.H. wrote:eine rotation benötigt was?
In TC benötigt sie 2 Integer-Additionen.

- Alpha/Beta abfragen, (evtl unnötig wenn es sowieso als Schleife läuft)
- Je nach gewünschter Rotationsgeschwindigkeit Offset addieren
- Set rotation
- wait

Schlimmstenfalls muß man noch den Überlauf bei 0/64000 abfangen aber es kann durchaus sein daß Set rotation als brave Sinusfunktion auch den Überlauf problemlos schluckt.

Das wären dann 6 Zeilen Script mit ganzen 2 Integeradditionen.
Sin/Cos ist (scripttechnisch) dabei überhaupt nicht beteiligt, da man direkt mit der Rotationsrichtung arbeitet.


Trigonometrie und Matrizenmanipulationen mögen zwar im hardcode nicht aufwendig sein aber sie verbrauchen sehr viele Scriptzeilen

Das Hauptargument gegen so einen Line of Sight Filter ist aber immer noch, daß man bei Außenansicht und Turretansichten sehr viele nicht-drehende Astros sieht.
Außerdem müste so ein LOS-Filter quasi in Echtzeit berechnet werden, da ein Jäger sich sehr schnell drehen kann also müßte der Filter sehr schnell und für sehr viele Astros berechnen, was irgendwie keinen Vorteil bringt.

Ich halte einen reinen Entfernungsfilter für das einzig Sinnvolle.


@ Ded_Moros

Eure Jeditricks funktionieren bei mir nicht!
My complete script download page. . . . . . I AM THE LAW!
There is no sense crying over every mistake. You just keep on trying till you run out of cake.
|K.O.S.H.
Posts: 3728
Joined: Fri, 19. Dec 03, 10:36
x3tc

Post by |K.O.S.H. »

aeh

ich bezieh mich nicht auf das interface, sondern auf die grafik-api, bzw den quellcode selbst

also sind und cosinus benötigst du in jeder rotationsmatrix.
das ist die grundlage, sowohl für openGl, als auch für directx.
was der scripteditor als argumente bekommt ist völlig wurst.

eine stufe tiefer, also in der grafik-api wird das ganze in ne matrix gestopft und da fängt die trigonometrie an.

hier mal die grundlagen
http://de.wikipedia.org/wiki/Drehmatrix

nur wird in der computergrafik mit homgenen koordinaten gearbeitet (also 4x4, statt 3x3 matrixzen).

mit dem sichtfeld hast du natürlich recht.
dann schneiden wir halt nichts auf der positiven z-achse ab -> problem effizient gelöst.
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!
User avatar
-[e1337e.weazel]-
Posts: 468
Joined: Sat, 31. Jan 04, 17:40
x3tc

Post by -[e1337e.weazel]- »

Sauber, wann gehts an die Umsetzung? :D

[ external image ]
***modified*** und stolz drauf
"Je dunkler der Keks, desto bunter die Seite!"
[ external image ]
DonMichael71
Posts: 46
Joined: Thu, 28. Feb 08, 21:29
x3tc

Post by DonMichael71 »

Hallo Zusammen,

hab das Script heute mal getestet und es funktioniert tadellos. Was mir aber aufgefallen ist: Bei Nutzung des Script´s funktioniert T.U.B.S nicht mehr...Nach entfernen der rotierenden Astros war T.U.B.S wieder vorhanden. Ich bin was Scripts angeht nicht so bewandert wie andere hier, aber wie es aussieht scheinen sich die Beiden Scripts nicht zu vertragen. Ist es möglich das "rotierende Astro" Script abzuändern, damit T.U.B.S auch damit auskommt? Bzw. was müßte ich ändern, und wie?
MfG
DonMichael71
User avatar
Ded_Moros
Posts: 76
Joined: Mon, 6. Nov 06, 22:43
x3tc

Post by Ded_Moros »

Hi. Ich weiß, das es TUBS gibt, habe es mir aber noch nicht wirklich angesehen. Was genau hat nicht mehr funktioniert? Waren die Befehle verschwunden, oder kamen untypische Meldungen oder oder oder?

Die rotierenden Astros haben kein tFile, benutzen keine Commands, keine Slots, nix. Nur eine globale Variable wird erzeugt, und die gibts in TUBS nicht (gerade grob überflogen). Vielleicht ist der Rechner so mit Rotieren beschäftigt, das für TUBS keine Zeit mehr bleibt. Da warten wir mal wieder auf die Meinung der Profis, die natürlich wieder bescheidenerweise nicht so genannt werden wollen (aber sich insgeheim doch darüber freuen, oder?). Lasst euch nicht so lange bauchpinseln, wo liegt der Hase im Pfeffer?

mfg
Väterchen Frost
DonMichael71
Posts: 46
Joined: Thu, 28. Feb 08, 21:29
x3tc

Post by DonMichael71 »

Hi,

Es waren die Befehle verschwunden. Im Kommandokonsolenmenü gab es den Punkt "Allgemein" nicht mehr. Unter diesem Punkt findet sich TUBS.

Ich hab Deine Beiden xml Dateien einfach in den Sriptordner kopiert gehabt. Dort sind auch die xml Dateien von u.a. TUBS. Keine Ahnung warum die Beiden Scripte nicht zusammen funktionieren. Nach löschen Deiner Beiden xml Dateien war der Punkt "Allgemein" und TUBS wieder verfügbar...

Bin mir nicht sicher ob es an der Rechnerpower liegt. Hab zwar gemessen an aktuellen Systemen kein Highend-System mehr, aber "untermotorisiert" würd ich ein Quadcore 2.4 Ghz/4GB RAM 800mhz/ Geforce GTX8800 768 MB System auch nicht bezeichnen...


MfG
DonMichael71 :roll:
Last edited by DonMichael71 on Sat, 28. Feb 09, 17:57, edited 1 time in total.
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

wäre es möglich, dass im setup-script oder in einem von diesem nicht mit START aufgerufenen Script ne Endloschleife ist?? *idee einbringt*

PS ich hab zur zeit keinen nerv mir das anzusehen.. das ist nur so nen denkanstoss ;)
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
Reisser
Posts: 764
Joined: Mon, 28. Feb 05, 15:39
x4

Post by Reisser »

Ded_Moros wrote:Löschen und die globale Variable 'rotiere' zu null setzen.

mfg
Väterchen Frost
Zum Thema "Scriptlöschung" ... nun ... schön ... einfach die globale Variable "rotiere" auf Null setzen.

Nun - es soll Leute geben (wie mich) die wissen nicht wie sie mal so fix an eine globale Variable rankommen - die liegt ja nicht auf dem Tisch so rum :P

Ich kann ja noch einen DeInstall-Script aus dem Editor anstarten - das war's aber schon im Großen und Ganzen ...
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

@ Reisser:

Wollte eigentlich gerade eine Schritt für Schritt Anleitung für dich schreiben, habe mich dann umentschieden, da dieser Einzeller schneller geschrieben ist, als so eine Anleitung. ^^
Hier das Uninstall-Skript:

http://www.fileuploadx.de/174202

Der Tisch:
001 set global variable: name='rotiere' value=null

MfG,
ScRaT
User avatar
Reisser
Posts: 764
Joined: Mon, 28. Feb 05, 15:39
x4

Post by Reisser »

Sehr nett von dir :wink: jetzt kann ich den Script wenigstens auch mal ausprobieren ohne mich gleich an ihn ketten zu müssen falls die Performance dann doch in den Keller geht ... oder ich mit der Zeit einen Drehwurm bekomme :P
User avatar
Ded_Moros
Posts: 76
Joined: Mon, 6. Nov 06, 22:43
x3tc

Post by Ded_Moros »

Danke ScRaT. Wieder zwei wertvolle Minuten gespart. Aber Wochenende ist Wochenende, permanent kann der Riemen nicht auf der Orgel liegen,
die Familie hat auch Rechte (naja, ein paar :) ).
Reisser wrote:wäre es möglich, dass im setup-script oder in einem von diesem nicht mit START aufgerufenen Script ne Endloschleife ist?? *idee einbringt*
*Ideen gern eingebracht hab*
Ehem, wie gesagt, skripten und ABC-Schütze: "while Playership" im Setup ist wohl ne Endlosschleife, aber es sind auch ein paar @waits drin, sollte mal wer kontrollieren und verbessern oder zeigen, wie's geht, ich kanns nur immer wieder sagen, bei mir läuft skripten nach der Versuch-Irrtum-Methode.

Genüßlich ein Bier öffnend und mit scheelem Blick zur Familie schielend...
Väterchen Frost
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

Ded_Moros wrote:
[color=red]UniTrader[/color] :roll: wrote:wäre es möglich, dass im setup-script oder in einem von diesem nicht mit START aufgerufenen Script ne Endloschleife ist?? *idee einbringt*
Ehem, wie gesagt, skripten und ABC-Schütze: "while Playership" im Setup ist wohl ne Endlosschleife, aber es sind auch ein paar @waits drin, sollte mal wer kontrollieren und verbessern oder zeigen, wie's geht, ich kanns nur immer wieder sagen, bei mir läuft skripten nach der Versuch-Irrtum-Methode.

Genüßlich ein Bier öffnend und mit scheelem Blick zur Familie schielend...
Väterchen Frost
ok, genau das macht dieses Script inkompatibel zu so ziemlich allen anderen Scripten, denn die setup-scripte werden alle automatisch nacheinander ausgeführt... wenn nun eines durch eine Endlosschleife nie beendet wird werden so einige Setup-Scripte deswegen nicht ausgeführt... um dir zu erklären, wie das besser funktioniert hab ich allerdings zur zeit nicht den Nerv...
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
Ded_Moros
Posts: 76
Joined: Mon, 6. Nov 06, 22:43
x3tc

Post by Ded_Moros »

UniTrader wrote:...funktioniert hab ich allerdings zur zeit nicht den Nerv...
Das passt momentan zur Simmung in meiner Familie. Wär aber schon wichtig. Wie gehts richtig? Und die @waits, haben die keinen Einfluss? Und was heißt der Reihe nach, wie geht die Reihe? alphabetisch? Leute, lasst mich nicht auf Knien sterben...

Edit:
DonMichael71 wrote:Es waren die Befehle verschwunden. Im Kommandokonsolenmenü gab es den Punkt "Allgemein" nicht mehr. Unter diesem Punkt findet sich TUBS.
Wenn wirklich einige SetupSkripte nicht ausgeführt werden, hilft es vielleicht, setup.plugin.rotierende.Astros umzubenennen in z.B. setup.zz.plugin.rot...., damit dieses erst ganz zum Schluß ausgeführt wird?


mfg
Väterchen Frost
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

so, jetzt hab ich endlich mal richtig zeit und lust...
Ded_Moros wrote:
DonMichael71 wrote:Es waren die Befehle verschwunden. Im Kommandokonsolenmenü gab es den Punkt "Allgemein" nicht mehr. Unter diesem Punkt findet sich TUBS.
Wenn wirklich einige SetupSkripte nicht ausgeführt werden, hilft es vielleicht, setup.plugin.rotierende.Astros umzubenennen in z.B. setup.zz.plugin.rot...., damit dieses erst ganz zum Schluß ausgeführt wird?


mfg
Väterchen Frost
wird nicht funktionieren, weil die setups in zufälliger bzw. nicht alphabetischer reihenfolge ausgeführt werden.. (aber irgendein system gibt es, da es immer dieselbe reihenfolge ist..) das hab ich zu reunion ausführlichst getestet... ausserdem wäre das ebenfalls sinnlos, wenn das jeder so machen würde der einfach nur ne endlosschleife machen will dann könnte man nur ein solches Script gleichzeitig verwenden...









und jetzt zur konkreten lösung:

benenne das momentane Script so um, dass es kein setup-script mehr ist und erstelle danach ein neues Setup-Script, welches folgende Zeilen enthält:

if get global variable: name='rotiere'
| @ START: null -> call script «Name des Hauptscriptes»
end
return null

ein hinweis noch: die GV 'rotiere' würde ich umbenennen, weil dieser name absolut nichtssagend ist...


PS und sei bitte etwas nachsichtiger mit unter Jetlag leidenden Scriptern ( :D) ich bin immerhin am SA wieder aus Griechenland zurück gekommen..
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
Ded_Moros
Posts: 76
Joined: Mon, 6. Nov 06, 22:43
x3tc

Post by Ded_Moros »

Griechenland? Jetlag? Ich darf doch bitten. Das sind doch höchstens 25 Minuten... :D (Im Oktober auf Kreta war, also Bescheid weiss).

Vielen Dank für die schnelle Lösung. Werde es zeitnah umbasteln.


Mfg
Väterchen Frost

Return to “X³: Terran Conflict / Albion Prelude - Scripts und Modding”