[Mod-Release] Oblivion Script Optimization DV

Trr Kah

Abenteurer
Von Hrmn, Version 1.0

Während des Spiels laufen unsichtbar für den Spieler jede Menge Skripte im Hintergrund. Wie Hrmn heraus fand arbeiten manche davon aber nicht so effizient wie sie könnten. Deswegen hat er sich hingesetzt und sie umgeschrieben, so dass sie Performance sparen. Sprich: mit dieser Mod sollte euer Spiel ein wenig flüssiger laufen.

Eine Übersetzung wurde nur nötig, weil einige überarbeitete Skripte Messageboxen enthalten.

WICHTIG: Dieses Plugin immer als erstes vor allen anderen PlugIns laden!
Das ist automatisch der Fall, solange die Esp nicht verändert wird. Das Problem liegt an folgendem: wird ein Skript in Oblivion durch mehrere Mods verändert, existieren für das Spiel nur die Änderungen, die das zuletzt geladene PI macht. Der kleine Performanceschub, den Oblivion Script Optimization durch Änderungen an einem Skript bringt, ist es aber nicht wert, dadurch wichtigere Einträge z.B. für Quests oder gar komplette PlugIn-Funktionen zu verlieren.
DOWNLOAD

Fragen, Anregungen und Kritik sind wie immer gern gesehen. :)
 
Vielen vielen Dank für diesen Mod, ich werd ihn heute mal testen :) Ich habe nur nen schwächeren Rechner, und da ist jeder Performenceschub ein wahrer Segen, besonders wenn dabei nichts vom Spielgefühl oder der Grafik verloren geht.
 
Hallo,

selbst auf einem 1000er Athlon mit einer 128er Karte und 512 MB - also der
für mich kleinsten Konfiguration meiner Testrechner für Obli überhaupt -
zweifle ich an, das der Rechner dadurch Geschwindigkeit gewinnen wird. ;)

Ahem, selbst der langsamste Rechner führt die paar laufenden Skripte doch in
einem Bruchteil der Zeit aus. Das Problem sind nicht stetig laufende Skripte
sondern doch ehrlich vielaufrufe und Skripte, die über Zeit laufen. Und die
AI / KI einzelner NPCs.

Ich habe nun in 1,8 Jahren und tausenden Stunden genug Tests auf Rechnern
gefahren und kann sagen, das ob die normal laufenden Skripte lang oder kurz
sind: diese eh compiliert schnell abgearbeitet werden. Testweise habe ich bis zu 1000 weitere Skripte laufen lassen.



Also als Modder von ROO gefragt:

wie kannst Du nachweisen, das OBlivion schneller läuft? Und komm mir bitte
nicht mit unsicheren Dingen wie Fraps und FPS ;)

Ich will die Idee hier nicht schlecht machen - nur a) wird dies kaum bis nichts
an "Performance" bringen aus meiner Erfahrung und b) warum inS kripten
herumwühlen = Risikofaktor.

Aber ich lasse mich gerne überzeugen.

Ich bin da jetzt ehrlich neugierig - denn ich habe immer auf drei Systemen
"getestet" und das auch mit einem laufenden Skript, welches mir Werte
ausgibt. Ich konnte zwischen kleinsten PC und grössten mit vielen
oder mit meinen wenigen Skripten keine Unterschiede jeweils feststellen...

Ray
 
Zuletzt bearbeitet:
Na ja, der Gedanke das die Scripts im Hintergrund endlich alle mal gaaaannnzzz richtig laufen ist doch mal ein gute Gedanke^^
 
Ich hatte das mal als EV laufen und sehe ehrlich gesagt keinerlei Unterschiede.

Die Hoffnung dabei war, trotz bUseHardDriveCache=1, auf 2 GB getrimmter Speichernutzung und LowTriPolyGrass permanent auftretende Ruckler beim Fortbewegen etwas einzudämmen, vor allem, wenn viele Gegner in der Nähe sind oder ein Oblivion- Tor in Sichtweite gerät.

Daran änderte sich aber nichts.

Teilweise ist das so arg, daß ich kein Pferd benutzen kann, weil sich das Spiel beim Nachladen "verschluckt" und crasht, wenn man zu schnell unterwegs ist.

