integration

Unreal Engine Integration

Baseline setup for installing the plugin, authenticating, and binding telemetry in Unreal.

Unreal Engine Integration

This page defines the baseline path to get Twinise telemetry visible in Unreal Engine.

Prerequisites

  • Unreal Engine project with C++ enabled
  • Twinise plugin package
  • A Twinise account — sign in from the plugin panel to authenticate (API-key access is planned)
  • At least one provisioned device sending data

Install The Plugin

  1. Close Unreal Editor.
  2. Copy Twinise into your project Plugins/ folder.
  3. Regenerate project files.
  4. Build the project and reopen the editor.
  5. Verify the plugin is enabled in Edit -> Plugins.

Configure Connectivity

In Project Settings -> Twinise:

  • Set the cloud endpoint URL
  • Adjust panel options as needed

Authentication happens via account sign-in from the plugin panel; reconnect behavior (backoff and heartbeats) is handled automatically.

Restart the editor after first-time setup.

Bind A Device To Scene Logic

  1. Choose a target actor (or manager actor).
  2. Register binding for a known device_id.
  3. Subscribe to telemetry update events/delegates.
  4. Map incoming values to scene outputs:
    • Material parameter values
    • Niagara user parameters
    • Actor state and gameplay events

Recommended Runtime Pattern

  • Use one telemetry manager subsystem per world.
  • Keep bindings data-driven by device_id.
  • Clamp/sanitize values before visual output.
  • Separate visualization scaling from raw metric ingestion.

Verify End-To-End

Use this quick check:

  1. Confirm cloud stream has fresh events for target device_id.
  2. Print latest payload timestamp in Unreal.
  3. Move one visible metric (for example temperature to emissive).
  4. Confirm scene updates within expected latency.

Known Failure Modes

  • Cloud receives data but Unreal does not:
    • Invalid token or blocked outbound network
  • Unreal receives data but actor does not react:
    • Wrong device_id mapping or missing delegate binding
  • Values look wrong:
    • Unit mismatch or scaling not normalized

Related Pages