[Unreal Engine 5] GameInstanceSubsystem

2024. 7. 17. 17:00·Game Programming/Unreal Engine
728x90
반응형

개요

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


Subsystem, GameInstanceSubsystem

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

 

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

 

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

 

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

 

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

 

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


GameInstanceSubsystem 생명 주기

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

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

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

 

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

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

참고 자료

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

 

프로그래밍 서브시스템

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

docs.unrealengine.com

 

728x90
반응형
저작자표시 비영리 변경금지

'Game Programming > Unreal Engine' 카테고리의 다른 글

[Unreal Engine] DataAsset, Lazy Loading  (0) 2024.10.28
[Unreal Engine 5] AI Controller  (0) 2024.10.01
[Unreal Engine 5] FABRIK IK  (0) 2024.08.25
[Unreal Engine] 리플렉션 시스템, CDO  (0) 2024.07.26
[Unreal Engine 5] 위젯 애니메이션 (C++)  (0) 2024.07.01
'Game Programming/Unreal Engine' 카테고리의 다른 글
  • [Unreal Engine 5] AI Controller
  • [Unreal Engine 5] FABRIK IK
  • [Unreal Engine] 리플렉션 시스템, CDO
  • [Unreal Engine 5] 위젯 애니메이션 (C++)
리태s
리태s
게임 클라이언트 프로그래머 직무를 준비하며 공부한 내용을 정리한 블로그입니다.
    반응형
    250x250
  • 리태s
    LeeTaes 공부노트
    리태s
  • 전체
    오늘
    어제
    • Home (165)
      • 프로젝트 (20)
        • Isaac 3D (5)
        • TimelessAdventure (13)
        • FruitsPuzzle (2)
      • Game Programming (25)
        • C# (8)
        • Unity Engine (6)
        • Unreal Engine (8)
        • UE_Multiplayer (3)
      • 코딩테스트 (111)
        • 프로그래머스 (Lv. 0) (27)
        • 프로그래머스 (Lv. 1) (31)
        • 프로그래머스 (Lv. 2) (21)
        • 백준 (Study) (29)
        • 알고리즘 (3)
      • CS지식 (7)
        • 운영체제 (7)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    c#
    2019 kakao
    코딩테스트
    timelessadventure
    후기
    2022 kakao
    Summer/Winter Coding
    project t.a develop
    fruitspuzzle
    delegate
    2018 kakao
    프로그래머스
    unrealengine
    Algorithm
    sesac
    issac3d
    C++
    백준
    pcce 기출문제
    프로세스
    CS지식
    Unreal Engine
    fsoftobjectpath
    청년취업사관학교
    tsoftobjectptr
    dataasset
    ai controller
    프로젝트
    unity
    구현
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
리태s
[Unreal Engine 5] GameInstanceSubsystem
상단으로

티스토리툴바