네트워킹 인사이트 개요

네트워크 퍼포먼스 프로파일링 툴인 네트워킹 인사이트에 대한 개요

Windows
MacOS
Linux
Prerequisite Topics

This page assumes you have prior knowledge of the following topics. Please read them before proceeding.

언리얼 인사이트(Unreal Insights)에는 네트워킹 인사이트(Networking Insights)가 포함되어 네트워크 트래픽을 분석, 최적화, 디버깅할 수 있습니다. 사용자는 트레이스 정보를 기록하고 다음과 같은 기능으로 네트워크 동작을 시각화할 수 있습니다:

  • 네트워크 세션 기록 시, 볼 수 있는 머신을 표시하는 게임 인스턴스 제어

  • 발신/수신 데이터를 시각화하는 연결 모드 제어

  • 게임 도중에 전송 또는 수신되는 패킷 타임라인(및 크기)을 표시하는 패킷 개요(Packet Overview) 패널

  • 복제 오브젝트, 프로퍼티, 원격 함수 호출 등의 패킷 콘텐츠를 보여주는 패킷 콘텐츠(Packet Content) 패널

  • 선택한 패킷의 트레이스 이벤트가 표시되는 넷 통계(제외되거나(exclusive) 포함된(inclusive) 패킷의 총/최대/평균 크기에 대한 통계 포함)

NetworkingInsightsHero.png

구성

계속 진행하려면 먼저 Unreal Insights 를 설치합니다.

데이터를 분석하려면 트레이스 정보를 기록할 수 있도록 언리얼 인사이트를 활성화합니다. 트레이스 레코더가 활성화되면 다음 명령줄 옵션으로 게임 인스턴스를 시작합니다:

-NetTrace=[VerbosityLevel] -trace=net

'VerbosityLevel'은 0보다 큰 값으로 설정해야 합니다. 예를 들어 게임 인스턴스가 '-NetTrace=1'로 시작하는 경우 언리얼 인사이트는 그 안에서 해당 세션을 연 다음, 분석할 네트워크 트레이스 데이터를 수집하고 보고합니다.

에디터는 트레이스 데이터를 처리하는 별도의 데이터 저장소를 실행합니다. 즉, 에디터에서 실행 중에 네트워크 트레이스 데이터를 수집하려면 사용자가 트레이스호스트를 지정해야만 합니다. 트레이스호스트를 지정하려면 다음을 사용합니다: '-NetTrace=1 -tracehost=localhost -trace=net'

네트워킹 인사이트 창

네트워킹 인사이트 창에서 네트워킹 세션 데이터를 볼 수 있습니다.

네트워킹 인사이트를 효율적으로 탐색하는 방법을 알아보려면 언리얼 인사이트 레퍼런스 |hpp(을,를) 참조하세요.

NetworkInsightsOverview.png

네트워킹 인사이트 창에는 패킷 개요(Packet Overview) 패널(1), 패킷 콘텐츠(Packet Content) 패널(2), 넷 통계(Net Stats) 패널(3)과 연결 선택(Connection Selection) 패널(4)이 있습니다.

패킷 개요 패널

패킷 개요 패널에는 수신 또는 전송된 모든 패킷의 크기(비트)를 보여주는 막대 그래프가 표시됩니다. 이는 추가적인 조사가 필요한 대량 패킷을 식별하는 데 유용합니다. 막대를 좌클릭하여 패킷을 선택합니다.

각 패킷의 보고 크기는 압축 전 크기이므로 실제 데이터를 전송할 때에는 보고된 크기보다 더 작아질 수 있습니다.

PacketOverviewPanel.png

패킷 위에 마우스를 올려 정보 표시

여러 개의 패킷을 선택하려면 초기 패킷을 클릭하여 선택한 다음, Shift 키를 누른 상태에서 다른 패킷을 클릭합니다. 드롭된 패킷은 빨간색으로 표시됩니다.

패킷 콘텐츠 패널

패킷 콘텐츠 패널에는 현재 선택된 패킷의 실제 콘텐츠가 표시됩니다. 패킷의 콘텐츠는 계층적 이벤트 그래프로 표시되며, 왼쪽에 0비트가 표시된 상태로 시작됩니다. 이는 각 패킷의 데이터 콘텐츠를 프로퍼티 레벨까지 조사하는 주요 툴입니다.

PacketContentPanel.png

첫 번째 레벨에는 패킷에 포함된 번치(bunch)가 포함됩니다. 각 번치는 번치가 속한 채널에 맞춰 이름이 정해집니다. 번치를 보고할 때, 보고한 번치에 디버그 이름이 있으면 해당되는 경우 추가적인 컨텍스트를 위해 '채널 이름(channelname)' 대신 '디버그 이름(debugname)'이 사용됩니다. 두 번째 레벨에는 보통 번치에 포함된 복제 오브젝트가 표시됩니다. 이벤트에 NetId(NetGUID)가 할당된 경우 해당 ID도 표시됩니다. 이벤트 위에 마우스를 올리면 모든 이벤트 정보가 표시됩니다. 이벤트 계층구조 밑으로 내려가면 리플리케이티드 프로퍼티(작성한 비트 수 포함)가 표시됩니다.

