目录
- 介绍
- 一些常量
- BSP 文件头
- 实体块(LUMP_ENTITIES)
- 平面块(LUMP_PLANES)
- 纹理块(LUMP_TEXTURES)
- 顶点块(LUMP_VERTICES)
- 可视块(LUMP_VISIBILITY)
- 节点块 (LUMP_NODES)
- 纹理信息块 (LUMP_TEXINFO)
- 多边形面块(LUMP_FACES)
- 光照贴图数据块(LUMP_LIGHTING)
- Clip节点数据块(LUMP_CLIPNODES)
- 叶子数据块(LUMP_LEAVES)
- 标记面数据块 (LUMP_MARKSURFACES)
- 边数据块(LUMP_EDGES)
- 面的边数据块(LUMP_SURFEDGES)
- 模型块(LUMP_MODELS)
- 附录
介绍
许多游戏的地图文件后缀都是 BSP,是因为使用了一种场景管理技术,叫“二叉空间分割”。但不同的游戏不同的版本的BSP文件规范都是不一样的,下面介绍 Goldsrc 的 BSP 文件格式规范。Goldsrc 使用的 BSP 版本号为 30.
NOTE: 以下信息是非官方的资料,规范是从 HL SDK 和其他一些开放源代码整理出来的,且经过实验能够正确地解析地图。
这篇文档使用 C# 的结构体来描述 BSP 文件中不同的数据结构。因为 C# 基元类型的长度是平台无关的,而 C 语言的基元类型如 int , long 的位宽取决于编译器和平台。命名保持原样,所以看起来是 C 风格的命名。
以下术语解释
长度:以字节为单位
位宽:以位为单位
偏移:以字节为单位
位偏移:以位为单位
一些常量
const int LUMP_ENTITIES = 0;
const int LUMP_PLANES = 1;
const int LUMP_TEXTURES = 2;
const int LUMP_VERTICES = 3;
const int LUMP_VISIBILITY = 4;
const int LUMP_NODES = 5;
const int LUMP_TEXINFO = 6;
const int LUMP_FACES = 7;
const int LUMP_LIGHTING = 8;
const int LUMP_CLIPNODES = 9;
const int LUMP_LEAVES = 10;
const int LUMP_MARKSURFACES = 11;
const int LUMP_EDGES