[Android游戏开发]基于libgdx的一个简单游戏demo
最近在利用业余时间自学游戏开发,在看《Begining Android Games》,并学习了一下其中libgdx的原型实现和一个示例工程Mr. Nom。今天使用libgdx实现了一个简单的游戏场景:类似坦克大战中,一个坦克从左往右发射子弹。
效果图如下:
?
?
中间向上的箭头可以增加坦克同时发射的炮弹数目,右边的x按钮是发射键。
?
libgdx还是很强的,起码对于我这样不懂游戏开发的人来说,很容易上手。
?
demo实现中还有一些问题:
1.坦克不能移动,虽然留出了接口,但是想了想实现,还挺复杂
2.炮弹的发射、轨道机制还有问题,入上图所示,出现了炮弹相连的情况;炮弹渲染轨迹不是平滑的
3.代码没有经过优化的。程序运行一会,手机后盖处有明显的发热(不知道是插着数据线的缘故还是程序实现占用太多的cpu)
4.纯Canvas API实现的,没有用到OpenGL,性能上可能有问题。(譬如炮弹的渲染,我把渲染间隔降低,炮弹渲染轨迹可以稍微平滑一点,不过CPU耗费明显加大,机器发热明显)。仅从这个demo还不能看出Canvas API的局限性,如果当画面足够复杂,像Replica Island那样的或者3D,Canvas肯定就hold不住了。(注意:使用OpenGL ES的话,OpenGL ES实例化就会占用8M内存,这一点在做应用开发的时候需要特别注意,如果应用可以不用OpenGL ES就可以做的很好的话,还是不要用了,毕竟8M内存带来的副作用还是不小的)。
5.从上面的问题可以看出,游戏开发还是很有门槛的。而且需要多动手,这些问题我也是写这个demo时碰到的。
?
?
想了想上面的几个问题,都还没有好的解决方法。而且这几个都是很硬的问题,都是需要搞定的。希望在后面的学习中能发现解决的办法。
?
源码(包含Mr. Nom实现部分):https://nsworks.googlecode.com/svn/ringring
?