• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

AGameState는 어떻게 Connection을 가지고 통신을 하는지 궁금합니다.

23.10.18 01:40 작성 23.10.18 01:42 수정 조회수 290

0

3강 강의를 듣다가 궁금하게 생겼습니다.

일단 저는 다음과 같이 이해하였습니다.

'어떤 Actor가 통신을 하려면 Owner를 따라가봤을때 Connection을 소유해야 하며, 일반적으로 Actor 통신 시 Connection을 가지는 PlayerController의 Connection을 이용하여 통신을 진행한다.'

 

통신에는 RPC, Property Replicate가 속한다고 생각합니다.

 

그런데, 제가 AGameState에서 Replicate와 RPC를 사용했던 적이 있어서, 이건 어떻게 통신할까? 혹시 서버의 PlayerController가 Owner일까? 궁금했습니다.

그래서 다음과 같이 AGameState의 HandleBeginPlay에서 람다로 충분한 시간을 준 뒤 Owner를 출력해보았으나,

void AABGameState::HandleBeginPlay()
{
    AB_LOG(LogABNetwork, Log, TEXT("%s"), TEXT("Begin"));

    Super::HandleBeginPlay();

    AB_LOG(LogABNetwork, Log, TEXT("%s"), TEXT("End"));

    FTimerHandle handle;
    GetWorld()->GetTimerManager().SetTimer(handle, [this]()
    {
       AB_LOG(LogABNetwork, Log, TEXT("Owner : %s"), *Owner->GetName());
    }, 10.f, false);
}

Owner 접근 시 크래시가 나는것을 확인하였습니다.

 

그렇다면, AGameState는 어떻게 Connection을 사용할 수 있는 것인가요?

제가 잘못 이해한 것일까요?

특별한 Connection을 가지는 Actor가 따로 있나요?

아니면 AGameState가 자체적으로 Connection을 가지게 되나요?

혹시 이후 강의에 다루는데 제가 아직 3강까지 밖에 안 봐서 모르는 것일까요..?

답변 1

답변을 작성해보세요.

0

GameState와 PlayerState같은 특수한 액터는 AlwaysRelevant 속성이 true로 설정되어 있어서 Owner와 무관하게 언제나 연관성을 가지게 됩니다.
관련 내용은 이후 강의에서 설명합니다.

상병님의 프로필

상병

질문자

2023.10.18

답변 감사드립니다!

채널톡 아이콘