ゲームコンテンツの保存にデータベースを使用する必要がありますか?[閉まっている]


16

SFMLを使用してC ++で記述された2Dゲームがあります。ファイルまたはデータベースに行/エントリ/行を追加することで、アイテムやエンティティなどのコンテンツを簡単に追加できるように、ゲームを拡張可能にしたいと考えています。

プログラムにコンパイルする必要はないが、実行時に読み書きできるものを探しています。データベースを使用するのが適切な場合


1
ニーズをさらに明確にしてください。データベースは非常に高速ですが、非常に複雑です。本当にスピードが必要ですか?テキストファイルを使用しないのはなぜですか?ベンチマークを実行しましたか?
アンコ

何個のアイテムを持ちますか?それは百万人以上ですか?これは、テキストファイルを介したデータベースの使用を検討するしきい値についてです。
フィリップ

私はデータベースがこれには行き過ぎだと言うでしょう、ただある種の定義リストを使ってください。おそらく単なるテキストです。XMLまたはJSONを検討してください。
ヒューゴジンク

1
XMLまたはJSONもお勧めします。私はXMLのほうが人間として読みやすいので好きですが、JSONも良い選択です。
Draco18sは

データシステムやゲームでの実装方法に関する知識はあまりありませんが、Microsoftは多くの単純なアプリ(多くの機能を持たないアプリ)でマイクロデータベースの実装を使用する傾向がありますデータ、または外部データベースのニーズがありますが、「関係」などを持つ傾向があります。使いやすさを念頭に置いている限り、意味があります。(悪いアイデア:データの正確性を強制する超形式化されたXML名前空間の使用)
Katana314

回答:


26

データベースが必要な場合にのみデータベースを使用してください。あれは:

  • 複雑なクエリを頻繁に実行する必要がある場合。
  • 複雑なデータ関係がある場合。
  • データが巨大で、メモリに収まらない場合。

ゲームのデータがこれらの条件のいずれかを満たす場合、データベースを使用することでメリットが得られる場合があります。これらはあまり一般的ではなく、おそらくあなたはそれらのどれも満たさないことに注意してください。もしそうなら、私はSQLiteか、実行中のサーバーを必要とせず、単なるライブラリーであるという同様の考えを持つ何かに行きます。

それ以外の場合は、起動時にファイルを使用してメモリにデータをロードします。ゲームを変更可能にする場合は、ゲームのディレクトリとmodsのディレクトリの両方からこのデータをロードし、競合する情報をマージする方法を定義します。

また、あなたがあれば、そのノート行うデータベースを使用し、それはまだ初期データを読み込む場合にのみゲームのロードデータベースを構築するために、ファイルを使用して、あなたと改造開発者の両方に利益をもたらすかもしれません。このデータベースの潜在的なサイズが非常に大きい(つまり、数十MiB以上)場合を除き、インメモリデータベースを使用することができ:memory:ます。これは、データベースパスとして指定することでSQLiteで可能です。


3
SQLiteあなたのニーズが「複雑」または「巨大」ではない場合でも、私は非常に二番目に検討したいと思います。実際に、小さくてそのように埋め込まれたものを使用すると、データベースをすぐに使用できるという大きなメリットが得られる理由がたくさんあります。
wjl

また、モバイルプラットフォームでは、データベースを使用して情報を保存します。AndroidはSQLiteを使用します。これは、モバイルプラットフォームのほとんどの作業が既に完了していることを意味します(データ処理の観点から)。また、SQLiteのセットアップとSQLiteデータの編集は(SQLite Studioなどのプログラムを使用して)非常に簡単です。SQLiteを使用する場合、最善の策はV3を使用することです。しかし、それ以外は、スポットに!
イスマエルミゲル

@wjl:同意しました。正規化と参照整合性制約の利点は、より小さなゲームデータセットでも十分に価値があります。(今では、SQLiteに適切な参照整合性制約を実行させるのはそれほど苦痛ではなかったとしたら...)
Mason Wheeler

これは、リレーショナルデータベースの使用に対する議論です。単純なインデックス付きキー値ストアは、まだ価値があるかもしれません。
マーク

1
@Markゲームでキーと値のストアを使用する場合は、ハッシュマップまたは同様のメモリをメモリに保持するだけで済みます。
ダークホッグ

5

私はゲーム開発にMongoDBが本当に好きです。パフォーマンスがとても良く、柔軟性があり、使いやすく、jsonベースです。

NoSQL Archであるため、コレクションに必要なフィールドを追加するだけでよいため、ゲームのような「動的」環境に非常に適しています。

それを与える覗いて

何らかのMMOターンベースの戦略ゲームを開発している場合、おそらくCouchDBについて読む必要があります。これは、本当に優れたバージョン管理システムを備えたNoSQLデータベースです。


良い答えではありません。質問は「どのデータベースを使用すべきか」ではなく、「データベースをまったく使用すべきか」でした。
ウリウィットネス

1

CastleDBは、後でデータベースをJSONファイルに変換する単なるエディターであるため、良いオプションです。プレーンテキストファイルが最適であるという回答をたくさん目にしました。そのため、CastleDBはおそらく両方の世界で最高です。


悪い答えではありませんが、質問を見逃しています。質問は「どのデータベースを使用すべきか」ではなく、「データベースをまったく使用すべきか」でした。
ウリウィットネス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.