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.
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.
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:
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.
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.
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&G/¥Ò“•!éQ»Hˆy$ø¸÷‰Ån¡`Sn>y25>Kó²Hé03]%‘BsžœÍßOºUNÇÓ¤£RvÆ