HUNGRY GHOST / USER GUIDE
Ultimate Utility Networks
Version 1.0.0 · Unreal Engine 5.8 · Windows / Win64
Draw editable spline routes for overhead cables and fencing. Place supports at
controlled intervals, connect attachment points with static sagging spans and
replace the supplied meshes or materials with your own. Import GeoJSON lines as
editable route actors. The plugin includes C++ source, runtime geometry generation,
an editor mode, two Blueprint styles, seven meshes and a demonstration map.
Install and open
Install the plugin for Unreal Engine 5.8 through Fab, enable Ultimate Utility
Networks in Edit > Plugins and restart the editor. For a project-local source
installation, place the UtilityNetworks folder under your project's Plugins folder
and build the project with the UE 5.8 supported C++ toolchain. Do not nest the folder
twice. The editor module is authoring-only; generated route geometry uses the runtime
module. No other Hungry Ghost product, Blender, Python, account or subscription is
required to use the plugin. Python is used only by our development scripts.
Enable Show Plugin Content in the Content Browser. Open
/UtilityNetworks/UtilityNetworks/Maps/L_UtilityNetworks_Showcase for the supplied
overhead and chain-link examples. All product assets are under
/UtilityNetworks/UtilityNetworks/Art.
Try the standalone Windows demo
The Windows playable demo is a packaged application. Download and extract the
entire ZIP, then run UtilityNetworksDemo.exe in the extracted Windows folder.
Keep its Engine and UtilityNetworksDemo folders beside the executable. Unreal Editor,
the purchased plugin and source files are not required. Windows 10/11 64-bit and
a DirectX 12 capable GPU are required. If Windows reports missing Visual C++ runtime
components, run the included Engine/Extras/Redist/en-us/vc_redist.x64.exe.
Click the scene to capture the mouse. Use WASD to fly, E/Q to move up/down and
the mouse to look around. 1 returns to the overview, 2 shows overhead cables,
and 3 shows the fence. +/- changes cable sag by 10 cm; J/K changes overhead
support spacing by 100 cm. The status overlay shows the current settings and generated
geometry counts. R restores the supplied overhead settings and overview camera;
Esc exits. These adjustments affect the overhead routes; the rigid fence remains
at zero sag. Changes are temporary and reset when you restart the demo.
This demo lets you inspect the supplied art and exercise runtime rebuilding. The
commercial plugin's spline authoring mode, asset pickers and GeoJSON import run in
Unreal Editor and are described below; they are not included as runtime demo controls.
First route
- In the Content Browser, enable Settings > Show Plugin Content. Open
Utility Networks Content > UtilityNetworks > Art > Presets. Drag
BP_Utility_TimberOverhead into the level. Use this overhead preset for the sag
walkthrough; BP_Utility_Chainlink is the rigid fence preset.
- Select the placed actor in the World Outliner. In the Details component tree,
select the top actor row, above
Route and Supports. Clear the Details
search box and disable any active property filters. This displays actor settings.
- Expand Utility Route > Supports and change Spacing (centimetres). Expand
Utility Route > Spans to find Sag, Sag Sections, Span Mesh, and
Attachments. In the timber preset, try changing Sag from 70 to 130
and press Enter. The cables should visibly hang lower. Return it to 70.
These properties belong to the actor, so they will not appear while only the
Route spline component is selected.
- To edit connection positions, expand Spans > Attachments, expand an array
element such as Index [0], and edit its X, Y or Z value in cm.
Each vector places one conductor relative to the support. The supplied timber
values are listed in the table below.
- To reshape the route, select the Route component in the Details component
tree, click a spline point in the viewport and use its translate gizmo. Release
the drag to commit the edit. To change sag or spacing again, reselect the top
actor row in Details (step 2).
- Edits rebuild automatically when committed. For an explicit rebuild, select
the actor row, search Details for Rebuild, and click the Rebuild button.
Clear the search afterward. Save the level.
- Open Utility Editor from the toolbar or mode selector. Select an existing
route before starting New or importing GIS to inherit its complete style.
| Setting |
Select in Details |
Category / field |
Timber preset |
| Pole interval |
Top actor row |
Utility Route > Supports > Spacing |
1,000 cm |
| Cable droop |
Top actor row |
Utility Route > Spans > Sag |
70 cm |
| Cable subdivision |
Top actor row |
Utility Route > Spans > Sag Sections |
2 |
| Connection offsets |
Top actor row |
Utility Route > Spans > Attachments |
(0,-88,692), (0,0,692), (0,88,692) cm |
| Route shape |
Route component, then a viewport spline point |
Translate the point |
Native spline handles |
Cannot find Sag? Select a placed BP_Utility_TimberOverhead instance, not its
Content Browser asset. Select the actor row rather than Route or Supports, then
type Sag into the Details search field. Both Sag and Sag Sections should
appear. Clear the search to restore the remaining controls. If Details is locked to
another object, unlock it with the padlock icon before selecting the actor.
The screenshots below show the actual UE 5.8 Details panel: the Self actor row
is selected, the search contains Sag, and Utility Route > Spans contains
both controls. The selected cables visibly rebuild when Sag changes from 70 to
130 cm. Zoom the guide in your browser to inspect the panel labels.


