네트워크 프로파일러(Network Profiler) 는 게임이 실행될 때 언리얼 엔진 에서 기록된 네트워크 트래픽 및 퍼포먼스 정보를 표시하는 데 사용되는 독립형 툴입니다. 이 툴을 사용하면 개별 액터, 원격 프로시저 호출(Remote Procedure Call, RPC) 및 프로퍼티가 전체 대역폭에 얼마나 영향을 미치는지 확인할 수 있기 때문에 멀티플레이 게임에서 비정상적으로 높은 대역폭을 사용하는 구간을 식별하는 데 유용합니다
프로파일링 세션 기록
네트워크 프로파일러를 사용하기 전에 분석할 데이터를 기록해야 합니다. 이를 위해서는 통계 트래킹이 활성화된 엔진 버전을 사용해야 합니다. 일반적으로 이는 디버그 빌드를 사용하거나, 비디버그 환경설정인 경우 에디터 빌드를 사용해야 한다는 것을 의미합니다. 좀 더 구체적으로는 엔진이 0이 아닌 값으로 정의된 STATS 매크로를 사용하여 컴파일되어야 합니다.
통계 트래킹에 대한 자세한 내용은 통계 명령 문서를 참고하세요.
명령줄 실행인자 사용
엔진 스타트 업과 동시에 기록하려면 networkprofiler=true 명령줄 실행인자를 전달하면 됩니다.
콘솔 명령 사용
런타임에서 다음 콘솔 명령을 사용하여 네트워크 프로파일러 데이터의 기록을 제어할 수도 있습니다.
netprofile: 기록을 토글합니다.netprofile enable: 이미 기록 중이 아니라면 기록을 시작합니다.netprofile disable: 현재 기록 중이라면 기록을 중단합니다.
파일 저장 위치
프로파일링 세션 도중 기록된 데이터 파일은 <PROJECT_DIRECTORY>/Saved/Profiling/<PROJECT_NAME>-<TIMESTAMP>.nprof 로 저장됩니다. 동일한 디렉터리에 NetworkProfiling.tmp 라는 파일이 있을 수도 있는데, 이는 엔진이 데이터를 수집하는 동안 사용하는 임시 파일입니다. 현재 프로파일링 세션이 중지되면 이 파일은 위 스키마에 따라 이름이 변경되며, 독립형 네트워크 프로파일러 툴에서 이를 열 수 있습니다.
서버 및 클라이언트 고려 사항
프로파일링 데이터는 클라이언트와 서버 양쪽에서 기록할 수 있습니다. 하지만 액터와 프로퍼티는 서버에서만 리플리케이트하므로 클라이언트에서 기록된 프로파일을 볼 때는 해당 클라이언트에서 전송된 RPC에 대한 세부 데이터만 볼 수 있습니다.
프로파일링 세션 보기
네트워크 프로파일러는 독립형 애플리케이션으로, <UNREAL_ENGINE_ROOT>/Engine/Binaries/DotNET/NetworkProfiler.exe 에 있습니다. 창 상단에서 Open File 버튼을 클릭하고 *.nprof 파일을 선택하여 내부에 있는 데이터를 봅니다.
유저 인터페이스
기본적으로 Chart, Filters, Details 탭이 선택됩니다. 이 섹션에서는 네트워크 프로파일러 유저 인터페이스를 살펴봅니다.
뷰 탭
뷰 탭 에서는 보려는 정보를 선택합니다.
Chart, Filters, Details
이 뷰는 가장 디테일합니다. 이 뷰 모드에서는 다음을 수행할 수 있습니다.
All Actors
All Actors 뷰 모드는 이 세션에서 프로파일링된 액터 전체에 대한 정보를 표시합니다. 이 탭은 All Properties, All RPCs 및 All Objects 탭과 기능이 유사하며 비슷한 정보를 표시합니다. 이러한 탭은 각각 전체 프로파일링 세션에서 해당 리플리케이션 데이터의 요약 정보를 보여줍니다. 이러한 각 탭에서 표시되는 데이터는 Chart, Filters, Details 탭의 차트에서 선택된 현재 프레임 또는 시간 범위의 영향을 받지 않습니다.
이러한 탭은 액터, 프로퍼티, RPC, 오브젝트 목록을 각각 표시합니다. Total Size 및 Average Size 열은 특정 항목에 필요했던 대역폭을 보여주며, Count 열은 특정 항목이 프로파일링 세션 동안 몇 번이나 리플리케이트되었는지 나타냅니다. 이 정보는 다음을 포함합니다.
| 헤더 이름 | 설명 |
|---|---|
| Actor Class | 이 행의 액터 클래스 이름입니다. |
| Average Time | 리플리케이트된 정보를 전송하는 데 걸린 평균 시간(ms)입니다. |
| Time | 리플리케이트된 정보를 전송하는 데 걸린 총 시간(ms)입니다. |
| Average Size | 리플리케이트된 정보의 평균 크기(Bits)입니다. |
| Average Size | 리플리케이트된 정보의 평균 크기(Bytes)입니다. |
| Count | 이 액터의 정보가 리플리케이트된 횟수입니다. |
| Total Size | 리플리케이트된 정보의 총 크기(KBytes)입니다. |
열 헤드를 클릭하여 열 정렬을 오름차순 또는 내림차순 간에 토글할 수 있습니다.
모든 프로퍼티
All Properties 뷰 모드는 이 세션에서 프로파일링된 프로퍼티 전체에 대한 정보를 표시합니다. 이 테이블의 헤더는 All Actors 섹션과 거의 동일하며 Actor Class 헤더가 지정된 행의 프로퍼티 이름을 나타내는 Property 헤더로 대체되었다는 점만 다릅니다.
All RPCs
All RPCs 뷰 모드는 이 세션에서 프로파일링된 RPC 전체에 대한 정보를 표시합니다. 이 테이블의 헤더는 All Actors 섹션과 거의 동일하며 Actor Class 헤더가 지정된 행의 RPC 이름을 나타내는 RPC 헤더로 대체되었다는 점만 다릅니다.
All Objects
All Objects 뷰 모드는 이 세션에서 프로파일링된 오브젝트 전체에 대한 정보를 표시합니다. 이 정보는 다음을 포함합니다.
| 헤더 이름 | 설명 |
|---|---|
| Object Class | 이 행의 오브젝트 클래스 이름입니다. |
| # Comparisons | 비교 횟수입니다. |
| # Replications | 수행된 리플리케이션 횟수입니다. |
| Comparison Time | 비교에 걸린 시간(ms)입니다. |
| Average Time Per Compare | 비교당 걸린 평균 시간(ms)입니다. |
이 뷰 모드는 프로퍼티를 위한 별도의 테이블도 포함합니다. 이 정보는 다음을 포함합니다.
| 헤더 이름 | 설명 |
|---|---|
| Property | 이 행의 프로퍼티 클래스 이름입니다. |
| # Comparisons | 비교 횟수입니다. |
| # Times Changed | 프로퍼티 값이 변경된 횟수입니다. |
| # Replications | 수행된 리플리케이션 횟수입니다. |
차트
메인 차트 뷰입니다. 다른 프로파일링 애플리케이션의 차트와 유사하며, 해당 시간 동안 활성화된 통계의 그래프를 표시합니다. 특정 프레임을 클릭하여 해당 프레임과 연결된 데이터로 다른 뷰를 채우거나, 그래프에서 클릭하고 드래그하여 특정 영역을 확대하고 해당 시간 범위의 요약 정보를 볼 수 있습니다.
차트 뷰 및 다음의 모든 옵션은 Chart, Filters, Details 뷰 모드에서만 사용할 수 있습니다.
통계 목록
네트워크 프로파일러에서 트래킹하는 모든 통계의 목록입니다. 체크박스를 토글하여 그래프에서 특정 통계를 표시하거나 숨길 수 있습니다. 대부분의 통계에서 원시 횟수, 초당 횟수, 바이트 수, 초당 바이트 수 등의 표시를 선택할 수 있습니다.
디테일
디테일 탭은 보다 세부적인 네트워크 프로파일링 정보를 표시합니다.
Summary
차트에서 선택된 시간 범위 내 데이터의 요약입니다. 초당 정보와 원시 전체 정보를 표시합니다. 'Outgoing bandwidth'은 IP 및 UDP 헤더 크기의 근사치도 포함하기 때문에 'Game socket send size'보다 크다는 점에 유의하세요.
Actors
그래프에서 단일 프레임을 선택하면 이 뷰에서 해당 프레임 도중 리플리케이트된 액터 타입의 목록을 리플리케이트하는 데 걸린 CPU 시간 순으로 표시합니다. 액터가 리플리케이트된 프로퍼티와 연결된 경우, 액터에 대한 트리 뷰를 펼치면 각 프로퍼티가 표시됩니다. 'Actor' 행의 경우, 첫 숫자 열은 해당 액터에 대한 CPU 리플리케이션 시간(밀리초)입니다. 두 번째 열은 번치의 액터를 나타내는 바이트 수이고, 세 번째 열은 현재 프레임 도중 리플리케이트된 지정된 타입의 액터 수입니다. 'Property' 행의 경우, 첫 번째 열은 프로퍼티에 사용된 바이트 수입니다. 두 번째 열은 해당 액터에 대해 리플리케이트된 지정된 이름의 프로퍼티 수를 나타냅니다.
Token Details
이 뷰는 현재 선택된 프레임에서 전송된 데이터를 분석합니다. 어떤 액터, 프로퍼티, 원격 함수가 전송되었는지, 각각 얼마나 많은 바이트에 기여했는지 볼 수 있습니다. 리플리케이트된 액터 및 RPC는 모두 번치에 포함되며, SendBunchSize 섹션의 값은 전송하는 RPC와 리플리케이트하는 액터의 바이트를 포함합니다. 궁극적으로 SocketSend 엔트리는 엔진이 나가는 소켓에 전송한 바이트 수를 정확하게 알려줍니다. 표준 UDP 패킷 오버헤드는 여기에 포함되지 않습니다.
필터 적용
액터, 프로퍼티 및 RPC에 대한 필터를 입력하고 Apply Filters 버튼을 누르면 그래프가 필터 필드에 입력한 텍스트를 포함하는 액터, 프로퍼티 및 RPC에 관련된 데이터만 표시하도록 업데이트됩니다. 필터가 적용된 뒤 그래프의 프레임 또는 프레임 범위를 선택하면 요약 및 프레임 디테일 뷰의 데이터도 이에 따라 필터링됩니다.