2D platfromゲームの適切なレベル表現/データ構造?


9

マリオのコピーをJavaでプログラムしようとしています。レベルの2つの表現/データ構造について考えていますが、どれを選択すればよいかわかりません。

  • 2D整数配列。
  • レベルを分割する四分木。

その長所と短所は何ですか?

回答:


9

四分木のポイントは、データの大きなチャンクを効率的に間引きして、すぐ近くのデータにのみ時間を費やすことです。ただし、2D配列はすでに場所固有のランダムアクセスを提供しているため、4Dツリーを冗長にする可能性のある2Dゲームの場合。3Dゲームでは、配列を使用してすべてを検索することはできません。そのため、クワッドツリー(またはより優れたオクツリー)が便利です。

ここで、レベルの基礎となるデータ表現について話します。グラフィックアーキテクチャの設定方法(3Dエンジンで平面を使用して2Dグラフィックを行うなど)によっては、グラフィックコンテンツを効率的にカリングするために、シーングラフで四分木を使用することができます。

そして、レベル内のさまざまな敵やその他のインタラクティブなオブジェクトを忘れないでください。おそらく、2D配列を使用してレベルのタイルを管理しますが、四分木を使用してすべてのインタラクティブな要素を整理します(たとえば、物理エンジン用)。


このように考えてみてください。レベル内のポイントをランダムに選択し、そのポイントの半径1000ピクセル以内のすべてを把握するためにどれだけの作業が必要かを考えます。すべてが2D配列の場所ごとに整理されているため、これをすばやく実行できる場合は、四分木は必要ありません。ただし、すべてをループして、各オブジェクトの距離を個別に確認する必要がある場合は、四分木を使用すると、検索をはるかに効率的に行うことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.