XML ist eine gute Wahl, wenn Sie nicht an die Größe gebunden sind und nativ unterstützt werden (z. B. in .NET und Flash). Wenn Sie jedoch ein schlankes Format wünschen, können Sie ganz einfach Ihr eigenes Format und Ihren eigenen Parser erstellen. Normalerweise benutze ich 1 Zeichen, z. Komma, um jedes Objekt zu trennen. Um die Zeichenfolge zu dekodieren, teilen Sie das Komma. Jetzt benötigt jedes Objekt unterschiedliche Eigenschaften. Trennen Sie diese mit einem anderen Zeichen, z. B. einem Semikolon, und verwenden Sie ein anderes Zeichen, um die Eigenschaftsnamen von den Eigenschaftswerten zu trennen, z. Doppelpunkt. Alle können somit einfach ohne Regex einfach mit string.split dekodiert werden. Hier ist ein Beispiel:
id:1;x:5;y:45.2;angle:45,id:28;x:56;y:89;angle:12;health:78
Sie können noch mehr Platz sparen, indem Sie die Eigenschaftsnamen auf 1 Zeichen reduzieren, z. B. h für die Gesundheit. Z.B.
i:1;x:5;y:45.2;a:45,i:28;x:56;y:89;a:12;h:78
Vergleichen Sie mit der JSON-Alternative:
{"o":[{"i":1, "x":5, "y":45.2, "a":45}, {"i":28, "x":56, "y":89, "a":12, "h":78}]}
Wenn Sie die Größe Ihrer Zahlen verringern möchten, können Sie sie auch mit dem vollständigen Satz druckbarer UTF16-Zeichen codieren. Dieser Thread hat mich dazu inspiriert, eine Frage zu Stack Overflow zu stellen, wie viele Daten Sie in einen Bildschirmcharakter packen können . Die Antwort scheint irgendwo über 40.000 Werte für eine ganze Zahl zu liegen, wenn es Ihnen nichts ausmacht, Brail-, Kanji- und Schachfiguren zu haben: ♔♕♖♗♘♙♚♛♜♝♞♟
Um eine weitere Größenreduzierung zu erhalten, können Sie mithilfe der Lese- / Schreibreihenfolge bestimmen, welcher Wert welcher ist. Die ersten beiden Zeichen stehen also für die ID, die nächsten beiden für die x-Position, die nächsten beiden für das y, dann für den Winkel und dann für den Zustand usw. Also:
F5DGP@%&002DFTK#OP1F
könnte alle die gleichen Informationen wie die anderen Beispiele speichern.
Kachelgitter können nur als Zeichenfolge gespeichert werden, wobei jedes Zeichen einen anderen Kacheltyp darstellt, z.
i789pog5h3kl
wo ich Lava bedeuten könnte, 9 Gras usw. bedeuten