Looking for thoughts about Pixel Streaming. I am starting up a new project where I want users to be able to access via mobile. Currently thinking the best approach may be Unreal and Pixel Streaming. That being said, while I know it is theoretically possible, I have some serious hesitations based on demos and even production level use cases with Pixel Streaming. I figure the closest use case I could base off of would be automotive configurators. It appears McLaren uses Unreal Pixel Streaming and it is absolutely stunning. Their 750 configurator loads quick, doesn’t really drop frames, even on mediocre wifi, and is very smooth. I believe Ferrari may use Unreal as well? Their example seems pretty stable. That being said I also know Lotus and Pagani use Unreal pixel streaming and both appear to be train wrecks. On wifi with 20mbs down they struggle to load and even move the camera around the car. Looking at services for Pixel Streaming hosting, such as Arcane Mirage’s and TensorWork’s ScalableStreaming the same pitfalls appear with their Audi car configurator scenes being pretty unusable on wifi with 20mb down.
How does one end up with a product more like Ferrari or McLaren’s that is very smooth and stable, vs an application where static screenshots would be better for a user? Any specific services to utilize, design constraints, etc?
If you’re looking at using Pixel Streaming, but are concerned about stream stability, I can offer a few guidelines:
Bound the QP (quality) and bitrate. The less data sent the less susceptible the stream is to packet loss issues. (For automotive in particular there is usually a sweet spot where quality is basically indistinguishable and some quality loss through compression is acceptable).
If audio is not required, turn off audio transmission entirely, this will allow WebRTC to reduce any internal buffering done for audio/video sync.
On the UE side, a rock-solid FPS helps the stream experiences massively as bitrate estimation and buffering algorithms can work effectively without thinking the sender side is having problems.
Spin up cloud gpus that are geographically close to the users - this is probably the biggest one and is likely some of the reason why the platforms you mentioned perform poorly (as they are just using GPUs fixed in a CoreWeave datacenter and not spinning up somewhere closer to you).
Having the correct setup and balance of the above steps should ensure you end up with quality stream results, paying extra mind to number 4.
I believe the MClaren 750 configurator actually uses WebGL in the browser, rather than Pixel Streaming.
Looking through some of the scripts they are calling I think you are right about the McLaren configurator. It seems like that could be a solid route to pursue for performance as well, but as UE5 doesn’t have native WebGL targeting, are they utilizing some other engine or is there a way to swing UE5 to work in browser?
Your question is mainly about the streaming configurations and the overall streaming performance of the technology you can use.
You can try to find the best configuration from UE configs to provide a smooth experience for your users. Plus, you have to serve your application from multiple regions around to world to cover all regions for the no latency experience.
Deploying your Stream machines in multiple regions and serving your application from all around the world is a kind of straightforward process, if you are familiar with cloud technologies or if you have some DevOps developers in your team.
However, the streaming configs must adjust themselves according to the network conditions of your users by considering both performance and experience aspects. Of course, you can set some streaming configurations via Pixel Streaming client-side configurations, however, the tricky part will be monitoring the user network conditions and taking the right actions according to the network conditions.
In addition to those suggestions, I would like to share one more alternative that you can consider – Vagon Streams. At Vagon Streams, we support both pixel streaming and application streaming and enhance them with adjustable WebRTC streaming features.
When you use Vagon Streams, you don’t need to consider the streaming part. We handle the streaming quality according to the network conditions of your users and adjust the best streaming settings to provide a no-latency experience. Also, we allow you to serve your application from more than 20 regions globally with a single click.
If you would like to do a test drive, please let me know. Or, you can create your account and easily start your first Stream anytime you want.