代わりにデータベースを使用することもできます-PostgreSQLには、X座標とY座標によって配置されるこのタイプのデータに最適化された特別なインデックス機能があります。返されるデータが正方形または長方形の領域ではなく、特定の半径内にあることを指定することもできます。
PostgreSQL(無料でオープンソース)
http://www.postgresql.org/
他のデータベースもあります。クライアント側では、スタンドアロン(ゲームクライアントアプリケーションで開始)を実行したり、コードライブラリの一部として含めることができるため、特定のタイプがこれに適している場合があります。 「ただ使用する」ことができます。利点は、ほとんどのSQLデータベースエンジンが既にこれを非常にうまく行っているため、インデックススキームを設計する必要がないことです。
データベースアプローチの利点は、チャンクを小さくできることです(または、チャンクを完全に取り除き、タイルを直接使用しますが、多くのタイルの少なくとも小さなチャンク/グループの使用は、設計によってはより効率的です)。次に、SQLクエリを使用して、表示可能な領域よりも大きな領域を取り込みます。近くの表示できない領域に重なるようにプリロードすることにより、プレイヤーがキャラクターを動かす前にタイルを準備できるため、より良い(できればスムーズな)ゲーム体験が得られます。
Ashen Empiresなど、一部のゲームは、最初に取得した後、ローカルハードドライブにマップデータの「キャッシュ」を保持することに気付きました(これは間違いなくネットワークI / Oを減らすためです)。
Ashen Empires(無料でプレイ、美しい2D実装)
http://www.ashenempires.com/
各チャンク/タイルで「最後に更新された」タイムスタンプを追跡することも役立ちます。ローカルに保存されたデータが利用できる場所では、SQLクエリに追加の「WHERE timestamp_column> $ local_timestamp」句が含まれ、更新されたチャンク/タイルのみが取得されるためですダウンロード(このように帯域幅を節約する2つの利点は、接続コストの削減と、プレーヤーのラグの減少です。これは、ゲームが人気を博したときに明らかになります)。
Ashen Empiresのスクリーンショット(数人のキャラクターが地元の銀行にいます。床の骨の外観から見ると、いくつかのスケルトンモンスターがさまよい、地元の町の警備員によって虐殺されたようです):