GBA的Tile模式技术探讨--空间占用篇

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

几乎我们所知的所有2D游戏主机都采用tile模式,GBA也是如此,GBA的6种背景模式中,其中三种是tile模式,另三种是位图模式。而在任天堂的官方手册上面,很明确地说明三种位图模式是用来显示静止图片或者动画的,并不建议用来进行游戏设计。

对长期进行PC软件开发的我们tile模式看起来就像一个怪物,和位图模式相比就好象是Dos那个字符终端和Windows的图形界面那样对比鲜明。我的一个好朋友,一个资深的程序员,就跟我说tile太不直观了,没有任何意义。事实上,我们知道即使很多PC机游戏也在利用类似tile模式一样的机制。比如C&C等等,一般来说,在PC机上这种机制叫做地图机制。

这里我们打算用量化的方法来比较tile模式和位图模式,当然指标就是做掌机游戏的开发者最关心空间和速度。

首先,我们来看空间的问题:

这里我们用来比较的是GBA的模式0(tile)和模式4(位图),这两种模式都是用得相当广泛的。另外我们拿它们做比较,也是因为它们的颜色模式是一致的。他们的颜色模式都是同屏256色,一个调色板,模式0的图块大小是8*8。

现在我们假设我们要制作的游戏里面有100个独立场景都是240*160大小的,那么我们可以计算出来模式4需要的图片数据空间为:

100(张)*240*160*1(字节)≈3.66m

这时候我们发现模式0的图片数据空间计算并不是一个简单的事情,因为需要的图块数量是不确定的,这和游戏本身有大的关系。我们首先计算如果所有的图块都是不重复的,那么一个240*160的场景需要:

240*160/8/8=600个

也就是说,一个场景需要的图块数目假设为,那么0<n≤600。我们知道一个图块占用64字节。那么,n个图块占用的空间就是64n。

另外,我们知道tile模式下,还需要存储地图信息。在模式0下这个部分的空间占用是(一个图块的索引占2个字节):

240*160/8/8*2=1200字节

所以模式0下,图片数据空间大小应该为:

(1200+64n)*100=120000+6400n=120k+6.4k*n

现在我们来比较模式4和模式0占用的图片数据空间:

3.66兆/120k+6.4k*n

我们可以简单的算出在某个极端情况下,即n=600的情况下,模式0比模式4多占用120k空间。然而当另一个极端的时候,即n=1的情况下,模式0只占用120k+64字节的空间,这时模式4占用的空间是模式0的30倍。我不能给出一个一般的游戏中图块重复率的大小,所以我们只好假设一般来说重复率为z,z=n/600。我们可以得出当z=1的时候,模式4和模式0在空间占用上,没有显著差异。当重复率为z的时候,模式0的空间占用是:

120k+6.4k*600*z≈3.66兆*z

也就是说,重复律是多少我们模式0相对于模式4的空间节省就是多少。当重复率z=50%的时候,模式0的空间占用为1.88兆。

直观上,我们可以对一个游戏的图块重复率z有一个认识,比如下面是著名的Gba游戏口袋怪兽手中的一个场景,我们直观的估计z肯定小于50%。

在这类的游戏,RPG,战旗等等z都是很小的,也就是说能够很节省空间。而如果游戏大量采用没有重复图块的背景那么tile并不会节省空间,但是也不会浪费多少空间。

明天,我们继续讨论tile模式在速度中的意义,我们将结合对硬件如何实现tile模式进行讨论。欢迎大家对这个问题发表意见,也请支持这个讨论。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航