私は、データをXMLとして保存するレベル編集ツールに取り組んでいます。
これは、データ形式を少し変更するだけで簡単であり、ツリーのようなデータでもうまく機能するため、開発中に理想的です。
ただし、欠点は、主にタグ名と属性名が重複しているため、XMLファイルがかなり肥大化することです。また、数値データがネイティブデータ型を使用するよりもかなり多くのスペースを使用するためです。小さいレベルでは、1Mb +になります。特に、メモリが比較的限られているiPhoneやその他のデバイスでゲームにシステムを使用する場合は、これらのサイズを大幅に小さくしたいと思います。
メモリとパフォーマンスの最適なソリューションは、XMLをバイナリレベルの形式に変換することです。しかし、私はこれをしたくありません。フォーマットをかなり柔軟に保ちたい。XMLを使用すると、オブジェクトに新しい属性を簡単に追加でき、古いバージョンのデータが読み込まれた場合はデフォルト値をオブジェクトに設定できます。そのため、属性を名前と値のペアとして、ノードの階層を維持したいと思います。
しかし、これをよりコンパクトな形式で保存する必要があります-タグ/属性名の大量の重複を削除するためです。ネイティブタイプの属性を指定することもあります。たとえば、浮動小数点データは、テキスト文字列としてではなく、フロートあたり4バイトとして格納されます。
Google / Wikipediaは、「バイナリXML」はほとんど新しい問題ではないことを明らかにしています-すでに何度も解決されています。ここに誰かが既存のシステム/標準のいずれかで経験を持っていますか?-ゲームの使用に理想的なものはありますか?-無料の軽量でクロスプラットフォームのパーサー/ローダーライブラリ(C / C ++)が利用可能ですか?
それとも、自分でこのホイールを再発明すべきですか?
または、理想を忘れて、生の.xmlデータを圧縮するだけで(zipのような圧縮でうまく圧縮する必要があります)、ロード時にメモリ/パフォーマンスヒットを取得する方が良いでしょうか?