← 返回主页

游戏文件解剖

两代档案格式:MPQ 与 CASC

游戏文件从不以散装文件形式躺在硬盘上,而是打包在档案(archive)里:

两代共同的顶层是 本地文件 > 地图包:往地图里导入的同名资源会盖掉游戏自带的。再往下才轮到游戏档案——MPQ 时代按 war3patch.mpq > war3xlocal.mpq > war3x.mpq > war3local.mpq > war3.mpq 逐层回退(补丁包级别最高,x 为冰封王座专用,local 为语言层;此外每张地图还会按地形额外加载一个地形包,如 A.mpq);重制版把这些层压成一个 CASC 存储。这也是「启用本地文件」能覆盖游戏数据的原因,见文末。

工具:CASCView

CASC 格式社区通用的浏览、提取工具是 Ladik 的 CASCView(Ladislav Zezula,免费),旧版 MPQ 则用他家的 MPQ Editor。

  1. 下载并运行 CascView,菜单 Storage → Open Storage(打开存储)。
  2. 选择游戏根目录——即包含 .build.info 的那个文件夹(通常是 Warcraft III\_retail_\),程序会自动识别 CASC 存储。
  3. 左侧文件树展开 war3.w3mod 等节点,右键 Extract / Export 即可导出单个文件或整个目录。

两点提示:① 文件树里大量出现的 .w3mod 后缀只是虚拟目录标记,不是真实文件夹;② CascView 是只读工具,想改动请先导出,再走文末的本地文件覆盖流程。

安装目录速览

战网客户端的安装形如 Warcraft III\(安装目录),1.32.7 起真正的游戏根是其中的 _retail_\。表内 ∟ 表示层级,说明列逐行解释该层的作用:

路径说明
Warcraft III\战网安装目录,正式与 PTR 的游戏根并列于此
∟ _retail_\游戏根(PTR 为 _ptr_\),工具与本地文件都指向这里
∟ .build.info记录构建版本与 CASC 指纹,CascView 靠它定位
∟ Data\CASC 存储本体,全为二进制,不用手拆,交给工具
∟ data\分包文件 *.bin,游戏数据的主体
∟ config\存储配置
∟ indices\索引,记录文件名与分包位置的对应关系
∟ dbcache\本地数据库缓存
∟ x86_64\64 位客户端目录,游戏与编辑器主程序都在这里
∟ Warcraft III.exe游戏主程序
∟ World Editor.exe世界编辑器主程序,汉化补丁作用的对象
∟ Warcraft III.exe启动器,负责拉起 x86_64\ 下的主程序

CASC 分层结构

CASC 内部不是一个大文件夹,而是像「图层」一样叠放多层根目录,读取时从上往下找,先命中先用。表内 ∟ 表示层级,说明列逐行解释该层的作用:

层说明
_Balance\数据集覆盖层:slk 与 *Func.txt 各一套,即编辑器数据集
∟ Melee_V0\对战(近战)数据集
∟ Custom_V0\自定义数据集的基线版本
∟ Custom_V1.w3mod\自定义数据集的最新版本
_hd.w3mod\重制版(HD)模型与贴图,贴图多为 .dds
_de.w3mod\决定版(Definitive Edition)图标与美术
_tilesets\按地形组覆盖的 HD 资源
∟ *.w3mod\每个地形组一个包(洛丹伦的夏天、卡利姆多……)
_locales\语言覆盖层,每种语言一个包
∟ <语言>.w3mod\各语言一个包:串表、UI 文本、字体与配音
_teen.w3mod\青少年模式(低暴力)资源
_deprecated.w3mod\为兼容保留、实际已弃用的文件
war3.w3mod\基础层:对象数据、脚本、SD 美术与下表的目录

war3.w3mod 目录速查

一级目录 21 个,二级目录的组织主线只有三条:模型按「种族 / 地形组」分文件夹,每个素材再单独占一个目录;对象数据与 slk 表放在各目录根;贴图大多平铺。表内 ∟ 表示层级,路径较深的一层层拆成行,说明列逐行解释该文件夹的作用。

目录说明
abilities\技能特效与弹道模型,分两个子目录
∟ spells\技能特效模型,按「种族 → 技能」两层组织
∟ <种族>\human / orc / undead / nightelf / demon 等
∟ <技能>\每个技能一个目录,内含该技能的特效模型
∟ weapons\<弹道>\投射物 / 弹道模型,每个弹道一个目录
buildings\建筑模型
∟ <种族>\<建筑>\每个建筑一个目录,按种族分
campaign\官方战役地图,按战役 / 章节分文件夹
doodads\装饰物模型
∟ <地形组>\lordaeronsummer / ashenvale / northrend 等
∟ <类别>\structures / plants / props
∟ <名称>\每个装饰物一个目录,内含模型与贴图
environment\环境模型、植被;无子目录,按素材名平铺
fonts\字体;.ttf 直接平铺在此层
maps\对战与遭遇战地图
movies\过场动画;.mp4 直接平铺在此层
objects\杂项对象模型;除下列目录外,其余素材按名称平铺
∟ inventoryitems\<物品>\可拾取物品模型,每个物品一个目录
pathtextures\通行判定贴图,用于寻路与建造
replaceabletextures\可替换贴图:图标、选择圈、悬崖、团队色
∟ commandbuttons\技能 / 物品的亮图标(BTN*.blp)
∟ commandbuttonsdisabled\对应的暗图标(DISBTN*.blp),用于冷却与不可用态
∟ selection\选择圈、施法范围圈
∟ cliff\悬崖贴图
∟ teamcolor\团队色蒙版
scripts\JASS 公共库与 AI 脚本
∟ ai\AI 脚本
shaders\着色器;无子目录,文件平铺
sharedmodels\共享杂项模型:烟雾、羽毛、光晕等
sound\单位语音、界面音、音乐、环境音
∟ units\单位语音,按「种族 → 单位」两层组织
∟ <种族>\human / orc / undead / nightelf / creeps 等
∟ <单位>\每个单位一个目录,内含选中、移动、攻击等语音
∟ interface\界面提示音,含 warning\ 等
∟ music\mp3Music\背景音乐
∟ ambient\环境音
splats\地面贴花与闪电数据
terrainart\地形贴图与地形 slk
∟ <地形组>\按地形组划分,文件名形如 <缩写>_<地块>.blp*……
textures\贴图,以 .blp 为主;无子目录,基本平铺
ui\界面资源
∟ framedef\.fdf 框架定义
∟ glues\主菜单等界面
∟ console\控制台皮肤
units\单位模型与对象数据
∟ <种族或类别>\human / orc / undead / creeps / critters 等
∟ <单位>\每个单位一个目录,内含 .mdx 模型与贴图
webui\1.32+ 的网页化前端资源
∟ baseframes\界面框架的网页资源

