在完成第一个程序SIM卡管理器之后,我就被安排去做这个项目。星际入侵者(Star Invader)是一款竖版的2D飞行射击游戏。就像一个简化版的雷电。这基本算是最早的一款飞行射击游戏了。也是我做的第一款游戏,当时对我来说是一个挑战。接到这个项目计划后,我一直研究如何实现它。互联网真是好东西,我在Cocoachina上找到了Dr. warson的几篇用OpenGL ES做游戏的新手入门文档。这个对我的帮助真是太大了。看了他的文章,才明白原来做游戏和做应用区别是那么大。在他那篇文章的指导下,我明白了OpenGL是如何如何渲染一个游戏的画面,以及如何形成一连串动画效果,这样我少走了不少弯路,这款游戏做起来也相应的简单了不少。做这个游戏的时候我也遇到了好多问题:

  • 纹理的重用问题:一个初级问题,刚开始时,我每个飞机的图案都创建一个纹理,结果导致游戏在真机上特别卡,由于不少飞机的图案都一样,完全可以让图案相同的飞机使用一个纹理。
  • 纹理数目限制的问题:刚开始时,由于游戏中物体比较多,物体的各桢动画也使用不同的图片,载入了不同纹理。结果经常出现部分物体的图案不显示的问题,找了半天才发现纹理没有了。查了一下OpenGL的文档,才知道程序中能使用纹理的数量是有限制的。我试着将多个物体的纹理图案放到一个图片里,合并成一个纹理。之后发现问题解决了,程序也更加流畅了。
  • 程序退出重启游戏恢复问题:官方SDK文档上说iPhone是单任务系统,你的游戏可能随时退出,因此在你的游戏退出之前要保存游戏状态,下次启动时继续上次退出的地方玩。于是我就加了这个功能。
    做这个游戏大概花了我两个半星期,这个游戏完成后,公司申请了99美金的个人开发者账户,我把它上传到Appstore上。