UNREAL COMMON PRACTICES
It’s important that the following lists are adhered to and referenced when errors or bugs appear in a project.
CHECKLIST:
- Have all the PCs been reimaged after a shoot? Is the correct image installed on all nodes?
- Is the project using the correct engine version? UE4.27 or UE5.1
- Is the correct switchboard listener running on the nodes?
- Is the correct NVIDIA Game Driver installed on all PCs?
- Sync Policy 2 enabled on all nodes? nvapi
- Engine scalability settings are all set to Epic or Cinematic, and the Resolution Scale is set to 100% on all nodes?
- nDisplay asset referenced in switchboard config is correct location/asset
- Is ray tracing enabled?
DO’s:
- Test content on the screen as early as possible for the best results.
- Follow the UNREAL 4.27 Project Display Setup for guidance.
- Check that you are using all the correct/necessary plugins.
- If content is being provided by a 3rd party, check with the provider what plugins they are using. Try not to use beta/experimental plugins.
- If the project is using experimental plugins, please check if they are needed. Request the plugin if needed and is not currently installed, and document its use.
- Maximum texture resolution is 16K technically, preferably 8k MAX.
- Bake Lighting – use Static Lights where possible.
- 5 – 10 Realtime/movable light sources per Map/Level.
- Optimize Light Mass Density (UVs)
- Use Instance meshes to allow occlusion culling to work correctly, eliminates the unnecessary geometry being rendered.
- Share Material Instances where possible.
- Try adding DLSS into your project. NVIDIA DLSS Unreal Engine Plugin needs to be enabled for this to work.
- To avoid seams/screen tearing ensure:
- Disable screen-based effects/post processes such as auto-exposure and motion blur
- Use seeded particle systems, although can still cause seams
- Light shafts/sun shafts/and exponential height fog densities can be adjusted to look good in-frustrum but out-frustrum will cause noticeable seams
DON’Ts:
- Do not delete objects in multi-user session/when connected to the brain bar controls (desk) as the changes will not be saved and could cause a node to fall out of sync and crash the cluster.
- Do not include camera cuts in any animation sequences intended for use in nDisplay (OLD).
- Do not include “Saved, Intermediates, DDC” folders when uploading/committing projects.
- Avoid roughness values of 0 on materials.
- Avoid Sharp edges, this can result in Anti-Aliasing.
- Avoid using ray tracing. (slows down server)
BE AWARE OF:
- IF Shadows, Reflections, AOs, and Emissive Materials stop working, check the Engine scalability settings are all set to Epic or Cinematic, and the Resolution Scale is set to 100%.
- Settings > Scalability > Engine Scalability Settings
- This setting is global and will alter all Unreal projects. Therefore, do not alter from Epic or Cinematic unless instructed to.
- Overlapping meshes can cause Z fighting, Depth-fighting, and texture popping.
- Reduce Reflection captures as much as possible.
TO AVOID SEAMS/TEARING BETWEEN DISPLAYS:
- Disable screen-based effects/post processes such as auto-exposure and motion blur.
- Use seeded particle systems, although can still cause seams.
- Light shafts/sun shafts/and exponential height fog densities can be adjusted to look good in-frustrum but out-frustrum will cause noticeable seams.
FRAME RATES:
Systems will run at an appropriate frame rate to match the rate at which the camera is running. It is recommended to produce content at this frame rate. Other frame rates are accepted but will be processed in real-time to suit the system’s frame rate and will be frame-blended. The default frame rates of the rig are 23.98, 24, and 25 fps. If you wish to run the system at a different frame rate, it can take a while to reconfigure, so plenty of notice needs to be given.
UNREAL NAMING CONVENTIONS:
It’s important to work with a fixed naming convention for deliverables, and it is recommended to adapt to existing naming conventions. If there are no pre-existing naming conventions, we can suggest conventions depending on the project specifics. It’s sensible to lay out the naming conventions in a clear and logical way, which may require a joint discussion with the content producers.
It’s also recommended to build the levels with sub-levels specific to Lighting, Environment, Atmospherics/Postprocessing, and nDisplay. This will help keep the project scalable and mitigate some issues with source control when technical/creative artists are modifying the same project.
Content not in Perforce should be delivered on high-speed drives with a USB3 or USB C-style interface, and the drives should be formatted using EX-FAT or NTFS file systems. A 100Gb/s network shared delivery system may be possible depending on the setup.
For example, here is a folder naming convention:
Following is an example of folder naming conventions;
Content/LevelName/InternalFolderStructure(MESHES / MATERIALS / MAPS)
Content/Australia/Meshes/Buildings
Content/Australia/Meshes/Rocks
Content/Australia/Meshes/Trees
Content/Australia/Maps/Ausy1
Content/Australia/Maps/Ausy2
Here is an example naming convention for levels:
SubLevelType(LIGHT / ENV / ATMOS / NDISPLAY)_LevelName
LIGHT_AustraliaScene.umap
ENV_AustraliaScene.umap
ASSET TRACKING:
It’s essential that everyone knows what assets are in the system and the status of assets moving from render to final play out, along with Perforce/Source-control. To assist with this, it’s suggested to use a live Google sheet to track the progress of assets through various stages.
The sheet can indicate:
- Asset Rendered
- File copied to disk/transferred to network share
- File ingested into Unreal control
- File ingested into server nodes
- Asset sequenced in the timeline and ready for play out
- Asset approved off-screen
- Asset played and approved on-screen
Notes can be added at any stage, and priority to assets can also be indicated. Drives should be clearly identified using friendly “names,” such as Joanna or Fred, making it easier to remember than Drive A, Drive B, etc. The path to the file to be ingested should be indicated on the sheet. For quick and easy communication, setting up a WhatsApp group has proven to be useful.
An example sheet can be found here: https://docs.google.com/spreadsheets/d/1bYvgYzJgJOl6HBYloX_VUQRTIffK7f1KhEgWYGfiapE/edit
Ingest Time:
There are 5 stages to ingest content:
- Downloading/Importing content from the cloud/drives
- Loading the content on our control machine
- Loading our stage nDisplay config into the unreal project (for each level)
- Syncing that content onto our server nodes (this is done sequentially and is not in parallel)
- Generating cached files on each machine
We will generally not be able to import new content during shoots, as this adversely affects play out of content and can lock up our machines whilst ingesting.
It is worth having a schedule with times set for ingesting, programming, and reviewing. An example schedule could be:
- AM: ingest and conversion of files
- Early Afternoon: sequencing of assets
- Mid Afternoon: off-screen review of assets
- Late Afternoon: on-screen review of assets to code with audio/light follow
- Evening: rehearsals and run-throughs
- After Rehearsals: take notes, rendering, and transfers of changes for the next day.


Leave a Reply
You must be logged in to post a comment.