`

android游戏super jumper

 
阅读更多
至今对android的学习有一个多月了,但是目前也没做过什么android项目,研究普通的表单组件又没多大意思,所以就尝试去学学游戏开发。
由于本人以前并没有从事过这方面的开发,所以根本就不知道从哪里开始,于是本人就试着找找已经开发好的开源游戏。起初,从android自带的sample中找到了个snake游戏,那个游戏写得比较精简,相对来说,还算是个不错的入门。
但是看了snake源码后,发现自己在这方面欠缺的知识还是太多,所以想找本游戏开发的书看看,但是在网上找了下,要么就是些很过时的书,要么就是中文版且很厚的书,总之没找到满意的。在没有办法的时候,只得尝试去找找英文版的书了,还好,找到本叫《beginning android game》的书,这本书总体来说,还讲得不错。自己大概开了一大半,作者从实践出发,一步一步的实现了几个确实可用的游戏。
第一个游戏与snake类似,只不过介绍了作者自己搭建的一个游戏引擎,主要原理就是通过canvas不停的将图形画出来,相对来说不是太复杂,可能理解此游戏引擎稍微要麻烦点。
第二个游戏介绍的是一个叫super jumper的游戏,这个游戏有点类似于超级玛丽,这才是本人找到的一个看起来还算不错,确实有些实用价值的游戏。因此写这篇博客的目的主要是因为它。因为这个游戏相对来说有点复杂,基本上算得上整个这本书的核心内容了。当然本人还有一个目的是,由于本人并不是从事android开发的,所以恐怕过段时间就忘记了,所以在此算是留下点回忆吧。
由于这个jumper也是用到了作者本人构建的游戏引擎,所以首先得熟悉此游戏引擎,然后才能考虑游戏逻辑方面的东西。而此书的作者正好是gdxlib游戏引擎的,而本人先前也正好看过一点关于libgdx方面的东西。所以有些概念还算熟悉。
但是这个游戏功能虽然不是很强大,但对于刚入门的人来说,涉及的到的知识点还是相当的多,在此挑些个人认为比较难的地方讲一下。
1.GLGame类,这个类是整个游戏的最重要的类之一,实现了Activity、Renderer类,关键是实现了Renderer接口,这个接口是OpenGL的核心之一,Opengl的画图方式一般是一个类实现Renderer接口,然后通过GLSurfaceView渲染,大体代码如下:
。。。。
glView = new GLSurfaceView(this);
        glView.setRenderer(this);
        setContentView(glView);
。。。。

Renderer有三个方法,而onDrawFrame是实现动画的核心,此方法会不停的更新游戏画面。
2.AccelerometerSimulatorHandler重力加速计模拟类,这个类本身并不复杂,但模拟重力加速计的功能实现起来有些麻烦,具体步骤在本人的上一篇文章已经讲得很清楚了。
3.MVC模式,这个游戏将游戏逻辑与游戏界面分开开发,我觉得这方面作者做得很好,要将游戏逻辑与界面分开是需要相当强的功底的。而该书的作者却做得很好,界面更新使用present方法,而游戏逻辑则使用update实现更新。在遇到比较复杂的界面与逻辑时,如World类,则把界面更新放到单独的一个类WorldRenderer中。这种分布初开会觉得不好理解,但一旦理解过来,维护起来就相当的轻松了。
   还有些值得一提的是,作者对每个游戏角色的区分也做得比较好,比如Bob,Castle,Coin等,每个与此概念相关的代码都在本类里面,业务逻辑封装得很好。
4.关于游戏引擎。作者搭建的游戏引擎虽然不比libgdx,但是开发小游戏还是够了,其中几个比较重要的概念需要讲下。
  SpriteBatcher类,这个类是此引擎的核心,主要作用是画图,有点类似批处理的概念,即通过begin开始,直到end时才开始画,这样一性画图可以提升系统性能。但SpriteBatcher里面有些概念还是不好理解,这也是整个opengl必须要理解的部分,那就是Vertices顶点类,而顶点Vertices一般又包括三个部分,顶点坐标、顶点索引、顶点颜色。具体的用法可见Vertices类,此类主要是将opengl es的类稍微封装了下。
  Texture类,这个类也有点复杂,主要作用是从asset中加载一张位图并通过此位图创建一个纹理类,然后对图片进行一些过滤与压缩。
  Pool类,这个类也算是个比较有意思,主要是对一些经常创建的对象(如侦听器)才池的方式缓存起来,在web开发中比较常见,但在手机上实现类也可以达到这个目的。
  Camera2D类,这个类主要是设置不同的场景,本人对这个东西也不是很明白,大体是要操作某个对象显示,先得设置其场景,而且根据不同的场景模式,会有不同的操作,比如设置矩阵模式为GL_PROJECTION,则下面的代码将会是对GL_PROJECTION的系统操作。而如果设置成GL_MODELVIEW,则是对Mode的相关操作。

总结,jumper基本上包括了初级游戏开发所包含的所有知识,而且是基于opengl es开发,而且架构设计也比较清晰,性能优化方面做得也不错,如果把这个游戏的所有知识都掌握了,基本上开发一个小游戏是没有问题了。
由于本人也只是花了两周时间看了个大概,有些代码做了些注释,具体也不算完成熟悉,在此做个纪念,以此证明本人确实学过android!

分享到:
评论

相关推荐

    Android.游戏开发入门

    - 详细介绍Super Jumper这款游戏的开发过程。 - 分析游戏设计的核心理念和技术难点。 - 展示如何运用OpenGL ES实现高质量的2D图形效果。 - **关键知识点:** - Super Jumper的游戏机制和玩法介绍。 - 使用...

    SuperJumper

    "SuperJumper"是基于Libgdx的一个经典示例项目,它展示了如何利用Libgdx开发一款同时兼容桌面和Android平台的游戏。本文将深入解析这个项目的结构和关键技术点,以帮助读者更好地理解和运用Libgdx。 1. **Libgdx...

    Android 4 游戏开发入门(Beginning Android 4 Games Development)

    - **Super Jumper**:利用OpenGL ES构建的一个2D游戏,进一步加深对图形渲染技术的理解。 - **Droid Invaders**:完整的3D游戏案例,涵盖模型加载、纹理映射等多个高级主题。 #### 五、结语 本书不仅适合初学者快速...

    [Android.游戏开发入门](美)Mario.Zechner.插图版.pdf

    - **Super Jumper案例分析**:通过具体的案例“Super Jumper”来展示如何使用OpenGL ES实现2D游戏开发。 - **游戏逻辑与控制**:包括碰撞检测、物理模拟和精灵动画等关键技术。 #### 2. 游戏美术与音频 - **图形...

    Beginning Android Games,2nd Edition.pdf英文版

    8. 2D游戏编程技巧:第八章和第九章分别介绍了2D游戏编程的技巧和一个具体的2D游戏开发案例(Super Jumper),讲解了在Android平台上如何使用OpenGL ES进行2D游戏的开发。 9. OpenGL ES 3D编程:第十章和第十一章...

    Beginning.Android.Games

    - 本章重点介绍了一款名为“Super Jumper”的游戏开发过程。 - 详细分析了游戏的架构设计、图形渲染技术等核心要素。 - 讨论了如何使用OpenGL ES进行高效2D图形渲染。 - **第十章至第十四章:深入探索3D游戏开发...

    beginning android games

    9. **第9章:Super Jumper——一款2D OpenGL ES游戏** - 详细分析一个完整的2D游戏项目——Super Jumper。 - 覆盖从设计到编码的全过程。 10. **第10章:OpenGL ES:迈向3D世界** - 进一步探讨OpenGL ES在3D...

    libgdx经典游戏实例源码

    这个压缩包包含的是一个名为“Super Jumper”的经典游戏源码,它是一个典型的“男人下一百层”式的跳跃游戏,玩家需要控制角色不断向下跳跃,避开障碍物,尽可能地深入地下。 首先,我们来了解Libgdx的核心组件和...

    Beginning Android Games, 2nd Edition

    Nom Invades Android》、《Super Jumper: A 2D OpenGLES Game》和《Android Invaders: The Grand Finale》)提供了详细的案例研究,展示了如何应用前面学到的概念和技术来构建完整的游戏。每个案例都包含了具体的...

    Beginning Android 3

    书中的其他章节会继续深入,例如可能包含服务(Services)、广播接收器(Broadcast Receivers)、内容提供者(Content Providers)、通知(Notifications)、多线程(...,如第9章的"Super Jumper"游戏示例...

Global site tag (gtag.js) - Google Analytics