Client players are unable to move their characters in build but are able to in PIE

Try to print out the TeamCharacters.Num() before you call return.
Something like this

if (GEngine) {
	GEngine->AddOnScreenDebugMessage(-1, 20, FColor::Cyan, FString::Printf(TEXT("%i TeamCharacters"), TeamCharacters.Num()));
}

(You may need to do a development build to not strip out GEngine message access)

I’m guessing you might have less than 3 and your function is ending too abruptly.