-
[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 속성이 리플리케이션된 후 클라이언트에서 호출
- 소유권 변경에 따른 상태 업데이트를 처리
'UE5' 카테고리의 다른 글
[UE5] RPC(Remote Procedure Call) (2) 2024.12.17 [UE5] 액터 리플리케이션 (0) 2024.12.17 [UE5] 매크로를 이용한 사용자 정의 로그 (2) 2024.12.10 [UE5] 네트워크 멀티플레이어 (0) 2024.12.10 [UE5] 추상클래스와 인터페이스 (0) 2024.12.06 - PreLogin