With the MicroProfiler, it always seems to be a game of pure chance. If you read the quote, it prefaces with to my understanding. There’s simply not enough raw information on the MicroProfiler to adequately use it to pinpoint performance issues, at all. You just have to assume based on what a label reads and take a shot in the dark while attempting to address areas of performance.
That being said, going off of the largest bars in your game, it seems that you will need to look into optimising the following (completely best guesses, I have no clue what I’m talking about):
- Scene, Shadows: Relates to the lighting engine. Are you using ShadowMap?
- runJob: Loops in the scheduler. This can be from while, for or RunService-bound loops.
- Physics: Anything simulated by the physics engine. That’s all non-anchored parts, if I recall correctly. There may be other criteria to meet, though I doubt it.
- gameStepped: Seems that Stepped needs to complete a lot of operations.
- Stepped: Ditto. ^
- Humanoid: Humanoids by nature are very expensive. Try reducing the cost of humanoids through various actions like disabling state types you do not need for humanoids.
Really though? Optimise, optimise, optimise. But do not micro-optimise and waste your time. Pass some small operations to the client and use the server as a medium to transfer data to other clients for rendering or whatever (provided input is checked).
By the way: if you’re doing tweens, absolutely stay away from the server if you aren’t doing so already. It’s easier on you to write it but more taxing on performance to carry it out. If a tween needs to be done, get the server to pass data to all clients and have the clients run the tweens.