언리얼 네트워크 게임을 만들 때
GameMode : 게임의 전체적인 일을 처리
PlayerController : 플레이어 개인적인 일을 처리
GameState : 게임의 전체 점수 등을 저장.
PlayerState : 플레이어 개인의 점수 등을 저장. 자동으로 리플리케이트된다고함
GameInstance : 모든 맵을 통틀에서 존재함. 가장 비싼놈인듯.
다섯가지 요소를 잘 사용해야함.
GameMode는 서버에만 존재함.
#. GameMode 와 PlayerController
- 모든 플레이어에게 처리해줘야 하는 일은 GameMode에서 처리하는게 적합하다.
- GameMode에서 Get All Actor of Class를 통해 플레이어 컨트롤러를 전부 가지고 있고, 루프를 돌려가면서 처리하면 된다.
- 주의할 점은 Run On Server로 Player Controller를 루프돌려가며 실행해도 리플리케이트는 일어나지않고
서버에있는 PC끼리만 돌아간다. Multicast나 Run Owning Client 로 해줘야 리플리케이트됨.
- 클라이언트는 서버를 경유하지 않으면 GameMode를 접근할 수 없다
- 같은 맥락으로 GameMode에서는 Multicast를 호출해도 클라이언트에는 GameMode가 없기때문에 fail.
#. PlayerController 와 Pawn
- 플레이어 캐릭터에 해당하는 Pawn에 Player Controller가 빙의해서 게임이 진행된다.
- 플레이어캐릭터 사망 시 Pawn은 삭제되기 때문에 안에있던 정보는 모두 날아가버림.
하지만 PlayerController는 플레이어가 접속을 끊지않는 한 유지된다.
#. 플레이어의 점수는 어디에 저장하면 될까? PlayerController VS PlayerState
- 플레이어 컨트롤러는 보안상의 이유로 리플리케이트되지않고, PlayerState는 리플리케이트 된다고한다.
- PlayerController가 중심이 되어 서버에 저장되어야할것들은 PlayerState로 넘겨주는게 맞을듯.
#. GameInstance
- 어느 맵에서나 존재하기 때문에, 전역 변수와 같이 사용할 수 있다.
- UI등을 GameInstance에서 레퍼런스로 가지고 있다면, 쉽게 호출할 수 있음.
- 클라이언트에서 호출해도 된다.
- 변수들은 클라이언트 -> 서버 로 공유되는듯. 클라-클라 끼리는 값이 다름.
'🏔️ Unreal > Develop' 카테고리의 다른 글
[개발자] HTC VIVE : Steam VR 미러링 화면 16:9 사이즈로 만들기 (0) | 2017.04.24 |
---|---|
언리얼 4.14 -> 4.15 로 프로젝트 올린 후 라이트가 어두워지는 현상 (0) | 2017.04.24 |
언리얼 프로젝트 이사하기 (0) | 2017.03.14 |
언리얼 네트워킹 학습 (3) | 2017.02.23 |
언리얼 로컬라이징 프로세스 (Unreal localization) (0) | 2017.02.21 |