gonav icon indicating copy to clipboard operation
gonav copied to clipboard

Properly parse game-specific custom area data.

Open WhyIsEvery4thYearAlwaysBad opened this issue 4 years ago • 3 comments

The parser does not actually parse custom data. These lines in parser.go:

// Skip passed some unknown data
var garbageCount byte
p.read(&garbageCount)
p.advanceBytes(int(garbageCount) * 14)

Actually skips over game-specific custom area data.

  • Team Fortress 2 NAVs stores 1 integer at the end of the area data to store TF2-specific area attributes.

Is this reserved space of equal size that can be encoded with arbitrary game-specific information? Or is this TF2 behavior you described very TF2-specific? I reversed this with CSGO nav meshes so I'm not surprised to find there's some value here.

mrazza avatar Oct 15 '21 21:10 mrazza

Is this reserved space of equal size that can be encoded with arbitrary game-specific information? Or is this TF2 behavior you described very TF2-specific? I reversed this with CSGO nav meshes so I'm not surprised to find there's some value here.

This is reserved space of equal size that can be encoded with arbitrary game-specific information. Left 4 Dead and Left 4 Dead 2 stores zombie spawn flags and attributes in this custom data. TF2 stores a flag for custom attributes, and CS:S and CS:GO stores approach spot data here.

TF2 stores a flag for custom attributes, and CS:S and CS:GO stores approach spot data here.

But aren't approach areas are handled before that? How did you find out what is stored there in CS:GO? I couldn't figure it out looking at the source leak and the community wiki

MathiasLui avatar May 16 '22 03:05 MathiasLui