UDN
Search public documentation:

GameplayProfilerKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 퍼포먼스, 프로파일링, 최적화 > 게임플레이 프로파일러
UE3 홈 > 게임플레이 프로그래밍 > 게임플레이 프로파일러

게임플레이 프로파일러


문서 변경내역: Daniel Vogel 작성. 홍성진 번역.

개요


게임플레이 프로파일러는 프로파일링 세션 도중 캡처된 데이터를 활용하여, 함수를 수행하는 데 소모된 시간을 분석하기 위해 게임플레이 코드를 더욱 깊이 파볼 수 있도록 해 주는 툴입니다. Script Profiler 대체 목적입니다.

gp.jpg

프로파일 만들기


언제고 PROFILEGAME START 콘솔 명령 을 실행하여 언제고 프로파일링을 시작할 수 있으며, PROFILEGAME STOP 명령으로 멈출 수 있습니다. PROFILEGAME 10 과 같은 식으로 게임플레이 10초간만 캡처할 수도 있습니다.

.gprof 파일이 [게임이름]\Profiling\ 폴더에 생성되며, 콘솔의 호스트 PC에 자동으로 복사됩니다. 파일이 금방 꽤 커질 수 있으니, 화두부분 10~30초 정도만 프로파일링 하시기 바랍니다.

프로파일 보기


게임플레이 프로파일러 실행파일 GameplayProfiler.exe 을 실행시켜 시작합니다. 그런 다음 파일 열기 버튼을 눌러 .gprof 파일 위치로 이동해 선택하거나, 그냥 명령줄에 파일명을 전해 줘도 됩니다.

알림: 게임플레이 프로파일러 실행파일은 UE3나 UDK 배포판의 이진파일 디렉토리에 있을 수도 있습니다.

출력


데이터 파일을 로드하여 파싱(분석)하고 나면 시간과 프레임으로 된 그래프가 나타나며, 현재 프레임에 대한 프로파일링 데이터를 여러가지 방식으로 분석하여 표시해 주는 탭도 여럿 딸려 나옵니다.

디폴트로 0 프레임이 선택됩니다. 그래프에 왼클릭하거나 그래프 위의 Frame 필드에 직접 숫자를 입력하면 새 프레임을 선택할 수 있습니다. 현재 프레임은 그래프에 빨강 수직선으로 강조되어 표시됩니다.

그래프에 마우스 왼쪽 버튼을 클릭하고 끌어서 보고자 하는 범위를 선택하면 줌인해 볼 수 있습니다. 프레임 축 왼편이나 시간 축 맨위에 있는 작은 원을 클릭하면, 각자의 축을 따라 다시 줌 아웃 해 나옵니다.

차트의 녹색선 은 프레임 시간을 ms로 표시해 주는 반면, 파랑선 은 추적된 액터 틱을 스크립트 시간으로 나눈 값 및 프레임 시간과의 관계를 표시해 줍니다. 단 모든 스파이크가 스크립트나 게임플레이 틱에 관련된 것은 아니며, 이를 통해 관련있는 것들을 식별하고 파헤쳐 볼 수 있습니다.

Time Threshold (시간 임계값)은 일정 시간에 넘쳐나는 데이터만 표시하도록 하는 데 사용할 수 있습니다. 일정한 수준 이상의 이벤트만 표시하도록 하여 문제 영역을 쉽게 찾아낼 수 있습니다.

Show Native Timing Data (네이티브 타이밍 데이터 표시)를 켜면, 스크립트 타이밍 데이터에 추가로 사이클 카운터 유효 범위(scope)에 소모된 시간이 표시됩니다. 이 데이터는 보통 StatsViewer 를 사용한 것의 분석을 필요로 합니다. 그 데이터를 게임플레이 프로파일러 안에서 스크립트 데이터 바로 옆에 놓고 볼 수 있으니, 문제를 그만큼 쉽고 빠르게 추적할 수 있는 것입니다.

탭에 표시되는 데이터는 컬러-코딩되어 어떤 종류의 데이터인지 더욱 쉽게 알아볼 수 있습니다.

gp_colorcoding.jpg

데이터 종류는:

  • 파랑 - 스크립트 함수
  • 빨강 - 네이티브 코드
  • 보라 - 레벨
  • 녹색 - 액터
  • 올리브 - 컴포넌트
  • 주황 - 클래스

또한 관련된 애셋 이름도 표시됩니다. 예를 들어 스켈레탈 메시 컴포넌트에 대한 데이터인 경우, 거기에 적용된 스켈레탈 메시 이름이 표시됩니다.

gp_assetname.jpg

액터 / 클래스 호출 그래프

이 뷰는 두 개의 호출 그래프로 나뉘어 있습니다. 왼쪽에는 선택된 프레임에 대해 레벨 -> 액터 -> 요소 / 함수 계층구조로 각 인스턴스를 개별적으로 표시해 주며, 오른쪽은 액터 클래스 -> 액터 -> 구성요소 / 함수로 묶여 있습니다.

왼쪽 뷰로는 멀티레벨 시나리오에서 어느 레벨이 뜨거운지(보통 내부에 객체가 스폰되어 지속적인 것), 그리고 특정 객체의 상대적 비용도 알아볼 수 있습니다.

오른쪽 뷰로는 어떤 종류의 객체가 시간을 잡아먹는지, 클래스의 인스턴스가 얼마나 많은지도 알아볼 수 있습니다. 표시된 inclusive 및 exclisive 수치는, 트리에서 도태되기 전까지 포함/제외시킬 자식노드 수를 나타냅니다. inclusive 수가 높다는 것은 보통 스크립트 함수가 많이 호출되었다는 것을 뜻합니다.

gp_callgraph.jpg

함수 요약

이 뷰로는 선택된 프레임의 inclusive/exclisive 시간동안 호출된 각 스크립트 함수, 호출 횟수와 호출 별 inclusive/exclusive 시간의 비율을 알아볼 수 있습니다. 열 제목부분을 클릭하여 내림차순으로 정렬할 수 있습니다. 한 가지 예외는 함수명 열 부분으로, 항상 오름차순으로 정렬됩니다.

gp_functionsummary.jpg

클래스 계층구조

클래스 계층구조는 클래스별 비용을 액터, 액터 요소, 함수 최상위레벨 노드로 나눠 볼 수 있는 뷰입니다. 대부분의 액터 요소와 함수 시간은 액터 시간에 의해 해명되기에 말할 필요도 없으니 그냥 숫자를 더해서는 안됩니다.

이 뷰로 클래스 계층구조를 쉽게 둘러볼 수 있어, AI 틱이나 UnrealScript를 실행하는데 시간이 얼마나 걸렸는지를 알아볼 수 있습니다.

gp_classhierarchy.jpg

함수 호출 그래프

이 탭에는 현재 선택된 프레임에 대한 호출 그래프가 표시됩니다.

gp_functiongraph.jpg

함수 요약 종합

이 탭에는 전체 캡처 기간에 대한 정보가 종합되어 표시되기는 하나, 함수 요약 탭과 비슷합니다. inclusive / exclusive 기간 및 호출 횟수가 종합되며, max inclusive / max exclusive는 각각 단일 프레임에 대한 최대값이며, 나머지 값은 프레임 평균값입니다.

gp_aggsummary.jpg

함수 호출 종합 그래프

모든 실행 함수를 전체 캡처 기간에 걸쳐 종합한 호출 그래프입니다.

gp_aggcallgraph.jpg