Estoy desarrollando un juego de plataformas en 2D con algunos amigos. Lo hemos basado en el XNA Platformer Starter Kit que utiliza archivos .txt para almacenar el mapa de mosaico. Si bien esto es simple, no nos da suficiente control y flexibilidad con el diseño de nivel. Algunos ejemplos: para múltiples capas de contenido se requieren múltiples archivos, cada objeto se fija en la cuadrícula, no permite la rotación de objetos, un número limitado de caracteres, etc. Por lo tanto, estoy investigando cómo almacenar los datos de nivel y archivo de mapa.
Esto se refiere solo al almacenamiento del sistema de archivos de los mapas en mosaico, no a la estructura de datos que utilizará el juego mientras se está ejecutando. El mapa de mosaico se carga en una matriz 2D, por lo que esta pregunta es acerca de qué fuente llenar la matriz.
Razonamiento para DB: Desde mi perspectiva, veo menos redundancia de datos usando una base de datos para almacenar los datos del mosaico. Las fichas en la misma posición x, y con las mismas características se pueden reutilizar de un nivel a otro. Parece que sería bastante simple escribir un método para recuperar todos los mosaicos que se utilizan en un nivel particular de la base de datos.
Razonamiento para JSON / XML: archivos editables visualmente, los cambios pueden rastrearse a través de SVN mucho más fácilmente. Pero hay contenido repetido.
¿Alguno tiene inconvenientes (tiempos de carga, tiempos de acceso, memoria, etc.) en comparación con el otro? ¿Y qué se usa comúnmente en la industria?
Actualmente el archivo se ve así:
....................
....................
....................
....................
....................
....................
....................
.........GGG........
.........###........
....................
....GGG.......GGG...
....###.......###...
....................
.1................X.
####################
1 - Punto de inicio del jugador, X - Salida de nivel,. - Espacio vacío, # - Plataforma, G - Gema