从 xywhPack 到 xPack 一些想法和设计的笔记

xywhPack 是我很多年前的作品了…… 断断续续写了好几年,其实现在看来是个很微不足道的东西,大概半天时间就能重写出来,当然这也和 xywhPack 反复重构的经验有关。

 

这东西从开工第一天,其实就是为了我的游戏引擎服务的,简而言之我需要一种压缩包系统存储文件数据,为什么不用 zlib ?因为那时候还对 VB 无法割舍呢,而 VB 这方面做得好的还真没有,于是就自己写了一个,到我改用 FreeBasic 之后,就不想用 zlib 了。

 

之前 xywhPack 因为反复重构,一些地方严谨的过了头,导致我写压缩包管理器的时候使用体验极其蛋疼,而且当时想的太多了,总觉得这东西不一定只用在游戏资源打包上,当然然并卵,这玩意最终我只在 XGE 里整合了一个版本。

 

前不久要用打算把 XGE 维护一下,发出去,这东西虽然很过时,但是对于 FreeBasic 爱好者来说,还是有一定学习和使用价值的,尤其是国外,毕竟 FreeBasic 这方面资料太有限了。

 

维护难免要写些范例什么的,之前有个打坦克的小游戏,移植不难,估计一个下午就搞定了,就像当初写出来这个小游戏其实也只用了几个小时一样,但是一些组件被阉割了,就确实难以忍受,xpf 被阉割了可以用 ddt 写中文,效率低点也还能忍受,但文件包系统也没了,一堆资源都要自己放自己管理,恰好我打算做一个基于引用计数的资源管理系统,所以我又需要 xywhPack 了。

 

再次拾起这个N年前的工程,代码实在是惨不忍睹,功能也是,感觉维护一遍,还不如再重构一次,于是就重构了,顺便名字也改成 xPack。

 

之前 xywhPack 没有选择用文件名和路径的方式保存,原因也很简单,一是速度用ID号检索更快(当然哈希表也还能凑活用,但是还真没太强烈的需求),所以 xPack 继续沿用这个设定。但是我也做了一些妥协,我觉得可能有改用 文件名 存储的需要,所以这次增加了 FileInfoExtData 的概念,文件信息表可以自由扩展数据,最多支持扩展 65535 字节的数据,这样你想用文件表存什么都可以,而且这个设置了,还能用文件管理器编辑,数据也不会丢失。

 

之前 xywhPack 追求功能多,算法就内置了一大堆,这次全砍了,文件打包除了对大小有要求要增加压缩算法,混淆和加密其实是不必要的,压缩算法之前也是把能找到的都加上了…… 其实很多压缩算法没什么性价比,还不如有针对性的就用一两个算法完事。

 

这次改 xPack,我只留下了LZ4和LZMA,一个负责快速压缩,一个负责高质量压缩,LZMA还提供了快速压缩算法,可以承担性能均衡的任务,这样压缩的问题我也不愁了。

 

最后这次 xPack 做了一些小改进,比如 LDB 段也支持压缩了,之前没发布的 xywhPack 版本其实已经加入这个功能了,但是代码不够严谨,另外 xPack 核心使用 xBsmm 内存管理器也更新了,之前的管理器有极低概率会崩溃,这次更新后稳定不少。

 

文件管理器随后也打算彻底重写,现在做了产品之后,对产品的品质要求提升了不少,之前 xywhPack 管理器的手感简直没法用,大概这次之后可以有些提升吧~

转载于:https://my.oschina.net/xywhsoft/blog/1786381

你可能感兴趣的:(从 xywhPack 到 xPack 一些想法和设计的笔记)