패널에는 패킷을 찾거나 특정 NetId에 속한 이벤트를 찾는 제어 기능이 있습니다.

연결 드롭다운 리스트

패킷 개요 패널 상단에는 표시할 데이터를 사용자가 선택할 수 있게 하는 제어 기능이 있습니다.

ConnectionDropdownLists.png

드롭다운 리스트는 패킷 콘텐츠 패널에서 사용할 수 있습니다:

드롭다운 리스트

설명

게임 인스턴스(Game Instance)

레코딩 세션 중에 관찰된 각각의 고유한 NetDriver에 생성된 게임 인스턴스를 표시합니다. 예를 들어 PIE를 사용할 때는 서버와 각 클라이언트마다 별도의 인스턴스가 있습니다.

연결(Connection)

이 드롭다운은 특정 연결을 선택하여, 선택된 게임 인스턴스의 세션 중에 관찰된 모든 연결을 표시합니다.

연결 모드(Connection Mode)

이 드롭다운은 수신/발신 데이터의 시각화 여부를 제어합니다.

넷 통계 패널

넷 통계 패널에는 패킷 개요 패널에서 선택한 패킷 범위의 모든 트레이스 이벤트가 나열됩니다.

NetStatsPanel.png

레벨을 기준으로 이벤트를 그룹화한 넷 통계 패널

선택한 범위에 따라 데이터를 집계하는 방식 외에, 활성 열에 있는 값의 오름차순/내림차순으로 리스트를 정렬할 수도 있습니다. 리스트의 아무 곳이나 우클릭하여 정렬 순서를 변경하거나 열을 활성화 또는 비활성화할 수 있습니다. 다음과 같은 열이 제공됩니다:

  • 타입

  • 레벨

  • 인스턴스 수

  • 총 포괄적 크기(비트)

  • 최대 포괄적 크기(비트)

  • 총 배타적 크기(비트)

  • 최대 배타적 크기(비트)

이벤트에 이름 필터를 적용하려면 '넷 이벤트 또는 그룹 검색(search net events or groups)' 필드를 사용합니다. 사용자는 다음과 같은 이벤트 타입에 따라 그룹화할 수 있습니다:

  • 레벨

  • 플랫

  • 이름

레벨로 그룹화하면 같은 이름이 여러 레벨에 나타나므로 사용자가 데이터를 이해하기가 더욱 쉬워집니다. 다음 테이블은 이러한 레벨을 설명합니다:

레벨

설명

0

일반적으로 채널 이름으로 모든 번치를 표시하는 채널 정보입니다.

1

복제 오브젝트(액터)로, 이 레벨에서 대부분의 이벤트는 시리얼라이즈된 오브젝트를 표시합니다.

2

프로퍼티 리플리케이션에서 또는 RPC에서 시작된 이벤트를 보고합니다.

3

프로퍼티가 시리얼라이즈될 때 이벤트를 보고합니다.

4

프로퍼티, 어레이 콘텐츠 등이 시리얼라이즈될 때 추가적인 이벤트를 보고합니다.

넷 통계 패널에는 선택 범위에 데이터가 없는 이벤트 타입을 필터로 걸러내는 !0 토글이 있습니다.

예시 데이터

네트워크 패킷 콘텐츠를 추적하는 매크로에 대한 정보는 언리얼 인사이트 레퍼런스 에서 확인할 수 있습니다.

네트워킹 인사이트가 시각화한 데이터의 이해도를 높이고자 다음 예시를 살펴보겠습니다:

복제 오브젝트(Replicated Object)

ReplicatedObjects.png

새 액터인 ReplicationGraphDebugActor, NetGUID 10의 초기 리플리케이션입니다.

번치에 새 액터가 포함되기 전엔, NetGUIDS와 같이 새 액터에서 익스포트된 모든 레퍼런스를 포함하는 NetGUID 번치가 있습니다.

RPC

RPCs.png

ClientAckGoodMove라는 이름의 이 RPC는 PlayerPawn_C with NetGUID 14를 타기팅합니다.

GUID를 매핑해야 합니다.

스플릿 번치(Split Bunch)

첫 번째 파트와 함께 스플릿 번치 보고서를 전송할 때 생성된 이벤트 데이터입니다. 스플릿 번치를 수신할 때는 파트들이 먼저 보고되고, 모든 파트들이 수신되면 최종 파트를 사용하여 이벤트를 보고합니다.

SplitBunches_1.png

이는 스플릿 발신 번치입니다. 번치 안의 이벤트는 번치보다 큽니다.

다음 몇 개의 패킷은 다음과 같은 형식을 취합니다:

SplitBunches_2.png

수신 분할 번치는 정반대의 패턴을 보여줍니다. 즉, 마지막 부분적 번치를 사용하여 이벤트를 보고합니다.

서브오브젝트(SubObject)

SubObjects.png

이는 SubObject 예시입니다. 여기서 BotPawn_C 이후의 두 번째 액터는 같은 번치를 공유합니다.

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback