Fighting Game · Guides & deep dives

V2 Engineering Performance Polish

First launch enumerates every shader and pipeline state used in the first five minutes of play: MainMenu, CharacterSelect, and FirstMatch.

6sections2 minread

On this page

The Section 89 performance package is enforced by V2/ue/Build/Performance/v2-engineering-polish-manifest.json and mirrored in V2/ue/Content/V2/Performance/EngineeringPolish_V2_Contract.json.

First Launch Warmup#

First launch enumerates every shader and pipeline state used in the first five minutes of play: MainMenu, CharacterSelect, and FirstMatch. The install or first-launch loading screen runs the precompile job behind Boot.Progress.PSOShaderWarmup and ships per-platform PSO blobs for Win64, PS5, XSX, and Switch2. PSO patch channels update those blobs independently from full content patches.

Driver upgrades invalidate the PSO cache by comparing RHI.DriverVersion with the saved fingerprint. A mismatch triggers an automatic rebuild; corruption uses the same safe-mode rebuild path.

Shader Prewarm#

The shader prewarm pass dummy-renders every required variant at first launch and whenever a cosmetic pack loads. Cooked builds include per-platform precompiled shaders, ShaderCompileWorker is required in CI, and development builds share DDC through $(UE_SHARED_DDC)/V2/DDC.

Save Open Preload#

Opening a save preloads the main-menu cinematic, character-select roster assets, the last-used fighter, and the selected stage. The main menu binds progress to MainMenu.Progress.AssetPreload. Session-pattern preloading reads the player's mode histogram; a player who usually opens MK ruleset content gets MK ruleset packages promoted before lower-probability content.

Tickrate And Frame Pacing#

Client-server modes default to 60Hz and can downshift to 30Hz when server CPU load crosses the policy threshold. Small unranked dedicated-server sessions can run at 128Hz for 1-2 players, medium sessions stay at 60Hz through 8 players, and larger sessions resolve to 30Hz. Rollback simulation stays at 60Hz. Per-mode defaults are: ranked 1v1 60Hz, Battle Hub 30Hz, World Tour 60Hz, and tournament matches 60Hz.

Console builds default VSync on. PC exposes Settings.Video.VSync. When VRR is detected, VSync is toggled off and Reflex / Anti-Lag 2 are enabled where the platform plugin is available. Rendering uses triple buffering with frame pacing diagnostics under V2.QA.FramePacing.

Async Work#

Match asset streaming runs in the background and defers every deferrable operation away from the game thread. Cloud save writes during match play are queued at low priority. Battle Pass tier-up, Mastery level-up, Achievement progress, and Friend list refresh run on worker-thread queues and never block UI. Background downloads continue during play with a bandwidth throttle setting.

Overlay And Telemetry#

The dev-only performance overlay is hidden in release builds and is only opened with v2.PerfOverlay.Show. It displays FPS, frame time, latency, GPU-bound / CPU-bound state, GC pressure, and memory. The video settings screen exposes Settings.Video.PerformanceModePreset for per-platform performance presets.

Telemetry sampling is randomized per session between 1 and 100 percent and stays stable for that session. Critical override events are always sampled at 100 percent: v2.match.crash.reported and v2.player.cheat-detection.detected.