Vorstellung Oblivion GSI von Newraven

Alexi

Ehrbarer Bürger
Ich bin im TES-Info forum über das hier gestolpert.

Oblivion GSI

Dieser Mod macht im grunde genommen nichts, allerdings ist er trotzdem sehr nützlich

Jetzt fragt ihr euch sicherlich: "Hä wie geht denn das???" Ich werde einfach mal Newreavens Post hier rein spoilen der kann es euch besser erklären.

Zitat von der Readme

Global Settings Interface (GSI)
Eine Schnittstelle für die Kommunikation zwischen PlugIns.
Eine Modifikation für The Elder Scrolls IV: Oblivion
Version 1.0: Teleport​


1. Inhalt

(wird hier nicht zitiert, weil nur ein Inhaltsverzeichnis)

Hinweis: Wenn in dieser Datei von Mod oder PlugIn die Rede ist, ist ein und das selbe gemeint. Wenn von Dungeon die Rede ist, so ist damit in erster Linie ein Dungeon gemeint, weil es eben wohl das Haupteinsatzgebiet ist, das jeweils dort beschriebene gilt aber genauso gut für jeden anderen Ort, an dem der Spieler vom außerplanmäßigen Verlassen abgehalten werden soll.


2. Beschreibung

Dies ist das erste inhaltslose und trotzdem praktische PlugIn der Welt. Es tut selbst nichts - es ist dazu geschaffen, anderen PlugIns bzw. den Spielern, die sie spielen, zu helfen, indem es inhaltliche Probleme, die in der Kombination verschiedener PlugIns auftreten könnnen, aus der Welt zu schaffen versucht.

Das Grundproblem: Viele Modder verwirklichen in ihren PlugIns auch natürlich viele Ideen. Da kommt es mitunter vor, das eine für das eine PlugIn wichtige Komponente durch ein anderes PlugIn beeinträchtigt wird. In diesem Fall gehen wir einmal konkret vom Teleportieren aus. Weitere Einsatzmöglichkeiten sind natürlich möglich, aber momentan noch nicht implementiert. Also: Ein Questmodder erschafft einen wunderschönen, riesigen Dungeon und versperrt die Eingangstür, so das der Spieler diesen Dungeon erst verlassen kann, wenn er eine bestimmte Aktion durchgeführt hat. Sei es nun den Dungeon durchspielen und den Endgegner besiegen, einen Schalter betätigen oder auch nur eine bestimmte Zeit darin verbringen. Nun setzen aber die meisten Spieler mehrere PlugIns ein. Ein weiteres PlugIn ermöglicht dem Spieler, beispielsweise mittels Zaubersprüche Orte zu markieren und zu diesen jederzeit zurück zu kehren oder es wird ermöglicht, sich durch die Benutzung eines Items jederzeit zu einem bestimmten Ort - beispielsweise dem Eigenheim - zu teleportieren. Der Modder, der den Dungeon erschaffen hat, hat nun das Problem, das er aus technischen Gründen keinerlei Möglichkeit hat, Einfluss darauf zu nehmen, was die anderen PlugIns dem Spieler ermöglichen. Er kann also nicht sagen: hier in diesem Dungeon funktioniert dein Item oder der Rückkehr-Zauber nicht. Bestenfalls zerstört es nur die Atmosphäre, wenn der Spieler sich dennoch teleportiert, obwohl es nicht vorgesehen war. Schlimmstenfalls hingegen hat der Modder Bedingungen geschaffen, die es erfordern, das der Spieler an diesem Ort bleibt und ihn erst wieder verlassen kann, wenn er das dort getan hat, was der Modder vorgesehen hat. In diesem Fall kann es sogar zu schweren Bugs bis zu unspielbaren Questabschnitten kommen. Und hier kommt GSI ins Spiel. Die GlobalSettingsInterface.esm fungiert als eine Art Vermittler zwischen beiden PlugIns. Das QuestplugIn sagt der GlobalSettingsInterface.esm, das teleportieren hier nicht erwünscht ist, das PlugIn mit der Teleportationsmöglichkeit fragt, bevor es das Teleportieren ermöglicht, bei der GlobalSettingsInterface.esm an, ob teleportieren erlaubt sein soll.

Die GlobalSettingsInterface.esm enthält dabei eigentlich nichts weiter als eine globale Variable, die von dem jeweilen PlugIn gesetzt und vom anderen ausgewertet wird. Das führt dazu, das alles sehr übersichtlich bleibt und das auch Spielern, die überhaupt kein PlugIn mit Teleport-Funktion einsetzen, diese Masterdatei ohne Probleme aktiviert haben können. Und das hat letztlich wieder den Vorteil, das jeder Modder seinem PlugIn die GlobalSettingsInterface.esm beilegen kann/soll, wodurch dieses ganze Funktionsweise erst ermöglicht wird. Das Ganze ist natürlich ebenfalls völlig sprachneutral.

