H U N G R Y G H O S T / UNREAL ENGINE TOOLS
Hungry Ghost · Version 1.2.0 · Unreal Engine 5.8 · Windows x64
Install the plugin for UE 5.8 through Fab, or copy the source plugin folder into your project's Plugins directory and build the project with the UE 5.8 C++ toolchain. Enable Ultimate HLOD Studio and restart the editor. This editor extension adds no module to packaged games.
Recipes are Data Assets saved below /Game/HLODStudio/Recipes by default. Loading a recipe into the workbench creates a working copy; it does not silently modify the saved asset. Save recipe as creates a new asset. Use Unreal's normal Save All workflow to persist newly created recipes and layers.
Two functional starter assets are included under /UltimateHLODStudio/UltimateHLODStudio/Recipes. Enable Show Plugin Content in the Content Browser to find them. SelectedActors uses the current editor selection. ExampleBlocks matches the example's StudioExample tag and StudioExample/Blocks folder across loaded actors. Neither preset chooses a layer for your project; select an appropriate layer before Include + assign.
The separate example project contains /Game/UltimateHLODStudioDemo/HLODStudioExample, 24 simple source blocks, an Instancing layer, and one generated HLOD. Install the plugin, open the example, and load its region in World Partition. Use the ExampleBlocks recipe to preview the 24 tagged sources, then choose the example's HLOD_Instancing layer. The example demonstrates the workflow; its counts are not a benchmark for a production world.
Every populated rule must match (AND):
| Rule | Behavior |
|---|---|
| Selection only | Match only actors currently selected in the level editor. Disable to inspect all loaded actors. |
| Label contains | Case-insensitive substring match. |
| Required tag | Match the actor tag, not a component tag. |
| Folder | Exact Outliner folder and descendants. Town matches Town/Shops, not Township. |
| Mesh | Match a static mesh used by a static component on the actor. |
| Data Layer | Match the selected Data Layer asset on the actor. |
| Bounds | Match actors whose component bounds intersect the region. Values are world coordinates in centimeters. |
Only loaded non-editor-only source actors with at least one static mesh component of Static mobility qualify. Generated HLOD actors are always excluded. Selection and assignment occur at actor level: choosing a mesh on a multi-component actor can change participation for its other HLOD-relevant components too. Foliage and instanced actors are not edited one individual instance at a time.
Exclude disables HLOD participation while retaining the actor and its layer assignment. Include and exclude support Undo. Existing generated geometry remains until the affected HLODs are rebuilt.
The layer buttons create real Unreal HLOD Layer assets with engine builder settings. Edit layer opens the native asset editor for material baking, reduction, and other advanced settings.
Instancing uses Unreal's HLOD instancing builder. It is distinct from converting your original actors into ISM/HISM components.
UE 5.8 configures streaming ranges and HLOD partition assignments through runtime partition settings. Use World HLOD setup... in the workbench toolbar, or Assign layer to partition... below the layer controls, to manage them inside the tool. The dialog starts with the content recipe's chosen layer; you can select another layer there.
Choose the runtime partition used by your source actors and the starting HLOD level, then Preview assignment. Review the world, destination, existing mappings and any parent-layer additions. Apply reviewed assignment adds the layer and its parents to successive existing HLOD levels in one Undo transaction. Existing mappings and ranges are preserved. Repeated assignments are a no-op. Changing the partition settings or parent chain after preview invalidates the plan. Conflicting existing mappings, parent cycles and insufficient levels are rejected with an explanation.
The right-hand Native partition settings panel contains Unreal's actual runtime-hash editor. You can add HLOD levels or edit loading ranges there without leaving the tool. These native property edits apply immediately and support Unreal's normal Undo; they are separate from the previewed assignment action. Click Refresh destinations after changing native settings, then preview again. Save All after reviewing changes, and build HLODs from the workbench.
Guided assignment supports World Partition Runtime Hash Set in UE 5.8. Other hash implementations can expose their native settings but do not use this guided mapping operation. Assignment affects the selected world's partition settings, regardless of the recipe's actor selection; it does not change actors' runtime grids or turn streaming on. The dialog prevents edits during PIE or after switching to another world. Close and reopen it for the new world.
| Action | Scope and effect |
|---|---|
| Setup HLODs | Whole map. Creates, updates, or deletes generated HLOD actors, without geometry baking. |
| Build world | Whole map. Runs setup and builds geometry; engine hashing/rebuild policies determine which results need work. |
| Force rebake | Whole map. Setup plus forced geometry regeneration. |
| Delete world HLODs | Whole map. Deletes generated HLOD actors through Unreal's builder. Source actors are retained. |
| Build matching region | Complete HLOD groups intersecting the combined bounds of current recipe matches. This includes gaps between matches and neighboring actors. |
World operations are not restricted by the visible search filter, recipe, or selection. Their confirmation displays the map and current generated-HLOD inventory count. Unreal manages saving, process execution, cancellation, and map reload for these operations. Region builds use Unreal's in-editor filtered builder; save generated changes afterward.
Save the map under /Game before building. Engine template maps, unsaved maps, non-partitioned maps, and edits during PIE are rejected. An engine operation may fail or be cancelled; the workbench reports that outcome instead of claiming completion.
Generated-file deletion is not covered by editor Undo. Restore through source control or regenerate from the source world. This release does not delete arbitrary assets from Content Browser or sweep potentially shared generated textures.
Operation history is stored in Saved/UltimateHLODStudio/BuildHistory.jsonl. It records map, arguments/scope, UTC time, success flag, and duration. Detailed build diagnostics remain in Unreal's Output Log and commandlet logs.
Audit recommendations show the evidence, affected actor paths, next step, and a tradeoff. No explicit HLOD layer may be legitimate because of inheritance. Repeated meshes are instancing candidates, not guaranteed compatible batches. Non-spatial actors can be intentional gameplay dependencies.
Use the same camera route, target hardware, resolution, scalability, and warm-up conditions for before/after captures. Profile a Development build when assessing shipping behavior. Compare frame, game-thread, render-thread and GPU time, memory, visual transitions, and streaming spikes. Use Unreal Insights for attribution and packaged-build validation. The Optimization engine can collect the editor-process timing samples described below.
Open the Optimization engine page and click Analyze scene. Its ranked recommendations examine streaming and HLOD dependencies, dense meshes with one traditional LOD and Nanite disabled, repeated separate actors, material-slot budgets, dynamic shadow lights, and configured startup ticks. Priority is a review order, not a predicted saving. Select affected loaded actors from a finding or mesh row to investigate it.
The mesh inventory counts ISM/HISM instances individually and mesh resource estimates once per unique asset. Resource estimates are not resident VRAM; LOD0 source triangles are not rendered triangles. Shadow, collision, mobility and tick counts describe configuration, not measured subsystem cost. Component analysis covers loaded source actors only. The original HLOD workbench retains the full descriptor inventory and build controls.
Change review budgets in Target & review profile; the initial target is 60 FPS. Save profile as... creates a reusable data asset; use Save All to persist it. Selecting a saved profile loads a working copy so experimenting does not modify the original profile.
HLODStudio.Decorative in Unreal's actor Details.Draw distance is in centimetres; objects can disappear in the distance and Nanite/cull-volume behavior may affect the result. Disabling shadows changes lighting. Disabling collision removes blocking and trace hits, including interaction hits. Blueprint actors, attached actors, movable meshes, instances and actors/components capable of ticking are excluded. This workflow does not infer that an actor is safe to change from its name or appearance.
Save a scene baseline before editing, then analyze again. Baselines persist per world under Saved/UltimateHLODStudio/Baselines. Comparisons require the same map and engine version. If the loaded source actor paths differ, component-cost deltas are withheld even when actor counts match. Counts and resource estimates are still not proof of an FPS improvement.
Start unpaused Play In Editor in the same editor process. Enter a scenario label, warmup (0–30 seconds), capture duration (5–120 seconds), and FPS target (15–240). Click Start timed capture and follow the same camera route for each run. Capture changes no rendering settings.
The tool samples wall time between editor frames, plus engine game-thread/render-thread/GPU timing counters when available. It reports mean, p95, p99 and percentage of frames over the target budget. A missing GPU timer is shown as unavailable, never as zero. These measurements include editor overhead and are not a packaged-game benchmark; the largest timing channel is a profiling lead, not a proven bottleneck.
Use a completed capture as a baseline and repeat after a reviewed change. Comparisons require matching world, engine/hardware context, tracked resolution/scalability settings, scenario and FPS target. The camera route is user controlled; arbitrary project CVars, background load and every rendering feature are not automatically matched. Pausing/stopping PIE, changing the PIE world or tracked context, manually stopping, or reaching the sample limit marks a capture incomplete. Incomplete captures cannot support before/after comparisons. Captures stop at 100,000 samples.
Completed and interrupted captures automatically export their available evidence. Export evidence also writes a scene snapshot, capture samples and a standalone HTML report under Saved/UltimateHLODStudio/Optimization. Closing the panel stops its active capture. Baseline loading rejects files larger than 64 MiB.
For unattended optimization reports, add -Optimize to the audit commandlet. Optionally supply -Profile=/Game/HLODStudio/Profiles/MyProfile.MyProfile and -SaveOptimizationBaseline. This analyzes loaded components, compares an existing baseline when available, and writes optimization evidence to the Optimization folder; -OutputDir still controls the original audit report only. There are no frame captures or automatic source-map fixes in commandlet mode.
Export audit refreshes the scan and writes both a self-contained HTML report and a structured JSON file under Saved/UltimateHLODStudio/Reports. Actor labels are escaped in HTML. Reports contain project asset paths and should be reviewed before external sharing.
& '<UE58>/Engine/Binaries/Win64/UnrealEditor-Cmd.exe' '<Project>.uproject' `
-run=HLODStudio -Map=/Game/Maps/MyWorld -unattended -nullrhi
Optional -OutputDir="C:/Reports" changes the report destination. The audit commandlet is read-only with respect to the source map. -CreateExample is a separate explicit mutation that creates /Game/HLODStudioExample/HLODStudioExample and its instancing layer; it refuses to overwrite either existing destination.
The commandlet returns 0 on success and nonzero when configuration, loading, creation, or export fails. Detailed errors appear in Unreal's log. -CreatePresets is a release-authoring command that creates the two starter recipes in writable plugin content and refuses to replace existing assets; normal users do not need to run it.
Full source is included under the applicable Fab Standard License. No third-party service, paid dependency, or external library is required. Product and support information: Unreal Engine Tools.