J2ME手游开发经验谈

 
下面是关于手机游戏开发需要注意的一些地方,应该对大家有所帮助:
 
1. 开发游戏之前问一下自己:“我是否把MIDP API的文档仔细看过一遍?”
这是在任何开发前都该做的事——至少要对将要使用的平台有一个全面的了解。很多东西在文档里写得很明确,这样能够培养你的自学能力,以便以后能够很好的适应工作。
2.开发游戏的内存问题:
尽量不要在无限循环的部分建立新的对象,把建立对象的工作集中到状态改变的那一点。比如RPG游戏从地图切换到战斗的时候就该把战斗状态需要建立的对象都建立好,战斗进行中没特殊情况就不要建立对象了。
3.线程问题
很多人甚至做了很久的手机游戏还搞不清楚自己写的程序有几个线程。如果还不很了解Java的线程,请先去补习一下。
J2ME游戏一般来说应该有两个线程,但事实上应该保持在单线程工作的状态。没有特殊情况不要进行多线程操作,更不要使用超过两个的线程。线程总体上说是个昂贵的东西,而且是个陷阱重重的东西。
4.game
作为职业游戏开发人员或者热血的游戏开发爱好者,不使用它是你们的义务!这东西会大大限制游戏的性能,进而制约表现力,因为它的效率实在太差。尤其对于职业人员,如果你还抱着它不放,你很快就要饿肚子了。
5.MIDP的事件处理机制
MIDlet的事件处理在随MIDlet一起建立的线程中进行,有个“Repaint Cycle”的叫法。对应每个MIDlet有一个事件队列,但是这个队列并不是逐个被处理的。事件的发送工作在这样一个循环中进行:每次循环都会扫描所有可能的事件,如果队列里有这种事件,就会调用事件对应的callback方法,并把这个事件删除。一个比较脱离常识的现象就是:假如队列里先有了10个按键事件,又被推进了10个重画事件,处理过程并不是先处理完10个按键事件,再去处理后加入的10个重画事件;而是处理一个按键事件,处理一个重画事件,再处理下一个按键事件,再处理下一个重画事件,直到全都处理完。
然后就是serviceRepaints方法,这是个非常重要的东西。它的功能在于打破Repaint CycleserviceRepaints的具体行为大概是这样:如果消息队列中有重画事件->如果有重画事件正在被处理->等待;否则等待正在被处理的事件(如果有的话),然后在当前线程进行重画事件处理(就是说如果你在你建立的线程内调用了serviceRepaints,最终paint方法也会在你建立的线程中被调用);最后删除消息队列中所有重画事件。基本上在游戏中repaint方法之后必须有一个seviceRepaints
6.关闭程序
太多人有这种误解:主动关闭程序的流程是调用destroyApp然后调用notifyDestroyed。这个就是对平台不熟悉的结果,的确API文档中对notifyDestroyed的说明也有点误导。关闭程序只要一个notifyDestroyed就可以了,在前面调用destroyApp只是一种可选行为。
7.关于调试
不要漫无目的地去猜,也许你们没有过一天要改十几个乃至几十个bug,而程序又是别人写的这种经历——这种时候经验似乎永远是不够用的,更不要说我那个时候刚接触手机游戏根本没经验可言。怎么办?对于大多数错误,请先设法确定出错的具体位置,再去寻找导致错误的原因。
8.关于画图
游戏的运行速度直接相关的不是你画图的面积,而是你画图的次数。在个别手机上甚至你画一张全屏的图比画四五张只有一个像素的图片时间还短。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值