Client Login Session

정혜창·2025년 3월 29일

독학

목록 보기
27/28
post-thumbnail

Unreal Engine에서 PostInitializeComponents, Login, InitNewPlayer, PostLogin은 모두 게임 실행/접속 초기화 과정에서 호출되는 중요한 함수들이지만 각각의 목적과 호출 시점이 다르다.
개념이 헷갈려서 흐름 순서각 함수의 역할, 서버/클라이언트 여부, 그리고 어디서 오버라이드할 수 있는지를 공부했음


🎮 전체 흐름 요약 (멀티플레이 접속)


1️⃣ 서버 기준 플레이어가 접속하면 호출되는 순서

1. GameMode::Login()
2. GameMode::InitNewPlayer()
3. GameMode::PostLogin()
4. PlayerController::PostInitializeComponents()
5. Actor::BeginPlay()

2️⃣ 각 함수 설명 및 차이

함수 이름오버라이드 위치호출 시점 설명주요 목적 및 활용서버/클라이언트
LoginAGameModeBase접속 시도 시 가장 먼저유저의 IP, 옵션 파싱, 인증 등서버
InitNewPlayerAGameModeBaseLoginPlayerController, PlayerState 초기화서버
PostLoginAGameModeBaseInitNewPlayer게임 로직 시작, 유저 관리, 게임 시작 체크 등서버
PostInitializeComponentsAActor 또는 APlayerController컴포넌트가 모두 초기화된 후컴포넌트 간의 상호작용 초기화서버 & 클라이언트
BeginPlayAActor 기반 클래스월드에 스폰된 후실제 게임 로직 시작 시점서버 & 클라이언트

🎮 각 함수에 대한 설명


1️⃣Login

Login(const FString& Options, const FUniqueNetIdRepl& UniqueId, FString& ErrorMessage)

  • 서버에서 클라이언트 접속 시 제일 먼저 호출됨
  • 주로 유효성 검사커스텀 인증 시스템 구현 시 사용
  • 예: 블랙리스트 검사, 닉네임 체크 등
FString Error;
APlayerController* PC = GameMode->Login(Options, UniqueId, Error);

2️⃣ InitNewPlayer

InitNewPlayer(APlayerController* NewPlayer, const FString& Options, const FString& Portal)

  • Login이 성공한 후 호출됨
  • PlayerController에 PlayerState를 설정하거나 초기값 주입 가능
  • 이름 설정, 팀 배정 등을 여기서 처리 가능

3️⃣ PostLogin

PostLogin(APlayerController* NewPlayer)

  • InitNewPlayer 후 호출
  • 게임 참가 완료 후 서버에서 후처리를 위한 핵심 함수
  • 보통 여기서:
    • 게임 유저 배열에 추가
    • 인원 체크 후 게임 시작
    • 채팅 메시지 브로드캐스트
    • 유저 초기 정보 서버에서 설정

4️⃣ PostInitializeComponents

PostInitializeComponents()

  • AActor, APlayerController, APawn, ACharacter모든 Actor 기반 클래스에서 사용 가능
  • 컴포넌트가 모두 생성되고 초기화된 직후 호출됨
  • BeginPlay 전에 호출
  • 예: 컴포넌트 간 참조 연결, Tick 설정, 물리 초기화 등
void AMyCharacter::PostInitializeComponents()
{
    Super::PostInitializeComponents();
    // 예: HealthComponent → MeshComponent 연결
}

5️⃣ 흐름 정리 (Unreal 멀티플레이 접속 시 서버 흐름)

클라이언트 접속
  ↓
GameMode::Login() → 인증 처리
  ↓
GameMode::InitNewPlayer() → PlayerController/PlayerState 설정
  ↓
GameMode::PostLogin() → 게임 준비 완료, 로비 진입 등
  ↓
(각 Actor의) PostInitializeComponents()
  ↓
(각 Actor의) BeginPlay() → 실제 게임 시작

🎮 정리

함수명용도
Login유저 인증, 접속 유효성 검사
InitNewPlayerPlayerState, 이름 설정, 포지션 초기화 등
PostLogin유저 수 체크, 게임 시작 조건, UI 메시지 전송 등
PostInitializeComponents컴포넌트 간 연결이나 초기 값 설정
BeginPlay게임 로직 시작, 타이머 설정, 이펙트 재생 등
  • 멀티 게임 초기화는 대부분 PostLogin에서 처리됩니다. 접속자 수 체크 → 준비 완료되면 GameState를 통해 게임 시작.
  • PostInitializeComponents는 주로 내부적인 세팅 (컴포넌트 간 연결 등)에 집중.
  • BeginPlay실제 게임이 시작될 때 작동하는 함수라서 이펙트/타이머 등 시각적인 부분에 적합.

profile
Unreal 1기

0개의 댓글