跳到主要内容

第 19 章:验证器规范

验证器用于判断 VFP 是否符合本规范。验证结果应至少区分 Fatal、Error、Warning 与 Info:Fatal 表示无法继续解析;Error 表示资产不合规;Warning 表示可忽略的缓存或前向兼容问题;Info 用于统计和诊断。

19.1 必须验证的层级

层级必须检查
容器Header、Footer、版本、文件长度、对齐、保留字段
DirectoryDIR0 结构、Entry 长度、Offset、范围、交叠、CRC32
权威数据META、PAL0、CHIX、VOX0 的存在性、唯一性、字段与跨区段关系
内容Palette 引用、Chunk 尺寸、体素容量、非空统计、RLE 展开
完整性各 Payload CRC32、Directory CRC32、Source Hash
缓存Source Hash、Chunk 引用和内部范围;THMB 还验证 PNG signature、IHDR、尺寸和 RGBA8 格式;失败可降级

19.2 验证顺序

验证器必须按依赖顺序执行:

  1. 获取真实文件长度;
  2. 验证 Header 和 Footer;
  3. 定位、读取并验证 DIR0;
  4. 验证所有 Directory Entry 范围和 CRC32;
  5. 解析 META、PAL0、CHIX;
  6. 解析并验证全部 VOX0;
  7. 重新计算统计和 Source Hash;
  8. 验证可选区段,记录可降级错误;
  9. 输出结构化结果。

不能在未验证 Directory 前信任任一 Offset。不能在未验证 PAL0 和 CHIX 前完整验证 VOX0。

19.3 最低错误代码

实现应至少输出以下稳定错误代码:

Code等级含义
VFP_HEADER_MAGICFatalHeader Magic 无效
VFP_FOOTER_INVALIDFatalFooter 无效或无法定位 Directory
VFP_DIRECTORY_RANGEFatalDirectory 或 Payload 范围越界/交叠
VFP_CRC_MISMATCHErrorDirectory 或 Payload CRC32 不匹配
VFP_REQUIRED_SECTIONError缺少或重复权威区段
VFP_CHUNK_MAPPINGErrorCHIX 与 VOX0 映射不一致
VFP_PALETTE_INDEXErrorVOX0 引用未定义 Palette Index
VFP_VOXEL_ENCODINGErrorRAW8/RLE8 数据不合法
VFP_SOURCE_HASHErrorMETA Source Hash 不匹配
VFP_CACHE_STALEWarning缓存 Hash 不匹配或不可用
VFP_UNKNOWN_OPTIONALWarning未知可选 Tag/Flag/Codec 被忽略

19.4 验证结果

验证器应报告文件版本、资产 UUID、网格尺寸、Chunk 数、非空体素数、Palette 数、有效缓存数、错误列表和警告列表。检测到 Error 或 Fatal 时,结果必须标记为 valid = false;只有 Warning 时可标记为 valid = true, degraded = true


本章总结

验证器不是只检查能否打开文件,而是检查文件能否被无歧义、安全且可重建地解释。权威数据错误必须失败,缓存错误可以降级。