Random thought here, and feel free to ignore if it’s already been solved internally…
I’m starting to think maybe the reason characters tend to fall through buildings after an update is because they’re being loaded before the engine finishes validating the database. Which may also mean Recast hasn’t had a chance to generate the local navmesh. Sort of like how we could loot through walls while objects were loading before the delay was added to the loadscreen.
And even though our input is delayed on load, our pawns (and thrall pawns) are still being loaded server-side, no?
Now, usually UE is good about handling this sort of thing, but between all the custom objects, and recast and sql being somewhat lazy, it may be confused. So maybe a layer of duct tape and bubblegum can help?
First, maybe disable physics or set flying on begin play in the base character bp, then a ~2 frame delay before re-enabling. The OnRespawn event should handle this already in theory, but it may just be firing too fast.
And for thralls, might also help to do a quick check for overlaps/falling after the delay. Then if true, fire off a quick function to find closest navigable point and teleport them there. This might help not just slow loads, but minor collision updates that change what they were standing on.
Really, none of this should be needed and probably sounds stupid. But I have seen UE do stupid things. Like that one time my AI controller refused to possess pawns unless it was delayed a frame. Nobody could figure out how it was loading before the pawns, and this was in a pretty simple prototype project lol.