# Migrieren Sie bewusst alte Speicherformen

> Legen Sie fest, wie Daten aus älteren Spielversionen gelesen werden, und migrieren Sie bekannte Formate, bevor Sie sie verwenden.

- URL: https://oneshotgems.ai/de/topics/local-storage-game-versioning
- Kategorie: Für Spieleentwickler
- Typ: Ratgeber
- Aktualisiert: 5. Oktober 2026

Beim Save-State-Test wird abgefragt, ob die beabsichtigten Werte bestehen bleiben. Die Versionierung beantwortet eine andere Frage: Was soll passieren, wenn ein späterer Spiel-Build Daten liest, die von einem älteren Build geschrieben wurden? Wenn Version eins eine beste Punktzahl als Zahl und Version zwei ein Profilobjekt speichert, kann das Lesen der alten Form, als ob sie neu wäre, das Menü beschädigen oder den Fortschritt stillschweigend verwerfen. Legen Sie eine Version neben den gespeicherten Daten ab und schreiben Sie eine explizite Migration für bekannte frühere Formen.

## Werte in einem kleinen versionierten Datenobjekt speichern

Anstatt eine bloße Punktzahl wie 240 zu speichern, speichern Sie ein JSON-Objekt wie { version: 2, bestScore: 240, settings: { sound: true } }. Analysieren Sie beim Laden den Text, überprüfen Sie, ob es sich um ein Objekt handelt, und überprüfen Sie seine Version, bevor Sie Felder verwenden. JSON.parse kann einen SyntaxError für ungültiges JSON auslösen. Behandeln Sie daher fehlerhaften Text mit einem definierten Fallback, anstatt zuzulassen, dass der Start stoppt, bevor der Player beginnen kann.

Halten Sie das Datenobjekt kompakt und dokumentieren Sie die Bedeutung jeder Version. Betrachten Sie die Versionsnummer nicht als ausreichende Validierung: Ein als Version 2 markierter Wert kann unvollständig sein oder den falschen Typ haben. Prüfen Sie die Felder, auf die der aktuelle Build tatsächlich angewiesen ist, etwa bestScore als endliche, nicht negative Zahl und die Sound-Einstellung als booleschen Wert.

## Für jedes unterstützte alte Format eine Migration schreiben

Eine Migration von Version 1 kann die alte Zahl in das neue Datenobjekt umwandeln, eine Standardeinstellung ergänzen und das Format von Version 2 speichern. Unterstützen Sie mehrere historische Versionen, führen Sie die Migrationen nacheinander aus: von Version 1 auf 2 und anschließend von 2 auf 3. Testen Sie jeden Testfall einzeln, darunter einen fehlenden Schlüssel, fehlerhaftes JSON, eine unbekannte zukünftige Version und einen teilweise geschriebenen Wert. Entscheiden Sie, ob unbekannte Daten erhalten, ignoriert oder zurückgesetzt werden, und zeigen Sie bei Bedarf eine Wiederherstellungsmeldung an.

## Grenzen des Browser-Speichers berücksichtigen

MDN beschreibt localStorage als ursprungsgebundene Daten, die über Browser-Sitzungen hinweg bestehen bleiben können. Verfügbarkeit und Inhalt sind jedoch keine garantierte Kontosicherung. Speichern Sie dort weder Geheimnisse noch Entscheidungen, auf die man sich verlassen muss. Kann ein Spiel einen Spielstand nicht lesen, ermöglichen Sie einen definierten Neustart und vermeiden Sie, dieselbe fehlgeschlagene Migration bei jedem Start erneut zu versuchen.

## Fragen

**Sollte ich alle Speicherungen löschen, wenn sich das Format ändert?** Nur wenn das eine explizite Produktentscheidung ist. Wenn wichtige Werte sicher zugeordnet werden können, können sie durch eine kleine getestete Migration erhalten bleiben. Andernfalls definieren Sie einen eindeutigen Fallback und erläutern Sie den Reset.

**Macht ein Versionsfeld localStorage-Daten zuverlässig?** Nein. Es identifiziert die erwartete Form, sodass das Spiel sie migrieren oder ablehnen kann. Daten können immer noch fehlen, fehlerhaft, veraltet oder nicht verfügbar sein. Überprüfen Sie sie daher vor der Verwendung.

## Folge deiner Neugier

- [Testen Sie Save State in einem Browsergame](https://oneshotgems.ai/de/topics/testing-game-save-state): Überprüfen Sie, was ein Browserspiel speichert, was zurückgesetzt wird und wie es sich verhält, wenn gespeicherte Daten fehlen, veraltet sind oder zwischen Sitzungen geändert wurden.
- [Eine Regressionstestschleife für kleine Spiele](https://oneshotgems.ai/de/topics/game-regression-testing): Schützen Sie eine funktionierende Spielschleife nach Überarbeitungen mit einer kurzen Regressionscheckliste, die sich auf Spielmechanik, Punktevergabe, Neustart und nahegelegene Grenzfälle konzentriert.

## Weiterlesen

- [MDN localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)
- [MDN JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)

---
Kanonische Seite: https://oneshotgems.ai/de/topics/local-storage-game-versioning
