首页 / 软件开发 / JAVA / j2me游戏引擎的基本构成
j2me游戏引擎的基本构成2011-01-13游戏引擎在国内还是有一批人走在前沿的,但出于种种的原因发展的并不是很好,并且引擎的神秘面纱和不可揣测的高难度使一些人还没有正式开始就已经打了退堂鼓。通常我们说游戏引擎的时候总是想到3D游戏引擎,的确游戏引擎发展到今天将它发挥到极致的正是3D引擎,但在3D引擎之前其实还是有很多2D,2.5D游戏引擎的,它们现在虽然看起来很弱,但却为3D引擎的产生提供了巨大的理论支持。原理上讲引擎的结构真的很简单,并没有大多数人想的那么复杂。本篇文章不会讲更复杂的引擎,仅仅针对j2me来讲,但麻雀虽小五脏俱全,我们不能因为j2me游戏可能连一幅图片的大小都不如而放松对引擎的要求,一方面是理论的需要,另一方面引擎一但开发成功可以大大减少程序与美工的工作量和提高产品质量和数量。如果单单讲非常抽象的讲引擎的话大家可能非常难以接受,那么我就从一个和游戏非常相近的产业开始说起。这个产业就是电影。电影从某种程度上给与了游戏引擎以丰富的抽象框架与理论,也可以说功不可没。那么Ok,我们就从一个电影的拍摄过程来了解引擎的各个部分吧。我们为了逻辑上的严谨首先要声明几个前提条件:1.剧本已经有了(游戏策划案) 2.拍电影需要的资源(道具,群众演员(NPC),主角。这些其实就相当于游戏开发过程中的资源,美工已经把东西都做OK了)下面是一个电影拍摄的场景:人物:导演,剧务,摄影师,主角,其它演员(张三,李四等等),其它剧组人员道具:一把枪,一个木箱,几个麻袋,一个药箱,一个弹夹场景:狭窄的街道,两旁是破旧的房子,碎石地面摄影机:两个(0)这是一个抗日英雄在街道与敌人殊死搏斗的,姑且叫片断吧(1)马上要开拍了,可是东西还没有准备好,导演见此状大喝:剧务,根据我给你的单子把道具搬出来!听到导演要求道具,剧务开始行动。嗨咻~嗨咻~ 终于从库房里搬出了所有道具并根据要求摆放到了相应的位置。“动作这么慢,你是MOTO吧,人家Nokia比搬的快多了。”:导演喝道。(2)道具摆好了,导演对当前的摄影又不满意了,嘿你们怎么回事,快把镜头移到xx去,于是摄影师又将镜头摆放到了合适的位置(3)“嗨,说你那,张三,到那儿去,站好了别动。李四,站在xx,都别动啊,等镜头移过去了再按我教给你的动”:导演喝口水说到。(4)“嘿嘿,主角大人,您看您准备好了吗?要不,您站到xx去?给您一把枪,唉呦呦,别对着我啊”导演讨好道。(5) 各就各位,开始。。。暂时先把电影的问题讲到这儿,我们一起来看看,当中都包含了那些和引擎中相同的元素,从上面的编号开始说。(0)叙述了一个故事的片断,请大家想想和游戏中哪部分很想象?没错,脚本!它在大体上叙述了当前描述了一个什么故事,以及故事中各个角色将要发生的行为和事件,比如:主角被张三打了一枪托,李四被主角打死等等,而张三和李四被打死后主角冲出包围,那么放到游戏中通俗的说就相当于主角过关的条件,张三李四的死触发了剧情继续往下发展的事件。举一反三,我们的游戏如果关卡的BOSS被干掉了,才能继续往下玩,够直白了吧。OK,这是脚本系统。(1)剧务根据导演的要求从库房拿出了道具并且摆放到了场景中。这在引擎中又代表了什么呢?1.导演,2道具,3场景,它们很好的将引擎几个大的部分抽象了出来。导演=场景控制器剧务=场景管理器场景=场景系统“导演”通过向“剧务”发出请求,“剧务”根据请求将资源载入,并将资源放到自己的管理列表中,而具体放到什么位置,则是“导演”来控制,等资源使用完毕,“剧务”将资源从列表中释放。这是很重要的一个过程,也许100个程序员有100种控制方法,但目的只有一个,在有限的空间和CPU资源中最大程度照顾I/O效率与执行效率。(后面章节会有一些典型代码与控制方法供大家参考)