inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해

6강 액터 리플리케이션 빈도와 연관성

갑자기 액터 사이의 연관성에 관련된 개념이 좀 헷갈립니다

424

themoon007

작성한 질문수 98

0

예전에 part1에서 배웠었던 컴포지션의 outer / SubObject 랑

Owner 랑 Attachment의 정의가 좀 헷갈려진 것 같습니다.....

 

Outer/SubObject의 관계는 UObject 사이에서 변수로 참조중인지 아닌지로 클래스 수명에 관련된 걸로 이해하고 있었지만,

Actor로 넘어와선 Actor 사이의 Owner가 좀 헷갈리기 시작했는데요. ...

 

Actor에서 부턴 Component 개념도 생겨서 attachment라는게 또 새로 나오는데, 여기서 attachment로 연결된 Actor 사이를 Owner라고 봐도 되나요?

unreal-engine 네트워크 언리얼-c++

답변 1

0

이득우

Owner라는 것은 액터에 설정된 다른 액터를 참조할 수 있는 변수인데, 이를 활용해 액터와 액터 사이의 소유 관계를 설정할 수 있습니다.
싱글 플레이에서 Owner의 개념은 딱 어떻게 해야한다라는 명확한 규칙은 없고 개발자가 설정하기 나름입니다.
다만 네트웍 멀티플레이어에서 액터 리플리케이션이 발생하기 위해서는 최상단 오너(Top Owner)가 폰(ViewTarget)이나 플레이어 컨트롤러(RealViewer)가 되어야 됩니다. 안그러면 리플리케이션 범주에서 벗어나 네트웍 동기화에서 제외됩니다.
강의에서 설명하는 엔진 소스 코드를 첨부합니다.

if (bAlwaysRelevant || RealViewer == Controller || IsOwnedBy(ViewTarget) || IsOwnedBy(RealViewer) || this == ViewTarget || ViewTarget == GetInstigator()
	|| IsBasedOnActor(ViewTarget) || (ViewTarget && ViewTarget->IsBasedOnActor(this)))
{
	return true;
}

위의 코드에서 IsOwnedBy 함수의 결과가 네트웍 배포를 결정한다고 볼 수 있는데, 이 함수는 다음과 같이 선언되어 있습니다.

/** See if this actor is owned by TestOwner. */
inline bool IsOwnedBy( const AActor* TestOwner ) const
{
	for( const AActor* Arg=this; Arg; Arg=Arg->Owner )
	{
		if( Arg == TestOwner )
			return true;
	}
	return false;
}

 

5.6버전 Networking Insights 실행안됨 문제에 관하여

0

30

1

8강 중간, 분수대의 SetOwner 에 대해 궁금합니다.

0

77

2

플레이어(Actor) 로 (리슨)서버에서 생성 되나요?

0

99

2

2강) HandleBeginPlay 의 역활이 궁금합니다.

-1

72

2

3강 중간, 모드 로그로 찍을 시 스탠드얼론이 안찍힙니다.

1

76

2

CompressedFlag 질문

0

58

2

10강까지 머리 위 체력바가 표시가 안됩니다.

0

110

3

10강까지 머리 위 체력바가 표시가 안됩니다.

0

95

2

16:44 부분에서 질문이 있습니다.

0

104

2

12:50 NetMulticast RPC 커넥션 관려하여 질문이 있습니다.

0

121

2

github 3-5 파트 프로젝트에서 컴파일 에러가 발생합니다.

0

116

3

언리얼 인사이트 5.6버전 networking insights 가 뜨지 않습니다.

0

164

3

Insight 사용이 안되어서 문의 드립니다!

0

131

2

하위 레벨...?? High Level 말씀하신거죠..??

0

147

1

CompressedFlags를 이용한 InputThrottle, InputSteering 전달 방법 질문

0

191

1

조건식 프로퍼티 리플리케이션 질문

0

144

2

ArenaBattle에 Log추가하는 곳에 에러가 나타나 질문 드립니다.

0

160

2

7강에서 DORM_Initial 안됨

0

128

3

안녕하세요 강의 내용 정리에 관련해서 질문있어요

0

131

2

캐릭터 클래스의 mesh 관련

0

133

2

3파트 6강 분수대 로테이트에 문제가 생겼습니다.

0

131

3

클라이언트의 오너십 설정에 대해서 궁금합니다.

0

201

3

프로퍼티 리플리케이트 동기화 보장 개념.

0

225

2

결국엔 액터 기본함수들은 어디든 똑같이 일단 실행되는건가요?

0

93

2