不论是2d游戏,还是3d游戏,终究与我们在电视里看的动画片没什么区别。
唯一的区别是:游戏动画的展示效果是我们可以控制的,我们可以通过操纵杆,触摸屏,键盘,传感器......天知道以后还会出现什么。总之我们可以操纵游戏中的精灵从a点走到b点,我们可以切换不同的画面,一切的一切都在于我们如何去控制。因此可以说,游戏实际上就是被人控制的动画,我们玩角色扮演游戏时,不是有看电影的感觉吗?
根据上面的分析,从技术上讲,游戏至少包含有两大技术:
一是显示,二是控制。
关于游戏的显示,其实就是利用人眼的视觉暂留特点,不断的在显示屏上面绘制一张一张的图片,这一系列的图片就能构造出游戏变幻的光影效果,其实这也是电影的显示原理。
关于控制呢?控制包括游戏手柄,键盘等,正是因为有了控制,我们才有了强烈的参与感,也才有了游戏的乐趣。
控制和声音,在不同的平台上都有相关的API可以使用,总的来说难度较低。
游戏中最最重要的还是显示,显示也是最难的部分,专业游戏方面的图形API主要有两个门派:一个是directx系列,微软出品,另一个是opengl开源框架,这些都是图形api都能够利用显卡进行硬件加速,因此性能好,是开发游戏的最佳选择。
当然还有其他的选择,比如在微软平台上,你可以利用gdi+之类的画图引擎,构造游戏动画,但是这类API没有利用硬件加速,所以性能不敢恭维,现在好多浏览器都开始支持硬件技术了,其实也是借助专业的图形API的威力。
其实不管利用什么技术,只要能构造出一系列连续画面,并快速播放出来也就能产生游戏效果。很久很久以前,电影界的老祖先们就已经研究清楚了,只要每秒能播放24张画面以上,人眼就会把这些单独的动画理解为连续的动画,这就是传说中的视觉暂留,总之我们就“眼见为实”了。
游戏中显示的每一张画面被称为“帧”,因此游戏显示的实质就是能不断的构造出一帧又一帧的画面,边构造边播放。
画面是如何构造出来的呢?我们就可以借助前面提到的图形api,在android平台上的图形api是opengl es,后面我们将详细的介绍。
游戏不单单是动画片,而是可控制的动画片,比如在游戏中,你按键盘上的“前进”,游戏中的小人就不断往前走,其实可以这样来理解,游戏的控制支配着每一帧画面的生成,你按“前进”时,生成的画面中,小人就往前移动了一点,接下来的一帧,就再把小人往前画一点,下一帧就更往前,这些画面是瞬间生成,连续播放,于是小人就动起来了。
那么声音呢?假如小人在前行的过程踩到地雷了,爆炸了,我们就应该听到爆炸的声音,因此声音又加入进来了,并且游戏在播放声音时,画面可不能暂停哦,否则我们就会说“卡”,所以在游戏中声音的播放应该是异步的,即播放声音的同时,画面不能停,所以,这也说明了,游戏还得是多线程的好。
综上,我们分析了游戏中声音,显示,控制三者是如何结合起来的,也明白了游戏及是动画的道理,后面应该分为3部分来分别介绍,其中显示是最最复杂的!
此外,游戏还包含另一个重要部分,那就是声音。
如果没有声音,游戏也会多无趣啊,何况,比如:音乐游戏,没有声音,看你怎么玩?!
综上:构造一个游戏框架至少包含3个部分:显示,控制,声音。