Jump to content
maauri16

ANSWERED Guarda y carga de partidas, sistema "extensible".

Recommended Posts

Hola, estoy trabajando en el sistema para guardar y cargar partidas en un pequeño juego. Pero tengo ciertas dudas de como hacerlo.

Lo que necesito:

  • Guardar una puntuación máxima de un determinado modo de juego.
  • Guardar el progreso de los niveles (Si el jugador lo paso y con que puntuación serian algo de interés).
  • Algunos datos extras como monedas, personajes desbloqueados, etc.

Lo pensaba hacer con archivos binarios. Mis dudas vienen de que, necesito que lo que haga ahora sea extensible. A lo que me refiero es que si por ejemplo si hoy tengo 10 niveles y mañana quiero agregar 5 nuevos lo pueda hacer sin dañar las partidas que ya existen.

Entonces,

  • ¿Me recomiendan utilizar distintos archivos para cada categoría? (Ej. Uno para la puntuación máxima del "modo de juego 1", otro para los niveles del "modo de juego 2", otro para los objetos desbloqueables, etc)
  • En el caso de por ejemplo los niveles, que es necesario que sea dinámico la cantidad. Pensé en usar una List, ya que con un array supongo me limitaría y luego tendría muchos problemas al cargar una partida antigua que tenga menos niveles que la versión actual. Creo que es posible, pero me gustaría que me confirmaran si es posible serializar listas y si es una buena opción para este caso.
  • Por ultimo, alguna cosa que deba evitar para no tener esos problemas de compatibilidad entre partidas de una versión antigua a la actual.


Muchas gracias!

Share this post


Link to post
Share on other sites

Hola @maauri16, siempre es recomendable utilizar un formato de dato relacionado para que la pérdida de información sea controlada.

¿Que puedes utilizar?

Deberías ver XML, JSON y YAML, en ese orden y quedarte con cual mejor te quede. 

¿Como no perder información?

Lo mejor para perder información es crear un archivo independiente que guarde únicamente la última versión del BUILD que se utilizó, y crear un sistema de actualización por versión, esto debería funcionar de forma recursiva.

Por ejemplo la primer versión es 0.1 y se crear el archivo de guardado, la versión 0.2 contiene el código de migración de 0.1 a 0.2, la versión 0.5 contiene el código de migración de 0.1, 0.2, 0.3,0.4,0.5,0.6. Y así sucesivamente, sin embargo, no es necesario actualizar siempre el código de migración, solo cuando cambie la estructura de datos.

¿Se puede realizar de forma dinámica?

Si, con YAML y JSON puede serializar y deserializar un objeto sin tener que importar la pérdida de datos, de esta forma no sería controlado pero el juego seguiría funcionando.

 

  • Like 2

Share this post


Link to post
Share on other sites

Hola @francoe1 , gracias por tu respuesta. Voy a investigar lo que dijiste.

Lo de las versiones creo que es exactamente lo que necesitaba, sin duda me sera de ayuda.

Saludos,

Share this post


Link to post
Share on other sites

×
×
  • Create New...