Skip to content

ROFL2 Container Notes

fraxiinus edited this page Jul 3, 2024 · 1 revision

ROFL2 Container Notes

The ROFL2 model was something introduced by Riot Games around patch 14.9. Their engineers had completely re-written the replay service in order to support game modes like Arena and TFT. This new model is severely pared down compared to the original ROFL container, however critical metadata was re-introduced in patch 14.11.

Format

Header (46 bytes?)

File Signature (6 bytes)

Each ROFL2 file starts with the same 6 bytes: 0x52, 0x49, 0x4F, 0x54, 0x02, 0x00. In ASCII that is "RIOT2\0" where "\0" is a null byte.

Unknown Data (9 bytes)

The values of the bytes in this section of the header is unknown.

Patch Version (14 bytes)

14 character string. Example: "14.10.586.9705".

Unknown Data (17 bytes?)

Unknown data.

Replay Payload (? bytes)

Nothing is known about the payload. It is assumed that it is also obfuscated and encrypted much like the ROFL payload.

In the initial version of ROFL2, there is nothing else to the replay file. These initial versions are usually from patch 14.9 and before 14.11.

All files after 14.11 have the following appended to the format:

JSON Metadata (See Metadata Size)

Escaped JSON string, contains data about the game.

See Metadata2 model definition. For the player model, see the PlayerStats2 model and it's base class PlayerStats.

Metadata Size (4 bytes from EoF)

The last 4 bytes of ROFL2 denote how many bytes long the JSON Metadata is. Type is assumed to be uint32.