언리얼 문서 (https://docs.unrealengine.com/4.26/ko/InteractiveExperiences/Networking/Blueprints/)에 있는 내용을 요약
GameInstance
- 엔진 세션 도중에 유일하게 존재.
- 서버와 클라이언트마다 별도의 게임 인스턴스가 존재하고, 서로 영향을 끼치지 않음
- 주로 클라이언트, 계정에 관련된 지속성 데이터를 저장하기에 좋음
GameMode
- 서버에만 존재
- 게임의 기반 규칙 관련 정보 저장
GameState
- 서버와 클라이언트 모두에 졵.
- 서버는 GameState 상의 리플리케이티드 변수를 사용하여 모든 클라이언트에서 게임에 대한 데이터를 최신 상태로 유지 가능 (ex : 야구 게임에서 각 팀의 현재 점수와 현재 이닝)
PlayerController
- 각 클라이언트마다 존재.
- 서버에만 리플리케이트되므로 서버는 모든 플레이어에 대한 PlayerController를 갖고 있고, 로컬 클라이언트는 로컬 플레이어에 대한 PlayerController만 가짐
- 클라이언트가 접속되어 있는 도중에는 PlayerController가 존재하여 Pawn에 할당되지만 Pawn과 같이 소멸되거나 리스폰되지는 않음. 다른 클라이언트에 리플리케이트할 필요 없는 클라이언트와 서버 사이 통신에 적합
PlayerState
- 게임에 접속된 모든 플레이어에 대해 서버와 클라이언트 양쪽에 존재
- PlayerController와 달리 다른 클라이언트들이 모두 알아야하는 정보를 저장하는 데에 적합
Pawn
- 서버와 모든 클라이언트에 존재하며, 리플리케이티드 변수 및 이벤트를 가짐
- PlayerController && PlayerState || Pawn
- PlayerController && PlayerState : 플레이어가 접속한 시간동안 게임이 새 레벨을 로드하지 않는 한 계속 존재
- Pawn : 소멸되고 다시 새로운 Pawn으로 할당될 수 있음
Actor Replication
- Replicates 옵션이 True인 액터는 서버에서 서버에 연결된 클라이언트로 자동으로 동기화됨
- 보통 서버 -> 클라이언트로만 리플리케이트 되며, 클라이언트에서 서버로 리플리케이트되지는 않음.
- Run on server 이벤트를 사용하면 클라이언트 -> 서버로도 리플리케이트 가능하긴 함
Authority
변수
- 액터의 변수에 대한 디테일 패널에 리플리케이션 드롭다운이 있어 변수 리플리케이션 방법 조정 가능
스폰 및 소멸
- 리플리케이트되는 액터가 서버에 스폰되면 클라이언트에 통신해 서버에서도 액터 사본을 스폰하지만, 일반적으로는 리플리케이션이 클라이언트에서 서버로 이루어지지 않기 때문에 새로 스폰되는 액터는 해당 클라이언트에만 존재
- 해당 액터를 스폰하는 클라이언트는 해당 액터에 대한 authority를 가짐
- 게임플레이에 영향을 끼치지 않는 경우에만 유용
- 소멸되는 경우에도 마찬가지
Event Replication