1

私は(処理を介して)OPENGLを使用してJavaで比較的単純なゲームに取り組んでいます。私は典型的なMVCパターンを使用しており、ゲームの更新はObserverパターンを使用してProcessingAppletに渡されます。プログラムのモデル側が更新でき、ビュー側が読み取れる比較的単純なシーングラフを実装したいと思います。これまでのところ良いですが、シーングラフは私にとって新しいものであり、そもそもシーングラフを生成するための適切な方法を思い付くのに苦労しています。

モデル側には、現時点でゲームエンティティ用の2つのコレクションがあります。1つはゲーム内のユニット用で、もう1つは環境オブジェクト用です。これらを繰り返し処理してノードを生成し、シーングラフに追加することができます。私がよくわからないのは、これらのエンティティの1つが変更または破棄されたときにどうするかです。ツリー全体を再度生成しますか(かなり非効率的です)、または各エンティティがシーンノードを「認識」し、必要に応じて更新できるようにする必要がありますか?

シーングラフの生成方法に関する一般的なアドバイスや資料へのリンクはありますか?

4

1 に答える 1

0

いずれにせよ、グラフィカル オブジェクトとゲーム エンティティを接続する必要があります。そうしないと、マウス クリックなどのユーザー イベントをシーンからロジックに変換できないからです。

したがって、モデルとビューの間に接続を導入することをお勧めします。そして、私見ですが、開発の開始段階で非常に多くの手間がかかるため、完全な MVC を作成して別のものを非表示にすることはできません。グラフィカル オブジェクト (または、より適切には、グラフィックで実行したいアクションのインターフェイス) へのリンクをゲーム エンティティに追加するだけでうまくいくはずです。

次のようになります。

interface UnitView {
   void add(Point position);
   void move(Point position);
   void remove(Point position);
   void setOnClick(Runnable callback);
}

class GlUnit implements UnitView extends GLSceneObjectOrWhateverItCalled {
    //this class implements all drawin and animation; and handles calls from model
    //through UnitView interface
}    

class Unit {
    void setView(UnitView view); // this method is called by manager which generated scene

    // here is your implementation of unit logic
}
于 2012-02-12T09:41:45.193 に答える