NewRaven
03.06.2007, 02:42
Da der Grundgedanke dieses PlugIns in dieser Community entstanden ist, soll es auch diese Community sein, die das Ergebnis zuerst zu sehen bekommt. Spieler, die nach einem tollen R0xx0r-Item suchen, verlassen jetzt besser bitte gleich wieder diesen Thread. Modder von Questmods, großen Dungeons, Hausmods und vielen anderen Modarten sowie wirklich interessierte Spieler, die auch wenigstens ein wenig Interesse für die Dinge "hinter den Kulissen" haben, möchte ich bitten, diesen Text hier - auch wenn er verflucht lang ist - zu lesen. Bei diesem PlugIn ist nämlich der folgende Text deutlich wichtiger (und inhaltsreicher ;) ) als die eigentliche ESM-Datei.
Achtung, nun kommt viel Text...
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 stellenNun 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?!
Links zum Thema:
Wie die Idee entstand... (http://www.multimediaxis.de/showthread.php?t=89784&page=11)
Download (http://theelderscrolls.info/?go=dlfile&fileid=178) (6,25 KB)
Readme in Originaldarstellung (http://tes.newraven.net/GSI_Readme.html)
Ich biete jedem Modder, der den Einbau trotz der Anleitung nicht hinbekommt, meine Hilfe an, obwohl ich dieses Projekt eindeutig nicht als "mein Projekt" ansehe, sondern als Geschenk an die Community. Desweiteren wird Oblivion Improved natürlich ebenfalls dieses System unterstützen und ich hoffe, das viele weitere Autoren ebenfalls darüber nachdenken, denn bis auf 5 Minuten eurer freien Zeit kostet das niemanden etwas und die Vorteile des - eigentlich sensationell primitiven Systems - sollten für Modder, gerade wenn sie mit ihren Mods Atmosphäre schaffen wollen, auf der Hand liegen. Anzumerken ist noch, das die GlobalSettingsInterface.esm gerade einmal 343 Byte groß ist und somit den Download eures Mods quasi garnicht vergößert. Für sämtliches Feedback und neue Ideen zur Erweiterung ist hier der richtige Platz :)
(Und falls sich nun jemand fragt, ob das wirklich hier her gehört... wie ich es auch tat und mir deshalb vorher die Auskunft/den Segen bei einem Moderator abgeholt habe: Es ist nunmal in der Tat ein fertiges PlugIn - auch wenn das nicht der wichtigste Part dieses Projektes ist... deshalb ein Release-Thread und nicht ein irgendwas in der Schmiede, zumal es für Spieler auch ab dem Moment interessant ist, wo die ersten PlugIns es nutzen :) )
Achtung, nun kommt viel Text...
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 stellenNun 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?!
Links zum Thema:
Wie die Idee entstand... (http://www.multimediaxis.de/showthread.php?t=89784&page=11)
Download (http://theelderscrolls.info/?go=dlfile&fileid=178) (6,25 KB)
Readme in Originaldarstellung (http://tes.newraven.net/GSI_Readme.html)
Ich biete jedem Modder, der den Einbau trotz der Anleitung nicht hinbekommt, meine Hilfe an, obwohl ich dieses Projekt eindeutig nicht als "mein Projekt" ansehe, sondern als Geschenk an die Community. Desweiteren wird Oblivion Improved natürlich ebenfalls dieses System unterstützen und ich hoffe, das viele weitere Autoren ebenfalls darüber nachdenken, denn bis auf 5 Minuten eurer freien Zeit kostet das niemanden etwas und die Vorteile des - eigentlich sensationell primitiven Systems - sollten für Modder, gerade wenn sie mit ihren Mods Atmosphäre schaffen wollen, auf der Hand liegen. Anzumerken ist noch, das die GlobalSettingsInterface.esm gerade einmal 343 Byte groß ist und somit den Download eures Mods quasi garnicht vergößert. Für sämtliches Feedback und neue Ideen zur Erweiterung ist hier der richtige Platz :)
(Und falls sich nun jemand fragt, ob das wirklich hier her gehört... wie ich es auch tat und mir deshalb vorher die Auskunft/den Segen bei einem Moderator abgeholt habe: Es ist nunmal in der Tat ein fertiges PlugIn - auch wenn das nicht der wichtigste Part dieses Projektes ist... deshalb ein Release-Thread und nicht ein irgendwas in der Schmiede, zumal es für Spieler auch ab dem Moment interessant ist, wo die ersten PlugIns es nutzen :) )