MorrowindOblivion
Allgemein
News
News-Archiv
Partner
Netzwerk
Banner
Header
Media
Downloads
Impressum
The Elder Scrolls ESO


Skyrim


Oblivion


Morrowind


Foren
The Elder Scrolls
Online

Hilfe & Diskussion

Skyrim
Hilfe & Diskussion
Plugins

ltere TES-Spiele
TES Diskussion
Oblivion Plugins
Morrowind Plugins

Community
Taverne zum Shalk
Adventures of
Vvardenfell

Tales of Tamriel

Hosted by


13.05.2005 Konflikte zwischen Plugins und Savegames vermeiden

So vermeidet man Konflikte zwischen Savegames und aktiven Plugins

Inhalt:

1. Technischer Hintergrund

Kurzfassung:
Ein "unclean save" oder "dirty save" enthält Daten, die nicht mit den Informationen der aktuell aktiven PlugIns übereinstimmen.

Ausführlicher erklärt:
Bei jedem Start eines ganz neuen Spiels wird die Spielwelt über die geladenen Master- und PlugIn Files (esm und esp) festgelegt. Ab diesem Zeitpunkt schreibt Morrowind sozusagen alles mit, was die Spielwelt verändert hat (Objekte werden bewegt, Kreaturen werden beseitigt usw.) und speichert diese Informationen im Savegame.

Objekte, die durch Modifizieren über einen Editor (wie das TESCS) in die Spielwelt eingebracht werden oder auch im Spiel erzeugt, bewegt oder beseitigt werden, erzeugen Referenzen in der Datenbank. Teil dieser Referenz ist ein sogenannter ObjectIndex. Der ObjectIndex ist nicht immer absolut eindeutig, denn oft benutzen verschiedene PlugIns die gleichen ObjectIndices, indem sie z.B. bei Herstellung des PlugIns Objekte kopieren.

Morrowind definiert darüber hinaus einen sogenannten ModIndex, der ganz einfach die Ladeposition eines PlugIns und damit die Ladereihenfolge beschreibt. Später geladene PlugIns können somit Informationen mit gleichem ObjectIndex von früher geladenen PlugIns überschreiben. Die Ladereihenfolge der Files ist abhängig vom Modifikationsdatum, Filetyp (esm oder esp) und dann auch noch von Abhängigkeiten untereinander: Ein esm oder esp, welches von einem oder mehreren esm-Dateien abhängt (z.B. indem es Objekte aus Tribunal.esm verwendet), wird immer nach den esm-Dateien geladen, von denen es abhängt. Ganz zum Schluß folgt dann das savegame, das ähnlich wie die PlugIns (als .ess) geladen wird und eigentlich nur noch die Änderungsinformationen zu den geladenen PlugIns beinhaltet, also keine statischen Informationen, sondern z.B. eine geöffnete Tür oder ein beseitigtes Monster.

Wenn es jetzt zu Unstimmigkeiten zwischen den Referenzen im savegame und den ursprünglich einmal festgelegten Object- und/oder ModIndices kommen sollte, dann kann man davon ausgehen, diverse Konflikte erzeugt zu haben. Diese äußern sich u.a. durch vervielfältigte Objekte oder aber auch durch verschwundene Objekte, wie z.B. zugemauerte, also verschwundene Türen.

Die Ursachen für solche Referenzkonflikte sind dementsprechend:
1) Änderungen an der Ladereihenfolge, entweder durch installieren zusätzlicher PlugIns, oder wenn ein PlugIn in den Editor (TESCS) geladen und abgespeichert wird, weil dadurch das Modifikationsdatum (und damit der ModIndex) verändert wird. Außerdem wird durch eine solche Aktion oft eine Situation hergestellt, die eigentlich nicht sein kann, nämlich: Ein PlugIn könnte neueren Datums als ein savegame sein (Tochter ist älter als ihr Vater) - ja, auch so etwas wird von Morrowind zu interpretieren versucht, häufig allerdings mit unerwünschten Folgen: Die Referenzen im PlugIn werden damit nämlich als neuere Referenzen angesehen, als diejenigen im savegame.
Immer wenn sich die Ladereihenfolge geändert hat, versucht Morrowind auch die ModIndices zu korrigieren. Dieser Vorgang an sich läuft relativ problemlos, solange es hier nur um die Ladereihenfolge geht und die Namen der PlugIns sich nicht geändert haben. Allerdings wenn neue PlugIns dazukommen, oder ältere PlugIns durch neuere mit einem anderen Namen (mit Versionsnr. z.B.) versehen werden, dann kommt es leider oft zu fehlerhaften Korrekturen der besagten ModIndices. Die Folgen davon sind nicht immer sofort sichtbar, es kann z.B. sein, daß Türen mal verschwinden und bei der nächsten geänderten Ladereihenfolge wieder auftauchen oder auch nicht.

