Found inside map
.arcs the details of much of the file format remain unkown, however it does contain the collision data for the map.
|0x0||uint32||Magic value. Always
|0x8||uint32||Collision Data Count|
|0xC||uint32||Pointer to Collision Data|
|0x10||uint32||A whole bunch of unknowns|
|0x38||uint32||Vertex list offset|
|0x3C||uint32||Face list offset|
|0x40||uint32||offset to unknown data|
|0x44||uint32||offset to unknown data|
|0x48||uint32||offset to unknown data|
|0x4C||uint32||offset to unknown data|
fvec4 vertices[header.vertex_count] found at
vertex list offset.
header.face_count of the following structure, found at
face list offset.
|0x10||short||Vertex index 1|
|0x12||short||Vertex index 2|
|0x14||short||Vertex index 3|
|0x16||short||Vertex index 4 *|
|0x20||uint32||Unknown, possibly flags|
- Faces are assumed to be quads unless
Vertex Index 4is
-1, in which case it’s a triangle.
The last 4 values in the header point to regions in the file after the Face List. Nothing is yet known about this data, except that it’s size seems to be proportional to the complexity of the associated map. The current working theory is that it is some kind of tree structure for optimizing collision queries.
Somewhere in the unknown data in the face structure should be flags that indicate if a face is a wall or floor, or if it’s a trigger, as the level exit triggers seem to be present in the collision data. How the game decides what to do when you walk into them is currently unknown.