为Java游戏生成简单的场景图

时间:2012-02-12 08:06:39

标签: java opengl scenegraph

我正在使用OPENGL(通过Processing)开发一个相对简单的Java游戏。我正在使用典型的MVC模式,游戏更新使用Observer模式传递给Processing Applet。我想实现一个相对简单的场景图,程序的模型端可以更新,视图端可以读取。到目前为止这么好,但场景图对我来说是新的,我很难想出一个最好的方法来生成场景图。

模型方目前有两个游戏实体集合,一个用于游戏中的单元,另一个用于环境对象。我可以简单地遍历这些并生成节点以添加到场景图中。我不确定的是当其中一个实体被更改或销毁时该怎么办。我是否会再次生成整个树(看起来效率很低)或者每个实体是否“知道”其场景节点并且能够在需要时更新它?

是否有人对如何生成场景图的材料有任何一般性建议或链接?

1 个答案:

答案 0 :(得分: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
}