OBD:AKVA/0x24

From OniGalore
< OBD:AKVA
Revision as of 14:02, 17 July 2014 by Iritscen (talk | contribs) (contrary to Windows' claims, these are not "DAT" files)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Overview

The pathfinding grid is made of equally sized tiles and it is aligned with the x and z axis. The size of the tile and the number of tiles are along each axis are stored in the BNV. Grid rows corespond to the x axis and grid column corespond to the z axis.

A tile can have one of the following types (appearance as visible with ai2_showgrids=1):

  • 0 : clear (no cross)
  • 1 : nearwall (light green cross)
  • 2 : border1 (lightest blue cross)
  • 3 : border2 (lighter blue cross)
  • 4 : semipassable (green cross)
  • 5 : border3 (blue cross)
  • 6 : border4 (dark blue cross)
  • 7 : stairs (dark green cross)
  • 8 : danger (orange cross)
  • 9 : impassable (red cross)


Storage

The grid is stored compressed in .raw files and it is decompressed on demand (when an AI needs to find its way through a BNV). The used compression algorithm is a form of RLE:

  • a sequence of tiles that have the same type form a run
  • a run can have a length of up to 255 tiles
  • runs of length 1 are treated as any other length runs
  • runs of up to 15 tiles (short runs) are stored in one byte:
XY (hexadecimal, with X > 0 ) stands for a run of X tiles of type Y
  • runs of more than 15 tiles (long runs) are stored in 2 bytes:
0Y XX (hexadecimal, with XX > 0 ) stands for a run of XX tiles of type Y
the leading 0 is used to differentiate between short and long runs


Example

The example below is the grid of BNV number 32 from level1_Final.

(chr_teleport 0 0 gets you there, and then you can use chr_show_bnv=1 and ai2_showgrids=1)

The example was chosen because it's a relatively small grid (45 bytes of data) and illustrates the format completely.


(offsets relative)
0x00:  00 FF 00 FF 00 E1 E1 70 E1 E4 11 50 11 E4 E9 14  °NONSENSE°ASCII°
0x10:  11 30 11 14 09 11 48 79 14 11 30 11 14 79 48 39  °°°°°°°°°°°°°°°°
0x20:  24 19 48 19 64 11 50 11 64 19 48 19 24 °° °° °°  °°°°°°°°°°°°°°°°


Here's the grid this corresponds to
(the grid's size is 26x35 as specified in the instance file)
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
01
02
03
04 255 tiles of type 0
05
06
07
08
09
10
11 255 tiles of type 0
12
13
14
15
16
17
18 225 tiles of type 0
19
20
21
22 14 tiles of type 1 7 tiles of type 0 14 tiles of type 1
23 14 tiles of type 4 1 5 tiles of type 0 1 14 tiles of type 4
24 14 tiles of type 9 4 1 3 t. of type 0 1 4 17 tiles...
25 ...of type 9 4 t. of type 8 7 tiles of type 9 4 1 3 t. of type 0 1 4 7 tiles of type 9 4 t. of type 8 3 t. of type 9
26 4 9 4 t. of type 8 9 6 t. of type 4 1 5 t. of type 0 1 6 t. of type 4 9 4 t. of type 8 9 4