LeeTaes 공부노트

[Unreal Engine 5] GameInstanceSubsystem 본문

Game Programming/Unreal Engine5

[Unreal Engine 5] GameInstanceSubsystem

리태s 2024. 7. 17. 17:00
728x90
반응형

개요

멀티플레이어 게임을 제작하기 위한 세션 관리를 어디서 할지 고민 중에 GameInstanceSubsystem에서 처리하면 좋다는 의견을 받아 GameInstanceSubsystem이 정확하게 어떤 것인지에 대해 정리해보았습니다.


Subsystem, GameInstanceSubsystem

언리얼 엔진서브시스템은 수명이 관리되는 자동 인스턴싱 클래스입니다. 클래스는 사용하기 쉬운 확장점을 제공하여, 프로그래머는 블루프린트 및 Python 을 바로 노출시킴과 동시에 복잡한 엔진 클래스 수정 또는 오버라이드를 피할 수 있습니다.

 

또한 자동으로 수명이 관리되기에 서브시스템은 플러그인을 만들 때 특히 유용합니다.

 

그 이유는 사용자는 플러그인을 게임에 추가하기만 하면 플러그인이 언제 인스턴싱 및 초기화될 지 정확히 알 수 있으며, 따라서 제공되는 API 및 기능을 사용하는데만 집중할 수 있기 때문입니다.

 

서브시스템종류는 다음과 같습니다.

 

서브시스템 중 GameInstanceSubsystem은 GameInstance와 관련된 다양한 기능을 확장하고 관리할 수 있도록 도와주는 클래스입니다.

 

주로 게임의 전역적인 상태 관리, 이벤트 처리, 리소스 관리 등의 기능을 수행하며, 멀티플레이어 게임에서 플레이어 간의 데이터 교환, 상호작용을 중개할 수 있습니다. 특히, 게임 인스턴스의 전역적인 플레이어 목록 관리, 접속 상태 추적 등을 통해 멀티플레이어 환경에서의 관리를 효과적으로 할 수 있습니다.


GameInstanceSubsystem 생명 주기

GameInstanceSubsystem 클래스를 부모로 하는 자식 클래스의 생명 주기는 다음과 같습니다.

  1. UGameInstance 생성 이후, UMyGamesSubsystem 라는 인스턴스 역시 생성됩니다.
  2. UGameInstance 초기화 시, 서브시스템에서 Initialize() 가 호출됩니다.
  3. UGameInstance 종료 시, 서브시스템에서 Deinitialize() 가 호출됩니다.
  4. 이 시점에서 서브시스템에 대한 참조가 삭제되고 더이상 참조가 없으면 서브시스템은 가비지 컬렉션 됩니다.

즉, GameInstanceSubsystemGameInstance는 아니지만 GameInstance와 유사한 수명을 가지기 때문에 게임 전반에서 필요한 기능을 담당해 수행하는데 적합합니다.

 

추가적으로 다음과 같이 GameInstance를 통해서도 접근할 수 있습니다.

UMyGameSubsystem* MySubsystem = GameInstance->GetSubsystem<UMyGameSubsystem>();

참고 자료

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/Subsystems/

 

프로그래밍 서브시스템

언리얼 엔진 4 의 프로그래밍 서브시스템 개요입니다.

docs.unrealengine.com

 

728x90
반응형