2012-02-12 13 views
1

私はJavaで比較的単純なゲームをOPENGL(Processing経由で)を使って作業しています。私はObserverパターンを使ってProcessing Appletに渡されるゲームのアップデートで典型的なMVCパターンを使用しています。私は、プログラムのモデル側が更新でき、ビュー側が読むことができる、比較的シンプルなシーングラフを実装したいと考えています。これまでのところとても良いですが、シーングラフは私には新しく、最初はシーングラフを生成するうえでうまくやっていきませんでした。Javaゲーム用の単純なシーングラフを生成する

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

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

答えて

0

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

私はあなたのモデルとビューの間の接続を紹介することをお勧めします。そして、IMHOでは、開発段階の開始にあまりにも多くの面倒を追加するので、他のものを隠すことで完璧な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 
} 
+0

感謝を。私は、各ワールドオブジェクトがそれ自身を描画する方法を知っていて、ツリーに追加できるシーンノードを生成する同様のソリューションを使用しました。 – noise

関連する問題