游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3827|回复: 8

[原创]游戏打包工具和资源解包类库~~你的资源再也不会

[复制链接]

72

主题

447

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
QQ
发表于 2010-5-5 23:17:00 | 显示全部楼层 |阅读模式
最近为做DX项目的同学封装了一个资源打包工具和资源解包类库,主要功能是整合零散的资源,和资源保护。
1.资源打包工具QuartzFilePackEdit
看不道图片 就去原帖看吧:
http://blog.csdn.net/m9551/category/680764.aspx





--------------------------------------------------
同学的项目自己编辑的资源非常有限,很多资源都是从别的游戏中七拼八凑出来了。看到别的游戏都有自己的文件资源包,自己也很希望把自己的资源打包。最近写了一个QuartzFilePackEdit工具,用来整合资源打包的,这个工具目前支持多文件打包整合使用非常方便,只需要添加资源到文件列表中点击保存打包就可以了,如果添加了重复的资源,可以在列表中双击文件将其删除。压缩的文件只能是*.QFT文件格式,*.QFT文件中除了刚才我们打包的文件以外,他还生成了一个文件资源表,因为我们还要对这个文件解包。文件资源表也可以导出一个备份。免得以后自己也忘了这个资源包里面都有哪些数据了。


2.资源解包类  CQuartzFileUnZip
-------------------------------------------------------------------------------
利用这个库,可以对*.QFT文件内部的数据进行读写。这个库的读写操作完全是在包内完成,而不用加压到临时目录,使用非常快捷,读写速度也很快。这个库现在还在测试当中,目前只提供了对Dx的纹理的直接读取;音乐文件和其他文件因为文件格式压缩解压等问题测试当中。
这个库首先需要通过bool OpenSourceFromFile(char* sname,char *pwd);函数打开资源文件,输入的参数分别是文件名和密码,如果没有设定密码可以不填pwd;如果打开文件出了问题返回失败;

接口函数bool GetTextureByName(char * sName,LPDIRECT3DTEXTURE9 &pTexture);可以读取这个包内的资源,第一个参数是资源名称,比如是map.png,第二个是返回值,返回的是获取的d3d纹理;

在程序中也可以动态获取当前文件信息,比如你已经忘记了自己资源包里面的文件名,可以调用
std::list m_lFile;
这个表中保存了所有的文件包内包含的文件信息


以下是在DX例题中 直接读取文件包内部文件获取的纹理资源渲染的一个翻滚的圆筒:


11

主题

1238

帖子

1782

积分

金牌会员

Rank: 6Rank: 6

积分
1782
发表于 2010-5-6 09:29:00 | 显示全部楼层

Re:[原创]游戏打包工具和资源解包类库~~你的资源再也不会

请问大牛,是否支持插入,删除,查找和排序? 而且还要考虑网络游戏的自动更新呀

72

主题

447

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
QQ
 楼主| 发表于 2010-5-6 18:32:00 | 显示全部楼层

Re: Re:[原创]游戏打包工具和资源解包类库~~你的资源再也

游戏阿家: Re:[原创]游戏打包工具和资源解包类库~~你的资源再也不会暴露在外面了!

请问大牛,是否支持插入,删除,查找和排序? 而且还要考虑网络游戏的自动更新呀


没有想这么多啊~~
这个可以考虑加进去~~
查找和排序 你希望怎么用呢?告诉我你的想法,我做做看。

至于游戏的自动更新  哈哈 我这个是给初学者用的,还没想到那么多呢~~恩
这个注意倒是不错~~我做一个自动补丁程序,如果发现有补丁,会自动打入到数据包内~~这个不难的!

今天有不少人QQ上问我这个类怎么用,我写了个小小的教程,可以去我的csdn博客看看
http://blog.csdn.net/m9551

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2010-5-6 21:08:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

34

主题

443

帖子

478

积分

中级会员

Rank: 3Rank: 3

积分
478
发表于 2010-5-6 22:58:00 | 显示全部楼层

Re:[原创]游戏打包工具和资源解包类库~~你的资源再也不会

支持楼主,友情帮顶

86

主题

2251

帖子

2384

积分

金牌会员

Rank: 6Rank: 6

积分
2384
QQ
发表于 2010-5-6 23:51:00 | 显示全部楼层

Re:[原创]游戏打包工具和资源解包类库~~你的资源再也不会

有什么高效的思路?
感觉比文件系统还难写,文件系统面对的是大块的、固定的磁盘空间。
资源包系统却是针对内容紧密的、经常变动的文件。
删除后留下的空洞,怎么填才是最优的?

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2010-5-7 00:14:00 | 显示全部楼层

Re: Re:[原创]游戏打包工具和资源解包类库~~你的资源再也

funcman: Re:[原创]游戏打包工具和资源解包类库~~你的资源再也不会暴露在外面了!

有什么高效的思路?
感觉比文件系统还难写,文件系统面对的是大块的、固定的磁盘空间。
资源包系统却是针对内容紧密的、经常变动的文件。
删除后留下的空洞,怎么填才是最优的?


我的HAC准备升级支持超过4G的大包了。

11

主题

1238

帖子

1782

积分

金牌会员

Rank: 6Rank: 6

积分
1782
发表于 2010-5-8 12:19:00 | 显示全部楼层

Re:[原创]游戏打包工具和资源解包类库~~你的资源再也不会

查找就是根据资源名称快速找到资源. 排序,按资源被载入的频率,及资源间的依赖性排放包中资源的位置,游戏编程精粹,5还是6里面讲有

72

主题

447

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
QQ
 楼主| 发表于 2010-5-9 16:09:00 | 显示全部楼层

Re: Re:[原创]游戏打包工具和资源解包类库~~你的资源再也

游戏阿家: Re:[原创]游戏打包工具和资源解包类库~~你的资源再也不会暴露在外面了!

查找就是根据资源名称快速找到资源. 排序,按资源被载入的频率,及资源间的依赖性排放包中资源的位置,游戏编程精粹,5还是6里面讲有


了解了~~这个我考虑一下~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-9 17:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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