部分一:
每一个游戏的恒心其实就是一个环,在游戏的生命周期内会不停的循环执行部分代码,形成这个环的原
因是场景中坐标系的不断变换所致。
所以AbstractGame子类负责创建这个环,当某一个子类改变这个环时,其他的子类相应的被更新。如图:
游戏的初始化,更新,关闭等等操作都在一个线程中进行。
部分二:
在创建图形应用时,我们需要一个包括main()函数主类。jME给我们提供了AbstractGame和它的子类,
AbstractGame提供了游戏主环,这个游戏环是这个应用的中柱,驱动整个应用。该主环在应用被结束前一
直循环调用,每一次循环叫做一帧。游戏环如何处理是依赖与你选择的AbstractGame的子类。
AbstractGame及其所有的子类是抽象类,因此不能直接被实例。这意味着用户必须继承已经提供游戏类型
的某一类型,并实现它的静态方法。这也就是说如果API提供的AbstractGame的子类不能符合或者满足你系
统的要求时,你可以自己创建满足你需要的AbstractGame的子类。其实API提供的AbstractGame的子类包
括了大部分的功能,基本上能满足大体的需求。
getVersion方法将为您提供一个字符串,JME详细的版本号。该版本字符串形式: jME version 1.0 。 此
字符串是一个有用的系统工具信息。
部分三:
jME库提供5种游戏类型。
BaseGame
BaseGame提供AbstractGame的基本实现。它仅仅定义了主游戏环,这个环是高速运转的,每一次迭代
都是CPU或GPU的一次处理。我们必须扩充循环方法:
initSystem方法,创建显示系统。这些是非游戏内容,比如窗口,摄像机,输入系统等等。基本上,所有
的游戏系统都应该从这初始化。
initGame方法创建场景数据。
update方法,更新场景数据。比如游戏定时器, 输入方法、动画, 碰撞检查等等。
render方法,处理窗口游戏场景显示。
reinit方法,重建系统时被调用。比如显示设置被改变。
cleanup方法,关闭打开的资源。
SimpleGame
SimpleGame是一个快速使用和容易设计的游戏类型。SimpleGame是BaseSimpleGame的子类,实现
BaseSimpleGame的所有的抽象方法。相反地, 用户还必须实现simpleInitGame方法,在simpleInitGame方
法中,用户只需关注自己的游戏数据,系统会为用户提供一个根节点(rootNode),所有的游戏数据都可以附
加在这个根节点上。而且这些都被初始化,其中包括输入系统(FirstPersonHandler),计时器设置,还提供
了状态:灯光,缓冲器和默认关闭(WireFrameState)。
此外,可以重写simpleUpdate方法:更新。这个扩展可以提高SimpleGame的更新能力;simpleRender
方法:渲染。
SimplePassGame和SimpleHeadlessGame用于Swing/AWT,像BaseGame一样提供快速创建应用。
下面的3种类型为BaseGame类型提供变化,事件引起的速度变化。
FixedFramerateGame:允许用户设置游戏最大帧。这个游戏环不是快速的循环,但是也不是慢速的循
环。限制游戏环的循环速度在操作系统优化的范围内,也就是说,如果游戏环的循环速度没有限制,很容易
是CPU使用达到100%。对于全屏应用是好的,但是对于窗口应用会存在问题。
FixedLogicrateGame:允许尽可能地快,但是仅仅给一个定义就要花费很多的时间对于更新这个方
法。指定游戏按照指定的比例更新,尽更可能快速的处理它。
VariableTimestepGame:与BaseGame相似,然而它提供框架间的时间,用于维持定时器对象。
部分四:
JME 2.0 完整的功能列表
导言
JME的是一个场景图的体系结构。该场景图允许在一个树结构,数据组织的游戏在一个父节点可以包含任意数量的子节点,但子节点包含一个单亲家庭。 .通常,这些节点是有组织的空间,使整个供处理部门迅速抛弃。 .例如,如果我们建立了一个图,这样在一个房间里都有一个父(室),所有房间都有一个父(层),所有楼层都有一个家长的建设的各个对象。我们的性格是在会议室的一楼1。 我们可以快速地抛弃在地上2节点(这是每一个丢弃在二楼和这些房间中的每个对象的房间打开)然后,我们可以处理楼1树枝。 所有房间未房间1被丢弃(包括在那个房间里所有的对象)。然后,我们处理室1包括它的对象。
抛弃意味着各种各样的事情,但最重要的是图形编程的数据剔除. JME的的相机系统使用域剔除扔掉现场分行不可见。 .这允许将呈现典型的快,现场的大部分是不可见在任何一个时间,复杂的场景。
该场景图的叶子节点是几何将呈现给显示。有许多支持几何学的,其中包括:贝塞尔补丁,线,点,模型(Milkshape,MD2的,日月光等),地形,详细程度,等等。
JME的还支持许多高层次的影响,如:骗子(渲染到纹理),环境制图,光晕,着色,粒子系统等
JME的供应与易于使用的用户,但建设强大的应用程序类。 到JME的跳应该是一个快速,无痛的过程。 一个小的学习曲线,你可以有你的游戏和在任何时间运行。