GameMode
-서버에서만 존재
-클라이언트가 알 필요가 없는 게임 관련 정보들을 관리
- 모든 요소들을 지정할수있다? (디테일창에서)
-ex) 아이템스폰?
GameInstance
-서버와 각 클라이언트마다 별도로 존재 하고 서로 통신하지않습니다.
-엔진 시작 시 생성되며, 종료될 때까지 소멸되지 않습니다.
-지속성 데이터를 저장하기에 좋은 곳
-ex) 레벨변경이 필요한데 데이터를 저장해놓고 싶을때
GameState
-서버와 클라이언트에 존재
-리플리케이티드 변수를 사용하여 모든 클라이언트에서
게임에 대한 데이터를 최신 상태로 유지할 수 있습니다
-멀티 플레이어어 게임에서 중요한 정보인 접속된 플레이어 리스트(PlayerState의 리스트)를 포함한다
PlayerState
-게임에 접속된 모든 플레이어에 대해 서버와 클라이언트 양쪽에 존재
-개별 Pawn 에 할당되지만, Pawn 과는 달리 소멸 및 리스폰되지 않습니다.
- 레벨 이동시 초기화..?
-------ex) 한 스테이지에서의 점수만 유지하려면 사용
Pawn (and Character, which inherits from Pawn)
-서버와 모든 클라이언트에 존재
-우리가 조작할 캐릭터--> 쉽게 다른 폰으로 전환할 수 있다
PlayerController
- 모든 클라이언트는 하나의 컨트롤러를 가짐
-서버는 모든 컨트롤러를 가짐
제가 설명하는것 보다 사이트를 모아놓는게 더 나은거 같아서... 올려놓겠습니다!
(공식문서가 저보다 나은거 같아서..)
좌측에 있는 게임 흐름개요, 게임모드와 게임스테이트 등등 공식 문서에서 설명해주네요... 너무많나..?
멀티플레이어에서 필요한 모든것을 모아놓은거 같아요! 리플리케이션도 정리 잘되어있네요
이 글은 오래되긴 했는데 정리를 잘 해놓으신거 같아요!
다 몇번씩 더 정독 해야겠네요
여기부터는 제 생각!
제가 이해하기론 한 레벨에서만 놀꺼면 state들로 충분하지만
다른 레벨로 넘어가는순간 instance에 모든 액터 정보를 저장해주고 넘어간후
다시 state들에 저장해주는 형식? 이 될꺼 같네요
왜? instance만 사용하지않나?--> 서버랑 클라간의 통신이 안되서 그렇지 않나 싶네요
이건 아닐수도 있어요....
틀린 점이 있다면 댓 달아주세요!
추가될 내용이 있으면 추가해놓겠습니다!
댓글