# Scene Limits and Optimisation

When adding custom built 3D models and environments to your scene, you must adhere to the geometry and scene limitations.

It is likely that this information will be of greater help to more technical developers and modellers, as they can follow the style guide and scene limitations to ensure that your scene is fully optimised for VerseX.

{% hint style="info" %}
**If you are not looking to build anything custom to your scene and will use VerseX assets, you do not need to follow these steps.**
{% endhint %}

**Polycount Limit**: Each 10m² plot in VerseX has a maximum polycount limit of 10,000 triangles. This restriction ensures efficient rendering and smooth gameplay.

**Bounding Boxes**: Models must fit within the plot's limits. If the mesh exceeds the bounding boxes limits, the entire model will be marked as outside the boundaries. To fix this, clean up your 3D models by resetting positions, scale, and rotations to ensure the model aligns in the bounding box.

**Geometry Best Practices**: Be mindful of the number of faces in your models, as more faces increase rendering demands. Eliminate hidden faces that contribute to the triangle count, use smooth surfaces for rounded shapes, and ensure normals face outward.

### Scene Limitations and References

**Triangles**: 10,000 maximum number of triangles per 10㎡. For example, a 130㎡ plot would have a maximum of 130,000 triangles per plot.

**Materials**: Maximum number of 20 materials

**Textures**: Maximum number of 10 textures

**Max texture and material size**: 1024x1024px is preferred, however, 2048x2048px is the maximum resolution

**Height Restriction**: 15 metres tall

**File Size**: 5 MB per 10㎡, 50 MB max file size per parcel (130㎡) _Please see supported file formats below._

**File Count**: 100 files per parcel

**Parcel Size**: A parcel size in VerseX is 130㎡

### Supported file formats:

**Models:** FBX, OBJ, gITF, and GLB

**Textures:** JPG, PNG, BMP

**Audio:** AIF, FLAC, OGG, and WAV

**Epic-specific formats:** .island, .upack

**Additional Formats:** CSV, JSON&#x20;



**UE5 Blueprint size**: While there is no fixed rule for the number of nodes you should have in your Unreal Blueprint function, it is recommended to set a limit that ensures readability, maintainability, and performance, you could consider limiting functions to a few dozen nodes or grouping related nodes into functions, ensuring they serve a clear purpose.

**Other Considerations**

**Scene Boundaries**: Objects outside parcel boundaries are highlighted in red during previews. Large objects' tips outside the boundary are also considered out of bounds. Ensure there are no underground tunnels. A scene cannot have tunnels that go below the default ground height.&#x20;

**Shader Limitations**: Use supported shaders and materials for 3D models. When creating materials and shaders for your 3D models, you should stick to the shader options and material setups that are supported within the UE5 ecosystem. This ensures optimal performance and compatibility. UE5 compiles shaders asynchronously, and using supported shaders helps avoid compilation issues and potential performance bottlenecks. Different shaders and materials are optimized for specific purposes, such as real-time rendering or complex visual effects. Sticking to supported options ensures that your models and scenes will function as intended and efficiently within the UE5 environment. Always refer to UE5 documentation and resources for guidelines on using shaders and materials effectively for your specific project needs.

**Restricted Execution Complexity**: Restrict the use of computationally intensive functions that might strain server resources. This maintains smooth performance for all players. By restricting the use of such functions, the game's performance and responsiveness can be maintained at an optimal level, contributing to a better experience for all players in online or multiplayer environments. Following this principle involves efficient optimisation of code, avoiding excessive loops, complex calculations, or other processes that could negatively impact the server's performance.

**Blueprint Node Count Limit**: Impose a reasonable limit on the number of nodes in a single Blueprint function. This encourages efficient and organized functions, preventing overwhelming complexity.&#x20;

**Network Interaction Limit**: Limit functions that heavily interact with the network to avoid potential latency issues.&#x20;

**Component Interaction**: Set a cap on the number of interactive components that can be triggered simultaneously to prevent overloading interactions.&#x20;

**Event Handling Constraint**: Place a constraint on frequently triggered event-driven functions to balance responsiveness and performance.&#x20;

**Triangle Count and Rendering Limit**: Comply with the limit on the total triangle count rendered in the scene. This ensures optimal rendering for all players.&#x20;

**Resource Management Guidelines**: Object pooling and efficient memory management techniques to prevent resource leaks and improve performance. Only do this if you have performance problems and even then, only do it if profiling then shows that you are spending a lot of time in allocation/deallocation.

**Code Duplication Restriction**: Discourage excessive code duplication by encouraging reuse and modularity.&#x20;

**Periodic Review**: Regularly review and adjust limitations based on community feedback, platform updates, and performance testing.&#x20;

&#x20;
