XMLは、サイズに制限がなく、ネイティブでサポートされている場合(.NETやFlashなど)に適していますが、スリムなフォーマットが必要な場合は、独自のフォーマットとパーサーを簡単に作成できます。私は通常1文字を使用します。各オブジェクトを区切るためのカンマ。文字列をデコードするには、コンマで分割します。各オブジェクトには異なるプロパティが必要なため、これらをセミコロンなどの異なる文字で区切り、別の文字を使用してプロパティ名とプロパティ値を区切ります。結腸。したがって、string.splitを使用するだけで、正規表現なしですべてを簡単にデコードできます。次に例を示します。
id:1;x:5;y:45.2;angle:45,id:28;x:56;y:89;angle:12;health:78
プロパティ名を1文字に抑えることで、さらに多くのスペースを節約できます(健康のためのhなど)。例えば。
i:1;x:5;y:45.2;a:45,i:28;x:56;y:89;a:12;h:78
JSONの代替と比較:
{"o":[{"i":1, "x":5, "y":45.2, "a":45}, {"i":28, "x":56, "y":89, "a":12, "h":78}]}
また、数値のサイズを小さくしたい場合は、印刷可能なUTF16文字の完全なセットを使用して数値をエンコードできます。このスレッドに触発されて、画面の1つのキャラクターにどれだけのデータを詰め込めるかについてStack Overflowで質問しました。点字、漢字、チェスの駒を持っていても構わないとしたら、答えは整数で40,000以上の値のようです。♔♕♖♗♘♙♚♛♜♝♞♟
さらにサイズを小さくするには、読み取り/書き込み順序を使用して、どちらの値がどちらであるかを判別できます。最初の2文字はIDを表し、次の2文字はx位置、次の2文字はy、次に角度、そしてヘルスです。など。
F5DGP@%&002DFTK#OP1F
他の例と同じ情報をすべて保存できます。
タイルグリッドは、各文字が異なるタイプのタイルを表す文字列として格納できます。例:
i789pog5h3kl
溶岩、9は草などを意味します