Ich vermute daher, daß das Datenranschaufeln von der Festplatte einen viel größeren Einfluß auf den Spielablauf hat als die Scripts, und habe die Mod wieder gecancelt, zumal ich annehme, daß sie für einige Extra- Crashs zuständig ist.
 
Muss mich da leider Raimund und Rammel anschließen. Performance bringt da eher ein Umstieg auf schneller SATAII-Festplatten mit mehr Cache.
 
Ich habe SATA2 mit 16 MB Cache. Nutzt alles nix. Je mehr Mods, desto mehr Daten müssen ran, und die Festplatten sind nun mal der Flaschenhals des Systems.
 
Dito. Habe auch solche Festplatten (Spiel-Festplatte sogar mit Raid). Der Tipp war eher für die Leute, die noch versuchen es etwas besser hinzubekommen.

Die Frage die sich mir stellt ist! Warum läuft SI um einiges flüssiger?
(Weil noch weniger Mods integriert sind??)

Was bei mir auf alle Fälle einen totalen Performance-Schub brachte, war der Umstieg von 2xATI 1950XTX (Crossfire) auf Nvidia 8800 Ultra. Jetzt habe ich sogar das Gras wieder wachsen lassen^^

Das was Du oben beschrieben hast (mit Pferd aufsitzen) habe ich nicht. Bei mir läuft eigentlich alles sehr flüssig. Nur beim laufen habe ich immer wieder dieses Verschlucken.(um es mal mit Deinen Worten auszudrücken)

mfg

Bully
 
Teilweise ist das so arg, daß ich kein Pferd benutzen kann, weil sich das Spiel beim Nachladen "verschluckt" und crasht, wenn man zu schnell unterwegs ist.

Ich vermute daher, daß das Datenranschaufeln von der Festplatte einen viel größeren Einfluß auf den Spielablauf hat als die Scripts, ...
Das Oblivion abstürzt wenn es viel zu laden gibt, und zwar (meist) mit Meldung "Die Anweisung in '...' verweist auf Speicher in '...'. Der Vorgang 'read' konnte nicht auf dem Speicher ausgeführt werden. ..." kann ich bestätigen. Und zwar bekomm ich das zuverlässig reproduziert wenn ich mit Akatosh durch die Gegen fliegen will. In Gegenden mit mehr Details reicht schon einfaches Rennen aus wenn ich für Screenshots die Auflöung auf 1680x1080 und Details auf Maximum habe. Oblivion will dann schon Sachen anzeigen die noch gar nicht im Speicher sind, weil das Laden einfach zu lange dauert.
Auch mit angepassten Details und 1024x640 ist das Nachladen der Flaschenhals, im Debugtext (tdt in die Konsole eingeben) zu erkennen.

Und wenn man eh nur im Exterior 15 fps hat, bringen auch effizienter ablaufende Skripte nicht viel. Auf schnellen PCs dürfte der Performanceshub kaum noch etwas ausmachen.

Trotzdem Danke fürs übersetzen. Möglicherweise möchte es ja doch jemand probieren.
Es wäre schön, wenn derjenige dann mal kurz einen Statusbericht abgibt.

Sämtliche Oblivion-Tore sorgen für weitere Performance-Einbrüche, trotz deaktiviertem Refraction-Shading.
 
Hallo Leute,

das Thema hat mich jetzt neugierig gemacht.

Da ich in meinem Translator gerade eine Funktion zum Vergleichen von Plugins einbaue, habe ich mir dieses Plugin mal zum Testen vorgenommen. D.h. ich habe den Inhalt (also die Skripte) mal mit den Originalen (aus der Oblivion.esm) verglichen.

Bei einigen Stichproben erhielt ich vorwiegend Ergebnisse wie das Nachfolgende.

Original:
If GetStage TG07Lex >= 10 && GetStage TG07Lex < 100
...​
End If

Änderung durch das Plugin:
If GetStage TG07Lex <= 10
If GetStage TG07Lex < 100​
...​
End If​
End If

Hier wurde also lediglich der Vergleichsoperator && gegen ein geschachteltes If ausgetauscht.

Wie bitte soll das Performance optimieren :huh:

Beim Original If wird der Ausdruck durch den Vergleichsoperator True, wenn beide Bedingungen zutreffen.

Bei der Änderung wird ein Ausdruck ausgewertet, wenn er True ist wird der zweite ausgewertet.

