Horizon Forbidden West: Editing Config for Detailed CPU Performance Logs

The objective is to enable the hidden telemetry flags within the config.ini or the registry to track frame-time variance ($\Delta T$) across individual worker threads.

1. Locating the Configuration and Log Files

In the 2026 build, the game stores its primary settings in the Windows Registry and a local .ini file for specific engine overrides.

  • Config File Path: %Documents%\Horizon Forbidden West Complete Edition\profile\config.ini
  • Log Output Path: %LocalAppData%\Guerrilla Games\Horizon Forbidden West\logs\
  • Registry Path: HKEY_CURRENT_USER\Software\Guerrilla Games\Horizon Forbidden West Complete Edition\

2. Enabling Advanced CPU Telemetry

To force the game to output detailed thread-timing logs, you must add specific “Developer Flags” to your config.ini. If the file does not exist, create it in the /profile/ directory.

Command (under [Debug])ValueTechnical Purpose
EnablePerformanceLoggingtrueEnables the creation of .csv or .etl logs in the LocalAppData folder.
JobSystemDetailLevel2Increases log granularity for the internal task scheduler ($S_{task}$).
LogThreadStallstrueSpecifically records when a core waits more than 5ms for an asset.
AsyncComputeOverridetrueForces CPU-bound physics tasks to stay on dedicated “Worker” threads.

3. Optimizing the “16-Thread” Bottleneck

Benchmarks from 2026 show that Forbidden West can stutter on 6-core/12-thread CPUs because it expects 16 logical processors for fluid asset streaming.

The GameEngineer.net Fix:

  1. Disable SMT/Hyperthreading: Paradoxically, on some 8-core CPUs, disabling SMT can improve 1% lows by reducing cache contention ($C_{cont}$).
  2. InternalLODRangeModifier: In your mod-config.ini (if using engine tweaks), set this to 1.2. This reduces the CPU’s “Draw Call” burden in dense areas like Plainsong, which is the most frequent cause of CPU-bound stutters.
  3. Process Lasso: Set the game’s priority to High and ensure “CPU Sets” are avoiding Core 0, which Windows uses for system interrupts.

4. Analyzing the Log Output

Once EnablePerformanceLogging is active, check the thread_stats.log in your LocalAppData.

  • High “WaitTime”: Indicates your RAM speed ($MHz$) or latency ($CL$) is slowing down the CPU.
  • High “JobQueueLength”: Your CPU doesn’t have enough physical cores to handle the background asset decompression. Lower Crowd Quality to Medium to mitigate this.
Leave a Comment