Praxis: Die Grundidee entstand, als sich ein Spieler im Forum meldete, den es störte, das er sich mit den Markieren & Rückkehr-Sprüchen aus Oblivion Improved aus einem Dungeon von Rungs Verbesserter Magiergilde teleportieren konnte. Zwar war uns das Problem generell bekannt, aber nie hat sich jemand daran versucht es zu lösen. Leider kann weder Oblivion Improved auf irgendetwas zugreifen, das sich nur in der Verbesserten Magiergilde befindet, noch umgekehrt. Also musste ich ein wenig umdenken und "brainstormte" ein wenig mit dem User, der das Problem auf den Tisch brachte. Da die Sache kein spezifisches Problem von Oblivion Improved oder der Verbesserten Magiergilde ist, sondern eines, das sehr viele PlugIns betrifft, war klar, das eine etwas globalere Lösung her musste. Nun liegt es an euch, den Moddern, dieses System, welches euch und euren Usern keinerlei Nachteile bringt, weitläufig zu unterstützen und den Spielern eurer PlugIns mit einem sehr geringen Maß an Mehraufwand genau das Spielgefühl zu geben, das ihr mit eurer Arbeit für sie vorgesehen hattet.


3. GSI für Spieler

Spieler spielen die Inhalte, die von Moddern erstellt werden jetzt so, wie die Modder sie auch geplant haben. Keine Ungereimtheiten mehr, weil man den eigentlich nicht verlassbaren Dungeon jetzt doch verlassen hat. Das mag für die einen erstmal ein Nachteil sein, für die anderen ist es ein Vorteil, weil die ursprünglich geplante Atmosphäre erhalten wird. Zu einem wirklichen Vorteil wird es aber für alle spätestens dann, wenn man plötzlich mal einen solchen Dungeon verlassen hat, man aber - weil der Modder eben das nicht eingeplant hat - nicht wieder hinein kommt oder gar ein NPC draußen auf einen wartet, der sich dafür bedankt, wie gut man seine Aufgabe in Dungeon xyz gelöst hat - dabei war man dort noch garnicht fertig... mit dieser Komponente gehören solche Dinge der Vergangenheit an, sofern die Modder bereit sind, die paar minimalen Änderungen, die erforderlich sind, umzusetzen. Fragt doch einfach den Autor eines Mods, den ihr mögt und der genau dieses Problem hat, ob er nicht bereit wäre, sich - ohne viel Aufwand - mal die 5 Minuten Zeit zu nehmen und seinen Mod auf diese Art "abzusichern". Es sollte auch in seinem Interesse sein, denn jeder Modder will, das man seine Inhalte so erlebt, wie er sie sich vorgestellt hat. Und wenn ihr einen Mod einsetzt, der euch das Teleportieren auf irgendeine Art ermöglicht? Schreibt den Autor an und sagt ihm, das es nun eine sehr einfache Möglichkeit gibt, dafür zu sorgen, das sein Mod die Mods der anderen in dieser Hinsicht nicht mehr negativ beeinflusst. Weder für den Spieler noch den Modder entstehen irgendwelche Nachteile. Wird vom Spieler keine andere Mod eingesetzt, bei dem die GlobalSettingsInterface.esm irgendetwas vermitteln müsste, tut sie auch einach garnichts. Wenn alles läuft wie geplant, werden viele Mods diese Datei zukünftig mitliefern. Der Spieler kann die dann jeweils überschreiben oder auch nicht, was keine Rolle spielt, da jede Datei gleich sein wird und die GlobalSettingsInterface.esm natürlich nur einmal für eine quasi unbegrenzte Anzahl Mods benötigt wird. Ihr solltet als Spieler einfach nur darauf achten, die Datei GlobalSettingsInterface.esm - egal woher ihr sie bezogen habt, unter Zusatzdateien aktiviert zu haben. Dann läuft alles wie es soll - der Rest ist Aufgabe der Modder. Für euch heißt es: aktivieren -> vergessen -> die Vorteile genießen.


4. GSI für Questmodder, Dungeonmodder u.s.w.

Für die Modder von Quests ist die Verwendung von GSI eigentlich sehr einfach. Zuerst muss die GlobalSettingsInterface.esm zusammen mit eurer ESP-Datei im Construction-Set geladen werden. Euer PlugIn muss dabei auf "Active File" gesetzt werden. Danach noch abspeichern und der erste von zwei Schritten ist getan: eure ESP hat die Abhängigkeit zu GlobalSettingsInterface.esm-Masterdatei und kann somit auf ihre globalen Variablen zugreifen. Davon gibt es momentan genau eine - eben die, die für den Teleport zuständig ist. Diese globale Variable heißt GSITeleport und sie kann drei mögliche Werte haben:
  • 0 - Teleportieren komplett verboten
  • 1 - Teleportieren komplett erlaubt (Standardeinstellung)
  • 2 - Teleportieren nur innerhalb des selben Interiors erlaubt *
