How to assign a Player Controller to Client? C++

Maybe this is a silly question, but I can’t find a single line of documentation or help on this subject. The tutorial I followed used a third-person setup, so it automatically spawned a second player for them on the Client, which worked fine for the tutorial, but they never explained how to assign a custom character to the client. I have a custom pawn which assigns it’s control over Player0, like so:

AutoPossessPlayer = EAutoReceiveInput::Player0;

As long as the pawn is in the scene, this works perfectly on the server side, but no matter what I try, the client just creates some kind of empty actor that is basically a duplicate of the editor controller (Right click to look around, WASD to move, etc…). How do I make my client possess a second pawn, just like the one on the server side?

You can have a controller posses any pawn by calling the Possess(NewPawn) function. It will automatically UnPossess the previous pawn if one was set.

Thanks for your answer. I’m still not sure how to access my pawn as the variable in that function, though. My class is the pawn, so do I need another class to spawn them into the world and assign them? In the tutorial I followed, we never explicitly assigned a controller/pawn/character, we just added an example function at the bottom of the existing third-person character class, but if I make the “number of players” 2 or 3, etc… It automatically spawns more of that class for each window. How does this happen without directly assigning them?