![]() |
Hex | Translation | Meaning |
---|---|---|
01 4E 02 00 | 590 | 00590-.AKVA |
01 00 00 06 | 3 | level 3 |
AD DE | dead | not used |
1E 01 00 00 | 286 | 286 packages follow (one package is edged in black) |
Below follows the first package. (Thanks to geyser who figured nearly all out.) | ||
00 00 00 00 | 0 | AKBP package number; BSP tree for this BNV |
00 00 00 00 | 0 | BNV's ID (same as package number above) |
00 00 00 00 | 0 | from AKBA package number ("side" range start) |
06 00 00 00 | 6 | to AKBA package number ("side" range end) |
FF FF FF FF | -1 | AKVA child package number (Thanks to geyser.) |
FF FF FF FF | -1 | AKVA sibling package number (Thanks to geyser.) |
FF FF FF FF | -1 | unknown; always the same |
C9 00 00 00 | 201 | amount of grid tiles in x-position (Thanks to geyser.) |
16 00 00 00 | 22 | amount of grid tiles in z-position (Thanks to geyser.) |
A0 3A 47 00 | 47 3A A0 | from this position starts the pathfinding grid part in the raw file |
F7 01 00 00 | 503 | 503 bytes; size of the pathfinding grid part in the raw file |
00 00 80 40 | 4.000000 | size of a grid tile (Thanks to geyser.) |
00 00 20 41 | 10.000000 | min. x-coordinate of the grid volume (Thanks to geyser.) |
00 00 58 C1 | -13.500000 | min. y-coordinate (height) of the grid volume (Thanks to geyser.) |
00 80 2A C4 | −682.000000 | min. z-coordinate of the grid volume (Thanks to geyser.) |
00 40 47 44 | 797.000000 | max. x-coordinate of the grid volume (Thanks to geyser.) |
00 00 22 42 | 40.500000 | max. y-coordinate (height) of the grid volume (Thanks to geyser.) |
00 00 19 C4 | -612.000000 | max. z-coordinate of the grid volume (Thanks to geyser.) |
FE FF | -2 | unknown; always the same |
FE FF | -2 | unknown; always the same |
00 00 00 00 | 0 | BNV's ID again |
00 00 00 00 | 0 | unknown; always zero |
00 00 00 00 | 0 | unknown; always zero |
00 00 00 00 | 0 | unknown; always zero (was it a raw file offset once?) |
04 00 00 00 | 4 | identifier for the next five floats: the following identifiers are used in level 3 (other levels not checked; values in dec): 4 - grid lays on a straight plane (floats not used; all zero) |
00 00 00 00 | 0.000000 | x-value of the floor/ceiling normal |
00 00 00 00 | 0.000000 | x-value of the floor/ceiling normal |
00 00 00 00 | 0.000000 | z-value of the floor/ceiling normal |
00 00 00 00 | 0.000000 | distance of floor plane to origin (Thanks to geyser.) |
00 00 00 00 | 0.000000 | distance of ceiling plane to origin (Thanks to geyser.) |
General BNVs are volumes that have a pathfinding grid assigned to them. The grid itself is in the RAW, while its overall parameters are in the DAT. * Child AKBP tree refines the volume after the AABB is checked * Child AKBA defines the "sides" needed by the pathfinding graph 0x00 - AKBP tree This binary space partition (BSP) tree is used for a refined check against a character's position. 0x08 - AKBA range The "sides" of a BNV define the quads by which an AI can transit to adjacent BNVs. 0x10 - Children and siblings Those occur when smaller BNVs are completely included into larger ones. The bigger BNV only links to its first child. If there are several children, the sibling link is used to define the series. Examples: lobby in Chapter 3 : PUZZLE PIECES (level3), big hall under main power line in Chapter 8 : AN INNOCENT LIFE (level10). 0x1C - Pathfinding grid The RAW format is rather complex (see HERE). It requires the X and Z size for parsing. BNV 165 in level4 (far side of tarmac, behind the fence) has a non-zero X-Z grid size but no RAW data. Notably, that one BNV also has the 16 flag set at 0x5C (see below). The grid usually "bleeds" outside the (x,z) extent of the BNV. The amount of bleeding is defined by the grid's size (in tiles) and by the size of a tile. The grid seems to be always centered of the "floor" of the BNV's AABB (see above). 0x30 - AABB The axis-aligned bounding boxes are used for a first, quick check against a character's position. (note that the AKVA itself is looked up via the octtree: 2nd IDXA of the AKOT + OTLF) 0x5C - Floor and ceiling Bitset: * the 4 bit is always set (meaning unknown) * the 16 bit is set only for BNV 165 of level4 (no RAW part, see above) * the 1 bit is set for BNVs involving "sloped" floors and ceilings (typical environment requiring this feature is compact staircases) The sloped floor and ceiling are used to apply a final cut to the volume defined by the AKBP tree (the walls of which are typically vertical (possibly not axis-aligned) and horizontal) When the "sloped" bit isn't set, all 5 floats are always zero (and are probably ignored anyway). The 3 power lines in level10 have all 5 floats equal to zero even though the "sloped" bit is set (possibly a design error: interestingly, BNV detection and pathfinding work fine for those 3).
![]() | Back to File Types | ![]() |