ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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 속성이 리플리케이션된 후 클라이언트에서 호출
      • 소유권 변경에 따른 상태 업데이트를 처리

     

Designed by Tistory.