- ZEPETO is structured to preload resources used in the world into memory.
- Based on 1.7.0 in the world, the lowest specification devices are iPhone 8 (2GB RAM) and Galaxy S8 (4GB RAM).
- Therefore, we need to make it so that it does not exceed 2GB.
- The minimum specification equipment may be changed later.
- In the case of a multiplayer world, the memory should be managed considering the maximum number of people because each character has memory.
FPS (Frames Per Second)
- The maximum FPS limit is 30FPS.
- Package capacity is limited to up to 1GByte.
- With the cross-world movement feature provided by World 1.8.0, you can indirectly resolve the capacity part.
- Please use the Memory Profiler preview version package provided by Unity.
- At the moment, it is impossible to accurately grasp the memory of the world you have released on your mobile device.(The memory of the ZEPETO app is measured and displayed.)
- In the future, we plan to provide UI to verify profiling in ZEPETO World SDK.
- You can also check the resources included in the project by building them directly into the Asset Bundle.
- Please refer to the information related to Unity optimization.
What can be improved about the resources
- Please delete unused package folders and unused files as well.
- Please adjust the number of objects in the project and the number of trees/pools in the terrain.
What can be improved about the code
- Using Coroutines: yield doesn't produce garbage, but making new waitForSeconds will produce garbage. Therefore, create and use the objects.
- In Update ( ), the parts that do not need to be called every frame are replaced so that they can be called every n frame.
- Avoid calling heavy logic functions in Awake( ) OnEnable( ) Start( ).
- Avoid leaving Update ( ) and LateUpdate ( ) even for empty functions.
- Avoid adding components at runtime. If necessary, it is more efficient to instantiate the prefab.
- GameObject.Find, GameObject.GetComponent, and Camera.main are expensive, so do not call from Update() but call from Start() if necessary.
- Instantiate and destory produce garbage and garbage collections to slow down the process. Instead, try to reuse it with pools.
- Renderer.material uses Renderer.sharedMaterial whenever possible to access the bound object's material since it is too expensive to make a new copy and return it.
What can be improved about the UI
- Depending on the purpose, divide the canvas and set the canvas that is not used as invisible.
- Limit the GraphicRaycasters and clear the Raycast Target. Erase the GraphicRaycaster from the canvas and insert the Graphic Raycaster separately into individual elements, such as buttons.
- If you don't need Raycast Target in text or images, delete it.
- Avoid using Layout Groups unless it is a Dynamic UI. Use the anchor to organize it.
- Large List and Grid Views are expensive, so avoid using them.
- When using the full screen UI, hide everything except this canvas. It eliminates the need for the camera to render the 3D scene. It also hides unnecessary canvases.
- Lower the Application.targetFrameRate because you do not need to update every 60 fps when using the full screen UI.
- Don't leave a blank space for the render camera of the canvas that uses World Space, and fill it in with the camera you use.
- If you leave a blank, Unity will automatically fill in the camera.main.
What can be improved about the audio
- Change the sound clip to mono.
- Enables the use of WAV file. Any compressed music file will be decompressed and then re-compressed during the build time. The quality of the music file is degraded during this process.
- Compress the clip and lower the compression bit rate.
- Use most of the files with Vorbis, and change the short sound to ADPCM.
- Do not exceed 22,050 Hz.
- Select the appropriate load type.
- For music files with size 200 kb or less, Decompress on Load.
- For music files with size 200 kb or more, remain Compressed in Memory.
- Set large file and background music to set to streaming.
- Muted music files do not end by simply changing the volume to zero, so make sure that they are destroyed.
Updated 3 months ago