Enemy movement: The way I set up the colliders on the enemies and the way I was handling movement was draining a lot of processing. It would pretty much kill my fps with more than 30 enemies. I have optimized the way it moves and the different colliders on it so now it can handle 100+ But it does slow down a little bit around the maximum. I know there are ways to optimize this further so I will keep experimenting!
Particle systems: I found a problem with a couple many of my particle systems that were drinking CPU. I had them set to world simulation while they were moving so it had to keep track of thousands of particles and update their position… This is fixed! I’ve made a particle system that generates as you go.
Lighting: I am using volumetric lighting which looks really sexy, but having all of them on at the same time also eats up GPU. I have restricted this to be on only if you are close to them but I need to further develop this. I want to add sort of billboard images so when you are far away it doesn’t just pop in and out but become a sort of static image.
UI: Unity UI canvases are sometimes quite annoying to work with. So by default, the “canvas” comes with a canvas scaler and graphic raycaster. The scaler makes it easier to adjust the resolution and the raycaster so that you can interact with it. But both those things eat up processing. And completely unnecessary when not using them. In my noobiness, I left my canvases with these components on… But now I have reworked all of them!
Water: The water looks really sexy. But it’s eating up a lot of GPU. Its reflecting all of the graphics bla bla bla. A really good pc should be able to handle this but mid to low has trouble. So I have made a simple water if you set the graphics to medium or low and the water only begins rendering when you are close to it.