前言

很早之前就有做游戏的想法,感觉做游戏真的很酷!但由于时间和技术上的种种限制,没有去实现,最近终于下决心去学习这方面的知识。

那么,就从今天起,开启Android的游戏之旅。


第一篇还不涉及到游戏的技术细节,算是游戏变成的一些常识。


以故事开始
故事勾画出了游戏的动作,目的和流程。故事写的越详细,游戏开发的时候写编码就会越容易。


故事为什么重要
   因为故事是整个游戏实现的基础,从开始到结尾。
   必须要意识到的是一个idea一定要完整,它的每个方面都必须认真地想清楚。
   理想的话,你的代码应该是拥有足够的可扩展性的,那样你能够很有效地去操纵它-特别是在后期你想要增加关卡或者boss到游戏中的时候。
   当你在编码的时候,如果有一个完整的游戏故事,则能够实时对应。
   
   如果你现在脑袋中有一个关于游戏的故事的话,现在就写下一个草稿。当你完成游戏的时候,你可以用游戏和它对比一下。
   
   OpenGL和2D
   OpenGL和3D的牵扯比较多,但是,渲染2D画面它也很擅长。实际上,OpenGL渲染和操纵2D图像比Android内置的方法还要有效。Android的内置API对大部分的应用开发已经足够好了,但是对于游戏,它更追求效率,OpenGL是最好的方式。
   
   一个典型的游戏运行方式
   绘制背景;
   如果需要的话移动背景;
   绘制文字;
   绘制武器,×××等等;
   移动每个角色;
   播放背景乐和音效;
   接受输入设备的输入;
   跟踪角色和背景的运动轨迹,确定他们没有走到不改去的地方。
   绘制动画;
   确保物体的运动轨迹符合预期;
   记录玩家得分;
   管理网络;
   建立菜单。
   
   游戏引擎
   游戏引擎是普遍适用的,必须让它能够用在多种情形,可能的话,它应该是可以适用于不同游戏的,这和游戏代码刚好相反。对于游戏代码,就像他的名字那样,它只是针对某个特定地游戏。
   游戏引擎需要做的事:
   图形渲染;
   动画;
   声音;
   碰撞检测;
   人工智能;
   物理;
   线程和内存管理;
   网络;
   命令翻译。
   
   游戏引擎通常由低级语言编写。低级语言提供了一个更直接地方式和硬件连接。一个游戏引擎需要把游戏代码传递给硬件。这样,游戏就可以跑得更快,操作起来也有更好的体验。
   一个游戏引擎不会为某个游戏做事,比如,它不会因为控制图像渲染就在屏幕上画一个小猫,但是它允许你绘制任何事物。画小猫是游戏代码来做的,它窒只需要将它想要的传递给引擎。
   因此你将会在游戏引擎中看到下面的方法:
   DrawFunyKitten();
   同时,你也会在游戏代码中看到类似DrawCharacter(funyKitten);的语句。
   
   关于游戏代码
   游戏跑的就是游戏代码,他不同于游戏引擎,能够适用多个游戏,它通常是独一无二的。
   当你开发一款小游戏的时候,游戏引擎代码和游戏代码可能会契合地很紧密,很难将他们分开。但是理解两者的关系还是非常重要的。
   非常建议你将两者清晰地分开,这能够增强你的代码的可重用性,并且能提高你的开发技巧。另外,一定要避免Lazy code和lazy coding practices,比如代码不写注释,没有缩进。