Understanding the internal structure of Fortnite replay files
Fortnite replay files follow Unreal Engine’s replay system architecture. Understanding this structure is essential for effectively parsing and extracting data from replay files.
The header chunk contains versioning information crucial for parsing the replay correctly. Read via ReadReplayHeader() in FortniteReplayReader.cs:227.
public class ReplayHeader{ public NetworkVersionHistory NetworkVersion { get; set; } public uint NetworkChecksum { get; set; } public EngineNetworkVersionHistory EngineNetworkVersion { get; set; } public uint GameNetworkProtocolVersion { get; set; } public string Branch { get; set; } // e.g., "++Fortnite+Release-28.00" public ushort Major { get; set; } // Season number public ushort Minor { get; set; } // Version within season}
The Branch property is parsed to extract Major and Minor version numbers, which are critical for handling format differences between Fortnite seasons.
Events contain high-level game information that doesn’t require parsing network packets. Events are read via ReadEvent() in FortniteReplayReader.cs:238.
Every event follows this base structure from EventInfo.cs:
public class EventInfo{ public string Id { get; set; } public string Group { get; set; } // Event type identifier public string Metadata { get; set; } // Additional type info public uint StartTime { get; set; } // Event timestamp (ms) public uint EndTime { get; set; } public int SizeInBytes { get; set; } // Payload size}
public class PlayerElimination : BaseEvent{ public PlayerEliminationInfo EliminatedInfo { get; set; } public PlayerEliminationInfo EliminatorInfo { get; set; } public EDeathCause DeathCause { get; set; } // Weapon used public uint Timestamp { get; set; } // Time of elimination public bool Knocked { get; set; } // Knocked vs eliminated}
See FortniteReplayReader.cs:262-266 for the elimination parsing implementation.
ReplayData chunks contain the network packets that represent the actual game state over time. These are read via ReadReplayData() in ReplayReader.cs:387.What ReplayData Contains:
Player positions and movements
Building placements and edits
Weapon fire and inventory changes
Vehicle interactions
Game state updates (storm, supply drops)
ReplayData chunks require significantly more processing than events. Use parse types to control the level of detail parsed.
The complete parsed replay is represented by the FortniteReplay class:
public class FortniteReplay : Replay{ public ReplayInfo Info { get; set; } // File metadata public ReplayHeader Header { get; set; } // Version info public IList<PlayerElimination> Eliminations { get; set; } // All eliminations public Stats Stats { get; set; } // Match statistics public TeamStats TeamStats { get; set; } // Team placement public GameInformation GameInformation { get; set; } // Game state data}