nsr - themeldingwars/Documentation GitHub Wiki
The Network Stream Relay (NSR) files are better known as replay files since they hold the streaming data which allows to replay in-game recordings. This is an attempt to reverse engineer and document the format as best as possible.
The NSR format uses the little endian byte order, as such all the numbers are found "reversed" in the hex dump.
The streaming format changes rather often as such it's important to note that the following data has been collected with the release version 1861.
010 Editor Template
Implementations
- Partial Reader and Writer have been implemented in FauFau: Nsr.cs
Tools
- NSRViewer - View Firefall Network Stream Relay (NSR) files
- nsrinfo - C++ CLI tool to extract basic NSR info
Compression
The NSR file is compressed with gzip
and can for example get unpacked with 7zip.
It's however important to use the gzip
and not the normal zip
algorithm for compressing the unpacked file again.
7z a -tgzip name.nsr name
Format
NSRD - NSR Description
4E 53 52 44 -- NSRD
uint32 -- Always 5
uint32 -- Size of the header (NSRD + NSRI - 8bytes)
uint32[4] -- Unknown
uint32 -- Streaming protocol version
uint32[4] -- Unknown
NSRI - NSR Index
4E 53 52 49 -- NSRI
uint32 -- Always 5
uint32[x] -- Unkown
Meta Data
Size: 294 Bytes
uint32 -- Zone number
byte[27+] -- (no recording description)\0 or similar
byte[25] -- Fri Mar 20 17:43:28 2015\0 or similar
byte[8] -- Unknown
byte -- Same data
bytes[9+] -- Username
bytes[5] -- Unknown
bytes[21] -- Firefall (v1.3.1861)\0 or similar
bytes[32] -- Unknown
bytes[31] -- Friday, March 20.697 Zulu 2238\0
bytes[] -- 00 padding
Entity Chunk
Something something
FE FF FF FF -- Start sequence
bytes[x] -- Entity name with x characters and one \0
bytes[x] -- Entity name with x characters and one \0
bytes[] -- Unknown, possible BF ID, etc.
bytes[y] -- Army tag with y characters and one \0, usually something like [RAWR]\0
bytes[] -- Unknown