# Migrar formas antiguas guardadas deliberadamente

> Decide cómo leer los datos guardados por versiones anteriores del juego y migra las formas conocidas antes de usarlos.

- URL: https://oneshotgems.ai/es/topics/local-storage-game-versioning
- Categoría: Para desarrolladores de juegos
- Tipo: Guía
- Actualizado: 5 de octubre de 2026

Las pruebas de estado de guardado preguntan si los valores previstos persisten. El control de versiones responde a una pregunta diferente: ¿qué debería suceder cuando una versión posterior del juego lee datos escritos por una versión anterior? Si la versión uno almacena la mejor puntuación como un número y la versión dos almacena un objeto de perfil, leer la forma anterior como si fuera nueva puede romper el menú o descartar silenciosamente el progreso. Coloque una versión junto a los datos guardados y escriba una migración explícita para formas anteriores conocidas.

## Guarde los datos en un objeto pequeño con versión

En lugar de guardar una puntuación simple como 240, almacene un objeto JSON como { version: 2, bestScore: 240, settings: { sound: true } }. Al cargar, analice el texto, verifique que sea un objeto e inspeccione su versión antes de usar campos. JSON.parse puede generar un SyntaxError para JSON no válido, por lo tanto, maneje el texto con formato incorrecto con un respaldo definido en lugar de permitir que el inicio se detenga antes de que el reproductor pueda comenzar.

Mantenga pequeño el objeto y documente qué significa cada versión. No trate el número de versión como una validación suficiente: un valor marcado como versión 2 aún puede estar incompleto o tener un tipo incorrecto. Compruebe los campos de los que depende la versión actual, como bestScore, que debe ser un número finito y no negativo, y la preferencia de sonido, que debe ser booleana.

## Escriba una migración para cada formato antiguo compatible

Una migración de la versión uno puede convertir el número antiguo en el nuevo objeto, completar una preferencia predeterminada y guardar el formato de la versión dos. Ejecute migraciones consecutivas cuando admita varias versiones históricas: de la uno a la dos y luego de la dos a la tres. Pruebe cada caso de prueba por separado, incluidos una clave ausente, JSON mal formado, una versión futura desconocida y un valor escrito parcialmente. Decida si conserva, ignora o restablece los datos desconocidos, y muestre un mensaje de recuperación cuando sea necesario.

## Tenga en cuenta los límites del almacenamiento del navegador

MDN describe localStorage como datos asociados al origen que pueden persistir entre sesiones del navegador, pero ni su disponibilidad ni su contenido deben considerarse una copia de seguridad garantizada de la cuenta. No guarde allí secretos ni decisiones que deban ser confiables. Si el juego no puede leer una partida guardada, permita un nuevo comienzo definido y evite volver a intentar en cada inicio la misma migración fallida.

## Preguntas

**¿Debo borrar todos los guardados cuando cambia el formato?** Sólo cuando se trata de una decisión de producto explícita. Si se pueden mapear valores importantes de manera segura, una pequeña migración probada puede preservarlos; de lo contrario, defina un respaldo claro y explique el restablecimiento.

**¿Un campo de versión hace que los datos de almacenamiento local sean confiables?** No. Identifica la forma esperada para que el juego pueda migrarla o rechazarla. Es posible que aún falten datos, que estén mal formados, obsoletos o no disponibles, así que valídelos antes de usarlos.

## Sigue tu curiosidad

- [Prueba los datos guardados de un juego de navegador](https://oneshotgems.ai/es/topics/testing-game-save-state): Comprueba qué guarda un juego de navegador, qué se restablece y cómo se comporta cuando faltan datos almacenados, están obsoletos o cambian entre sesiones.
- [Pruebas de regresión para juegos pequeños](https://oneshotgems.ai/es/topics/game-regression-testing): Protege el funcionamiento de un juego después de cada revisión con una lista breve de pruebas centrada en la mecánica, la puntuación, el reinicio y los límites cercanos.

## Más información

- [Almacenamiento local MDN](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)

---
Página canónica: https://oneshotgems.ai/es/topics/local-storage-game-versioning
