游戏设计工具游戏引擎之四

资源管理

小谢

第一篇|第二篇|第三篇|第四篇

这里所说的资源管理不仅仅只是资源打包,它包括了定义和压缩,打包,以及各种性质定义 和操作接口. 本章只介绍图像资源管理. 定义文件名:IMGLIB.DAT 在调试版本中我们使用的脚本语言,只有在发行版本中才将其加密和压缩. 文本举例:

大家可以看出,这是一个很复杂的定义格式.他不像许多游戏直接使用图片作为资源,而是包含了 一些控制描述的复合定义,当然最简单的形式也就是一个文件名,其余可以使用缺省控制. 首先说说素材的类型,我们经常看到地图编辑器的介绍,提来提出无非是什么拼贴视角等等词语, 在我们的引擎中,许多界限都被打破,比如地图的构成,象《仙剑奇侠》许多游戏使用的是一种我们称 为"图素拼贴"的技术构成,它的原理是采用8*8(或其他尺寸的单元)距阵纪录每个单元对用的材质的 序列号,而不是使用实际的点阵数据,这样可以节约大量的内存,另外一种方法是直接使用整张绘制 的图像,比如直接由3D设计的一个场景,这在象《命运之手》等游戏中使用过.而在我们的引擎中, 这些游戏类型的定义都打破了,我们统一使用的是大的图片,但这张图片可以是只包含索引的拼贴纪 录,甚至可以是其他已定义资源的合成资源. 随着硬件内存的增加,使用整张图片作为连续滚屏(而不是切换)的背景成为可能,但如果不注意 压缩,16M色的内存需求仍然让人恐怖,虽然效果是上去了,所以我们一方面提出了一些场景组成方案, 图像压缩使用方案,在某些局部兼容原来的"图素拼贴"的技术有时也是必要的. 这个资源使用的方法很简单:
IMGLIB::Blt(int imgid,int sonImgNo,CPICPAGE *decPage,RECT *decPlace,...);
省略的是其他扩展写法,比如亮度控制,alpha控制等等.不管资源是什么类型,接口一致,保证 了系统的扩充性,这就是对象继承的优势,在整个系统构架中,我们都注意了这些,比如前面提到的 "三:图像页CPICPAGE介绍".

图像资源管理使用的是一个CIMGLIB的对象,对象包含了一个资源的列表单. 通过前几章,我们基本上可以显示一个地图和人物动画了,再加上控制,一个简单的游戏就可以演示 了.

下面简单的描述一下过程:

一个游戏引擎包含了太多的内容,不知这篇文章什么时候能写完?! 由于这套引擎本身功 能比较全,要介绍的特别具体我们时间不允许,里面许多地方由于时间关系语言逻辑没有条理, 甚至不通,大家原谅.


联系:北京歌灯数码有限公司,
ciw_sj@ciw.com.cn,
电话:010-62570758

第一篇|第二篇|第三篇|第四篇