Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

UnrealEngineer

[ UnrealEngine5 ] 게임모드와 로그인 본문

언리얼엔진5

[ UnrealEngine5 ] 게임모드와 로그인

UnrealEngineer 2024. 8. 19. 17:32

 

1. 서버의 접속

서버는 PreLogin() 단계가 필요없다.

 

StartPlay() 함수에 의해서

게임에 있는 모든 액터들의 BeginPlay()가 호출되고

StartPlay()가 종료된다.

 

2. 클라이언트의 접속

 

클라이언트는 '이미 시작된 게임'에 입장하는 형태이다.

그러므로 생성되자마자 컨트롤러의 BeginPlay()가 호출된다.

 

서버에서 클라이언트의 플레이어 컨트롤러를 생성해서 클라이언트에게 전달해준다.

플레이어컨트롤러가 클라이언트에게 전달되면 클라이언트 자체적으로 BeginPlay()가 호출된다.

 

 

3. 게임의 시작

서버에서 StartPlay() 함수가 호출되면 공식적으로 게임이 시작된것으로 간주한다.

그러므로 이후에 접속한 플레이어들은 BeginPlay()가 StartPlay() 없이 자동으로 호출된다.

 

클라이언트에는 게임모드가 없다.

게임스테이트는 클라와 서버에 모두 존재한다.

게임모드는 게임을 시작할때 게임스테이트에 명령을 내려서 게임이 시작되도록 간접적으로 지시하고

게임스테이트는 월드에 모든 액터에 시작 명령을 내린다.

 

게임스테이트는 클라에게도 복제되고 게임이 시작되었다는 정보가 복제된 게임스테이트에도 반영되면

이 반영되는 타이밍에 클라이언트의 모든 액터에게 게임스테이트가 모든 액터에게 BeginPlay() 함수 호출 명령을 내린다.

 

 

// 게임스테이트가 월드에 있는 모든 액터에게 BeginPlay() 호출
// 로컬 로직이기 때문에 '서버'에서만 실행
virtual void HandleBeginPlay() override;

// 서버로부터 bool bReplicatedHasBegunPlay 변수의 변경이 감지되면 호출되는 함수 -> 이를 통해 클라이언트에서도 게임시작 신호를 받는다.
virtual void OnRep_ReplicatedHasBegunPlay() override;

 

+ 클라이언트에게 복제된 게임스테이트에서 bool bReplicatedHasBegunPlay 변수의 변경이 발생하면

+ virtual void OnRep_ReplicatedHasBegunPlay() override; 함수가 호출된다.

+ OnRep_ReplicatedHasBegunPlay() 함수에 의해서 클라이언트에 복제된 PlayerController의 BeginPlay()가 호출된다.