UnrealEngine

UnrealEngine 5 Subsystem

Ms_Tony 2023. 8. 12. 17:23

 

Unreal Engine에서 Subsystem은 엔진의 기능을 확장하고 유연성을 제공하는 중요한 요소입니다. 이번 글에서는 Subsystem의 개념과 사용 방법에 대해 알아보겠습니다.

  1. Subsystem이란?
    • Subsystem은 Unreal Engine에서 엔진의 기능을 모듈화하고 확장하기 위한 개념입니다.
    • 각 Subsystem은 특정 기능을 담당하며, 이를 통해 사용자가 엔진 클래스를 수정하거나 오버라이드하지 않고도 기능을 확장할 수 있습니다.
  2. 사전적 의미
    • 시스템을 구성하는 요소의 하나로, 그 자체로도 시스템을 형상하고 있는 것
    • 시스템이 커지면 내부를 다시 작은 시스템으로 나누어 생각하도록 하여, 설계나 관리에도 용이할 수 있도록 하는 개념
  3. Subsystem의 구조
    • Subsystem은 C++ 클래스로 구현되며, FSubsystemCollectionBase를 상속받습니다.
    • 각 Subsystem은 엔진의 원본 시스템에서 관리되고 초기화됩니다.
      • 자동으로 인스턴스가 생성됩니다.
      • 클래스를 인스턴스화 하기 위해 빌드나 코드, 메타 데이터 어디에도 작업하지 않아도 됩니다.
    • Subsystem은 FSubSystemCollection 컨테이너에서 관리되며, SubsystemClass는 TMap에 저장됩니다.
    • Subsystem은 타입에 따라 여러 개를 생성할 수 있습니다.
  4. Subsystem의 생명주기
    • Subsystem은 엔진이 시작될 때 초기화되고, 종료될 때 정리됩니다.
    • 초기화는 CDO(클래스 디폴트 오브젝트) 단계에서 호출되며, 생성 여부는 ShouldCreateSubsystem() 함수에 의해 결정됩니다.
    • 종료는 Subsystem이 더 이상 필요하지 않을 때 호출됩니다.
    • 어떤 Subsystem을 상속 받는지에따라 생명주기가 달라집니다.
  5. Subsystem의 종류
    • UGameInstanceSubsystem
    • ULocalPlayerSubsystem
    • UWorldSubsystem
    • UEngineSubsystem
    • UEditorSubsystem
  6. Subsystem의 활용
    • C++에서 Subsystem 호출: 각 원본 시스템에 내가 원하는 Subsystem이 있는지 찾아오는 방식을 사용합니다.
    • Blueprint에서 Subsystem 호출: 원하는 Subsystem 함수를 호출하기 위해 해당 Subsystem을 선택하고 원하는 Task를 생성하면 됩니다.
  7. Subsystem 사용 이유
    • 엔진 클래스 오버라이드를 피할 수 있어 프로그래밍 시간을 절약할 수 있습니다.
      • 언리얼 마켓 제공자가 Subsystem을 사용하면, 그것을 사용하는 유저가 엔진 클래스 오버라이드를 피할 수 있다.
      • 제공하고자 하는 기능이 GameInstance, GameMode에 추가적인 로직이 필요하다면, 액터를 제공하는 것만으로는 충분치 않음.
      • 가이드 문서 량의 증대를 야기함.
      • 기능 분리 가능
    • 사용자에게 친숙한 방식으로 기능에 접근할 수 있도록 합니다.
    • 코드베이스의 모듈성과 일관성을 제공합니다.
    • 이미 바쁜 클래스에 API 추가를 피할 수 있습니다.
    • 에디터 스크립팅이나 테스트 코드 작성을 위해 Python Script에서 엑세스 할 수 있습니다.
  8. Subsystem의 단점
    • UnrealEngine의 Lifetime을 잘 이해하고 사용해야 합니다.
    • 클래스에 접근하는 스타일을 다시 한번 상기해야 합니다.
      • XXXManager::GetInstance().~~~ 불가.
  9. 정리
    • Subsystem은 Unreal Engine에서 기능을 모듈화하고 확장하기 위한 중요한 요소입니다.
    • Subsystem은 엔진의 기능을 수정하거나 오버라이드하지 않고도 확장할 수 있는 유연성을 제공합니다.

마무리: Subsystem은 Unreal Engine에서 강력한 기능 확장 도구로 활용될 수 있습니다. Unreal Engine 프로젝트에서 Subsystem을 적극적으로 활용하여 생산성을 높이고 코드의 일관성을 유지하는 데 도움이 될 것입니다.

 

 

SlideShare : https://www.slideshare.net/TonyCms/unrealsubsystempptx

 

Unreal_SubSystem.pptx

DevRookie SubSystem 2023.07.07 By TonyChoiMS 소개 SubSystem SubSystem 생성 및 Lifetime SubSystem 사용하는 이유 Index 01 02 03 04 - UnrealEngine에서 제공하는 System. - 4.24 부터...

www.slideshare.net

참고 자료
1. 언리얼 공식 문서

 

프로그래밍 서브시스템

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

docs.unrealengine.com

2. Unreal Insight

3. 해외 블로그 

'UnrealEngine' 카테고리의 다른 글

GameplayTag  (0) 2023.02.06
GameAbilitySystem 기본  (0) 2023.01.01
Actor 개념 정리  (0) 2022.12.18