[25.05.09] :: 가디언 앤 시커 프로젝트 02

chooha·2025년 5월 9일

가디언앤시커

목록 보기
2/25

ArcaneBoard를 어떻게 구현할지

원래는 Actor 컴포넌트로 캐릭터에 붙일 생각을 했는데, 그럼 캐릭터의 생명주기를 따라가서 안될 것 같다는 생각을 함

그럼 어떻게 해야할까?

→ GameInstance Subsystem 을 쓴다면?

→ LocalPlayer Subsystem 을 쓴다면?

Subsystem 이란?

수명이 관리되는 자동 인스턴싱 클래스

즉, 프로그래머가 직접 인스턴스를 생성 및 관리하지 않아도 엔진이 알아서 인스턴싱하고 생성 및 소멸을 관리한다는 것

Subsystem을 사용하는 이유

  • 이미 존재하는 기능을 가져와서 사용하기 때문에 엔진 오버라이드를 피할 수 있음
  • API 추가를 피할 수 있음
  • Subsystem 기능이 블루프린트에 자동 노출되고 블루 프린트로 Subsystem을 액세스 할 수 있

UGameInstanceSubsystem

UGameInstaneSubsystem을 상속한 UMyGameInstanceSubsystem을 구현했다면

  • UGameInstance 생성 이후, UMyGameInstanceSubsystem 인스턴스 역시 생성됨
  • UGameInstance 초기화 시, 서브시스템에서 Initialize()가 호출됨
  • UGameInstance 종료 시, 서브시스템에서 Deinitialize()가 호출됨
  • 서브시스템에 대한 참조가 삭제되고 더 이상 참조가 없으면 서브시스템은 가비지 컬렉션 됨

게임 전체적으로 공유되어야 할 땐 UGameInstance를 사용하고, 특정 기능만을 포함할 땐 UGameInstanceSubsystem을 사용하면 좋을 듯

ULocalPlayerSubsystem

  • 특정 로컬 플레이어와 연결된 기능을 구현하는 데 사용됨
  • 로컬 플레이어 객체가 생성될 때 함께 생성되고, 플레이어가 게임을 종료하거나 로그아웃할 때까지 유지됨
  • 레벨 전환이 발생해도 계속 유지
  • 각 로컬 플레이어마다 고유한 인스턴스 존재
GameInstance SubsystemLocalPlayer Subsystem
게임 전체에 걸쳐 하나의 인스턴스각 로컬 플레어어마다 인스턴스
게임 시작부터 종료까지 유지플레이어 접속부터 로그아웃까지 유지
게임 전체 상태 관리에 적합플레이어 별 상태 관리에 적합
모든 플레이어가 공유하는 데이터/시스템개별 플레이어에 특화된 데이터/시스템
서버와 클라이언트 모두에서 접근 가능클라이언트 측에서만 접근 가능

결론 : LocalPlayer Subsystem으로 룬 시스템을 구현해야 할 듯

0개의 댓글