EC2 virtual production deployment

Run this on LAN ShowServer with optional BPMediaNode when you need a movie or device source. Already operate a Cloud-capable ShowServer? See Remote / Cloud studio after the LAN path works.

The intended first deployment is a Windows x64 GPU instance, a packaged UE 5.8 project, and this plugin’s Win64 build from the zip. Install the graphics driver appropriate for the chosen instance and Windows DirectX rendering; AWS documents the distinction between compute drivers and GRID/gaming WDDM drivers in NVIDIA drivers for EC2 and GRID installation. Size the GPU for the scene and the CPU for media conversion/encoding after measurement. A GPU instance alone does not guarantee hardware RTC encoding.

  1. Package a Windows project containing BPUnrealRTCCamera or your own capture component. Include the plugin’s complete Win64 binaries from the zip. Ensure the project’s default cooked map contains the configured actor.
  2. Use Cloud=true, your Cloud HTTPS URL, a unique persistent OutputId, AutoNdi=true, and ConnectOnBeginPlay=true. SourceId selects the venue control gateway source. Configure other components for video/audio return sources.
  3. Supply a valid mobile session token through BPSHOW_TOKEN, injected by your deployment’s secret provider. A one-time code is useful for setup, but is not a reusable unattended restart credential. A revoked/expired session must be replaced. Keep secrets out of AMIs, project config and command lines.
  4. Run the packaged application with -RenderOffscreen -AudioMixer -Unattended -NoSplash. Do not use -NullRHI or a dedicated-server target: there must be a renderer to capture. Scripts/Run-CloudProject.ps1 supervises process exit without exposing credentials in command arguments. Configure task/service startup using the rendering account/session that you have validated on your instance; a Windows service session is not assumed to have working graphics/audio.
  5. Permit outbound HTTPS/WSS to ShowServer Cloud and the media transports advertised by its SFU. HTTPS signaling alone is insufficient for media. Verify the venue’s supported ICE-TCP/cloud tunnel route when UDP is unavailable. This plugin does not require inbound EC2 signaling ports; its IPC listener is loopback-only. Do not expose the local IPC port publicly.
  6. At the venue, verify the Unreal contribute source and NDI egress. NDI runs on the venue LAN; raw NDI multicast is not sent over the public cloud path by this plugin.

Audience-facing acceptance gate

Run against the actual Cloud installation and venue network before putting the show on air. The local test suite cannot certify that deployment.

  • Render a frame counter and clock in the scene. Measure camera/control-to-display p50/p95/p99 latency over the complete venue → Cloud → Unreal → Cloud → venue → NDI/display path. Set acceptable limits with production. Include network latency, game/render ticks, readback, encode, decode, NDI buffering and display delay.
  • Test 1080p30/60 (and any planned 4K mode), camera motion, translucent edges, alpha ramps, audio clicks and lip-sync. Check that CPU/GPU usage and memory plateau over a multi-hour soak. Measure codec selection/encoder CPU load on the selected instance.
  • Interrupt venue WAN and EC2 connectivity; restart the venue SFU, Cloud tunnel, UnrealRTC native worker and Unreal application. Confirm the same output identity returns, there is only one NDI source/session, and neither old controls nor old masks reappear.
  • Block UDP while keeping the supported Cloud ICE-TCP path. Restore UDP. Confirm audio/video/data, not just the Connected status. Test direct-LAN and Cloud paths separately.
  • Delay/drop/reorder fill and mask independently. Check transparent stale returns and keyed NDI behavior. Server-side NDI uses ShowServer’s compositor policy, which is independent of the plugin’s return-texture policy.
  • Revoke a mobile token and expire a code. Expect AuthenticationRequired without a reconnect storm; inject replacement credentials. Restart the whole process with a fresh deployment token.
  • Disconnect the administration/RDP session. Confirm offscreen rendering and audio continue on the actual AMI. Verify recovery after reboot, not merely after an interactive launch.

Neither cross-cloud latency nor frame-accurate alpha synchronization is guaranteed. The implementation is a bidirectional RTC transport and example production bindings; the show’s character rig, environment, media routing and operational latency budget remain project/deployment configuration.