0

この質問は、次の検討の後に現れました。トラビアン戦争やティベリウム戦争のようなMMOGの巨大な世界地図を考えてみてください。2Dマップであっても、通常、プレイヤーの町や地形など、さまざまなIDがあります。

それらのマップはどのようにデータベースに保存されますか?その位置にあるIDへの外部キーを使用して、すべてのタイルにエントリがありますか?または、その逆です。各IDは、その位置を定義する2つの位置属性(x、y)として使用されますか?

より広い意味で、私の質問は次のとおりです。mysqlのようなデータベースに位置ラティス(正方形のタイル、六角形のタイルなど)を格納するための最も効率的な方法は何ですか?dbに位置または位置のリストを照会するときに、そのようなストレージを作成する際のボトルネック(ある場合)は何ですか?

4

1 に答える 1

0

これは完全にシナリオに依存します。たとえば、マップがまばらである場合、座標を持つエンティティの位置を1行に格納することが理にかなっている場合があります。トポロジが不規則である場合(つまり、任意のタイルから任意に多くのパスがある場合)、それをグラフとして保存できます(つまり、1対多の構成で「ノード」テーブルと「エッジ」テーブルを分離します)。 。データベース内のアイテムに連続(たとえば、実際の)座標を使用し、アプリケーションでそれらを論理的な「タイル」に単純に分割することを決定する場合があります。

同様に、ボトルネックはアプリケーションに依存します。あなたは定期的に「私の周りには何がありますか?」と尋ねる必要がありますか、それとも単に「ここからそこまで行けますか?」と尋ねるだけですか。特定のユースケースを念頭に置いている場合は、さらに詳細を追加して、より詳細な回答を提供することを試みることができます。

そして、パフォーマンスについて話していることはいつもそうであるように、架空のケースでのランダムな推測は、プロトタイピングと測定の代わりにはなりません。

于 2012-11-11T15:14:58.500 に答える