2) Ein PlugIn hat neue Referenzen dazubekommen. TESCS nummeriert alle Referenzen neu durch, sobald ein PlugIn neu gespeichert wird, damit ändern sich jede Menge ObjectIndices von möglicherweise in savegames dazu existierenden Referenzen.

2. Gegenmaßnahmen: Was tun gegen "Dirty Saves"?

Die sicherste Methode für alle Änderungsfälle wäre, ein altes savegame zu suchen, welches vor der Aktivierung des geänderten bzw. entfernten PlugIns liegt, was häufig einen Neustart bedeuten würde. Ein solcher Spielstand hätte natürlich keinerlei Referenzen zu dem geänderten PlugIn und wäre damit sauber, sicher und konfliktfrei. Aber das ist natürlich nicht immer erwünscht bzw. würde in der Regel zu weit zurückliegen.

Eine weitere sichere Methode dazu ist möglich mit dem Tool Wrye Mash, dazu sind 4 Schritte nötig, die alle von Wrye Mash unterstützt werden:

  • Namen und Datum des PlugIns nach der Modifikation zurückändern auf den alten Stand
  • falls Morrowind bei der Reparatur der neuen Ladeliste fehlerhaft war: ModIndices korrigieren
  • durch die Änderung bedingte korrupte savegame Einträge reparieren
  • Anpassungen an die Änderung (neue Durchnummerierung) der ObjectIndices

    Bei anderen, dafür einfacheren Methoden, muss man mit gewissen Risiken bzw. Nachkorrekturen an den savegames leben. Damit befasst sich der nächste Abschnitt.

    Wichtig:
    Die folgenden Maßnahmen, um Referenzkonflikte weitgehend zu meiden bzw. zu reparieren, sind alle keine Gewähr für ein absolut fehlerfreies Verhalten. Daher empfiehlt es sich unbedingt, vor jeder dieser Maßnahmen eine Sicherheitskopie vom letzten Spielstand zu machen, dann die Änderungen durchzuführen und erst mal eine Zeit lang den daraus entstandenen Spielstand zu testen, ohne das Spiel zu weit fortzusetzen. Wenn es dabei zu Problemen kommt, oder man die vorgenommenen Änderungen oder das neue PlugIn doch nicht mehr so gut findet, dann kann man die Änderung rückgängig machen und von dem zuvor gesicherten Spielstand aus weiter spielen.

    1) Bei einem Update eines aktiven PlugIns empfiehlt es sich, die meistens mitgelieferte Textdatei readme.txt (liesmich) auf eventuelle Hinweise zu durchsuchen, wie man das Update durchführen sollte, um Konflikte zu vermeiden.
    2) Noch vor der Änderung: Morrowind starten, den letzten Spielstand laden (von diesem sollte eine Sicherungskopie gemacht worden sein).
    3) Alle Objekte, die man nicht löschen möchte, sollten jetzt aus allen Zellen und Containern die zum (demnächst modifizierten oder entfernten) PlugIn gehören, eingesammelt und einschließlich der Spielerfigur in eine von diesem PlugIn unabhängige Zelle gebracht werden, z.B. eine kleine Hütte.
    4) Alle zusammengesammelten Objekte auf dem Boden der Hütte ablegen. Um sicherzugehen, daß mit der Belastungsanzeige der Spielerfigur nichts schief geht, z.B. wenn mit dem PlugIn Objekte entfernt werden, die der Spieler gerade trägt, sollten alle Objekte abgelegt werden.
    5) Spielstand sichern und Morrowind beenden.
    6) Morrowindlauncher starten, das zu ändernde PlugIn dieses Mal deaktivieren.
    7) Den Spielstand aus Schritt 5 laden, die dabei auftauchenden Fehlermeldungen ignorieren.
    8) Sobald der Spielstand geladen ist, sofort wieder abspeichern, dieser neue Spielstand sollte jetzt weitgehend konfliktfrei sein.

    In dem Fall wo nur ein PlugIn deaktiviert werden sollte, geht es von hier aus direkt in die Testphase, siehe weiter unten.

    Wird jetzt ein neues PlugIn mit dem bereinigten savegame aktiviert, oder wird ein bestehendes PlugIn modifiziert (inklusive updates), dann sind folgende Punkte zu beachten:

    - Auf keinen Fall eine neue "merged levelled list" erzeugen. Wenn hier unbedingt etwas zugefügt werden muss, dann sollten die Einträge manuell per Konsole erfolgen.
    - Das bereinigte savegame sollte immer neueren Datums sein, als das neue bzw. modifizierte PlugIn. Normalerweise ist das auch so, solange die Modifikation nicht erst nach dem bereinigen des savegames erfolgt. Dafür gibt es freie Hilfsmittel, die das Datum einer beliebigen Datei modifizieren können:

  • FileDate Changer v1.1

    Dann folgt die Testphase des bereinigten savegames mit dem jetzt aktivierten geänderten PlugIn. Leichtere Probleme, wie doppelte Türen können durch weitere Maßnahmen behoben werden. Tauchen allerdings schwerere Probleme auf, z.B. Systemabstürze, dann sollte der Vorgang wiederholt werden. Ist der Fall nicht lösbar, dann sollte man von einer Modifikation des laufenden Spiels absehen, die Änderung rückgängig machen und den zuvor gesicherten Spielstand laden.

    Anmerkung: An dieser Stelle, und wenn alles in Ordnung ist, wird empfohlen, die älteren Spielstände von der Zeit vor der Modifikation zu löschen oder zumindest in einen anderen Ordner zu schieben, denn alles an Spielständen vor der Säuberungsaktion kann eigentlich nur noch Konflikte mit dem neuen PlugIn-Stand verursachen. Das Risiko, irgendwann doch noch mal versehentlich auf ein altes unsauberes savegame zurückzugreifen, kann man so ausschließen.

    3. Cleanen eines Savegames (.ess-Datei) mit TESAME

    Download von TESAME

    Anmerkung: Diese recht schroffe Methode entfernt alle Referenzen aus ausgewählten Zellen, die der Spieler hinterlassen hat, sprich: hinterher wäre es so als ob der Spieler die entsprechende Zelle zum ersten Mal betritt. Ausgenommen davon sind Questfortschritte und Dialoge mit NPCs. Damit werden auch möglicherweise erwünschte Referenzen mit gelöscht, z.B. Container, die bereits entleert wurden, werden wieder befüllt wie beim ersten Betreten der Zelle. Daher sollte diese Methode möglichst früh und möglichst nur mit einem überschaubaren Bereich (wie einer einzelnen Zelle) angewendet werden.

    Beispiel: Man kommt das allererste Mal in die Magiergilde von Balmora, entdeckt dort, daß Galbedir doppelt existiert und man möchte das Double löschen. Dann sollte man nicht lange weiter spielen, sondern möglichst bald die folgende Prozedur ausführen. Der Vollständigkeit halber wird hier davon ausgegangen, daß man ein savegame mit Konflikten vorliegen hat und sich nicht gerade wie in der Beispielsituation mitten im Spiel befindet:

    1) Sicherungskopie vom letzten savegame anlegen!
    2) Morrowind laden, das zu bereinigende savegame laden.
    3) In den Konfliktbereich gehen, die Konsole in einem Blickwinkel öffnen [^], dass möglichst alle Konfliktobjekte neben der Konsole anwählbar sind.


    4) Objekt (Galbedir) anklicken, es erscheint die ObjektID in der Titelleiste der Konsole. ORI eingeben, enter. Dieser Befehl ruft einige Referenzen zu dem angewählten Objekt auf, wie z.B. das PlugIn, durch welches das Objekt hereingekommen ist. Steht hier kein PlugIn, sondern "file - None", dann handelt es sich bei diesem Objekt meistens um das unerwünschte Double. Den Namen der Zelle notieren: "Balmora, Guild of Mages", bzw. in der deutschen Version: "Balmora, Magiergilde".
    5) Den Spieler inklusive der Objekte, die er behalten soll aus der Problemzelle bewegen, wieder möglichst in eine konfliktfreie Zone, z.B. eine unbeteiligte Hütte.
    6) Abspeichern unter einem eindeutigen Namen, z.B. „Reparatur“
    7) TESAME laden, im Menü "Mods" und "Open" auswählen.
    8) Das savegame-Verzeichnis öffnen (es liegt normalerweise direkt unter dem Morrowind Verzeichnis) und dort als Dateityp "All Files (*.*)" auswählen. Das savegame aus Schritt 6 öffnen. Anmerkung: Die Namen der savegames im TESAME Fenster sind etwas anders, man kann sie aber am Anfangsteil erkennen, z.B. hier "Reparatu0000.ess".


    9) Nachdem das savegame vollständig geladen wurde (siehe Fortschrittsbalken im Bild oben), in der Titelzeile oben "Type" anklicken, damit werden alle Einträge nach Typ sortiert.
    10) Die Einträge des Typs "Cell" sind rosa hinterlegt. In diesen "Cell" Einträgen nach der problematischen Zelle suchen, rechtsklicken (damit wird der Eintrag schwarz hinterlegt und als "zu löschen" markiert) und die [Entf] Taste drücken (damit wird der Eintrag gelöscht). Keine Angst, damit wird nicht etwa die Zelle komplett gelöscht, sondern nur die Referenzen, die unsere Spielfigur in dieser Zelle hinterlassen hat, es wird sozusagen nur das Gedächtnis dieser Zelle gelöscht, womit die Spielfigur beim nächsten Betreten der Zelle alle Objekte auf Anfang zurückgesetzt vorfinden wird.
    11) Im Menü "Mods" und "Save as" auswählen und unten wieder Dateityp "All files (*.*) wählen. In diesem Fenster noch vor dem Abspeichern das alte savegame rechtsklicken und löschen (davon existiert ja noch eine Sicherungskopie). TESAME speichert zwar eine Datei als "Kopie von...", aber trotzdem unterscheiden sich die Dateien im Morrowind Ladebildschirm nur im Datum und in der Uhrzeit. Alt und neu wäre hier also sonst schwer zu unterscheiden.
    12) Einen eindeutigen Namen vergeben, z.B. "clean Reparatur.ess" und speichern. Auch dieser geänderte Name wird im Morrowindladebildschirm weiterhin unter dem alten Namen erscheinen, nur im Verzeichnis kann er damit leichter erkannt werden.
    13) Falls über den Konsolenbefehl ORI ein oder mehrere PlugIns identifiziert wurden, die für Konflikte und Kopien von Objekten verantwortlich waren (siehe Punkt 4), oder das Problem durch Aktualisierung bzw. Modifikation von PlugIns entstanden war: Morrowindlauncher starten, die Option Data Files / Zusatzdateien öffnen und alle diese identifizierten PlugIns deaktivieren.
    14) Morrowind starten und das bereinigte savegame (aus Punkt 12) laden und sobald es vollständig geladen ist, sofort wieder unter einem eindeutigen Namen abspeichern.
    15) Wenn die betroffenen PlugIns (siehe Punkt 13) nicht ohnehin deaktiviert werden sollten, dann Morrowind beenden, Morrowindlauncher starten, die Zusatzdateien öffnen und die entsprechenden PlugIns wieder aktivieren.
    16) Testphase. Tauchen dabei wiederum schwere Probleme auf, z.B. Systemabstürze, dann sollte der Vorgang wiederholt werden. Ist der Fall nicht lösbar, dann sollte man von einer Modifikation des laufenden Spiels absehen, die Änderung rückgängig machen und den zuvor gesicherten Spielstand laden.

    Anmerkung: An dieser Stelle, und wenn alles in Ordnung ist, wird empfohlen, die älteren Spielstände von der Zeit vor der Modifikation zu löschen oder zumindest in einen anderen Ordner zu schieben, denn alles an Spielständen vor der Säuberungsaktion kann eigentlich nur noch Konflikte mit dem neuen PlugIn Stand verursachen. Das Risiko, irgendwann doch noch mal versehentlich auf ein altes unsauberes savegame zurückzugreifen, kann man hiermit ausschließen.

    4. Cleanen eines Savegames mit dem Morrowind Enchanted Editor

    Download des Morrowind Enchanted Editor

    Der Morrowind Enchanted Editor ermöglicht ein noch genaueres Bearbeiten eines savegames. Man kann damit auf jede Information (sogenannte subrecords) einzeln zugreifen. In diesem Beispiel mit der doppelten Galbedir wird aber wie vorher die Zelle "Balmora, Magiergilde" komplett von unerwünschten Referenzen bereinigt.

    1) Sicherungskopie vom letzten savegame anlegen!
    2) Morrowind laden, das zu bereinigende savegame laden.
    3) In den Konfliktbereich gehen, die Konsole in einem Blickwinkel öffnen [^], dass möglichst alle Konfliktobjekte neben der Konsole anwählbar sind.


    4) Objekt (Galbedir) anklicken, es erscheint die ObjektID in der Titelleiste der Konsole. ORI eingeben, enter. Dieser Befehl ruft einige Referenzen zu dem angewählten Objekt auf, wie z.B. das PlugIn, durch welches das Objekt hereingekommen ist. Steht hier kein PlugIn, sondern "file - None", dann handelt es sich bei diesem Objekt meistens um das unerwünschte Double. Den Namen der Zelle notieren: "Balmora, Guild of Mages", bzw. in der deutschen Version: "Balmora, Magiergilde".
    5) Den Character inklusive der Objekte, die er behalten soll aus der Problemzelle bewegen, wieder möglichst in eine konfliktfreie Zone, z.B. eine unbeteiligte Hütte.
    6) Abspeichern unter einem eindeutigen Namen, z.B. "Reparatur".
    7) Morrowind Enchanted Editor laden, das savegame (Reparatu0000.ess) laden.
    8) Falls nicht bereits so eingestellt, unter Edit/Editing Options/Safe Editing deaktivieren (ohne Haken):


    9) Auf den Eintrag "Cells" klicken (rechts von der Checkbox), damit werden alle Zellen angezeigt, (siehe Bild). Würde die checkbox links von "Cells" aktiviert werden, würden damit alle Zellen markiert, aber hier geht es ja nur um eine einzelne Zelle.


    10) Die Zelle "Balmora, Magiergilde" markieren, siehe Bild.


    11) Im rechten Teil des Editors unter "Marked Entry Actions" den linken button drücken: "Delete Marked".
    12) Mit File/Save As das savegame Verzeichnis öffnen. In diesem Fenster noch vor dem Abspeichern das alte savegame rechtsklicken und löschen (davon existiert ja noch eine Sicherungskopie). Enchanted Editor speichert zwar eine Datei mit einer fortgeschriebenen Endnummer, aber trotzdem unterscheiden sich die Dateien im Morrowind Ladebildschirm nur im Datum und in der Uhrzeit. Alt und neu wäre hier also sonst schwer zu erkennen.
    13) Einen eindeutigen Namen vergeben, z.B. "clean Reparatur.ess" und speichern. Auch dieser geänderte Name wird im Morrowindladebildschirm weiterhin unter dem alten Namen erscheinen, nur im Verzeichnis kann er damit leichter erkannt werden.
    14) Falls über den Konsolenbefehl ORI ein oder mehrere PlugIns identifiziert wurden, die für Konflikte und Kopien von Objekten verantwortlich waren (siehe Punkt 4), oder das Problem durch Aktualisierung bzw. Modifikation von PlugIns entstanden war: Morrowindlauncher starten, die Option Data Files / Zusatzdateien öffnen und alle diese identifizierten PlugIns deaktivieren.
    15) Morrowind starten und das bereinigte savegame (aus Punkt 13) laden und sobald es vollständig geladen ist, sofort wieder unter einem eindeutigen Namen abspeichern.
    16) Wenn die betroffenen PlugIns (siehe Punkt 14) nicht ohnehin deaktiviert werden sollten, dann Morrowind beenden, Morrowindlauncher starten, die Zusatzdateien öffnen und die entsprechenden PlugIns wieder aktivieren.
    16) Testphase. Tauchen dabei wiederum schwere Probleme auf, z.B. Systemabstürze, dann sollte der Vorgang wiederholt werden. Ist der Fall nicht lösbar, dann sollte man von einer Modifikation des laufenden Spiels absehen, die Änderung rückgängig machen und den zuvor gesicherten Spielstand laden.

    Anmerkung: An dieser Stelle, und wenn alles in Ordnung ist, wird empfohlen, die älteren Spielstände von der Zeit vor der Modifikation zu löschen oder zumindest in einen anderen Ordner zu schieben, denn alles an Spielständen vor der Säuberungsaktion kann eigentlich nur noch Konflikte mit dem neuen PlugIn Stand verursachen. Das Risiko, irgendwann doch noch mal versehentlich auf ein altes unsauberes savegame zurückzugreifen, kann man hiermit ausschließen.

  • geschrieben von DWS