The GameInformation class is the primary data container returned after parsing a replay. It contains all parsed information including players, teams, eliminations, loot, structures, and game state.
Overview
After parsing a replay file, the GameInformation object provides access to all gameplay data through its public collections and properties.
var replayData = reader.ParseReplay();
var gameInfo = replayData.GameInformation;
// Access players
foreach (var player in gameInfo.Players)
{
Console.WriteLine($"{player.DisplayName}: {player.Placement}");
}
Properties
Players
ICollection<Player>
required
Collection of all players in the match. Each player contains detailed information including stats, location history, inventory, and eliminations.
Teams
ICollection<Team>
required
Collection of all teams in the match with their associated players.
KillFeed
ICollection<KillFeedEntry>
required
Complete kill feed showing all eliminations, knocks, and player state changes throughout the match in chronological order.
Current game state information including match timing, safe zones, tournament info, and session data.
SafeZones
ICollection<SafeZone>
required
Collection of all storm circles/safe zones throughout the match, including shrink timing and positions.
SupplyDrops
ICollection<SupplyDrop>
required
All supply drops that spawned during the match with their locations and status (opened, destroyed, etc).
Llamas
ICollection<Llama>
required
Collection of all Llamas (Supply Drop Llamas) that spawned, with location and opened status.
FloorLoot
ICollection<InventoryItem>
required
All floor loot items detected during the replay. Requires Full parse mode.This property requires ParseMode.Full to be populated.
PlayerStructures
ICollection<PlayerStructure>
required
All player-built structures (walls, floors, ramps, roofs) with location, material type, and health data.
Resurrections
ICollection<PlayerReboot>
required
All player reboot/resurrection events at reboot vans.
StormSurges
ICollection<StormSurge>
required
Storm surge events including warning times, damage times, and clear times.
Settings
FortniteReplaySettings
required
The parsing settings used when reading this replay.
MinigameInformation
MinigameInformation
required
Creative/minigame specific information including rounds, teams, and scoring. Only populated for Creative mode replays.
Encryption key used for player state data in encrypted replays.
Examples
Accessing Player Data
var gameInfo = replayData.GameInformation;
// Get winning player/team
var winners = gameInfo.Players
.Where(p => p.Placement == 1)
.ToList();
foreach (var winner in winners)
{
Console.WriteLine($"Winner: {winner.DisplayName}");
Console.WriteLine($" Kills: {winner.TotalKills}");
Console.WriteLine($" Team: {winner.Teamindex}");
}
Analyzing Eliminations
// Get all final eliminations (not knocks)
var eliminations = gameInfo.KillFeed
.Where(k => k.CurrentPlayerState == PlayerState.Killed)
.ToList();
Console.WriteLine($"Total Eliminations: {eliminations.Count}");
// Find longest elimination
var longestElim = gameInfo.KillFeed
.Where(k => k.Distance > 0)
.OrderByDescending(k => k.Distance)
.FirstOrDefault();
if (longestElim != null)
{
Console.WriteLine($"Longest elimination: {longestElim.Distance:F2}m by {longestElim.FinisherOrDowner?.DisplayName}");
}
// Analyze storm circles
foreach (var zone in gameInfo.SafeZones)
{
Console.WriteLine($"Zone: Radius {zone.Radius}m");
Console.WriteLine($" Center: {zone.NextCenter}");
Console.WriteLine($" Shrink Start: {zone.ShrinkStartTime}s");
Console.WriteLine($" Shrink End: {zone.ShringEndTime}s");
}
Loot Analysis
// Analyze floor loot (requires Full parse mode)
if (gameInfo.FloorLoot.Any())
{
var weapons = gameInfo.FloorLoot
.Where(i => i.Item.Type == ItemType.Weapon)
.GroupBy(i => i.Item.Name)
.Select(g => new { Weapon = g.Key, Count = g.Count() })
.OrderByDescending(x => x.Count);
Console.WriteLine("Weapon Spawns:");
foreach (var weapon in weapons)
{
Console.WriteLine($" {weapon.Weapon}: {weapon.Count}");
}
}
Supply Drop Tracking
// Track supply drops
foreach (var drop in gameInfo.SupplyDrops)
{
Console.WriteLine($"Supply Drop at {drop.Location}");
Console.WriteLine($" Spawned: {drop.SpawnTime}s");
Console.WriteLine($" Opened: {drop.Opened}");
Console.WriteLine($" Balloon Popped: {drop.BalloonPopped}");
}