XML es una buena opción si no está limitado por el tamaño y es compatible de forma nativa (por ejemplo, en .NET y Flash), pero si desea un formato delgado, puede crear su propio formato y analizador de manera bastante sencilla. Normalmente uso 1 carácter, por ejemplo. coma para separar cada objeto. Para decodificar la cadena, haga una división en coma. Ahora cada objeto necesita propiedades diferentes, así que sepárelos con un carácter diferente, por ejemplo, punto y coma, y use otro carácter para separar los nombres de propiedad de los valores de propiedad, por ejemplo. Colon. Todo esto se puede decodificar fácilmente sin expresiones regulares simplemente usando string.split. Aquí hay un ejemplo:
id:1;x:5;y:45.2;angle:45,id:28;x:56;y:89;angle:12;health:78
puede ahorrar aún más espacio manteniendo los nombres de propiedad en 1 carácter, por ejemplo, h para la salud. P.ej.
i:1;x:5;y:45.2;a:45,i:28;x:56;y:89;a:12;h:78
Compare con la alternativa JSON:
{"o":[{"i":1, "x":5, "y":45.2, "a":45}, {"i":28, "x":56, "y":89, "a":12, "h":78}]}
Además, si desea reducir el tamaño de sus números, puede codificarlos utilizando el conjunto completo de caracteres UTF16 imprimibles. Este hilo me inspiró a hacer una pregunta en Stack Overflow sobre la cantidad de datos que podría empaquetar en un personaje en pantalla . La respuesta parece estar en algún lugar de más de 40,000 valores para un número entero, si no te importa tener brail, kanji y piezas de ajedrez: ♔♕♖♗♘♙♚♛♜♝♞♟
Para obtener una mayor reducción de tamaño, puede usar el orden de lectura / escritura para determinar qué valor es cuál, por lo que los dos primeros caracteres representan la identificación, los dos siguientes son la posición x, los dos siguientes la y, luego el ángulo, luego la salud , etc. Entonces:
F5DGP@%&002DFTK#OP1F
podría almacenar toda la misma información que los otros ejemplos.
Las cuadrículas de mosaico se pueden almacenar como una cadena con cada carácter que representa un tipo diferente de mosaico, por ejemplo:
i789pog5h3kl
donde podría decir lava, 9 hierba mala, etc.