Sorry, ich mache sehr ungern die Arbeit von anderen Leuten schlecht, aber der Ersteller dieses Plugins hat aus meiner Sicht nicht sehr viel Ahnung von Programmierung im Allgemeinen. Vergleichsoperatoren sind in allen Programmiersprachen vorhanden, eben um z.B. geschachtelte If's zu vermeiden. Weiterhin weiß der Ersteller des Plugins mit Sicherheit nicht, was der Skriptcompiler aus diesen Konstrukten macht. Quasi zu behaupten, dass ein geschachtelter If schneller ist als die Auswertung mit einem Vergeleichsoperator halte ich doch für bedenklich :(

Weiterhin möchte ich RaimundP recht geben. In dem Plugin wurden 577 Skripte verändert. Ich bezweifle stark dass der Ersteller alle Änderungen getestet hat. Ich sehe da ebenfalls einen ziemlichen Risikofaktor.

Alle die etwas schwachbrüstige PC's haben sollten aus meiner Sicht keine Hoffnung in dieses Plugin setzen.

Schade um die Zeit die Du für die Übersetzung aufgewendet hast, Trr Kah :cry:
 
@Tecra59: als ich das gesehen habe, musste ich an genau das gleiche denken. Diese gezeigte Optimierung ist keine Optimierung...
Wenn z.B. der erste Vergleich einer IF-Überprüfung mit &&-Operator fehlschlägt, wird der zweite Vergleich so oder so nicht mehr ausgeführt, da muss nichts mehr geschachtelt werden (im Gegenteil könnte diese Verschachtelung sogar aufwendiger sein, ein guter Compiler optimiert dies aber so oder so...).

Mein eigentlicher Grund zu Posten:
ich habe einige Skripte entdeckt, die im Vergleich einfach gleich waren, in denen wurde nichts optimiert :? (mit dem Mod Translator).
z.B.: AbandonedMineTrap02Script
Mod:
"
scriptName AbandonedMineTrap02Script

short triggered

begin gameMode
if triggered
else
if getDistance player < 160
playgroup forward 1
AbandonedMineTrap03REF.playgroup unequip 1
set triggered to 1
endif
endif
end
"

Original:
"
scriptName AbandonedMineTrap02Script

short triggered

begin gameMode
if triggered
else
if getDistance player < 160
playgroup forward 1
AbandonedMineTrap03REF.playgroup unequip 1
set triggered to 1
endif
endif
end
"

@TrrKah: danke für die Arbeit. Unsere Kritik soll deine Leistung keinesfalls schmälern :)

MfG,
ThreeD
 
Keine Sorge, ich fühle mich keineswegs beleidigt. :)

Ich persönlich versteh nicht viel von Skripten und fand Hrmns Idee gut. Es war auch keine große Sache, es zu übersetzen, also hab ich es gemacht. Wenn es Ärger im Spiel verursacht fliegt es einfach wieder raus.
Was eure ganzen Skriptvorschläge angeht: ich bin mir sicher Hrmn würde sich über eine Diskussion freuen. :)
 
Ideenmäßig scheint die Mod gut zu sein, aber oft hilft einfaches Defragmentieren mehr als diese Mod. Ich hab neulich defragmentiert und gefühlte 50 % mehr Leistung bekommen... (e: fragmentierungsgrad nach O&O Defrag: 28 %)
 
Ich stimme da Ray ganz und gar zu.

Desweiteren: Ein völlig neu installiertes Oblivion ohne jegliche Mods läuft schon recht flüssig. Je mehr Mods dazu kommen, desto langsamer läuft alles ab, logischerweise - und da wird auch diese Mod nichts dran ändern, denn einmal ändert die Modifikation nur originale Skripte, die teilweise durch diverse Mods eh wieder abgewandelt werden (zur ursprünglichen Form plus Abänderungen für die jeweilige Mod.) und desweiteren ist fraglich, ob diese "Optimierungen" überhaupt etwas bringen können - denn man weiß im Endeffekt gar nicht, wie die compilierten Skripte nachher ausschauen bzw. wie Oblivion intern mit Skriptkommandos umgeht.
Bei so vielen Faktoren lasse ich lieber meine Finger davon ;)
 
Solange man den als erstes lädt und keines der Scripte kaputt ist kann es doch garnicht schädlich sein?

Wie bereits gesagt ist der Gedanke endlich alle Scripts sauber laufen zu haben recht angenehm