路径不区分大小写;上表以经典(SD)层为准,_hd.w3mod / _de.w3mod 层的目录会多出一些、少一些。

核心数据文件:SLK 与 INI 串表

「单位/技能/物品/科技」的对象数据由三类纯文本文件拼合而成,改数据、做对照都绕不开它们:

SLK 表(数值字段)

units\ 与 _Balance\*.w3mod\units\ 下的 .slk 是类 SYLK 电子表格文本,一行形如 C;X列;Y行;K"值",首列 ID 决定对象。常见文件:

*Func.txt(补充字段)

同目录下的 HumanUnitFunc.txt、CommonAbilityFunc.txt、ItemFunc.txt 这类文件是 INI 风格的补充字段:按钮位置、快捷键、图例引用等。

*Strings.txt(显示文本)

名称与提示文本集中在语言层 _locales\<语言>.w3mod\units\ 下(humanunitstrings.txt、commonabilitystrings.txt、itemstrings.txt……按种族 / 类别分文件),同样是 INI 格式,以对象 ID 为节:

[AHtb]                          ; 山丘之王 —— 风暴之锤(节选,有删改)
Name=风暴之锤
Tip=风暴之锤(|cffffcc00T|r)
Ubertip=掷出一把魔法之锤,对目标造成伤害并使其眩晕。

常用键:Name(名称)、Tip(按钮提示)、Ubertip(详细说明)、Hotkey、EditorSuffix;|cAARRGGBB…|r 是内联颜色标记。

本站汉化词条表与补丁说明的专名,就是拿 zhcn.w3mod 与 enus.w3mod 两套 Strings 逐 ID 对照核出来的。

ui\ 目录(编辑器与界面)

编辑器的行为数据在基础层 ui\:triggerdata.txt(触发 GUI 的事件 / 动作 / 参数结构)、triggerstrings.txt、worldeditdata.txt(菜单、对象编辑器字段等)、worldeditstrings.txt、aieditordata.txt 等;对应的显示文本在语言层 _locales\<语言>.w3mod\ui\。ui\framedef\ 与语言层 ui\framedef\*.fdf(如 globalstrings.fdf)则是游戏内界面的框架定义。编辑器汉化补丁改的主要就是这批文件。

地图文件(.w3m / .w3x / .w3n)

地图也是档案包:.w3m 是原版(混乱之治)地图,.w3x 是冰封王座地图,.w3n 是战役包——本质都是带 512 字节头部的 MPQ 容器。游戏本体虽已改用 CASC,地图至今仍是 MPQ,所以拆地图用 MPQEditor,不必碰 CASC。包内的 war3map.* 家族——地形 .w3e、地图信息 .w3i、物编七件套 .w3u / .w3t / .w3b / .w3d / .w3a / .w3h / .w3q、触发 .wtg / .wct、字符串表 .wts 等——逐文件详解见姊妹篇:

→ 地图文件解剖:用 MPQEditor 拆开地图包

资源格式速查

格式说明
.blp调色板或 DXT 压缩,贴图主力格式
.ddsHD 层使用的现代贴图格式
.tga无压缩图片,常见于导入素材
.mdl / .mdx模型(文本 / 二进制),含骨骼与动画
.wav / .mp3 / .ogg音效与音乐
.ttf字体(语言层 fonts\)
.fdf / .tocUI 框架定义 / 框架载入清单
.mp4过场动画(movies\)

启用本地文件(Allow Local Files)

游戏默认只读地图和 CASC。开启「本地文件」后,读取顺序变为「本地文件 > 地图 > CASC 各层」——把文件按 CASC 内的有效路径放进游戏根目录,游戏就会优先加载你的文件。

注意本地文件整体只是最上面的一个「图层」,不能像 CASC 里的 _hd.w3mod、_locales 那样拆成多个层互相叠放覆盖。

第一步:修改注册表

在注册表 HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III 下新建一个 DWORD (32 位) 值:名称 Allow Local Files,数值数据 1。三种做法任选其一:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III]
"Allow Local Files"=dword:00000001

关闭同理:把值改回 0 或删除该值即可。注意游戏根目录的位置:1.32.7 起是安装目录下的 _retail_\(PTR 为 _ptr_\),更早版本直接就是安装目录。

第二步:按有效路径放文件

把 CascView 导出的文件放进游戏根目录,路径 = CASC 虚拟路径去掉 war3.w3mod\、_locales\zhcn.w3mod\ 等层前缀后的有效路径:

两个典型玩法

风险:本地文件在联机时同样生效,改动可能被对战平台视为作弊,请勿在对战中使用。