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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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).
  6. 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.
  7. 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.

Actor selected with Sag 70 cm and Sag Sections 2

The same actor after changing Sag to 130 cm and pressing Enter

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:

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.