1

イベントに基づいて動作する必要がある完全に自動化されたゲームエンジンを作成しようとしています。私が直面している問題は、マップクラスを作成し、それがゲームクラスで初期化されていることです。これはほとんど静的であり、ゲームに存在するマップは1つだけです。新しいマップは、現在のマップのオブジェクトをクリアし、新しいマップを追加することによってロードされます。マップクラスのソースはここで確認できます。

http://code.google.com/p/game-engine-for-java/source/browse/src/com/gej/map/Map.java

主な問題は、衝突検出にあります。ここでは、ブルートフォース衝突検出を使用すべきではありません。これによりゲームの速度が大幅に低下するため、オブジェクトに近いオブジェクトについてのみ衝突をチェックしたいと思います。MapLoaderインターフェースを使用してマップを作成してきました。別のスレッドでオブジェクトのcollision()メソッドを呼び出すと役立つと思います。ただし、Gameクラスではすべてのマップオブジェクトが更新されます。

それが役立つかもしれない場合に備えて、これがゲームクラスです

http://code.google.com/p/game-engine-for-java/source/browse/src/com/gej/core/Game.java

オブジェクトが破壊されない場合があるという別の問題があります。マップのremoveObject()メソッドを呼び出していますが、1秒の遅延があり、まったく削除されない場合があります。

ゲーム内に158個のオブジェクトがあるプラットフォームゲームで48〜64fpsが得られます。しかし、スペースインベーダースタイルのゲームでは、20〜30fpsしか得られません。最適化に関するアドバイスは大歓迎です...

バイナリスペーシングなどのチュートリアルを誰かに教えてもらえたらありがたいです。

4

1 に答える 1

2

コードを見て2つの提案:最初に、衝突検出でオブジェクトの割り当てを最小限に抑えるようにし、新しいものを作成せずRectangles、衝突検出アルゴリズムを直接記述して、既存のデータを処理する必要があります。

次に、より重要なことです。衝突検出エンジンは、次の2つのレベルを使用して機能する必要があります。

于 2012-06-05T01:44:52.357 に答える