New routes without a selected style use engine blockout cubes. The full panel's
Fence / Overhead cables buttons set blockout proportions; place a supplied Blueprint
preset to restore the production mesh proportions. Actor scale should remain (1,1,1).
Use support/span scale settings instead. Distances are centimetres.
Editor controls
| Control |
Shortcut |
Use |
| Select |
Q |
Select routes and native spline handles |
| New |
N |
Click a start and end; inherit the selected route style |
| Extend |
E |
Continue from an open endpoint; interior anchors make separate branches |
| Join |
C |
Align open endpoints geometrically |
| Node |
I |
Insert a point within a nonclosing span |
| Snap |
S |
Toggle endpoint snapping; configure radius in the full panel |
| Finish |
Esc |
Cancel pending placement; second Esc returns to Select |
| Compact/full |
Tab |
Switch panel size while keeping placement preview |
Right mouse navigation, Alt orbit and Ctrl shortcuts retain ordinary editor behavior.
Placement, presets and GIS import use editor transactions. Join does not merge actors,
share support instances or create graph bindings. Subsequent changes do not propagate
across joined actors. Coincident branch supports may need manual layout adjustment.
Extend and Join require open routes; Node does not insert into a closed loop's seam.
Customer meshes and materials
Set Support Mesh and Span Mesh to compatible Static Mesh assets. Select X, Y
or Z as Span Forward Axis to match the mesh's length direction. The span's length
is fitted to each interval; Span Scale controls its cross-section. Subdivide a
deformable mesh along its length so it can bend. Rigid fence panels should use zero
sag and one sag section. Supports stay upright in the route actor's local frame.
Support Offset, Support Scale and Attachments adapt pivots and connection
locations. Each attachment creates an independent span between consecutive supports.
Use several attachment offsets for multiple conductors. Support Materials and
Span Materials override slots by index, including material instances. Empty entries
retain the mesh's material. Apply Materials updates existing generated components
without replacing their geometry. Custom materials need the Spline Meshes and
Instanced Static Meshes usage flags for their intended components.
The timber preset uses unit mesh scales, 1,000 cm nominal spacing, 70 cm sag and two
sag sections. Its pole is 700 cm tall with attachments (0,-88,692), (0,0,692),
(0,88,692). Its cable is 100 cm long along X, approximately 2.4 cm across. The fence
preset uses 200 cm spacing, zero sag, one section and attachment (0,0,0). Panels are
200 cm long along X, from Z=6 to Z=243 cm. Supports have ground-level pivots.
Material instances expose tint, roughness, normal strength and texture scale where
applicable. The chain-link wire material is masked and two-sided. Its UV mapping
rotates 90 degrees and tiles four times to match the source. Meshes have up to three
LODs; the cable and masked panel retain their deformable geometry. No collision is
generated by route supports or spans. Add separate collision appropriate to your game.
Generate from GIS
In Generate from GIS, choose coordinates and optionally select a styled route,
then choose Import GeoJSON.... Supported inputs are LineString and MultiLineString
geometries, Features and FeatureCollections. Point and Polygon features are skipped.
An optional property-name/value filter selects string attributes. Names become actor
labels. Invalid selected geometry rejects the dataset before actors are created.
| Coordinates |
Interpretation |
| WGS84 |
Longitude, latitude, optional altitude in metres; local approximation |
| Local metres |
X/Y/Z multiplied by 100 |
| Unreal centimetres |
X/Y/Z used directly |
For WGS84, set the same origin as your other world data. X is east and Y north;
latitude uses 111,320 metres per degree and longitude is scaled by cosine of origin
latitude. Points must be within 10 km of origin and origins within +/-85 degrees
latitude. This matches GeoScape's local conversion but does not depend on GeoScape.
Use Altitude controls Z; World Offset is applied in centimetres. Two-dimensional
coordinates start at Z=0. There is no terrain projection or online data download.
Export projected Shapefile or GeoPackage data to WGS84 GeoJSON in your GIS application
first. Arbitrary EPSG reprojection, raster data, CityGML and direct Shapefile import
are not supported. Legacy crs metadata is rejected. Source vertices remain editable
linear spline points. Adjacent duplicates are removed; matching first/last points
create a closed route. Import is additive: repeat imports create new actors rather
than synchronizing source identifiers. One Undo removes an entire import.
The plugin includes two synthetic fixtures in its Docs/Examples folder on disk.
UtilityLines_WGS84.geojson uses origin longitude 18.4241, latitude
-33.9249. Both supplied GeoJSON files are synthetic fixtures, not surveyed utilities.
Save, rebuild and packaged games
Spline edits rebuild when committed. Clear Generated removes output temporarily;
construction or Rebuild can generate it again. Supports and spans have no actor tick
or simulation. The editor authoring mode and GIS import are unavailable in packaged
games. Runtime route actors retain their geometry; Rebuild and Apply Materials are
Blueprint-callable. Include the containing map in your project's cook settings.
Limits and troubleshooting
Sag is a static parabola relative to the endpoint chord, not a physical catenary.
Spans run directly between support positions rather than following the route curve
between them. Tight curves and fence corners may need deliberately placed supports.
No terrain draping, exclusion zones, road binding, live utility flow, cable physics,
pedestrians, electrical engineering calculations or persistent shared network graph
are included. Supplied assets are a starter kit, not a complete industrial environment.
Generation is bounded to 4,096 spline points, 2,048 supports, 16 attachments and 4,096
span components per route. GIS limits are 16 MB, 10,000 features, 256 line parts,
4,096 points per part, 32,768 total points and 20,000 supports/sections per import.
These are input safeguards, not frame-rate guarantees. Test your own scene budgets.
If nothing appears, inspect Build Status, spacing, nonzero scale, mesh assignment and
attachment positions. If a fence bends incorrectly, set Sag=0, Sag Sections=1 and
the correct forward axis. If materials look wrong, check slot indices, usage flags,
normal-map convention and texture colour space. If GIS is misplaced, check units,
origin, altitude and offset. All supported development/build platforms are Windows
with UE 5.8; other platforms and engine versions have not been verified.
Third-party assets and support
The bundled Poly Haven inputs are free public-domain CC0 assets. They are included
as supporting examples for this authoring tool, with adapted pivots, split geometry,
Unreal materials and LODs. Original poles, cable and cabinets are Hungry Ghost work.
See the plugin's ThirdPartyNotices.md and Resources/PolyHavenManifest.json for authors,
file hashes and modifications. Sources:
- https://polyhaven.com/a/modular_chainlink_fence
- https://polyhaven.com/a/rough_wood
- https://polyhaven.com/a/concrete_floor_02
- https://polyhaven.com/license
The plugin's original code is supplied under the Fab Standard License. CC0 inputs
retain their separate public-domain status. No external software runtime is bundled.
For support, use the publisher contact on the Fab listing and include engine version,
reproduction steps, route settings and any relevant Build Status message.