The three virtues of a programmer: Laziness, Impatience, and Hubris. – Larry Wall
Legacy:Chain Of Events When A Player Logs In
From Unreal Wiki, The Unreal Engine Documentation Site
Serverside UnrealScript Events
- GameInfo.PreLogin() – propagated to AccessControl; may reject player.
- Note: Required packages are downloaded before the Login function is called next. This can take some time—the level could change; another player could have gotten the slot.
- Mutator.OverrideDownload() – called on the base mutator for each package the player needs to download, propagates down the mutator linked list (only available in UT2003, not in the base engine)
- GameInfo.Login() – propagated to AccessControl and Mutators; spawns the PlayerPawn/PlayerController or rejects player, sets player name, spectator, admin login, other stuff:
- Color codes are stripped from URI options passed to the server.
- Mutator.ModifyLogin is called starting from the BaseMutator.
- Checks if server is at player capacity, in which case non-admin players will get a MaxedOutMessage, but an admin is forced to become a spectator, if the server is not at spectator capacity (?) already.
- Team number is picked; passing in the preferred team [0, 1], or 255 if no team is specified, or if any team will do in a team game, or perhaps if teams are not relevant to the gametype.
- GameInfo.FindPlayerStart is called; attempts to find a start spot for the player—could potentially abort.
- PlayerControllerClass is attempted loaded.
- Spawn player at start spot position and rotation—could potentially abort if picked start spot could not fit the player (height too low, for instance). UnrealEd 3 does not necessarily catch scenarios like these during a Reachspecs build.
- GameReplicationInfo reference assigned to player.
- SecurityClass attempted spawned for player.
- Custom VoicePack
- Player is male or female.
- PlayerID is incremented and assigned to player.
- Admins are assigned administrative privileges.
- bLargeGameVOIP is set to true if the number of players is greater than 20.
- bWelcomePending is set to true.
- Determine whether level was requested to run in test mode.
- If bDelayedStart is true, the PlayerController enters the PlayerWaiting state.
- GameInfo.PostLogin() – first point at which replicated functions of the new player are safe to call.
- GameInfo.NotifyLogin() – calls ServerRequestBanInfo on all PlayerController actors.
Clientside Initialization Overview
TODO: What stuff gets replicated? What happens while the loading screen is visible?