ue-game-thread-performance

Diagnose and optimize game-thread CPU bottlenecks affecting frame rate in Unreal Engine.

55|5|Updated Mar 26, 2026
One-click install
npx skills add https://github.com/kevinpbuckley/unreal-engine-skills --skill ue-game-thread-performance-kevinpbuckley
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ue-game-thread-performance
Source: https://github.com/kevinpbuckley/unreal-engine-skills/tree/main/skills/core/ue-game-thread-performance
Command: npx skills add https://github.com/kevinpbuckley/unreal-engine-skills --skill ue-game-thread-performance-kevinpbuckley

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Unreal Engine projects often suffer low frame rates and hitches caused by game-thread overload, and developers struggle to tell whether the CPU or GPU is the real bottleneck. This Skill explains how game-thread time drives frame rate and provides a concrete triage and optimization workflow. ## Core Features & Use Cases - Frame Budget Mental Model: Maps target FPS (30/60/120/240/360) to per-frame millisecond budgets so you can judge how much game-thread headroom you actually have. - Triage Workflow: Uses stat unit and stat game to identify whether the game thread, render thread, or GPU dominates the frame, then instruments hotspots with DECLARE_CYCLE_STAT and SCOPE_CYCLE_COUNTER. - Optimization Levers: Covers disabling unnecessary ticking, caching references, moving heavy work to worker threads with AsyncTask, and reducing Blueprint, physics, AI, and widget overhead. - Use Case: Your game stutters at 120 FPS even though the GPU is idle. Use this Skill to confirm the game thread is the limiter, find the tick-heavy actors, and move expensive logic off the per-frame path. ## Quick Start Ask the agent to explain why my Unreal Engine game is CPU-bound at 120 FPS and how to reduce game-thread tick time.

Frequently Asked Questions about ue-game-thread-performance

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I tell if my Unreal Engine game is CPU-bound or GPU-bound?

Run the stat unit console command and compare the Game, Render, and GPU thread times. If the Game thread dominates the frame, the project is CPU-bound; if Render or GPU dominates, the issue is draw calls, overdraw, or post-processing.

How do I reduce actor Tick cost in Unreal Engine?

Disable ticking with PrimaryActorTick.bCanEverTick = false when not needed, use timers or events for infrequent logic, and cache references in BeginPlay instead of calling GetOwner or Cast every frame. Move remaining heavy work to worker threads with AsyncTask.

What causes frame hitches even when average FPS looks fine?

Hitches come from variance in game-thread timing, often caused by Blueprint-heavy Tick, repeated allocations, string building, UObject churn, or frequent FindComponentByClass calls. Use stat game and SCOPE_CYCLE_COUNTER instrumentation to locate the spiking code.

Can I move Unreal Engine gameplay logic to a background thread?

Yes, heavy CPU work can run on worker threads via AsyncTask or TaskGraph, but UObject and actor mutations must stay on the game thread. Pass results back using queues or atomics and apply them on the game thread only.

Why is 240 FPS so hard to maintain in Unreal Engine?

At 240 FPS the entire frame budget is only 4.16 ms, so even 5 ms of game-thread work exceeds the budget before rendering starts. High-refresh targets demand aggressive tick reduction and hot-path cleanup.