* Bei Wert 2 ist noch zu beachten, das nur die allerwenigsten PlugIns davon Gebrauch machen. Im Regelfall werden die meisten "Teleport-PlugIns" dann also das Teleportieren komplett verbieten, auch wenn es eingeschränkt erlaubt wäre.

Nun überlegt einmal, wie ihr den Spieler daran hindert, euren Dungeon zu verlassen. In 99% der Fälle nutzt ihr dafür ein Script. Erweitert einfach die Bedingung, in der festgelegt ist, das der Spieler den Dungeon nicht verlassen kann um folgende Zeile:

Set GSITeleport to 0

Damit schaltet ihre die Teleportfunktion von allen GSI-unterstützenden PlugIns aus. Der Spieler muss nun genau das tun, was ihr für ihn geplant hattet.
Ganz wichtig: vergesst bitte keinesfalls am Ende eures Dungeons, wenn der Spieler ihn also verlässt/verlassen kann, die Variable mit

Set GSITeleport to 1

wieder zurückzusetzen. Andernfalls ist das Teleportieren dauerhaft - auch außerhalb des Einflussbereichs eures PlugIns - deaktiviert. Für einen Modder sollte das setzen dieser zwei Variablen nun aber keinerlei Problem darstellen und mehr ist für euch nicht zu tun. Also nochmal kurz zusammengefasst:
  • Abhängigkeit zur GlobalSettingsInterface.esm herstellen, indem diese zusammen mit eurem PlugIn geladen und dann gespeichert wird. Euer PlugIn muss hierzu als "Active File" geladen werden.
  • GSITeleport-Variable zur Situation passend mittels einem eurer Scripte auf einen der drei möglichen Werte stellen
Nun packt ihr die GlobalSettingsInterface.esm noch mit in das Download-Archiv eures Mods und erwähnt in der Readme, das der Spieler sie, falls er sie noch nicht von einem anderen Mod bezogen hat, unter Spieldateien im Launcher genauso aktivieren muss wie euer eigentliches PlugIn. Fertig! Mehr gibt es für euch nicht zu tun. War doch einfach, oder?


5. GSI für Modder, die Reise- oder Teleportmöglichkeiten jeder Art bereitstellen

Für Modder von PlugIns mit Reise- und Teleportmöglichkeiten ist der Einbau ebenfalls sehr einfach und ohne größeren Aufwand. Dabei ist es völlig egal, ob man in eurem PlugIn - wie beispielsweise mit Mark & Recall (Markieren und Rückkehr) an verschiedene Orte reisen kann oder ob ihr beispielsweise nur für eure "HausplugIn" einen Gegenstand oder Zauber erstellt habt, der den Spieler bei Benutzung schnell nach Hause bringt. Alles ganz einfach, allerdings gibt es hier für euch - je nachdem, wie euer Script aufgebaut ist - ein paar mehr Möglichkeiten, die Sache umzusetzen als für die Quest-/Dungeon-Modder. Der erste Punkt allerdings unterscheidet sich nicht von obriger Anleitung für die "Dungeon-Bauer". Ladet euer PlugIn als "Active File" zusammen mit der GlobalSettingsInterface.esm ins Construction Set und speichert das ganze einmal ab, um die Abhängigkeit zur ESM herzustellen, damit ihr Zugriff auf die globale Variable GSITeleport bekommt. Ist das erledigt, müsst ihr in eurem Teleport-Script eine Abfrage einbauen, die auswertet, ob das Teleportieren möglich sein soll oder nicht. Der einfachste aller möglichen Wege wäre beispielsweise der folgende Dreizeiler:

If GSITeleport == 0
return
endif


oder, falls euer PlugIn keine Funktion bietet, innerhalb einer Zelle hin- und herzuteleportieren (was wohl für 99% aller solchen PlugIns gelten dürfte)

If GSITeleport == 0 || GSITeleport == 2
return
endif


Das baut ihr am besten direkt am Anfang eures Scriptes ein. Natürlich steht euch jeder andere Art der Implementierung frei. Dieses Beispiel verdeutlicht nur den einfachsten, aber nicht unbedingt den besten Weg. Aber ich denke, wer in der Lage ist, ein funktionierendes Teleport-Script zu schreiben, sollte es auch mit Leichtigkeit schaffen, diese kleine Bedingungsabfrage zu integrieren. Wichtig ist nur, folgende Regeln in seinem Teleportscript korrekt umzusetzen.
  • GSITeleport=0 - Teleportieren komplett verboten
  • GSITeleport=1 - Teleportieren komplett erlaubt (Standardeinstellung)
  • GSITeleport=2 - Teleportieren nur innerhalb des selben Interiors erlaubt *
