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

GBA的Tile模式技术探讨--空间占用篇(转)[@more@]

  几乎我们所知的所有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模式进行讨论。欢迎大家对这个问题发表意见,也请支持这个讨论

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-951709/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8225414/viewspace-951709/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值