Benchmarks & Reproduction
Aegis Save is built on an empirical performance culture (P-14): we never publish theoretical estimates or unmeasured claims. Every performance figure is measured on an editor-less, standalone cooked Development game target under adverse, real-world conditions.
This guide details our published benchmark figures and explains how any studio or developer can reproduce these measurements directly in their own project using the shipped benchmarking harness.
1. Published Benchmark Results
Evaluated against standalone cooked game builds (BassSaveProject.exe) on Windows (Win64) using DirectX 12 SM6:
| Benchmark Scenario | Population & Conditions | Target Budget | Measured Added p99 | Trimmed Top-K Delta | Status |
|---|---|---|---|---|---|
| Experiment A (Standard World) | 200 placed actors, non-streaming, 2% dirty fraction, 1.0 churn | $\le 1.00\text{ ms}$ | 0.9065 ms | 0.9267 ms | PASS |
| Experiment B (Streaming World) | 10,000 placed actors, World Partition streaming active, 2% dirty fraction, 1.0 churn | $\le 1.00\text{ ms}$ | 0.6052 ms | 0.5909 ms | PASS |
Key Observations from Experiment B
- Active Streaming Confirmed (
P-12 OBSERVED): Streaming residency was actively probed viaTActorIteratorthroughout the test. Resident actor counts actively cycled between 0 and 10,000 actors across 15 sweep reversals. - Sub-Millisecond Tail Latency: Even while streaming cells loaded and unloaded 10,000 actors, the median added p99 impact on the Game Thread remained strictly at 0.6052 ms—well inside the 1.00 ms budget ceiling.
- Worst Frame Overrun: Across all trials, the absolute worst-case frame overrun observed was only 0.1840 ms.
2. How to Reproduce Benchmarks in Your Project
Aegis Save ships with its benchmarking harness included in the plugin (AegisSaveBenchmark module). You can run the exact same experiments in your own maps.
Step 1: Place Benchmark Actors
If you want to generate a dense test population in a map:
# In Unreal Editor command line:
UnrealEditor-Cmd.exe YourProject.uproject -run=AegisPlaceBenchmarkActors -Count=10000 -Clear -unattended -nosplashStep 2: Execute the Automated Benchmark
Run the standalone game process with the Aegis.Benchmark.Run command:
# Experiment A: Standard Map (200 actors, 2% dirty fraction, 1.0 churn)
UnrealEditor-Cmd.exe "YourProject.uproject" /Game/Maps/YourMap -game -nullrhi -nosound -unattended -nosplash -AegisBenchmarkExit -ExecCmds="Aegis.Benchmark.Run 200 0.02 1.0" -abslog="Saved/Logs/Bench.log"
# Experiment B: Streaming World (10,000 actors, World Partition sweep)
UnrealEditor-Cmd.exe "YourProject.uproject" /Game/Maps/YourMap -game -nullrhi -nosound -unattended -nosplash -AegisBenchmarkExit -ExecCmds="Aegis.Benchmark.Run 10000 0.02 1.0 2 30000 15000" -abslog="Saved/Logs/ExpB.log"Parameters for Aegis.Benchmark.Run:
Count: Number of persistent actors to track.DirtyFraction: Fraction of actors modified per save (e.g.0.02for 2%).ChurnRate: Rate of state mutations per second.Trials: Number of paired measurement passes (default2).SweepHalfExtent: World Partition sweep distance (e.g.30000).SourceRadius: Streaming source radius (e.g.15000).
3. Reading the Benchmark Report
When the benchmark finishes, check your log file (Saved/Logs/Bench.log). You will find a structured summary:
AEGIS_BENCHMARK_RESULT
status=SUCCESS
p12_streaming=OBSERVED
resident_min=0 resident_max=10000
baseline_p99_ms=6.6296
with_saving_p99_ms=7.2349
ADDED_p99_median_ms=0.6052
trimmed_top_k_delta_ms=0.5909
worst_frame_overrun_ms=0.1840Every figure is reported with paired baseline controls and verified against null-hypothesis runs.
Next Steps
- Explore the complete Blueprint node surface in Blueprint Node Reference.
- Review the C++ classes in C++ API Reference.