Launch the sample map
The sample boots into /Game/Maps/TF_TargetFrameShowcase. Open /Game/Maps/TF_TargetFrameTestMap if you want a simpler tuning sandbox.
Welcome to TargetFrame! This plugin benchmarks the machine, classifies the hardware, chooses a safe rendering posture, optionally selects supported vendor upscalers, and continuously protects the frame budget while keeping UI crisp and reducing manual graphics micromanagement.
If you want to validate the sample quickly, this is the shortest path from project open to observing live policy changes.
The sample boots into /Game/Maps/TF_TargetFrameShowcase. Open /Game/Maps/TF_TargetFrameTestMap if you want a simpler tuning sandbox.
First run shows guided setup automatically. Returning sessions stay compact and expose the menu through the launcher button or F10.
Toggle the debug overlay with tf.DebugHUD 1 and tf.DebugHUD 0. If you want to validate the optional upscaler or triangle-culling paths, enable them in Project Settings first.
The sample project is intentionally compact. These directories are the ones you will touch most when integrating, tuning, or packaging the plugin.
Scalability.uproject
Config/
Content/
Maps/
TF_TargetFrameShowcase
TF_TargetFrameTestMap
UI/
WBP_TargetFrameExperience
Plugins/
TargetFrame/
Config/
DefaultTargetFrame.ini
Source/
TargetFrame/
Source/
Scalability/
Scripts/
CreateTargetFrameExperienceWidget.py
CreateTargetFrameShowcaseMap.py
CreateTargetFrameTestMap.py
Plugins/TargetFrame contains the subsystem, settings surface, Blueprint library, and the UMG-backed UX host widget.
Source/Scalability wires the widget into the player controller and exposes the debug HUD, showcase flow, and test-map flow.
Content/UI/WBP_TargetFrameExperience is the composed UMG control surface used during play.
The scripts directory can rebuild the showcase map, the test map, or the current widget blueprint if you want to re-author sample content.
TargetFrame can be used as a plugin runtime service, a drop-in menu widget, or both. The sample ships with both patterns already connected.
Open Project Settings > Plugins > TargetFrame. The plugin exposes grouped controls for benchmark behavior, governor thresholds, direct upscaler integration, triangle-aware culling, Nanite policy, VRAM/vendor rules, UI separation, telemetry, and diagnostics.
The Blueprint library exposes StartTargetFrame, SetTargetFrameTargetFPS, ApplyTargetFramePolicy, GetTargetFrameStatus, GetTargetFrameSetupSummary, and GetTargetFrameProjectCapabilities.
The sample player controller loads the widget blueprint at runtime. You can swap it for your own UMG asset or reuse the C++ host in another project.
Recommended sample validation flow 1. Start the project. 2. Observe the default showcase map or open: /Game/Maps/TF_TargetFrameTestMap 3. Open the menu: - Launcher button - F10 4. Toggle debug overlay: tf.DebugHUD 1 tf.DebugHUD 0 5. Enable optional direct upscaler integration only if your packaged runtime exposes the vendor plugin cvars. 6. Enable optional triangle-aware culling only after tuning triangle thresholds and distance limits for your content. 7. Re-run benchmark from the menu if you want to observe profile selection again.
The first-run experience is meant to reduce fear: detect the hardware, explain the recommendation, and give the player a simple next step instead of a dense wall of sliders.
Summarizes machine tier, GPU brand, benchmark score, and available graphics memory without drowning the player in low-level jargon.
Explains the target FPS choice, upscaler posture, UI resolution posture, Nanite posture, and whether low-VRAM mode or triangle-aware culling was needed.
The onboarding completion flag is stored in GameUserSettings.ini under [TargetFrame.UserExperience].
Onboarding should explain confidence and safety. Detailed levers belong in the control panel and diagnostics.
The control panel is a compact operational surface. It tells you what TargetFrame is doing right now and offers a few decisive actions rather than a full graphics-options labyrinth.
Preset buttons offer a single intent change: 30, 45, 60, or 90 FPS. TargetFrame updates the target and reapplies the policy.
Useful after changing settings or for manual reassertion during tuning. It re-applies the current policy without forcing a new benchmark.
Forces a new benchmark pass and refreshes the setup summary. This is mainly for QA and content tuning.
Setup notes explain static policy choices. Recent events show the live adaptation history that led to the current posture.
TargetFrame is not a static preset pack. It is a policy engine that starts from a safe baseline, validates the machine, then moves quality within a bounded runtime ladder to protect the requested frame target.
The initial run uses Unreal's benchmark facilities and a hardware snapshot to choose a starting posture that matches the machine instead of assuming desktop-high by default.
Runtime quality shifts use thresholds and cooldown behavior so the game does not oscillate between two states every few seconds.
Buyers do not want to babysit a large list of rendering variables. The plugin groups those variables into understandable policy decisions with setup notes and event logs.
The value is not just changing settings. The value is being able to explain the resulting behavior to designers, QA, and support.
Startup pass:
1. Detect vendor, VRAM budget, benchmark scores, and project capabilities.
2. Select target profile, safety caps, and a preferred supported upscaler.
3. Apply quality, HWRT, Nanite, upscaler, triangle-culling, and UI posture.
4. Monitor live FPS and adjust supported upscaler quality, culling, or render cost within bounded steps.
5. Emit telemetry so every change has an audit trail.
The plugin coordinates several subsystems together. That coordination is the product. Each subsystem alone is just another exposed engine setting.
Sets the initial quality level based on benchmark results and developer defaults, then treats that baseline as the top of a bounded adaptation ladder.
When the project exposes runtime cvars for supported vendor plugins, TargetFrame can choose DLSS or FSR posture directly and fall back safely when those controls are unavailable.
Adjusts render scale when the project supports it, and can stand down when a vendor upscaler is active and configured to own scene scaling.
Uses Nanite edge and raster budget controls to soften geometry cost before resorting to harsher overall quality cuts.
Optional literal culling for heavy static-mesh and instanced-static-mesh components uses triangle counts to apply bounded distance limits and restores original values when the policy is disabled.
Preserves UI legibility by keeping the secondary game viewport percentage separated from the main scene posture during dynamic resolution, TSR, or supported DLSS/FSR workflows.
Builds policy notes and guardrails around the actual hardware budget instead of pretending every GPU class behaves the same.
Clamps hardware ray tracing when the memory budget or posture indicates it is more likely to destabilize frame time than improve shipping quality.
TargetFrame needs to be legible to developers. A system that changes rendering posture without evidence becomes a support burden instead of a feature.
The runtime widget surfaces recent decisions in player-facing language, making it obvious whether the system reduced quality, recovered, or held steady.
Each policy change should be mirrored into logs or CSV output so QA can correlate a visual report with an exact machine state.
Explicit live logging for active upscaler mode and quality, triangle-culling scale and managed component count, Nanite budget, texture pool, UI viewport percentage, dynamic resolution state, and HWRT clamp prevents silent drift.
The in-game debug HUD is the fastest sanity check during tuning. It should remain visually clean enough to use during capture and QA runs.
| Signal | Why it matters | Where to inspect it |
|---|---|---|
| Target FPS and live FPS | Confirms whether the adaptation logic is acting on a real deficit or merely reacting to transient noise. | Control panel, debug HUD, logs |
| Nanite edge / raster budget | Shows whether geometry cost is being trimmed before broader quality changes. | Runtime probe and HUD |
| Upscaler mode / quality | Shows whether direct DLSS or FSR integration is active, or whether the plugin stayed on TSR or native fallback. | Runtime probe, setup notes, debug HUD |
| Triangle cull scale / managed count | Confirms whether literal component culling is active and how aggressively heavy geometry is being trimmed. | Runtime probe, setup notes, debug HUD |
| UI viewport percentage | Validates the crisp-UI promise while render scale moves independently. | Runtime probe and setup notes |
| HWRT posture | Explains whether ray-tracing-heavy features are being clamped for safety. | Setup summary, logs |
Good defaults make the demo look competent. Tuning for a real game is where the plugin becomes commercially credible.
Use your heaviest playable scene, not the sample map, to calibrate thresholds. The benchmark is only part of the picture; actual content pressure still matters.
Pick the order that matches your game's identity. Some games can lose edge density early. Others should preserve scene sharpness and trade other quality first.
Test NVIDIA, AMD, Intel, lower-VRAM machines, packaged builds, and multiple upscaler setups. A paid plugin needs evidence, not intuition.
Some issues can be diagnosed in two minutes.
| Symptom | Likely cause | Recommended check |
|---|---|---|
| Onboarding does not appear | The completion flag was already saved on this machine. | Inspect GameUserSettings.ini for the TargetFrame.UserExperience section or clear the stored flag. |
| Widget layout looks wrong at runtime | Viewport scaling, authored asset changes, or an unexpected font mismatch. | Open the UMG asset, validate anchors and wrapping, then confirm runtime font normalization still runs. |
| UI becomes blurry when render scale drops | Secondary viewport percentage is not being held at the intended value for the project. | Check setup notes, runtime probe logs, and any project-level UI rendering overrides. |
| Performance still tanks on a low-VRAM GPU | The content exceeds the assumed pool or a feature remains too expensive for the title. | Verify texture pool caps, review HWRT posture, and tune the scene-specific fallback order. |
| DLSS or FSR never activates | The project runtime does not expose the vendor cvars, the feature is disabled in settings, or the current GPU falls back to TSR/native posture. | Check the capability summary, runtime probe logs, and TargetFrame settings before assuming the integration is broken. |
| Distant heavy meshes disappear too early | Triangle-aware culling thresholds or distance scales are too aggressive for the content. | Raise the triangle threshold, raise the distance floor, or disable the optional triangle-culling policy and compare captures. |
| Frequent quality bouncing | Thresholds or cooldowns are too aggressive for the content's frame-time variance. | Increase hysteresis windows and review event logs over a longer play segment. |
The short answers below are written for buyers evaluating whether TargetFrame is a serious workflow tool or just a convenience wrapper.
No. It complements one. TargetFrame is a runtime decision layer that can sit behind a user-facing settings menu and make those choices safer on real hardware.
No. Those are headline systems, but the real value is coordinating multiple rendering cost centers under one understandable policy.
That is the intended target. Runtime validation should always be repeated in packaged builds before shipping or marketplace promotion.
Yes, when the project exposes the relevant runtime cvars. The integration is capability-scanned and optional, so unsupported projects fall back to TSR or native posture instead of breaking the rest of the policy layer.
Because automatic adaptation without observability is difficult to trust. Telemetry is what turns the system into an engineering tool instead of a black box.
Yes. The included sample experience is meant to accelerate adoption and illustrate best practices, not lock teams into one aesthetic.
No. The current implementation is an opt-in runtime distance-culling layer for heavy static-mesh components. It is literal culling, but it is designed to be reversible and content-tuned rather than a deep engine modification.
The differentiator is policy plus explanation: hardware-aware recommendations, runtime guardrails, optional vendor-upscaler and triangle-culling layers, crisp UI posture, and diagnostics that tell you what the system changed.
Thank you for choosing the TargetFrame UE5.5+ plugin! Some useful links below.