Skip to main content

Overview

The FortniteReplaySettings class allows you to customize what data is extracted from replay files. Proper configuration can significantly improve parsing performance and reduce memory usage.

Creating Settings

Pass settings to the ReplayReader constructor:
using FortniteReplayReader;
using FortniteReplayReader.Models;

var settings = new FortniteReplaySettings
{
    PlayerLocationType = LocationTypes.All,
    LocationChangeDeltaMS = 0,
    IgnoreHealth = false
};

var reader = new ReplayReader(null, settings);
var replay = reader.ReadReplay("replay.replay", ParseType.Full);

Configuration Properties

PlayerLocationType

Controls which player locations are tracked during parsing.
public LocationTypes PlayerLocationType { get; set; } = LocationTypes.All;
Available Options:
Grabs all possible locations from every player in the match.
PlayerLocationType = LocationTypes.All
Use Case: Full match analysis, creating heatmaps for all players
Setting PlayerLocationType to None can improve parsing speed by 30-50% for large replays.

LocationChangeDeltaMS

Minimum time in milliseconds between saved location updates.
public int LocationChangeDeltaMS { get; set; } = 0;
  • 0: Capture all location updates (default)
  • > 0: Only save locations at specified intervals
// Capture every location update
LocationChangeDeltaMS = 0
For tracking general player movement, 1000ms (1 second) intervals are usually sufficient and reduce data size significantly.

IgnoreHealth

Skips health and shield updates.
public bool IgnoreHealth { get; set; }
Example:
new FortniteReplaySettings
{
    IgnoreHealth = true  // Don't track health changes
}
When to use:
  • You only need location/event data
  • Reduces parsing time for replays with frequent damage

IgnoreContainers

Skips container (chests, ammo boxes) data.
public bool IgnoreContainers { get; set; }
Example:
new FortniteReplaySettings
{
    IgnoreContainers = true  // Don't track container interactions
}

IgnoreShots

Skips weapon shot and damage data.
public bool IgnoreShots { get; set; }
Example:
new FortniteReplaySettings
{
    IgnoreShots = true  // Don't track shots fired
}
Enabling IgnoreShots means player.Shots and player.DamageTaken collections will be empty.

IgnoreInventory

Skips inventory tracking.
public bool IgnoreInventory { get; set; }
Example:
new FortniteReplaySettings
{
    IgnoreInventory = true  // Don't track inventory changes
}
When to use:
  • Only need location/elimination data
  • Significant performance improvement

IgnoreFloorLoot

Skips floor loot (dropped items) tracking.
public bool IgnoreFloorLoot { get; set; }
Example:
new FortniteReplaySettings
{
    IgnoreFloorLoot = true  // Don't track floor loot
}
Requires ParseType.Normal or higher to have any effect.

IgnoreWeaponSwitches

Skips tracking when players switch weapons.
public bool IgnoreWeaponSwitches { get; set; }
Example:
new FortniteReplaySettings
{
    IgnoreWeaponSwitches = true  // Don't track weapon switches
}

Configuration Presets

Here are common configuration presets for different use cases:
var settings = new FortniteReplaySettings
{
    PlayerLocationType = LocationTypes.None,
    IgnoreHealth = true,
    IgnoreContainers = true,
    IgnoreShots = true,
    IgnoreInventory = true,
    IgnoreFloorLoot = true,
    IgnoreWeaponSwitches = true
};

var reader = new ReplayReader(null, settings);
var replay = reader.ReadReplay(file, ParseType.Minimal);
Use Case: Only need eliminations and match stats
var settings = new FortniteReplaySettings
{
    PlayerLocationType = LocationTypes.User,
    LocationChangeDeltaMS = 1000,  // 1 second intervals
    IgnoreFloorLoot = true,
    IgnoreContainers = true
};

var reader = new ReplayReader(null, settings);
var replay = reader.ReadReplay(file, ParseType.Full);
Use Case: Track your own performance and stats
var settings = new FortniteReplaySettings
{
    PlayerLocationType = LocationTypes.Team,
    LocationChangeDeltaMS = 500,
    IgnoreFloorLoot = true
};

var reader = new ReplayReader(null, settings);
var replay = reader.ReadReplay(file, ParseType.Full);
Use Case: Analyze team positioning and coordination
var settings = new FortniteReplaySettings
{
    PlayerLocationType = LocationTypes.All,
    LocationChangeDeltaMS = 0,  // All locations
    IgnoreHealth = false,
    IgnoreContainers = false,
    IgnoreShots = false,
    IgnoreInventory = false,
    IgnoreFloorLoot = false,
    IgnoreWeaponSwitches = false
};

var reader = new ReplayReader(null, settings);
var replay = reader.ReadReplay(file, ParseType.Full);
Use Case: Complete match analysis with all data

Performance Impact

Here’s the approximate performance impact of each setting:
SettingPerformance GainData Lost
PlayerLocationType = NoneπŸš€ High (30-50%)Player movement
LocationChangeDeltaMS = 1000πŸƒ Medium (15-25%)Some location precision
IgnoreFloorLoot = trueπŸƒ Medium (10-20%)Floor loot tracking
IgnoreInventory = trueπŸƒ Medium (10-15%)Inventory changes
IgnoreShots = true🚢 Low (5-10%)Shot data
IgnoreHealth = true🚢 Low (5-10%)Health updates
IgnoreWeaponSwitches = true🚢 Low (under 5%)Weapon switch timing
IgnoreContainers = true🚢 Low (under 5%)Container data

Example: ConsoleReader Configuration

The ConsoleReader example demonstrates a performance-focused configuration:
FortniteReplayReader.cs:32-35
var reader = new ReplayReader(null, new FortniteReplaySettings
{
    PlayerLocationType = LocationTypes.None,
});
This configuration:
  • Skips all location tracking
  • Maximizes parsing speed
  • Still captures events and eliminations

Next Steps

Performance Optimization

Learn more optimization techniques

Player Data

Extract and work with player data

Build docs developers (and LLMs) love