Skip to content
Gaticus Hax edited this page Sep 7, 2018 · 5 revisions

MBIN files use a binary data format to store different types of Game Components. It includes a 96-byte header structure that is common to all MBIN files followed by a data structure that is specific to the type of data template that is defined in the MBIN header. Additionally, if the structure contains variable length (pointer) data such as lists, it is appended to the data block.

As of NMS v1.57, there are around 1100 different data templates. Some are only used internally within other templates.

MBIN Header

  • VANILLA The MBIN Header Format (v0) used by Hello Games is detailed HERE

libMBIN re-purposes some of the data within the header that NMS doesn't actually use in the game.
Namely, the timestamp and GUID fields are replaced with a tag and version string respectively.
The tag identifies that the file has been recompiled and is always "MBINCver".
The version indicates what version it was compiled with.

  • CURRENT The MBIN Header Format (v1) used by libMBIN is detailed HERE

UPCOMING CHANGES

A new header format is being planned that will allow for some additional features, establish a convention for future format changes if required and eliminate some inconsistencies with certain types of MBIN files.

  • PENDING RELEASE The MBIN Header Format (v2) that will be used is being detailed HERE

Detecting Format Versions

Starting with format v2, the Header.APIVersionID will indicate the proper version of the header. For v0 and v1, APIVersionID will be 0. To differentiate between v0 and v1, the BuildDateTime/Tag must be checked. For v1, the Tag field will be "MBINver ". If not then it must be v0.