When my character moves around, the CharacterMovementComponent tick is nearly 60ms. The frame rate is strong when the character is not moving- moving the camera around works fine too.
According to Unreal Insights it’s the CharacterMovementComponent. Is there a way to find out what is happening in those 60ms? This issue does not occur with another world. This map also doesn’t have this issue with the default game mode, so I have reason to believe it’s specifically this character and this map combination. I have tried disabling collisions on the actor capsule and mesh. Also, I added the Metahuman plugin but ran into a compile issue during packaging, so I disabled it.
I have a feeling you made a custom movement component inheriting from CharacterMovementComponent, in which you have overridden the tick method where an expensive calculation is made only when the character is moving through input or has velocity? Not more than a feeling without seeing code.
That’s a good guess, but I’m just using the basic CharacterMovementComponent. I looked around the code for where I could have overriden the tick component, but Im not doing that anywhere.
I was able to get a more detailed UnrealInsights by adding running stat.NamedEvents 1 in the console before doing a trace. It looks like UpdateOverlaps is taking most of the frame duration. I’m checking my map/scene for excess or complex collisions. Not finding anything obvious. It’s also only a problem with my specific character.
Doesn’t ring a bell for me, the combination of only that character on that map is oddly specific. Nothing on the character changes when you load him into a different map? If you can’t find it, make a copy of that character and try simplifying that copy (just by deleting things, components, meshes, code etc.) until the problem does not occur.
Makes it more abstract. So the Default GameMode + this character + this map has no problem? What if you make a new gamemode based on the default and start configuring that until the problem happens? One by one change and then test the defaults (controller, ai, hud etc) . Add any custom logic on there last.
Thank you for the suggestion to make a copy of the pawn and remove things until it works. I did that for my custom player controller. I figured it out thanks to that. I’m using the “Quest Map Pro” marketplace asset that has a player controller component that was making an actor and attaching it to the character. That actor has large sphere collisions and they were generating overlap events for all static meshes in the area.
I think it was trying to do collisions with every static mesh in the area every frame of movement. Idk how to tell if anyone of those meshes were using Complex collisions or not.