Jump to content

OBD:AKVA: Difference between revisions

m
...
No edit summary
m (...)
 
(3 intermediate revisions by 2 users not shown)
Line 10: Line 10:
{{OBDtr| 0x04 | lev_id  |FFFF00| 01 00 00 06 | 3    | level 3 }}
{{OBDtr| 0x04 | lev_id  |FFFF00| 01 00 00 06 | 3    | level 3 }}
{{OBDtr| 0x08 | char[20] |00FF00| AD DE      | dead  | unused }}
{{OBDtr| 0x08 | char[20] |00FF00| AD DE      | dead  | unused }}
{{OBDtr| 0x1C | int32   |00FFFF| 1E 01 00 00 | 10000 | array size }}
{{OBDtr| 0x1C | uint32   |00FFFF| 1E 01 00 00 | 10000 | array size }}
{{OBDtrBK}}
{{OBDtrBK}}
{{OBDtr| 0x00 | int32   |FFC8C8| 00 00 00 00 | 0        | index into [[OBD:AKBP|AKBP]] array; BSP tree for this BNV }}
{{OBDtr| 0x00 | uint32   |FFC8C8| 00 00 00 00 | 0        | index into [[OBD:AKBP|AKBP]] array; BSP tree for this BNV }}
{{OBDtr| 0x04 | int32   |FFFFC8| 00 00 00 00 | 0        | BNV's ID (same as index in array) }}
{{OBDtr| 0x04 | uint32   |FFFFC8| 00 00 00 00 | 0        | BNV's ID (same as index in array) }}
{{OBDtr| 0x08 | int32   |C8FFC8| 00 00 00 00 | 0        | index into [[OBD:AKBA|AKBA]] array; "side" range start }}
{{OBDtr| 0x08 | uint32   |C8FFC8| 00 00 00 00 | 0        | index into [[OBD:AKBA|AKBA]] array; "side" range start }}
{{OBDtr| 0x0C | int32   |C8FFC8| 06 00 00 00 | 6        | index into [[OBD:AKBA|AKBA]] array; "side" range end }}
{{OBDtr| 0x0C | uint32   |C8FFC8| 06 00 00 00 | 6        | index into [[OBD:AKBA|AKBA]] array; "side" range end }}
{{OBDtr| 0x10 | int32   |C8FFFF| FF FF FF FF | -1        | index in array of child BNV }}
{{OBDtr| 0x10 | uint32   |C8FFFF| FF FF FF FF | -1        | index in array of child BNV }}
{{OBDtr| 0x14 | int32   |C8FFFF| FF FF FF FF | -1        | index in array of sibling BNV }}
{{OBDtr| 0x14 | uint32   |C8FFFF| FF FF FF FF | -1        | index in array of sibling BNV }}
{{OBDtr| 0x18 | int32   |C8FFFF| FF FF FF FF | -1        | runtime only }}
{{OBDtr| 0x18 | uint32   |C8FFFF| FF FF FF FF | -1        | path node index; runtime only }}
{{OBDtr| 0x1C | int32   |FFC8FF| C9 00 00 00 | 201      | size of the pathfinding grid along x in tiles }}
{{OBDtr| 0x1C | uint32   |FFC8FF| C9 00 00 00 | 201      | size of the pathfinding grid along x in tiles }}
{{OBDtr| 0x20 | int32   |FFC8FF| 16 00 00 00 | 22        | size of the pathfinding grid along z in tiles }}
{{OBDtr| 0x20 | uint32   |FFC8FF| 16 00 00 00 | 22        | size of the pathfinding grid along z in tiles }}
{{OBDtr| 0x24 | offset  |FFC800| A0 3A 47 00 |00 47 3A A0| at this position starts the pathfinding grid part in the raw file }}
{{OBDtr| 0x24 | offset  |FFC800| A0 3A 47 00 |00 47 3A A0| at this position starts the compressed pathfinding grid part in the raw file }}
{{OBDtr| 0x28 | int32   |C800C8| F7 01 00 00 | 503      | size of the pathfinding grid part in the raw file in bytes }}
{{OBDtr| 0x28 | uint32   |C800C8| F7 01 00 00 | 503      | size of the compressed pathfinding grid part in the raw file in bytes }}
{{OBDtr| 0x2C | float    |C87C64| 00 00 80 40 | 4.000000  | tile size of the pathfinding grid }}
{{OBDtr| 0x2C | float    |C87C64| 00 00 80 40 | 4.000000  | tile size of the pathfinding grid (in AutoCAD units) }}
{{OBDtr| 0x30 | float    |B0C3D4| 00 00 20 41 | 10.000000 | AABB X- (AABB <nowiki>=</nowiki> Axis-aligned bounding box) }}
{{OBDtr| 0x30 | float    |B0C3D4| 00 00 20 41 | 10.000000 | [[OBD:Data_types#AABB|AABB]] X- }}
{{OBDtr| 0x34 | float    |B0C3D4| 00 00 58 C1 | -13.500000| AABB Y- }}
{{OBDtr| 0x34 | float    |B0C3D4| 00 00 58 C1 | -13.500000| [[OBD:Data_types#AABB|AABB]] Y- }}
{{OBDtr| 0x38 | float    |B0C3D4| 00 80 2A C4 |−682.000000| AABB Z- }}
{{OBDtr| 0x38 | float    |B0C3D4| 00 80 2A C4 |−682.000000| [[OBD:Data_types#AABB|AABB]] Z- }}
{{OBDtr| 0x3C | float    |E7CEA5| 00 40 47 44 | 797.000000| AABB X+ }}
{{OBDtr| 0x3C | float    |E7CEA5| 00 40 47 44 | 797.000000| [[OBD:Data_types#AABB|AABB]] X+ }}
{{OBDtr| 0x40 | float    |E7CEA5| 00 00 22 42 | 40.500000 | AABB Y+ }}
{{OBDtr| 0x40 | float    |E7CEA5| 00 00 22 42 | 40.500000 | [[OBD:Data_types#AABB|AABB]] Y+ }}
{{OBDtr| 0x44 | float    |E7CEA5| 00 00 19 C4 |-612.000000| AABB Z+ }}
{{OBDtr| 0x44 | float    |E7CEA5| 00 00 19 C4 |-612.000000| [[OBD:Data_types#AABB|AABB]] Z+ }}
{{OBDtr| 0x48 | int16    |FFDDDD| FE FF      | -2        | grid x origin (in tiles) }}
{{OBDtr| 0x48 | int16    |FFDDDD| FE FF      | -2        | grid x origin (in tiles) }}
{{OBDtr| 0x4A | int16    |FFDDDD| FE FF      | -2        | grid z origin (in tiles) }}
{{OBDtr| 0x4A | int16    |FFDDDD| FE FF      | -2        | grid z origin (in tiles) }}
{{OBDtr| 0x4C | int32   |64AAAA| 00 00 00 00 | 0        | BNV's ID again }}
{{OBDtr| 0x4C | uint32   |64AAAA| 00 00 00 00 | 0        | parent BNV ID (same as current BNV ID, if no parent?) }}
{{OBDtr| 0x50 | int32   |EBEBEB| 00 00 00 00 | 0        | runtime only }}
{{OBDtr| 0x50 | uint32   |EBEBEB| 00 00 00 00 | 0        | debug render time; debug only; runtime only }}
{{OBDtr| 0x54 | int32   |EBEBEB| 00 00 00 00 | 0        | path debug info size }}
{{OBDtr| 0x54 | uint32   |EBEBEB| 00 00 00 00 | 0        | path debug info size; always 0, unless imported with "-pathdebug" through original importer }}
{{OBDtr| 0x58 | int32   |EBEBEB| 00 00 00 00 | 0        | path debug info offset (in the raw file) }}
{{OBDtr| 0x58 | uint32   |EBEBEB| 00 00 00 00 | 0        | path debug info offset (in the raw file) }}
{{OBDtr| 0x5C | int32    |8C8CCC| 04 00 00 00 | 4        | flags; used values:
{{OBDtr| 0x5C | int32    |8C8CCC| 04 00 00 00 | 4        | flags; used values:
:0x'''01''' 00 00 00 - sloped floor  
:0x'''01''' 00 00 00 - sloped floor  
Line 49: Line 49:


;General
;General
:BNVs are volumes that have a [[OBD:AKVA/0x24|pathfinding grid]] assigned to them. The grid itself is in the RAW, while its overall parameters are in the DAT.
:BNVs are volumes that have a [[OBD:AKVA/0x24|pathfinding grid]] assigned to them. The grid itself is in the raw file, while its overall parameters are in the .dat file.
:The usual volume is a right prism (or an oblique prism if the foor is sloped) but there are a few BNVs that are a bit more complex. There's not limit to the number of faces a volume can have but it's probably better to keep this number low. Most BNVs are convex but concave BNVs work too (level2 has some).
:The usual volume is a right prism (or an oblique prism if the foor is sloped) but there are a few BNVs that are a bit more complex. There's not limit to the number of faces a volume can have but it's probably better to keep this number low. Most BNVs are convex but concave BNVs work too (level2 has some).
:The horizontal BNVs never overlap (that might work but it's probably useless) but a sloped BNV can overlap a horizontal one (for example some stairs that are placed in the middle of a floor, see first stairs in level 2). This means that it is possible to have ghost quads placed inside a BNV instead of on an edge. It is unknown if the engine checks that while moving inside a BNV such a ghost quad is interesected.
:The horizontal BNVs never overlap (that might work but it's probably useless) but a sloped BNV can overlap a horizontal one (for example some stairs that are placed in the middle of a floor, see first stairs in level 2). This means that it is possible to have ghost quads placed inside a BNV instead of on an edge. It is unknown if the engine checks that while moving inside a BNV such a ghost quad is interesected.
Line 68: Line 68:
:The bigger BNV only links to its first child. If there are several children, the sibling link is used to define the series.
: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 {{C3}} (level3), big hall under main power line in {{C8}} (level10).
::Examples: lobby in {{C3}} (level3), big hall under main power line in {{C8}} (level10).
:It's unclear if children BNVs are really needed. They usually occur when the parent BNV is very tall (see level3 lobby) but due to the way the pathfinding grids work such tall BNVs might be useless (see below).
:It's unclear if children BNVs are really needed or used. They usually occur when the parent BNV is very tall (see level3 lobby) but due to the way the pathfinding grids work such tall BNVs might be useless (see below).




Line 80: Line 80:
:Given this it seems that there's no reason to make BNVs that are much taller than the characters.
:Given this it seems that there's no reason to make BNVs that are much taller than the characters.


:BNV 165 in level4 (far side of tarmac, behind the fence) has a non-zero X-Z grid size but no RAW data.
:BNV 165 in level4 (far side of tarmac, behind the fence) has a non-zero X-Z grid size but no data in the raw file.
::Notably, that one BNV also has the 16 flag set at 0x5C (see below).
::Notably, that one BNV also has the 16 flag set at 0x5C (see below).
:The grid's alignment on the "floor" of the BNV's AABB is defined by the x and z offsets in tiles (at 0x48 and 0x4A).
:The grid's alignment on the "floor" of the BNV's AABB is defined by the x and z offsets in tiles (at 0x48 and 0x4A).
Line 91: Line 91:


{{OBD_File_Footer | type=AKVA | prev=AKOT | next=BINA | name=BNV Node Array | family=Level}}
{{OBD_File_Footer | type=AKVA | prev=AKOT | next=BINA | name=BNV Node Array | family=Level}}
{{OBD}}
279

edits