游戏运行和显示的速度固然重要,不过我认为,在游戏中另外一个速度:游戏装入的速度也同样不可轻视。试想一个游戏,动不动就要装入数据,而且每次装入的时间都令人等到“心越来越慌”的地步,我想恐怕也没有什么人愿意玩下去的。
选择一个好的打包数据格式,对于编程人员来说,是一件很重要的事情。一般来说,一个游戏的文件个数太多,并不是一件好事情,不光占用的硬盘空间大,而且严重的影响装入速度。不过这样做的优点也很明显:可以很详细的分类,可以大大的减小编程人员的工作量。另外一种做法是,把所有的数据全部放在一个文件里面,这样的做法和上面一种做法的优缺点正好相反,装入速度比较快(因为只要做一次文件打开的操作),但是由于所有数据都放在一起,文件数据的组织比较复杂,要求编程人员花费大量的精力去定位数据的格式和存放位置。因此,选择一个合适的数据打包格式,实际上就是在这两种情况之间选择一个平衡点,使它既不会对游戏的装入速度造成明显的影响,也不会给编程人员带来额外的负担。
那么,对于一个游戏来说,数据应该怎么组织呢?其实现在有很多好的游戏,参考一下他们的数据文件就会发现这个平衡点其实很好找。现在大多数的游戏,基本上把游戏需要用到的数据分门别类的存放,每一类数据放在一个文件里面。比如说音乐放在一个文件里面,地形图素放在一个文件里面,精灵造型、动画放在一个文件里面,游戏需要用到的图片放在一个文件里面,人物的对话、事件说明放在一个文件里面……那么这些数据在文件里面怎么组织呢?
还是一句话:分门别类。下面以游戏最基本的地形图素为例,说明数据的组织形式。一般说来,游戏的地图由很多大大小小的“图素”组成的,这些图素分为几层,每一层的图素基本上可以算作一类:比如说地面层可以算作一类,地上层可以算作一类,然后天空层(背景层)可以算作一类,部队、物品可以算作一类。而在地面层里面,又可以进一步的分类,比如说地形有山地,沙漠,草原,森林,河流,海洋……在游戏中,是可以分为场景的,一般的情况下,每个场景所涉及到的地形不会很多,总是以某一类典型地行为主,然后加入少量其他的地形作为点缀。针对这种情况,我们可以把同一类的地形连续的放在文件的某一个位置,这样我们在装入场景的时候,只要在这个位置一次读取这种地形的数据就可以了。一般游戏在制作的过程中都有一个场景生成器,或者叫作拚图器,它的作用就是生成地图——或者说生成场景。这个拚图器在初期的时候读人的数据肯定不是已经打包了的,因为美术还要对地形的基本图素进行某些修改。
所以我认为,好的数据打包格式应该是基于拚图器的,他把每一种数据分门别类的连续存放在某一个文件之中或者文件的某一个位置,这样能够大大的加快程序读取数据的速度。这样几能够使游戏文件看起来很简洁,也会大大的有利于程序的开发。