Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Ein NLT-Veteran spielt Drakensang
Den Zwölfen zum Gruße!

(24.04.2012, 23:00)Rabenaas schrieb: Würdest Du einen sozusagen jungfräulichen Spielstand nehmen, vom Beginn des Spiels, und dann x Gegenstände in eine Tabelle einfügen würdest, dann hättest Du den Fehler im Fall der Fälle sicher reproduziert. Darum geht es doch im Moment, oder?

Nein, es geht darum, ab welchem Datenbestand der Fehler nicht mehr auftritt. Bei der Radikallösung "alles im Hauptquartier löschen" geht es, aber das ist kein zufriedenstellender Stand, mit dem ich weiterspielen möchte. Seit klar ist, dass der unbearbeitete 815er-Spielstand nicht mehr geht und der mit deutlich weniger Gegenständen versehener 815er*, ist eine wichtige Frage, bei welcher maximalen Menge von Gegenständen, die irgendwo dazwischen liegt, das Spiel noch funktioniert.

(24.04.2012, 22:13)Kunar schrieb: 815 / 815* / 816:
883 / 689 / 690 sonstige Gegenstände
1281 / 964 / 971 Waffen

Sonstiger Gegenstand 690 sind Giftzähne.
Waffen 965-971 sind Dummy, Wurfbeil, Dummy, Kurzbogen, Dummy, Kurzbogen, Dummy.

Die Dummys stehen anscheinend für die bloße Hand, mit der die verbliebenen Gegner gekämpft haben.
(...)
Da insbesondere die Waffentabelle voll ist mit Dummy- und Friedhofseinträgen, werde ich als nächstes testen, ob das Spiel wieder läuft, wenn man diese löscht.

Ich habe aus der _Instance_weapon mal alles gelöscht, was als Level die Angabe _graveyard_ hatte und als ID den Eintrag dummy. Das reduzierte die Anzahl an Waffen von 1281 auf 1198. Dennoch gab es noch Abstürze beim 2. Goblin. Danach habe ich generell alles aus der _Instance_weapon gelöscht, das sich im Level namens _graveyard_ befand. Damit schrumpfte die Anzahl der Gegenstände weiter auf 1011 zusammen. Damit ging dieser Kampf zuende. Beim nächsten Kampf eine Brücke weiter gab es jedoch wieder einen Absturz!

Nächste mögliche Schritte wären: Die offenen Gebiete schließen, auch wenn ich nach wie vor meine, dass das nicht Ursache der Abstürze ist. Dann könnte ich alle graveyard-Einträge aus allen Tabellen löschen und schließlich sogar alle Einträge aus bereits geschlossenen Locations.

(24.04.2012, 23:05)exi schrieb: Insgesamt erachte ich den Spielstand 815 als hoffnungslos verfahren.

Dem ist nicht so! Immerhin hatten wir bereits herausgefunden, dass sich durch Löschen von vielen Gegenständen der Kampf beenden läßt.

Heute ist mir noch eine andere Idee gekommen, die auf folgenden Informationen basierte:
1. Es gibt zwar einen Zusammenhang zwischen Anzahl der Gegenstände und den Abstürzen, aber er ist nicht völlig direkt. Ansonsten hätte das Spiel funktionieren müssen, nachdem ich 270 Gegenstände aus der Waffentabelle gelöscht habe. Das deutet darauf hin, dass die Anzahl der Gegenstände ein Symptom, aber nicht die Ursache ist.
2. Die Spielstände sind jeweils eine Datenbank.
3. Jemand äußerte den Verdacht, dass die Spielstände die magische Grenze von 64 MB überschreiten. Ich hielt das erst für unwahrscheinlich als eigentliche Ursache, zumal andere Leute ebenfalls so viel mitgenommen haben wie ich (mit Ausnahme der Zufallskämpfe im Dunkelwald).
4. Wenn man vor dem Abschluss der Queste "Das Auge des Drachen" Gegenstände an die Händler Floris oder Calandor Cupinez verkauft, verschwinden sie (die Gegenstände) aus deren Inventar. Die Spielstände werden jedoch nicht kleiner.

Wer sagt denn, dass die Spielstände besonders platzsparend angelegt sind? Gerade bei Datenbanken kann es passieren, dass Speicher nicht wieder freigegeben wird, selbst wenn Datensätze gelöscht werden. Eine kurze Recherche per Google ergab, dass es für SQLite einen Befehl namens "vacuum" gibt. (Man findet zahlreiche Beispiel dafür, wie man derzeit verwendete Firefox-Versionen beschleunigt, weil diese ebenfalls SQLite-Datenbanken einsetzen...) Und so geht's (Windows):

