Unreal Best Practices for Online Distribution
For all models built in Unreal, follow these steps to ensure your model package is optimized for pixel streaming distribution at scale.
Reduce Package Size
Before preparing your package for cloud deployment it’s important to optimize your game and reduce the file size if possible. AWS instances used within the PureWeb Reality platform have limitations on the maximum file size.
Keep the file size below 25GB, ideally 5GB or less.
Smaller package files result in shorter load and startup times (the time it takes for the stream to start once a user has connected to a cloud hosted session) and transfer times (copying models to instances as part of scaling operations), which improves the overall end user experience.
We strongly recommend following the Reducing Packaged Game Size guide by Epic Games.
Optimize Performance
The base performance of the game is the single most important factor for a high-quality streaming experience. A fine-tuned and optimized game will support a greater number of concurrent users per server which can significantly reduce costs. It will also improve the frame rate resulting in a more compelling streaming experience.
See the Performance Guidelines for Artists & Designers guide by Epic Games for suggestions on optimizing your package.
Check Run State
Ensure that your game runs from a clean state on every launch, and does not require configurations or other data to be written to the local file system.
In a cloud streaming environment, different users will be accessing a game on a given cloud instance. To ensure that each user has the same experience, it is necessary that the game does not make any changes on the local file system as this may impact the experience of successive users.
Test Loading Time
Ensure the game enters the Default Loading Phase within 60 seconds or less.
To provide your on-line users with a good experience you ideally want the game to load to an initial screen in under 20 seconds. This will also ensure that various system/network timeouts are not reached when loading the game.
For more information about loading phases see the ELoadingPhase::Type | Unreal Engine Documentation.