1

OpenGL と C++ を使用して基本的なサイド スクローラーを作成しようとしていますが、いくつかの基本的な概念上の問題に取り組むのに苦労しています。

  1. ウィンドウを簡単な「ブロック」 (ある種のグリッド システム) に分割します。どのレベルでこれをやりたいですか?(OpenGL ビューポートのサイズ、または x の倍数での作業を保証する何らかの抽象化を通じて?)

  2. これらすべての「ブロック」のデータを保存して、衝突検出といくつかの特殊効果を可能にします。これについての賢明な方法は何ですか-オブジェクトの多次元配列(タイルタイプなどの情報を含む)の線に沿って考えていましたが、これは非常にエレガントまたは効率的なソリューションのようには見えません.

4

2 に答える 2

1

通常、グリッドに分割されるのはウィンドウ(つまりビューポート)ではなく、「ゲームプレイエリア」です。アートのスタイルに応じて適切なサイズを選択し(64pxなど-技術的な理由から2の累乗のサイズを選択することをお勧めします)、ゲーム用にそのサイズのタイルを作成します(1D配列として保存およびロードされます)。 )。

次に、これらのタイルはタイルマップで(オフセットによって)参照されます。タイルマップは、実際にレベルがどのように見えるかを示します。各タイルには、衝突やゲームイベントを処理するための追加のメタデータを含めることもできます。Mappyのように、時間を節約するために既存のマップ形式とツールセットを使用することをお勧めします。

于 2011-10-11T20:08:58.473 に答える
0

ヒント:
ディスプレイとデータを別々に考えてください(モデル-ビュー-コントローラーのルックアップ)。

データの保存方法は、データの表示方法ではなく、アクセス方法によって異なります。コンピューターの観点から考えてみてください!

ヒント、多くの場合、データの1次元ストレージで作業し、2Dで作業するよりも、それに沿って次のポイントアップ/ダウンがどこにあるかを判断するのが最も簡単です。

于 2011-10-11T20:05:10.663 に答える