特定の実装についてあまり詳細を提供していないので、このタイプのゲームを処理する一般的な方法を提供します。
最初に、ゲーム ワールドの「アクティブな」エリアを定義する必要があります。これは、シミュレートする必要があるワールドのエリアです (つまり、このエリア内のエンティティが移動し、ワールドと相互作用します)。
世界のレイアウトは次のようになります。

この例では、世界は灰色のブロックであり、画面の境界 (黒いフレーム)を超えて広がっています。赤いフレームはアクティブな領域を示しています。ディスプレイのサイズを超えていますが、世界全体をカバーしていないことに注意してください。この領域のサイズは、特定の実装/ニーズによって異なります。
アクティブ エリアは通常、プレーヤーと一緒に移動するため、プレーヤーからの距離 (2 方向) として簡単に表すことができます。
基本的な考え方は、エンティティ (青色) は、アクティブな領域内にある間だけシミュレートされるというものです。アクティブ領域の右側にあるすべてのエンティティは、そこに入るまで非アクティブである必要があり、その時点でシミュレーションを開始できます。このため、アクティブ領域は、エンティティが初期時間を確保できるように、表示領域の右側にある程度拡張する必要があります。表示される前にシミュレーションを実行します。エンティティがアクティブな領域 (左側) を離れると、シミュレーションを停止し、必要に応じて削除できます。
したがって、例の画像では:
- E1はすでにアクティブ エリアを通過しており、不要になっています (無効化/削除できます)。
- E2はアクティブで表示されています (現在表示されています)
- E3はアクティブですが、まだ表示されていません
- E4とE5はまだアクティブではなく、プレイヤーが近づいてアクティブ エリアに入るとアクティブになります。
エンティティの扱い方については、ワールドの大きさやエンティティの数などによって異なります。
1 つの方法は、エンティティがアクティブ領域に入ったらエンティティを作成/ロードすることです。この場合、表示領域に入る前にエンティティを作成/ロードするのに十分な時間を確保できるように、エンティティをディスプレイの右側に十分に拡張する必要があります。これは、何千ものエンティティが存在する可能性がある大規模な世界に最適なアプローチです。この場合、それぞれをチェックせずに大量のエンティティを処理から除外できるように、世界に何らかの細分化が必要になる場合があります-それぞれがその中にあるエンティティを含む固定サイズの「ブロック」の配列が機能します単純な 2D 横スクロールでは、ほとんどの場合問題ありません。
もう 1 つのアプローチは、開始時にすべてのオブジェクトをロードし、それらがアクティブな領域に入ると、シミュレーションの更新 (物理、動き、衝突検出など) のみを実行することです。このアプローチは、より小さな世界でうまく機能し、より簡単に実装できます。