|
|
菜鸟初学,高手见笑
我从开始学游戏就看着圣剑2的引擎,很多思路也来自于此,但圣剑2中全部采用Ini文件驱动,我很担心这种文件的读取速度,这里发表一点不成熟的看法
由于游戏里的数据编辑一定是基于编辑器而不是直接用记事本编辑,所以我觉得采用传统Ini的方式是既浪费时间(寻找字段)又浪费空间(储存字段)的做法,为什么不能直接用2进制储存呢?就像我们平常直接读取Bitmap的header那样做,这里有个最简单的事例,仅为了说明问题
#include"cstdio"
#include"cstring"
struct Map
{
char Name[20];
int Width;
int Height;
};
int main()
{
//编辑器部分
Map map1;
strcpy(map1.Name,"ChengDu");
map1.Width=132;
map1.Height=345;
FILE* fIn;
fIn=fopen("Map1.map","wb");
fwrite(&map1,sizeof(Map),1,fIn);
fclose(fIn);
//引擎中的部分
Map map2;
FILE* fOut;
fOut=fopen("Map1.map","rb");
fread(&map2,sizeof(Map),1,fOut);
fclose(fOut);
char Info[20];
sprintf(Info,"地图名称:%s 地图大小: %d*%d",map2.Name,map2.Height,map2.Width);
puts(Info);
}
在struct中间预留2~3个位置,并且编辑器和引擎共同用一份struct的定义,如果实在需要更改定义时.只需将编辑器重新编译一次后,进行一次类型转换(当然应该在编辑器中提供这个功能)
因为每次载入地图时都会载入大量的这种Ini文件,我自认为它可以节省一定的读取时间
小弟只见过圣剑2一个引擎的代码,对其它这种数值驱动的游戏怎么做的毫无了解,纯属yy,多多包涵 |
|