I understand that the normal process for a listen server is to create a session, then load a level.
I notice that PostLogin for the hosting client precedes StartPlay and all the BeginPlay calls.
But isn’t PostLogin the normal place to do stuff like assigning players to teams?
Except that in this case those teams may not yet exist because the game is largely unintialized… ?
please advise, thanks
All servers create session → Load Level. The Level initializes the Game Mode which inits Game State.
Post Login is a Notification that a Player has successfully logged in and been given a controller.
When using Listen Server the host is a client so there’s going to always be an immediate connection (Host client).
The Game Mode is going execute its normal behavior which is to assign a controller, then spawn a character and assign the controller. This happens immediately for every joining player.
Thanks @Rev0verDrive,
The sequence just makes it a bit tricky to utilize PostLogin for setting things up for that player.
Post Login is typically the step off to bypassing the GM’s default new client behavior.
GM only exists on the server, so it’s limited to doing server-side stuff. Like building an array of controllers to sort teams, spawning custom character classes etc.
For example my default pawn class in the GM settings is a bare bones pawn class. I use it as a loader class. When the clients level (world) is efficiently loaded I have it call an event on the controller. This event calls an event on GM to swap out the pawn for the full customized character.
Really depends on what you are trying to do.