Von www.sqlite.org/download.html die sqlite3.exe holen ("Binary"). Diese in ein Verzeichnis mit dem Spielstand kopieren. (Vorher natürlich eine Sicherheitskopie des Spielstands machen - wir sind ja keine Anfänger!) Den Spielstand in irgendetwas umbenennen, was vorne 8 Zeichen hat (alte MS-DOS-Beschränkung). Dann auf Kommandozeilenebene wechseln und dort sqlite3 <Name des Spielstands> vacuum eingeben. Man kann außerdem dasselbe mit dem Befehl reindex machen, der die Indizes der Datenbank neu aufbaut.

Ergebnis bei mir (nur vacuum):
vorher 65.528 KB / 67.100.672 Byte
nachher 64.164 KB / 65.703.936 Byte

Und siehe da - der Kampf stürzt nicht mehr ab! Ich muss jetzt noch testen, ob das auch so anhält. Wenn es wirklich die magische Grenze von 64 MB war, habe ich die bald wieder erreicht. Im Zweifelsfall könnte ich dann jedoch mit den Dummy- und Friedhofsgegenständen wieder anfangen und erneut komprimieren. Interessant wäre noch, den Speicherplatzgewinn zu testen, wenn man wie oben beschrieben viele Gegenstände verkauft hat, die tatsächlich aus dem Spiel verschwinden.
Ärger im Svellttal? Auf der Suche nach dem Salamanderstein? Dann hilft der Sternenschweif-Reiseführer von Kunar!
Zitieren


Nachrichten in diesem Thema
Ein NLT-Veteran spielt Drakensang - von Kunar - 06.12.2010, 23:55
RE: Ein NLT-Veteran spielt Drakensang - von exi - 08.12.2010, 05:51
RE: Ein NLT-Veteran spielt Drakensang - von exi - 09.12.2010, 16:25
RE: Ein NLT-Veteran spielt Drakensang - von exi - 09.12.2010, 17:04
RE: Ein NLT-Veteran spielt Drakensang - von exi - 10.12.2010, 13:17
RE: Ein NLT-Veteran spielt Drakensang - von exi - 13.12.2010, 00:54
RE: Ein NLT-Veteran spielt Drakensang - von exi - 16.12.2010, 06:49
RE: Ein NLT-Veteran spielt Drakensang - von exi - 20.12.2010, 00:57
RE: Ein NLT-Veteran spielt Drakensang - von exi - 05.05.2011, 14:38
RE: Ein NLT-Veteran spielt Drakensang - von exi - 08.05.2011, 22:45
RE: Ein NLT-Veteran spielt Drakensang - von exi - 08.05.2011, 23:26
RE: Ein NLT-Veteran spielt Drakensang - von exi - 09.05.2011, 02:08
RE: Ein NLT-Veteran spielt Drakensang - von exi - 10.05.2011, 02:01
RE: Ein NLT-Veteran spielt Drakensang - von exi - 13.05.2011, 13:48
RE: Ein NLT-Veteran spielt Drakensang - von exi - 31.05.2011, 00:21
RE: Ein NLT-Veteran spielt Drakensang - von exi - 16.11.2011, 02:53
RE: Ein NLT-Veteran spielt Drakensang - von exi - 16.11.2011, 15:17
RE: Ein NLT-Veteran spielt Drakensang - von exi - 28.11.2011, 03:14
RE: Ein NLT-Veteran spielt Drakensang - von exi - 01.06.2011, 13:55
RE: Ein NLT-Veteran spielt Drakensang - von exi - 24.04.2012, 18:37
RE: Ein NLT-Veteran spielt Drakensang - von exi - 24.04.2012, 23:05
RE: Ein NLT-Veteran spielt Drakensang - von Kunar - 25.04.2012, 21:49
RE: Ein NLT-Veteran spielt Drakensang - von cvk - 30.04.2012, 09:39
RE: Ein NLT-Veteran spielt Drakensang - von cvk - 26.04.2012, 22:05
RE: Ein NLT-Veteran spielt Drakensang - von Kritty - 02.03.2015, 22:50



Benutzer, die gerade dieses Thema anschauen: 10 Gast/Gäste