1. 이름
2. 클래스 디폴트
Player Controller 클래스는 있고 Default Pawn Class는 없다. New Var 0 = dada 이건 뭘까.
3. 변수
DefaultSceneRoot는 기본 컴포넌트이다.
PlayerIndex는 현재 서버에 접속한 인원수를 표시하는 데 사용된다.
TempColorPLayer는 플레이어 접속 종료 로직에서 사용된다. 오타가 눈에 띈다.
위에도 나와있지만 NewVar_0 는 초기값 dada 인 String 변수인데, 아무래도 사용되는 것 같지 않다.
Color 배열은 각 플레이어에게 지정하는 색상표이다. 초기값이 다음과 같이 선언되어있다.
3.이벤트
게임모드의 인스턴스는 서버에만 생성되기 때문에 모든 이벤트 호출은 서버에서 이루어진다.
OnLogout
위 이벤트는 AGameModeBase 클래스에 선언된 K2_OnLogout의 구현이다.
(K2_)OnLogout 이벤트는 Logout 함수에서 호출된다.
그리고 Logout 함수는 플레이어가 서버(세션)에서 나가면 호출된다.
이 이벤트는 인자로 Exiting Controller, 즉 세션을 나가는 플레이어의 컨트롤러 오브젝트를 인자로 전달한다.
전달받은 인자를 형변환 해서 해당 플레이어 컨트롤러 클래스에 정의된 접속해제 이벤트를 호출한다.
그 다음 접속해 있는 인원을 나타내는 플레이어 인덱스 변수를 감소시킨다.
다음으로는 접속을 끊은 플레이어의 인덱스를 이용해 할당했던 색깔을 찾아서 임시 저장한다. 저장이 끝나면 색상 배열에서 플레이어 인덱스에 해당하는 값을 지우고 임시 저장한 값을 색상 배열 맨 뒤에 추가한다.
OnPostLogin
이 이벤트도 마찬가지로 AGameModeBase 클래스에 선언된 K2_PostLogin의 구현이다.
인원수를 나타내는 플레이어 인덱스 변수의 값을 증가시키고
적절하게 형변환 이후, 빙의할 폰을 월드에 스폰하는 이벤트를 호출한다. 이 때, Color와 Player Index를 함께 전달한다.
플레이어 컨트롤러로 가보자
이벤트 이름은 Spawn Pawn - 이지만 실상은 전달받은 Color 및 Index를 플레이어 컨트롤러와 폰의 변수에 각각 저장하는 로직이다.
이 이벤트도 마찬가지로 서버에서 실행(Execute On Server)되고, 각 변수의 값들은 클라이언트에 리플리케이트(복제)된다. Get 또는 Set 노드의 우상단에 표시된 심볼을 통해서도 그 사실을 확인할 수 있다.
다시 게임모드로 돌아가자
Color 및 Index 변수 동기화 이후에는 시작 Yaw 값을 초기화한다.
플레이어 컨트롤러로 가보자
플레이어 컨트롤러에서 이 이벤트는 Initial Control Rotation의 값을 지정한다.
Initial Control Rotation은 EventServerPossessPawn 이벤트에서 사용된다.
게임모드에는 플레이어의 접속 및 접속종료에 대한 처리 로직이 구현되어있다.
'비현실 연구소 > [2층]샘플 분석실' 카테고리의 다른 글
Collab Viewer 템플릿 분석: 카메라 회전(1) (0) | 2020.10.28 |
---|---|
Collab Viewer 템플릿 분석: 레이저 포인터 (0) | 2020.10.28 |
Collab Viewer 템플릿 분석: 시리즈 소개 (0) | 2020.10.27 |