游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2951|回复: 9

菜鸟关于Ini文件的一点看法

[复制链接]

10

主题

95

帖子

95

积分

注册会员

Rank: 2

积分
95
QQ
发表于 2006-5-31 21:37:00 | 显示全部楼层 |阅读模式
菜鸟初学,高手见笑
我从开始学游戏就看着圣剑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,多多包涵

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-6-1 03:12:00 | 显示全部楼层

Re:菜鸟关于Ini文件的一点看法

ini一般只在加载的时候读一下,快慢关系不大,再说也许并没有你想的那么慢。

1

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2006-6-1 13:30:00 | 显示全部楼层

Re:菜鸟关于Ini文件的一点看法

与其用INI不如用XML,格式更为自由,一些开源库已经提供了很好的支持,例如tinyxml

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-6-1 15:25:00 | 显示全部楼层

Re:菜鸟关于Ini文件的一点看法

tinyxml对中文支持怎么样?我用的是xercesc

21

主题

120

帖子

129

积分

注册会员

Rank: 2

积分
129
发表于 2006-6-1 17:19:00 | 显示全部楼层

Re:菜鸟关于Ini文件的一点看法

只是简单的做些数据透明化工作,用得着xml吗。
很多时候,xml用在这些地方并不合适

10

主题

95

帖子

95

积分

注册会员

Rank: 2

积分
95
QQ
 楼主| 发表于 2006-6-1 19:04:00 | 显示全部楼层

Re: Re:菜鸟关于Ini文件的一点看法

我现在还没有把C++研究透彻,暂时还没有学一门脚本语言的想法,不过各位能不能给小弟简单介绍一下各种脚本语言的特点和主要用途,为小弟指条路

10

主题

95

帖子

95

积分

注册会员

Rank: 2

积分
95
QQ
 楼主| 发表于 2006-6-1 19:41:00 | 显示全部楼层

Re: Re:菜鸟关于Ini文件的一点看法

griffin2006: Re:菜鸟关于Ini文件的一点看法

使用ini文件是为了方便更改程序中的数据,如果用二进制的话,要想更改一个数据就很困难了。

这些数据必定是基于编辑器保存的,所以更改起来很容易.另外我现在想出一种方法来处理数据的结构需要变更的问题,即编辑器拥有两套数据,一套是Ini的,一套是2进制的,两套都支持读和写,当数据的结构发生了变更时,重新编译编辑器,仍然可以读取Ini的那一套数据,修改好了以后再重新保存成2进制的就ok了,我觉得这样一来,既支持直接修改,又保持了2进制的快速存取,有什么不好呢?

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-6-2 09:11:00 | 显示全部楼层

Re:菜鸟关于Ini文件的一点看法

我用ini做这个


  1. [DISPLAY]
  2. windowed = 1
  3. screenwidth = 800
  4. screenheight = 600

  5. [APP]
  6. title = MyApp
复制代码


还挺方便的

0

主题

26

帖子

38

积分

注册会员

Rank: 2

积分
38
发表于 2006-6-3 11:20:00 | 显示全部楼层

Re:菜鸟关于Ini文件的一点看法

貌似以前没有注册表时,微软用ini代替?

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-6-4 07:36:00 | 显示全部楼层

Re:菜鸟关于Ini文件的一点看法

linux下的配置文件好像都是文本的,也没见有人说慢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 15:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表