1

ファイルを使用してマップを作成したいのですが、それを行う最善の方法について疑問に思っています。実際にフォーラムを検索したところ、マップをランダムに作成するマップ生成アルゴリズムしか見つかりませんでした。

最小限の例を見てみましょう。たとえば、次を含むファイルがあります

0110
1001
1000
0000

すべて0は水であり、すべて1は地である。これを処理するには、2 つの異なるビットマップを用意し、それらを適切な座標にロードするだけです。それは簡単です。

しかし、1000*1000 の大きなマップがあり、フレームごとに 16*16 タイル分のスペースしかないとします。次に、現在の位置を取得し、その周りにマップを作成します。

最小限の例を使用し、x と y が要素 1..4 である位置 (2,2) にある 3*3 タイルしか表示できないと仮定すると、この時点でユーザーに表示されるものは次のようになります。

011
100
100

解決

行が x 座標方向を表し、列が y 座標方向を表すテキスト ファイルを使用することを考えました。ファイル全体がプログラムの開始時にロードされています。これは、1 タイルに 1 バイトが必要であると仮定すると、あまり多くの RAM を使用するべきではありません。

ユーザーが移動しているときにマップを再描画するには、移動方向を取得し、タイルの高さ/幅の現在のビットマップを反対方向にスライドさせ、新しい空白のビットマップのみを検索します。したがって、毎回 m*n タイルをロードする代わりに、m+n-1 (m は y 方向に表示されるタイルの量、x 方向に n は表示されるタイルの量) タイル (対角線を移動する場合は最大ケース) のタイル情報を検索するだけで済みます。ユーザーが移動します。

上記の例をより理解しやすくするために、例を作成しました。これは全体のマップです:

全体マップ

3*3 タイルしか表示できず、ユーザーは位置 (2,2) にいるため、実際に表示されるのは次のとおりです。

開始位置

今、彼は右下隅に向かって移動しています:

移動中

黒枠のセクションは反対方向に移動しているため、次のようになります。

再描画後

空白のタイル (黒枠の白い領域) を検索する必要があり、最終結果は次のようになります。

最終イメージ

質問

これはマップを作成する良い方法ですか?それとも、マイクロソフトの xna-gamestudio パッケージに既に実装されている可能性がある、はるかに高速な機能がありますか?

4

1 に答える 1