Vehicle Data

From Burnout Wiki
Revision as of 23:27, 1 January 2021 by AcuteSyntax (talk | contribs) (Added documentation from the (soon to be obsolete lol) Modding Wiki.)

The Burnout Vehicle file format is used to store data for a particular vehicle in all Burnout games from Takedown to Dominator. It uses the file extension .bgv, or .btv for traffic vehicles.

This format contains most of the data related to any given vehicle, including mesh data, Level of Detail models, texture data, pointers to external files, deformation matrices, collision detection parameters and physics configuration info.

Version history

This format underwent a number of revisions and structural changes during the time it was in use. Because of this, BGV uses a single number at the start of the file to indicate the version.

Version Games Notes
0x14 Takedown Demo
0x17 Takedown, Legends, Dominator (PSP)
0x1D Revenge Demo
0x1F Revenge, Dominator (PS2)
0x25 Revenge (360)

All currently known offsets for revision 0x17 can be found here.

Version Differences

  • 0x14 BGVs are the only version to use global pointers for their LOD database submesh lists. These point to the exact location in the file of each submesh, whereas local pointers, used by 0x17 and up, use offsets relative to the beginning of the LOD. For example, a pointer to offset 0x1820 in a 0x14 BGV would appear to point to 0x140 in all other revisions.
  • Version 0x17 has a hardcoded limit of 6 car body parts (not counting the car's wheels and chassis); this limit was bumped up to 8 starting with revision 0x1D.
  • Version 0x1D and onward store deformation matrices in a different order to previous revisions.
  • Version 0x25 BGVs are compressed with ZLib, so they'll have to be manually decompressed using the Offzip tool if you wish to analyze/modify them.
    • 0x25 BGVs also use big-endian byte order due to being an Xbox 360-specific revision of the format, unlike all other revisions which store their bytes in little-endian order.

LOD database format

LODs, or Levels of Detail, are lower-poly, lower-detail (hence the name) models that games use for objects that are far away from the player, to keep framerates smooth. BGVs contain 4 LOD Databases, which in turn each contain one LOD model of minimum (LOD 0), low (LOD 1), medium (LOD 2) and high (LOD 3) quality.

Each LOD in a BGV contains a list of pointers to its submeshes at the very beginning; there are always exactly 12 pointers since it seems the maximum amount of submeshes a BGV can contain is 12, though it's unknown if this rule is enforced by the game or if it can be larger than that.