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.
- 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.
- 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.
- 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. - Run the packaged application with
-RenderOffscreen -AudioMixer -Unattended -NoSplash. Do not use-NullRHIor a dedicated-server target: there must be a renderer to capture.Scripts/Run-CloudProject.ps1supervises 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. - 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.
- 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.