EDGE 游戏中有许多资源文件,里面存放了各种各样奇怪的东西。
大部分资源文件都有固定且相同的文件头与命名方式。
出处:http://will.kirk.by/labs/tt/ttdev/misc0x00-0x07
: 指定引擎版本,不过游戏通常不会识别。在 EDGE 中通常使用 0x0018000000000004
(在部分较新版本中)或 0x00XX000000000003
(XX表示任意位)。0x08-0x47
: 一串文本,指定了当前文件原来的文件名。0x48-0x87
: 一串文本,指定了当前文件的命名空间,通常与它所在的目录名相同。
出处:http://will.kirk.by/labs/tt/ttdev/misc
文件名由三部分组成,第一部分为去掉扩展名后反转过的文件名的哈希值的十六进制表示(材料、非根模型与非根动画除外),第二部分为反转后的命名空间哈希值的十六进制表示,第三部分为扩展名,表示文件的类型。
哈希算法是使用了可以自定义多项式系数(大概是这么叫法)的 CRC32,其 C# 实现:CRC32.cs
哈希文件名时使用的多项式系数为标准算法所使用的 0xEDB88320
,哈希命名空间时的多项式系数为前面的系数取反,即 0x12477CDF
。
命名空间可以是以下值之一:(主要取决于你放的文件夹名)
audio config default effects.edge_effects effects fx.shaders fx images.effects images levels localization models music sprites textures