Test a Unity app locally

Run your packaged Unity app against Unity's own Render Streaming web server on your computer, before you upload it. If it streams and takes input here, it will on Eagle 3D Streaming.

What this proves

Three things, and almost every Unity upload that fails, fails one of them:

What your project needs

ItemWhy
Package com.unity.renderstreaming 3.1This is what streams; Eagle 3D Streaming speaks its protocol.
Active Input Handling = Input System Package (Player Settings)Browser input arrives as Input System devices.
A Signaling Manager with a Broadcast, holding a Video Stream Sender, an Input Receiver and, for sound, an Audio Stream SenderOne viewer per session; the Broadcast answers every connection.
Video Stream Sender source = ScreenIncludes your screen-space UI. A Camera source leaves overlay UI out.
EventSystem with Input System UI Input ModuleSo browser clicks and taps press your UI buttons.
Run In Background on (Player Settings)The app keeps rendering when its window is not focused, which on a server it never is.

The signaling settings are given on the command line when Eagle 3D Streaming starts your app, so leave the Signaling Manager on its default settings.

Test it

  1. From the Unity Render Streaming releases, download webserver.exe for the same version as your package.
  2. Start it:
    webserver.exe -p 8090 -t websocket -m public
  3. Start your build with the same arguments Eagle 3D Streaming uses:
    YourApp.exe -signalingType websocket -signalingUrl ws://127.0.0.1:8090 -iceServerUrl stun:stun.l.google.com:19302 -screen-fullscreen 0 -screen-width 1280 -screen-height 720
  4. Open http://127.0.0.1:8090/receiver/ in Chrome and press play.

Troubleshooting

What you seeWhyWhat to do
The app's log: Could not instantiate RTCPeerConnectionNo ICE server was given; the settings baked into some builds are invalid.Always pass -iceServerUrl, as above.
There should be 'YourApp_Data' folder next to the executableThe exe was renamed. Unity finds its data by the exe's name.Keep the exe name as built, and upload the whole folder.
The browser connects but shows no pictureNo Video Stream Sender in the Broadcast, or it is not running.Add it to the Broadcast's streams.
The picture is there but clicks do nothingThe project is still on the old Input Manager, there is no Input Receiver, or the EventSystem uses the Standalone Input Module.Switch Active Input Handling to the Input System, add the Input Receiver, use the Input System UI Input Module.
The app's log shows Connecting WS ws://127.0.0.1:80 over and over, beside the working connectionA second Signaling Manager, or Render Streaming's automatic streaming, is using the project's default signaling settings.Keep one Signaling Manager in the scene and switch off Automatic Streaming in Project Settings › Render Streaming.
No binding composite with name 'DeltaWithButton' has been registeredA known problem in Unity's own sample project.Harmless for your own app.

Last updated