Ist das erledigt, könnt ihr euch entspannt zurücklehnen, denn das war es schon. Kurz zusammengefasst:
  • Abhängigkeit zur GlobalSettingsInterface.esm herstellen, indem diese zusammen mit eurem PlugIn geladen und dann gespeichert wird. Euer PlugIn muss hierzu als "Active File" geladen werden.
  • GSITeleport-Variable auslesen und je nach gesetztem Wert euer Teleportscript entweder ablaufen lassen oder unterbinden.
Nun packt ihr die GlobalSettingsInterface.esm noch mit in das Download-Archiv eures Mods und erwähnt in der Readme, das der Spieler sie, falls er sie noch nicht von einem anderen Mod bezogen hat, unter Spieldateien im Launcher genauso aktivieren muss wie euer eigentliches PlugIn. Fertig!


6. Zukunft

Nun, in der Theorie ist die Sache, die hier bisher nur für den Teleport umgesetzt wurde, für jede Situation denkbar, in der sich zwei PlugIns wegen ihrer unterschiedlichen Funktionen negativ beeinflussen, solange diese Funktionen in irgendeiner Weise gescriptet sind oder sich zumindest mittels Scriptbefehlen beeinflussen lassen. In der Praxis wird schlicht das eingebaut, was von den jeweiligen Moddern gewünscht wird. Sollte es Erweiterungen/Aktualisierungen der GlobalSettingsInterface.esm geben, so wird auf jeden Fall eine 100%ige Abwärtskompatibilität sichergestellt sein. Der Name an sich suggeriert natürlich, das es nicht bei dieser einen Funktion bleiben muss - deshalb wurde er so allgemeingültig gewählt. Ein Versionsabgleich - sollten Funktionen hinzukommen - wird natürlich implementiert.


7. Verbreitung & Modifikation von GSI

Jeder Modder darf/kann/soll die "GlobalSettingsInterface.esm"-Datei mit seinem PlugIn ausliefern - ansonsten wäre sein PlugIn durch die hinzugefügte Abhängigkeit auch nicht mehr oder nur noch teilweise funktionsfähig. In diesem Fall müssen keinerlei Credits in irgendeiner Form gegeben werden und die Dokumentation (sprich: diese Datei) kann, muss aber ebenfalls nicht, beigelegt werden. Macht das ganz wie ihr möchtet. Der Dateiname der ESM sollte allerdings unter keinen Umständen geändert werden (sonst hat ein User vielleicht irgendwann 20 dieser Dateien im Data-Ordner, was absolut unnötig wäre). Die ESM-Datei als auch die hier vorliegenden Dokumentation ist mit ihrer Veröffentlichung Community-Eigentum, was ihre Verbreitung betrifft. Eigene Modifikationen/Erweiterungen sind allerdings - da es sich ja um eine generelle Schnittstelle handeln soll - nicht erwünscht. Würde jeder Modder die Datei erweitern, wie es ihm gerade gefällt, hätten wir bald unzählige davon und der eigentliche Sinn des Projektes wäre dahin. Deswegen schlage ich vor, Erweiterungen/Änderungen - sofern gewünscht - gemeinsam zu diskutieren und umzusetzen. Die richtige Adresse dafür ist meist das Forum, in dem ihr von diesem Projekt erfahren habt. Desweiteren ist es ausdrücklich erlaubt, die Datei GlobalSettingsInterface.esm und diese Readme-Datei auf jeder Webseite zum Downlaod bereitzustellen. Sofern sie aber nicht mit einem PlugIn zusammen ausgeliefert wird, das Gebrauch von ihrer "Funktion" macht, sondern eben nur GSI "Stand-Alone" ist dringend anzuraten, diese Readme-/Dokumentationsdatei mitzuliefern. Was sollte ein User auch mit der reinen ESM ohne eine Ahnung, welchen Sinn sie hat?!

Also fügt dieser Mod eine Esm. ein die eine neue Variable ins spiel einfügt, mit der es dazu kommt das schwierigkeiten vermieden werden.

Download bei Theelderscrolls. info

Ich hoffe ich konnte euch damit ein bisschen helfen.

MFG ALEXI

(Quelle- TES INFO)
 
Und ich hab gleich mal ein Problem.

Ich hab OI installiert. Da ist ja das GSI enthalten. Wenn ich das GSI aber aktiviere, dann habe ich dieses Berühmte Blackscreen-Problem. Tritt meistens in Dungeons auf und meistens beim Kämpfen.
Allerdings nur meistens. Einmal hatte ich einfach so in Tamriel auch einen Blackscreen.
Deaktiviere ich GSI, dann habe ih dieses Problem nie.

Kann es sein, dass dieses Plugin mit dem Begleitermod "Abenteuer mit Alba" nicht zusammen passt?