Setting up Mobile/VR/AR Builds with TerraWorld
The following article contains a few general fact statements which you need to take into consideration while using a level designer solution like TerraWorld in your projects.
TerraWorld is a modular world generator and level designer system where you define different parameters and details for the target platform. So, you as the app developer should know your target platform’s limitations and
consider them all and simply create scenes with TW and build. There is nothing to stop you from using TW in any platforms since Unity can port your scenes for that platform.
Performance (application’s FPS value) is a broad topic, but note the following statement to keep in mind while developing your app:
Templates & Project Settings for Target Platform (Desktop, Console, Mobile, VR/AR)
Default presets in Quality Settings does not bring good performance and visuals to detailed environments TerraWorld creates, and you need to have this window side by side your scene for visuals and stats for performance to achieve an optimal balance.
Some of the most effective parameters for performance are: “Lod Bias”, “V Sync Count”, “Shadow Distance”, “Shadow Resolution”, & “Anti-Aliasing (Set it to disabled since Post Processing handles it)”, “Color Space”, “HDR Camera
Rendering” and… which we will extend these parameters as a list at below.
Also download and play Alp’s demo and press Tab while playing to see the FPS and performance in a desktop production level build in a very detailed environment with max quality settings and effects.
In addition, 3D models and/or materials that come with the package may not be optimized for your target platform, so feel free to use any 3rd party art and environment assets and feed them in Scatter nodes for placement which give much better performance along with VFX settings. Here are 2 video tutorials on how to use your own prefabs (models, textures, materials…) to generate scenes:
https://youtu.be/We1sB58dA0E
https://youtu.be/2f0z8xdPDoY
Performance in General
Never ask performance questions about your game/application to public unless they know all the details about your project and if that’s not the case, then you won’t get a proper answer… Obviously because it depends on the mixture of target platform (Desktop, Mobile, VR), machine specs (CPU, GPU, Ram), screen resolution, assets count, rendering quality, LODs, shader complexity, post-processing and effects, terrain data resolutions, placement items densities, shadow settings, lighting quality, GPU Instance settings, runtime handlers, physics and… which generate an FPS value in the end!
Flexibility of TerraWorld Level Designer
Generated worlds can be in any style and detail as you can feed in your own resources of prefabs, models, textures, terrain layers, effects… in the graph. Regarding performance, it’s a broad topic and depends on many factors in generated scenes, but TW is a modular system where you can control all densities, resolutions and complexities to set it for target platform, so it’s always useless to ask such questions for a dynamic world generator like TerraWorld.
In the future, we will provide exclusive Mobile/VR templates with proper settings so that you can count on them as good references which produce optimized scenes for your mobile devices.
Details of the Generated World
If your scene is detailed and populated densely then for example a 8k x 8k area for generation is considered large already, and will give the player’s sense of scale when comparing with a sparse environment.
If you need bigger area size, you have to play with the graph/node settings to make the scene balanced in terms of optimization, since TW is designed in a way to maintain stable framerate even in very large scenes and “Density” plays a more important role in the final performance.
Generally, it is an iterative process where you go into a trial & error process to get the best results and balance quality and performance. Hopefully all TerraWorld features are modular, so you can enable/disable/edit all settings to set desired optimal setup
Quality Settings
- Disable Anti-Aliasing
- Disable Real-Time Reflections
- Hard Shadows are recommended
- Shadow Resolution should be set to Low or Medium
- Set Shadow Distance as low as possible (it is recommended to bake lighting and not using real-time shadows)
- Disable Shadow Cascades
- VSync Count should be set to Every V Blank (it is recommended to enable VSync Count)
- Set LOD Bias to a low value (e.g. 0.5) and crank it up if needed.
Post Processing
- It is recommended to disable Anti-Aliasing on camera as it drops too much FPS
- If Anti-Aliasing is needed, then only use Fast Approximate FXAA and enable Fast Mode
- Ambient Occlusion and Bloom heavily affect performance and not recommended
- Disable Screen Space Reflections, Motion Blur and Depth of Field in the profile
Note: Enabling Post Processing Layer on camera will affect performance even if we don’t have any Post Processing Volumes in
the current scene.
Rendering Settings
- Rendering Path should be set to Forward
- Disable HDR on camera
- Disable MSAA on camera
Player Settings
- Gamma Color Space is recommended but also check Linear if you need it and monitor performance
- Vulkan in Graphics APIs section is recommended if target devices support it since this API gives better
performance overall. If Vulkan is not an option, then use OpenGLES3 or OpenGLES2 - Use IL2CPP instead of Mono in Scripting Backend for better performance
- Enable Multithreaded Rendering
- Enable Static Batching
- Enable Dynamic Batching
- Enable Compute Skinning
General Notes
• Beware of using transparent materials in scene as GPUs are sensitive to this type of rendering and you may end up
with Overdraw phenomenon which heavily affects performance.
• Avoid using any 3rd party post processing effects or runtime VFX on camera or scene unless if they are optimized for mobile.
DownloadDownload Files
Â