UE5

[UE5] 클라이언트-서버 연결시 호출 함수 정리

검정색필통 2024. 12. 12. 15:33

로그인 과정

  •  PreLogin
    • 클라이언트가 서버에 연결을 시도할 때 호출
    • 클라이언트의 인증 및 접속 허용 여부를 확인
    • 플레이어 컨트롤러는 아직 생성되지 않음
    • 주로 접속 제한, IP 검증, 허용 여부 확인 등에 사용
  • Login
    • 클라이언트가 접속 인증을 마치고 로그인 시 호출
    • 이 시점에서 플레이어 컨트롤러가 생성
    • 클라이언트가 사용할 PlayerController를 반환
  • PostLogin
    • 클라이언트가 서버에 성공적으로 접속한 후 호출
    • GameMode에서 호출되며, PlayerController가 완전히 초기화된 상태
    • 플레이어가 게임에 완전히 들어오고 게임 시작 전에 수행할 작업(초기 설정, 팀 배정 등)에 사용
  • StartPlay
    • 게임의 주요 루프가 시작되기 전에 호출
    • GameModeBase에서 호출되며, 게임 로직 초기화에 사용
  • BeginPlay
    • 액터가 완전히 생성되고 게임이 시작될 때 호출
    • 게임플레이 관련 초기화를 수행하며, 게임 루프 내에서 첫 번째로 실행되는 함수
Server
Login() Begin => Login() End => PostLogin() Begin => PostLogin() End => StartPlay() Begin => BeginPlay() Begin => BeginPlay() End => StartPlay() End

서버는 클라이언트가 접속을 완료하면 PostLogin을 호출하여 새로운 플레이어를 처리하고, 이후 액터 초기화 및 게임 로직을 실행한다.
서버의 PostLogin은 클라이언트에게 플레이어 컨트롤러와 연결된 모든 액터를 동기화시키는 중요한 단계이다.


Sever에서 호출 Client에서 호출
Client
PreLogin() Begin => PreLogin() End => Login() Begin => BeginPlay() Begin => BeginPlay() End => Login() End => PostLogin() Begin => PostLogin() End => BeginPlay() Begin => BeginPlay() End


클라이언트는 서버로부터 초기화된 정보를 수신받기 전에, 로컬 환경에서 액터의 BeginPlay가 먼저 실행될 수 있다.
클라이언트의 PostLogin은 서버로부터 플레이어 컨트롤러가 연결된 상태를 수신하고 처리하는 시점에 호출된다.

 

 

 

게임 스테이트 관련 함수(BeginPlay 호출)

  • HandleBeginPlay
    • 서버에서 BeginPlay 호출 전에 발생하는 내부 함수
    • 액터가 게임플레이 상태로 전환되기 전에 초기화 로직을 처리
    • StatPlay를 지시하면, 게임 스테이트에게 명령을 내려 월드에 있는 모든 액터들에게 BeginPlay를 호출하라고 명령을 내림
  • OnRep_ReplicatedHasBegunPlay
    • BeginPlay가 리플리케이션된 후 클라이언트에서 호출
    • 주로 멀티플레이어 환경에서 BeginPlay 상태를 동기화
    • bReplicatedHasBegunPlay라고 하는 프로퍼티가 서버로부터 전송돼서 변경이 되고 감지가 되면 함수 호출
Server
StartPlay() Begin => HandleBeginPlay() Begin => BeginPlay() Begin => BeginPlay() End => HandleBeginPlay() End => StartPlay() End

Client
OnRep_ReplicatedHasBegunPlay() Begin => BeginPlay() Begin => BeginPlay() End => OnRep_ReplicatedHasBegunPlay() End

 

 

액터 및 네트워크 초기화

  •  PostInitializeComponents
    • 액터가 초기화된 후 호출
    • 모든 컴포넌트가 초기화된 상태로, 액터가 준비 상태에 도달했음을 나타냄
    • 주로 컴포넌트 간 초기 의존성을 설정하는 데 사용
  •  PostNetInit
    • 네트워크 리플리케이션 관련 초기화가 완료된 후 호출
    • 리플리케이션 초기화가 필요한 액터에서 사용
Sever
Login() Begin => PostInitializeComponents() Begin => PostInitializeComponents() End => Login() End
로그인 사이에 액터 설정의 초기화 실행(플레이어 컨트롤러 생성)

Client
PostInitializeComponents() Begin => PostInitializeComponents() End => PostNetInit() Begin => PostNetInit() End => OnRep_ReplicatedHasBegunPlay() Begin=> ...

 

액터 소유권 관련 함수

  • OnPossess
    • PlayerController가 Pawn을 소유했을 때 호출
    • 주로 플레이어 캐릭터가 소유되었음을 처리
  • OnRep_Owner
    • 액터의 Owner 속성이 리플리케이션된 후 클라이언트에서 호출
    • 소유권 변경에 따른 상태 업데이트를 처리