멀티플레이 환경에서 여러 명의 클라이언트가 하나의 GameInstance, 하나의 Subsystem을 공유하는 건가?
아래 유튜브 영상을 보다보면, 프로젝트 Init 단계에서 GameInstance가 NewObject로 생성되는 것을 알 수 있다.
GameInstance = NewObject<UGameInstance>(this, GameInstanceClass);
즉,
- 게임인스턴스는 게임엔진이 시작될 때부터 종료할 때까지 존재한다
- 서버와 클라이언트에 각각 하나의 게임인스턴스가 있고 서로 통신하지는 않는다
- 현재 게임세션의 밖에 존재하며 레벨로드에 영향을 받지 않은 상태로 게임을 구성한다
- 영구적인 정보를 저장할 수 있는 적합한 장소이다
- 클라 당 GameInstance 1개,Subsystem 1개를 가진다.
- 게임이 시작될 때 똑같은 Subsystem을 만든다
- 각자가 각자의 GameInstance, Subsystem을 가진다.
- 클라이언트 당 1개씩 만들어지는 것이다 (멀티플레이 환경에서도)
- 공유하는 건 게임모드!!
참고 : The Unreal Engine Game Framework: From int main() to BeginPlay
