現在、すべてのゲーム オブジェクトを説明するXMLが多数あり、そのプロパティが設定されています。例えば:
<gameObject id="commonEnemy">
...
<data>
<life>100</life>
<speed>12</speed>
</data>
<tags>
<tag>KILLABLE</tag>
<tag>COLLIDABLE</tag>
</tags>
...
</gameObject>
すべてのファイルには、異なる「コンポーネント」があります(上記の例のデータとタグのように)。これらのファイルは数千近くあり、多くのディスク容量を消費します。しかし、いくつかのゲーム オブジェクトは、いくつかのプロパティを他のオブジェクト と「共有」するため、デフォルトファイルを作成し、そこから他のファイルを継承して、必要なものだけを変更することができます。何かのようなもの:
<gameObject id="badassEnemy" import="commonEnemy">
...
<data>
<life>200</life> <!-- I'm increasing the life -->
</data>
<tags>
<tag>KILLABLE</tag>
<!-- And is not more collidable. Totally weird XML syntax, but just to make a point -->
remove <tag>COLLIDABLE</tag>
</tags>
...
</gameObject>
しかし、私の知る限り、XML はデフォルトで継承をサポートしておらず、ノードのマージにもあまり適していません。
私が必要としているのは、次のことを可能にするフォーマットです。
- 1 つのオブジェクトから継承する
- 単純型と配列型を追加
- 単純型と配列型を変更する
- 単純型と配列型を削除する
配列には、インデックスなどでアクセスする必要があります。diff形式を調べましたが、デフォルトの型を変更するとすべての子が壊れてしまうため、それを使用できません。カスタム バイナリファイルがディスク容量を節約する方法であることはわかっていますが、オブジェクトは単純なメモ帳アプリケーションで編集可能でなければなりません。JSONとYAMLも調べましたが、どちらも継承を考慮していないようです。
やりたいことを実行できるデータ形式はありますか? または、独自のデータ形式とパーサーを作成する必要がありますか?