XML est un bon choix si vous n'êtes pas limité par sa taille et qu'il est pris en charge nativement (par exemple en .NET et Flash) mais si vous voulez un format mince, vous pouvez créer votre propre format et analyseur assez facilement. J'utilise normalement 1 caractère par exemple. virgule pour séparer chaque objet. Pour décoder la chaîne, effectuez une scission sur virgule. Maintenant, chaque objet a besoin de propriétés différentes, alors séparez-les avec un caractère différent, par exemple un point-virgule, et utilisez un autre caractère pour séparer les noms de propriété des valeurs de propriété, par exemple. Côlon. Tout peut donc être décodé facilement sans regex simplement en utilisant string.split. Voici un exemple:
id:1;x:5;y:45.2;angle:45,id:28;x:56;y:89;angle:12;health:78
vous pouvez économiser encore plus d'espace en gardant les noms de propriété à 1 caractère, par exemple h pour la santé. Par exemple.
i:1;x:5;y:45.2;a:45,i:28;x:56;y:89;a:12;h:78
Comparer à l'alternative JSON:
{"o":[{"i":1, "x":5, "y":45.2, "a":45}, {"i":28, "x":56, "y":89, "a":12, "h":78}]}
De plus, si vous souhaitez réduire la taille de vos numéros, vous pouvez les encoder en utilisant l'ensemble complet de caractères UTF16 imprimables. Ce fil m'a inspiré à poser une question sur Stack Overflow sur la quantité de données que vous pourriez emballer dans un caractère à l'écran . La réponse semble être quelque part au-dessus de 40000 valeurs pour un entier, si cela ne vous dérange pas d'avoir des pièces de brail, de kanji et d'échecs: ♔♕♖♗♘♙♚♛♜♝♞♟
Pour obtenir une réduction de taille supplémentaire, vous pouvez utiliser l'ordre de lecture / écriture pour déterminer quelle valeur est laquelle, de sorte que les deux premiers caractères représentent l'id, les deux suivants sont la position x, les deux suivants l'y, puis l'angle, puis la santé , etc. Donc:
F5DGP@%&002DFTK#OP1F
pourrait stocker toutes les mêmes informations que les autres exemples.
Les grilles de tuiles peuvent être stockées comme une simple chaîne, chaque caractère représentant un type de tuile différent, par exemple:
i789pog5h3kl
où je pourrais dire la lave, 9 signifie l'herbe, etc.