0

ゲームの2Dレイアウト(ウォークパス)を作成する方法についてのアイデアを探しています。タイルは32x32ピクセルで、キャラクターはタイル上を移動します。

私は現在2つの方法を考えましたが、まだそれらのいずれも試していません。

ゲームは、約400x300または512x356のウィンドウに表示されます。ゲームマップ自体が1000x1000より大きくなる可能性があるウィンドウよりもそれほど大きくはありません。そのため、ほとんどの場合、マップの一部のみが表示されます。

それで、私がそれらについて考えた限り、これが私の2つのオプションです。

[1]:各オブジェクト、プレーヤー、敵などを含むマップ全体を最初に作成します(これにより、ロード時間が長くなる可能性がありますが、マップを移動しやすくなります)。

[2]:表示されているマップとその周囲の1つのタイル(表示されていない)のみを作成して、ストーリーボードでそのマップを表示し、範囲外の行/列を削除して、列を再度作成できるようにします。

つまり、5x5タイルの部屋があり、7x7タイルをロードする場合です。右に移動すると、すべてのタイルが左に移動し、プレーヤーが画面の中央に表示されたままになります。次に、左端のタイルセットを削除し、右側に新しいタイルセットを作成します。これは、ストーリーボードの移動が完了する前に行われることを願っています。

2番目の方法では、32x32より大きいオブジェクトだけを考慮する必要があります。どうすればそれらに最善の対応ができるでしょうか。しかし、これは後で対処したい問題です。今のところ、私は人々の意見と可能なより良い方法を知りたいと思っています。

この質問がstackoverflowに適切でない場合、私は非難します。

4

1 に答える 1

0

「ロード」という言葉には注意してください。ロードとは、ディスク/ドライブからデータを取得してメモリに入れることを意味します。そのためには、ゲームを開始する前に、現在のすべての世界/マップを一度にロードする必要があります。私を信じてください、あなたはマップが実行されている間、動的な読み込みに身を任せたくありません。

ただし、マップの定義をロードするだけでよく、その時点でオブジェクトのインスタンスを作成する必要はありません。したがって、プレイヤーが歩いているときにマップ定義からインスタンスを作成できます...しかし、あなたは本当にメモリ内のその制約ですか?マップに事実上数百万のタイルが含まれているMinecraftやTerrariaのようなゲームの場合は理解できますが、32x32の場合は、定義をロードするときにすべてのタイルを作成することを検討できます。

もちろん、解決策が何であれ、画面に表示されているタイルのみを描画/計算/衝突/更新する必要があります。

于 2012-10-21T17:20:21.550 に答える