魔兽世界MPQ加载顺序

=====================================================================

未经本人许可 任何网站、团体、个人不得以任何方式转载本文 Author:G1NurX (Jeffrey Zhuang)

=====================================================================

本人原本准备发表一篇关于魔兽世界反和谐原理的文章,由于某些特殊原因决定存在草稿箱中,这也是为了玩家好。
本文只限讨论魔兽世界的MPQ加载过程相关的问题。
适用读者:对WOW加载MPQ的过程感到好奇;想要研究找不到门路;
不适用读者:企图在这里找到直接的反和谐方法或代码;
1)首先简单介绍一下MPQ,MPQ是暴雪使用的归档类型,内部不存储文件名,也不存在目录结构。listfile是文件名的列表,其实是可有可无,
它的存在与否和归档能否使用没有联系。没有listfile,MPQ也是合法的。文件的查找是通过搜索Hash表完成的,每个文件用它的完整“路径”
Hash过后存在Hash table中,例如:Character/BLOODELF/FEMALE/BLOODELFFEMALEFACELOWER00_00.BLP 这个字串经过Hash,
最终通过Hash结果索引归档内的文件。
2)在MPQ的实际应用过程中,游戏内部并没有指定那个贴图在哪个归档中,需要的贴图路径来源于DBC,当然DBC存在MPQ中,DBC
的位置,客户端是知道的。客户端在读取了DBC后就知道那个Entry使用哪个模型,这个模型的骨架文件时哪个,贴图文件是哪个。DBC
中确定的路径是内部路径,是一个虚拟的路径,这个虚拟路径的根是base,下面会多次提到,根据这个路径查找若干MPQ直到找到。
这个路径中不指定在哪个MPQ中,最后确定使用哪个MPQ是由优先级决定的。
    暴雪在更新客户端的时候通常不是修改一些原始的MPQ,而是修改或增加Patch类的MPQ,Patch中和原始文件同名(包含路径)时,通常
会使用Patch中的,正如上面这是由优先级决定的。这么做的原因应该是考虑到部分游戏是光盘版的,游戏的基础文件是在光盘上的,没法修改,
游戏更新就通过补丁类的MPQ实现。
3)使用MPQ文件和正常的文件读写操作类似,首先需要打开归档,函数为SFileOpenArchive,函数原型如下:

                
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值