나만의 작은 도서관

[TIL][C++] 250911 MMO 서버 개발 99일차: [언리얼] 간단히 알아보는 서브시스템을 사용하는 이유 본문

Today I Learn

[TIL][C++] 250911 MMO 서버 개발 99일차: [언리얼] 간단히 알아보는 서브시스템을 사용하는 이유

pledge24 2025. 9. 11. 23:13
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. 

[언리얼] 간단히 알아보는 서브시스템을 사용하는 이유

  • 생명주기 공유
    • 서브시스템(ex. UGameInstanceSubsystem, UWorldSubsystem, UEngineSubsystem)은 상위 시스템의 생명주기에 맞춰 생성/소멸된다. 이러한 특징은 서브시스템 별도로 new/delete를 하면서 메모리 관리를 해줄 필요가 없이 언리얼이 자동으로 관리해 준다는 장점이 있다.
  • 책임 분리와 응집도
    • 사실 모든 기능을 GameInstance에 밀어넣고 GameInstance의 서브시스템을 만들지 않아도 원하는 기능들을 돌리는 데엔 문제가 없다. 하지만 프로젝트의 규모가 커지면 커질수록 관리가 어려워지고 응집도가 떨어진다.
    • 하지만 서브시스템을 사용한다면 기능 단위로 쪼개 관리할 수 있게 되므로 보다 쉽게 코드를 관리할 수 있게 된다.
      • ex. 인벤토리 subsystem, 세이브 관리 subsystem 등
  • 싱글톤 역할
    • 서브시스템들은 엔진 차원에서 전역적으로 접근할 수 있다. 즉, 서브시스템을 사용하면 별도의 싱글톤 패턴을 직접 구현할 필요가 없고, 멀티월드 환경(ex. PIE 여러 개 실행 등)에서도 올바른 콘텍스트에 맞게 서브시스템 인스턴스가 자동으로 제공된다.
  • 확장성과 의존성 관리
    • 팀원마다 다르게 별도 기능을 추가하고 싶은 상황에서 서브시스템은 유용하게 사용된다. 그저 게임 인스턴스에 접근하여 수정할 필요 없이 서브시스템을 독립적으로 추가만 하면 되기 때문.
    • 이러한 서브시스템의 특징은 확장성이 좋아 플러그인 제작 시에도 자주 활용된다.