查看: 10855|回复: 36
打印 上一主题 下一主题

【☆小宝秘籍☆】跟小宝一起学WDF

[复制链接]
跳转到指定楼层
楼主
发表于 2008-9-29 16:24:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式 来自:山东
前言

很多朋友都会解包WDF文件,但大部分人是知其然不知其所以然。今天,小宝就要带大家进入WDF的内心世界。可能会涉及一些简单的专业知识,不过不用担心,认真听讲就一定能学会的。

为什么要打包

细心的朋友可能还记得小宝说过,网易在开发游戏的时候各种资源是不打包的,只有发布客户端的时候,才把资源按用途打包成WDF格式。

这样做的好处多多。

开发期是资源的不稳定期,因为这时的资源是需要频繁变动的,比如逍遥生的颜色不好看,飞燕女少画了一只耳环等等。那么让这些资源一个个的躺在硬盘上是最好的选择。

发布时打包的好处也是显而易见的。

首先,专业。让几千个小文件同时安装到用户的硬盘上带来的效果并不是气势磅礴,而是不专业。因此,很多厂商都有自己的打包格式,比如大宇的TSW、Falcom卡卡布三部曲的LB、吉里吉里的XP3等等。

其次,效率。合理设计的打包格式有利于文件的检索和加载。我曾经试着运行解包后的大话3,跟打包时相比效率差了很多,根本不在同一数量级上。当然不排除我笔记本的内存太小而加剧了这一效果。

最后,安全。打包对保护自己的资源不被轻易窃取还是起到了一定的效果。

WDF格式简介

网上对这个格式的记录还是比较多的,所以这里只做简单介绍,格式如下:

4字节 文件头     PFDW
4字节 子文件数目 size
4字节 索引表偏移量
N字节 文件主体内容,N=文件大小-12-16*size
16*size字节 索引表

而索引表中记录了每个文件的ID、包内偏移量、文件大小等信息。游戏本身正是通过检索这个索引表来读取资源文件的。

包内偏移量和文件大小都好理解,可是那个ID是什么呢?

所谓ID就是文件的身份证。打包程序根据文件在硬盘上的路径(实际上是相对路径)为每一个需要打包的文件生成一个唯一的ID,在WDF包内,这个ID就表示这个文件。

解包WDF文件

根据WDF包的特性,我们在不知道包内文件的原始文件名的前提下,我们仍然可以解包,也就是类似A-wdf这样的工具。解包出来的文件名类似0895-5983686a.was。命名规则比较简单,0895是文件在索引表中的编号,5983686a是文件的ID号。

可是这么长的ID不便于记忆和识别,所以逍遥出过一个注释工具来帮助大家分别was文件。

以上的解包都是在不知道原始文件名的前提下进行的,但是如果我们知道了每一个文件的原始文件名,那么我们就可以将WDF包内的资源还原到打包之前的状态,即资源在开发人员电脑上的样子。

魔法还原

想看看那些资源在开发人员的电脑上是怎么存放的吗?那么就跟我一起来施放魔法,将其还原吧。

当然你需要一根魔法棒啦,就是这个RecoverWDF

请到http://leexuany.ys168.com/下载,目前仅提供shape.wd5的文件列表。


图1

按照提示填好所有选项,开始解包。

解包后的目录如图:


图2

其中0500~0507分别对应一种坐骑,tcp就是大家熟悉的was格式,其他的大家先自己摸索,如果全让我告诉你,那多没意思啊。

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

专业知识总结

下面这些都是基本知识,学计算机的话都会学到。

Hash 哈希,也叫做散列。意思就是把任意长度的输入通过某一种散列算法转换成固定长度的输出。是不是有点像数学里面函数的定义呀。Hash在WDF中的典型应用就是把文件的路径名转换成文件的ID,具体算法见云风大哥的风魂++游戏引擎。

二分查找,也叫折半查找,是对有序元素进行高速查找的一种方法。在WDF中的典型应用是索引表的检索,其中索引表在打包时生成,并按文件ID排序。

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

好了,赶快去适应下开发人员的工作方式吧,我们下次介绍坐骑染色+合成,不过我相信很多人都可以无师自通了吧。

[ 本帖最后由 leexuany 于 2008-9-29 17:21 编辑 ]

评分

参与人数 1人气 +1 收起 理由
、の羽然〃︷ + 1

查看全部评分

收藏收藏 分享淘帖 支持支持 反对反对 赞赞(0)
【开云网页版,开云(中国)官方近期活动汇总】
回复

使用道具 举报

37
发表于 2010-11-18 18:05:00 | 只看该作者 来自:辽宁
狠难的说
回复 支持 反对

使用道具 举报

36
发表于 2010-11-17 11:13:17 | 只看该作者 来自:上海
   ,,,不是太懂
回复 支持 反对

使用道具 举报

35
发表于 2010-9-17 18:11:06 | 只看该作者 来自:上海
还是看不懂那个解包
回复 支持 反对

使用道具 举报

34
发表于 2009-9-11 13:22:35 | 只看该作者 来自:湖北
我看不懂
回复 支持 反对

使用道具 举报

33
发表于 2009-3-28 16:27:59 | 只看该作者 来自:广东
明白了。
回复 支持 反对

使用道具 举报

32
发表于 2009-2-24 20:27:52 | 只看该作者 来自:辽宁
晕,你一个月没管理你网盘了,下不了了,还有,我看不懂。
回复 支持 反对

使用道具 举报

31
发表于 2009-2-24 20:14:15 | 只看该作者 来自:河南
你多久没来了 我需要注释包
回复 支持 反对

使用道具 举报

30
发表于 2009-1-7 19:39:46 | 只看该作者 来自:辽宁
你就是个神...
回复 支持 反对

使用道具 举报

29
发表于 2008-12-28 20:01:23 | 只看该作者 来自:广东
看得好迷糊,
回复 支持 反对

使用道具 举报

28
发表于 2008-12-21 12:38:04 | 只看该作者 来自:山西
我想知道那染色的分段式怎么回事
回复 支持 反对

使用道具 举报

27
发表于 2008-12-18 04:32:44 | 只看该作者 来自:浙江
  看不懂么。



根本学不会解压杂搞。
回复 支持 反对

使用道具 举报

26
发表于 2008-12-16 00:06:26 | 只看该作者 来自:广东
还是不懂
回复 支持 反对

使用道具 举报

头像被屏蔽
25
发表于 2008-12-15 22:35:24 | 只看该作者 来自:山东
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

24
发表于 2008-12-5 16:31:21 | 只看该作者 来自:江苏
恩恩 写的挺全面
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则