TLDR: Most likely you are CPU bound because you have too many/too cpu heavy units, you can use unreal frontend to drill down on the CPU performance.
Hi, from the looks of stat unit in your second image you are CPU bound by the game thread, not GPU bound (SSGI, shadows and texture resolution affect the GPU, not the CPU). The GPU time will always be larger than the CPU time, since the GPU will stall to wait till the CPU finishes. You can make sure that you’re not GPU bound by setting the screen percentage to a really low value (you can set it via console command: r.screenpercentage 10 for example to set it to 10%). If your frame rate does not improve, then you’re not GPU bound.
To get some more info on the game thread, you can use the console command: stat game
Basically you run stat startfile to start recording and stat stopfile to end recording. Then you can open the recording in unreal frontend (you can start unreal frontend from the executable in the engine binaries directory).
Also always profile at least in standalone, better in a development packaged game. Performance in editor or play in editor will be arbitrarily wrong. CPU performance will also be better in a shipped build of the game compared to a development build.
Tick time includes things that run under the hood, not only things called on tick in the blueprint. For example animations, movement, particle systems, collisions, landscape, timers and also every code that is executed in your blueprints, whether it’s on tick or not. The good news is that most of your time (around 40ms) comes from blueprint time. Those are things that you call in your blueprints.
To find those specific blueprints / blueprint functions, you could either use unreal frontend, that will show you the exact blueprints and the exact functions and events that take up time and you can optimize or remove that functions. Or you could make a copy of your level, and then start removing actor types from it one by one and see which one reduces the time. Then look into that blueprint to figure out which functions use up that time.