인프런 커뮤니티 질문&답변

tmvldjtm1018님의 프로필 이미지
tmvldjtm1018

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동

마무리

SubSystem이 궁금합니다.

작성

·

43

0

갑자기 헷갈려서 질문을 드려봅니다.
GetWorldNetwork에서
[ 해당월드에 SubGameInstance의 Session을 통해 비교합니다.] 라는 말은
월드마다 SubGameInstance이 별도로 생성하고 관리가 된다는 뜻인가요?
SubGameInstance는 단순히 GameInstance기능 + GC +
내가 추가적으로 넣고싶은 기능을 위해서 쓰는것으로 알고있는데 제가 모르는 부분이 뭔지 궁금해서 남겨봅니다..ㅠㅠㅠㅠ

답변 2

0

민규이님의 프로필 이미지
민규이
지식공유자

안녕하세요, 루키스팀 조교 입니다.
SubSystem을 간단히 설명하자면, 싱글톤과 비슷하게 동작한다고 생각하시면 됩니다. 다만, 언리얼 엔진에서 지정한 특정 생명주기에 따라 관리된다는 차이가 있습니다.

예를 들어, WorldSubsystem은 해당 월드가 존재하는 동안에만 유지되므로, 월드와 함께 생성되고 소멸됩니다.

한편, 네트워크 관련 SubSystem처럼 게임을 끄기 전까지 지속되어야 하는 기능이 있다면, GameInstance를 기반으로 하는 GameInstanceSubsystem을 사용하는 것이 적절합니다. GameInstance는 게임 전체의 생명주기에 맞춰 지속되므로, 네트워크 관련 기능을 유지하기에 적합합니다.

그래서 예시코드에서 [ 해당월드에 SubGameInstance의 Session을 통해 비교합니다.] 라는 말은 PIE에서 2명을 실행했다면 GameInstanceSubsystem도 2개가 됩니다.
GameInstance는 기본적으로 PIE와 동일하게 생성되고 파괴됩니다.

언리얼의 다양한 테스트를 편하게 하기 위해서는 PIE 동작 공부해보시면 좋습니다.

0

안녕하세요, 인프런 AI 인턴입니다.

SubSystem과 관련하여 헷갈리실 수 있는 점 이해합니다. SubSystem은 일반적으로 언리얼 엔진에서 고유의 기능을 수행하기 위해 사용하는 시스템입니다. 이미 알고 계신 것처럼 SubGameInstance는 GameInstance를 상속받아 추가적인 기능을 구현할 수 있는 기회를 제공합니다.

먼저 “GetWorldNetwork에서 [해당 월드에 SubGameInstance의 Session을 통해 비교합니다.]“라는 표현은, 특정 월드에 대해 SubGameInstance의 세션 정보를 활용하여 네트워크 관련 연산을 수행한다는 의미로 이해할 수 있을 것입니다. 언리얼 엔진에서는 보통 하나의 GameInstance가 전체 게임 동안 존재하면서 여러 월드나 레벨 사이의 전환을 관리합니다. 따라서, 월드마다 SubGameInstance가 별도로 생성되지 않고, 단일 SubGameInstance가 여러 월드에서 통합적으로 사용될 수 있습니다.

SubGameInstance는 말씀하신 대로, 기본적인 GameInstance의 기능을 넘어서 추가적인 데이터를 저장하거나, 특정 초기화 작업을 수행하는 데 사용됩니다. 예를 들어, 네트워크 초기화나 특정 게임 내 글로벌 데이터를 관리하는 데 활용될 수 있습니다.

관련된 내용은 아래 링크에서 더 알아보실 수 있습니다:

추가적으로 유사한 질문이 발생한 경우, 지식공유자께서 이전에 제공한 내용을 참조하는 것도 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

tmvldjtm1018님의 프로필 이미지
tmvldjtm1018

작성한 질문수

질문하기