《开云网页版,开云(中国)官方》电脑版官方开云网页版,开云(中国)官方

标题: 【☆小宝秘籍☆】跟小宝一起学WDF [打印本页]

作者: leexuany    时间: 2008-9-29 16:24
标题: 【☆小宝秘籍☆】跟小宝一起学WDF
前言

很多朋友都会解包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 编辑 ]
作者: yangzongyv08    时间: 2008-9-29 16:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: 空灵之音    时间: 2008-9-29 16:36
注释工具不是御医出的
作者: ナ、__烙饼    时间: 2008-9-29 16:37
  地板。
作者: leexuany    时间: 2008-9-29 16:44
看不懂?让小宝来给你补一节英语课

stand 站立,站着
walk 行走;散步
rider 骑马(或骑脚踏车等的)人;搭乘的人

不是说现在的小学都开了英语课了吗

[ 本帖最后由 leexuany 于 2008-9-30 21:16 编辑 ]
作者: 黑仔菜    时间: 2008-9-29 22:56
貌似第一页
作者: QQ蓝眼泪    时间: 2008-9-30 00:18
路过支持!!!!!
------------------------------------------------------------------------


[ 本帖最后由 QQ蓝眼泪 于 2008-9-30 00:28 编辑 ]
作者: 簡’    时间: 2008-9-30 00:22
解压出来的那些东西,看不懂,
作者: oO炫舞魅儿Oo    时间: 2008-9-30 01:44
第一页·。。我完全来了
作者: qq07571185    时间: 2008-9-30 14:42
我完全的看不懂
作者: 猪头Rain    时间: 2008-9-30 14:53
..+载列表那里选什么啊?
作者: 泽宁    时间: 2008-9-30 14:55
HOHO~
看不懂~
完全不知道
作者: ″︷蒐魂曲.◇    时间: 2008-10-2 01:46
先顶帖子 回家实验
作者: sunqi    时间: 2008-10-3 12:46
你的网盘下不了东西了
作者: ′柒小誓。    时间: 2008-10-5 16:49
我还是不会它要怎么动
作者: lszhd    时间: 2008-10-6 10:25
一个努力的孩子.
作者: aretood    时间: 2008-10-6 11:03
路过...支持技术帖
作者: 生面不好吃    时间: 2008-10-7 01:07
受教了
作者: 洛℃星殇    时间: 2008-10-7 02:07
其实我还是看不懂
作者: ◇"大尜姐ミ    时间: 2008-11-4 01:21
标题: #24
加载列表那里时加载什么列表啊
作者: "兜兜∷尛潴    时间: 2008-11-23 14:32
顶下再看
作者: y54240279    时间: 2008-12-5 01:47
怎么解WDF包大哥说具体点好吗
作者: ◇¨够爱″    时间: 2008-12-5 13:30
很有用啊..
作者: ◆︵芙殇の    时间: 2008-12-5 16:31
恩恩 写的挺全面
作者: 提拉米苏、    时间: 2008-12-15 22:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: 怎见浮生不若梦    时间: 2008-12-16 00:06
还是不懂
作者: ╘乖乖爱嗳    时间: 2008-12-18 04:32
  看不懂么。



根本学不会解压杂搞。
作者: 暮凝烟    时间: 2008-12-21 12:38
我想知道那染色的分段式怎么回事
作者: ┄┆粉┓兜兜    时间: 2008-12-28 20:01
看得好迷糊,
作者: 糊菟`大仙儿    时间: 2009-1-7 19:39
你就是个神...
作者: の︷陌清茶    时间: 2009-2-24 20:14
你多久没来了 我需要注释包
作者: ℡┽讓愛詠衡    时间: 2009-2-24 20:27
晕,你一个月没管理你网盘了,下不了了,还有,我看不懂。
作者: 糖,狠甜、    时间: 2009-3-28 16:27
明白了。
作者: °深冬蝶魂ミ    时间: 2009-9-11 13:22
我看不懂
作者: 俄y1丝任性つ    时间: 2010-9-17 18:11
还是看不懂那个解包
作者: 梨花诗;    时间: 2010-11-17 11:13
   ,,,不是太懂
作者: 淡水河边。~    时间: 2010-11-18 18:05
狠难的说




欢迎光临 《开云网页版,开云(中国)官方》电脑版官方开云网页版,开云(中国)官方 (/) Powered by Discuz! X3.3