Tutorial:WorldOptimization

From Resonite Wiki

Introduction

Do you suffer from the annoying problem where users leave your sessions due to the performance issues that your world contributes to your sessions? World optimization may be a challenge to some users, but with a combination of knowledge from Optimization Guidelines and this page, you too can optimize worlds and/or content using tried and true methods of finding sources of lag.

Binary Search

A fast (not the fastest but easiest to implement here) algorithm that can be used in searching for lag is the Binary Search Tree. This algorithm is pretty simple, and anyone can do it, and is much easier than it sounds.

To start, take your world and parent the elements into two slots side by side in the inspector. The slots need to be toggleable individually, so you can swap between the active on each one. The content of said slots could be either inside vs. outside of the main spawn area, background vs. foreground elements, or could even be 3 slots if absolutely necessary. Next, open your dash and look at your FPS counter at the top right, also known as Frames Per Second. The higher your FPS, the better your performance. Next, disable one of the slots, and note your average FPS. The average is not exact science, so don't go into metrics and nerdy stuff. This is more qualitative not quantitative (feeling instead of numbers).

Once you find a group of content that is relatively more laggy than the other, then disable the one not causing as much lag. If they both cause the same lag, then choose one randomly and come back to the other one later. Next, split the one still active into two groups again, and find the one causing more lag. Repeat the process, and find the item causing the most lag. see I wanna keep a laggy world element! for options on how to handle the offending element.

Pointing Fingers!

Sometimes you can look for lag by pointing fingers at parts of your world. Figuratively of course. Using the Optimization Guidelines page as a guide, search through your world for what could be a source of lag, and try disabling it. Monitor the top right section of your dash where your FPS (Frames Per Second) counter is while doing so. if you find it is a source of lag, see I wanna keep a laggy world element! for options.


I wanna keep a laggy world element!

Okay, so you found the source of the lag? But you don't wanna get rid of it? Well culling systems are explained at Optimization Guidelines -> Culling and will help tremendously with quarantining the lag, rather than removing it entirely. Also, consider making an option to toggle it via in world menus or context menu toggles. Also keep in mind Optimization Guidelines -> User-made culling systems Since using culling systems to have certain parts of the world disable when they aren't needed can take a world that usually has an average of 20 fps have an average of 50+ fps without removing any content.