2011-12-06 5 views
9

C++ 2D RPGにXML、YAML、JSONを使用するかどうかはわかりません。ここでXML対YAML対2D RPGのJSON

が私の考えです:

  • 私はそのようなオブジェクトの(x、y)としてだけでなく、プレイヤーデータを保存するのは簡単です何かが、環境データを、必要とする座標;ロードタイム;日付;グラフィックス設定など

  • 私は、柔軟で使いやすく、軽量ですが、上記を処理するには強力なものが必要です。

どちらが最適ですか。 JavaScriptでJSONを使った経験がありますが、C++ではありません。これが行くルートなら、C++でJSONを解析するための良いリファレンスはありますか?

編集

正直テキストファイルが(私はバイナリにそれを書くことができる場合は特に)このような何かのための最も簡単で効果的な解決策のように思える場合は、その後、私はすべての耳です。

編集2

同様に他の提案を提供すること自由に感じなさい。

+0

これらは唯一のオプションですか?バイナリシリアル化フォーマット(Googleプロトコルバッファなど)はまったく問題になりませんか? –

+0

私はそのようなフォーマットを知らないのですが、それを可能性として含めるのは嬉しいです。 – zeboidlund

答えて

19

あなたの要件を満たす最も簡単なものを使用します。

階層型ストレージが必要ない場合は、フラットな表形式のファイルは他のものよりも扱いやすくなります。あなたがしなければならないのは、ディスクから行を読み込み、タブで分割することだけです。

キー/バリューペアタイプのストレージ(物のリストとは対照的に)をもっと探しているなら、INI filesは妥当かもしれません。このフォーマットには柔軟性がありますが、それを推論するときに推論するのは簡単ではありません。

階層が必要な場合は、JSONが簡単になる可能性があります。幅広い言語のJSONライブラリがあります。すでによく知られているようです。

https://stackoverflow.com/questions/245973/whats-the-best-c-json-parser

sqlite別の選択肢かもしれません。 SQLにはドラゴンズがありますが、sqliteの周りに素敵なC++ラッパーがあります。が扱いやすくなります。私の意見では、ACIDが主な利点です。

YAMLの仕様は多少長く見えるので、キッチンシンクが多いと思います。 APIはlibyamlのドキュメントを見逃すだけで、私が以前使っていたSAXインタフェースに似ています。私はそれについての事後知識はないが、正当な理由なしにそれを使用し始めるのは怠っている。

XMLは対処するのが嫌ですが、オプトインしないでください。

どちらを選択しても、管理できる程度に小さなコードで記述してください。あなたは本当にあなたのエンジンが最初に使うクラスを書こうと思っています。その後、それらを直列化することについて心配してください。あなたのシリアライゼーションがあなたのクラスデザインに影響を与えるならば、おそらくそれを後悔するでしょう。 :)

+2

最後の段落の+1 – MerickOWA

+3

+1最初と最後の段落。 – zeboidlund

関連する問題