본문 바로가기
Unreal

언리얼 인사이트01 (Unreal Insights)

by myroad 2023. 8. 23.

참고1 - https://youtu.be/ssBKLh0fDzY

참고2 - https://youtu.be/af_M38Z325I

1.언리얼 인사이트 프로그램을 실행 시켜 놓는다.

2.게임을 실행한다.

 

3.언리얼 인사이트의 커넥션 탭에서 Connect 버튼을 클릭하여 게임에 연결한다.

(보통은 인사이트가 실행된 상태에서 게임을 실행하면 자동으로 연결되어 추적하기 시작한다.)

4.Trace Store창에서 해당 게임이 추적되고 있는걸 확인할 수 있다. 아래는 에디터을 실행한 경우이다.

에디터을 실시간(Live)로 추적하고 있는 걸 볼 수 있다.

5.프로파일링 하고자 한다면 해당 항목을 선택하고 하단의 Open Trace버튼을 클릭한다.

6.그러면 이와같이 프로파일링 창이 뜬다.

7.추적을 중지시키고 싶다면 콘솔창에서 Trace.Stop을 입력하면 된다.

그러면 라이브로 언리얼 인사이트와 연결이 되어 있어도 추적이 끊긴다.

 

- 게임 실행 파일의 바로가기을 만들고 커맨드 라인을 추가하여 Trace 명령 실행하기

  실행 파일의 바로가기에 Trace의 추가 옵션 명령을 추가하여 원하는 항목들만 추적할 수 있다.

 

  CPU와 로딩만 추적하기

   'LyraGame.exe - statnamedevents -trace=cpu,gpu,frame,log,bookmark,file,loadtime'

  메모리 추적하기

   'LyraGame.exe -trace=default,memory,metadata,assetmetadata

 

- 구체적으로 어떤 에셋와 클래스에 대한 정보도 함께 추적하고 싶다면 metadata,assetmetadata 옵션도 함께 사용하기을 권장한다. 물론 메모리 인사이트에서도 동일하다. 이 옵션들이 실제 우리가 사용하는 에셋이나 클래스의 이름을 사용하여 추적한 내용을 표시해 준다.

 

- Trace 옵션 명령의 default에 memory가 포함되지 않은 이유는 메모리 추적은 그거 나름대로의 부하가 있어서 다른 추적 대상들에 대해 정확한 추적 데이터 생성이 불가능한 문제가 있어서라고 한다. 그래서 memory은 default 옵션에 포함되지 않았다.

https://docs.unrealengine.com/5.1/ko/unreal-insights-in-unreal-engine/

 

 

- 게임을 추적하는 또 다른 방법

게임을 실행하고 콘솔창을 열어서 Trace Send명령을 입력한다.

 

구체적으로는 아래와 같이 콘솔창에 입력한다.
'Trace Send localhost default'

- localhost - 추적을 하여 저장할 대상으로 로컬 호스트인 해당 게임 프로젝트을 지정한다.
- default - 어떤 정보을 추적하여 저장할지 설정하는 것으로 default로 설정하면 cpu부터 나머지 주요 항목들의 정보가 모두 저장된다.

 

- 언리얼 인사이트는 기본적으로 메모리 추적을 하지 않는다.

따라서 메모리도 추적하고 싶다면 default와 함께 memory 명령도 주어야 한다.

 

- GPU 시각화 툴

에디터에서 Ctrl + Shift + ,(쉼표)  키을 누르면 뜬다.

또는 에디터의 콘솔창에서 ProfileGPU라고 입력하는 뜬다.

- 아래의 예는 포인트 라이트 부분에서 시간을 많이 잡아 먹는 것을 확인할 수 있다.

- 따라서 아웃라이너에서 해당 라이트을 확인해 보자. 확인해 본 결과 반경이 5000으로 설정되어 있는 것을 볼 수 있다.

라이트의 경우 반경을 크게 잡으면 그 만큼 많은 오브젝트들와의 라이팅 계산이 되므로 성능을 많이 잡아 먹는다. 따라서 전역 라이트가 아닌 경우 적절한 반경을 설정해 주어야 한다.

 

- 최적화에 대한 질문 방법

What? Why? How?

1.(What)무엇이 느린가?

2.(Whyt)왜 느린가?

3.(How)어떻게 고칠 것인가?

 

- trace의 default 옵션에 포함된 것들은 cpu, 프레임, 로그, 북마크등을 추적하게 해 준다.

  -trace=default

 

- 만약 default외에 gpu, 메모리, 파일, 로드 타임등도 추적하고 싶다면 아래와 같이 명령을 실행해 주어야 한다.

  -trace=default,gpu,memory,file,loadtime

 

- 다른 컴퓨터에서 타겟 컴퓨터에서 실행되고 있는 게임 실행파일을 추적하고 싶다면 -tracehost을 사용하면 된다.

  

- CPU와 로딩 프로파일링을 할 경우 명령 설정

  -trace=cpu,gpu,frame,log,bookmark,file,loadtime

 

- 메모리 프로파일링 할 경우 설정

  -trace=default,memory

 

- CPU 타이밍 이벤트 프로파일링을 할 경우 statnamedevents명령을 추가해 주면 된다. 물론 여유가 된다면~

 

- 게임이 거의 멈춘 상황을 프로파일링 하고자 할 경우 Saved폴더의 log파일을 열어보면 gpu의 처리 상황에 대한 정보을 얻을 수 있다. 그래서 어느 부분에서 많은 시간을 잡아 먹는지 파악할 수 있다.

아래의 로그은 M_CursedFogCarPartcle라는 파티클에서 GPU의 처리 시간의 90퍼센트을 잡아 먹는 걸 알수 있는 로그이다. 이 정도이면 거의 게임 화면이 슬로우 화면에 가깝게 플레이 될 것이다. 따라서 M_CursedFogCarPartcle라는 파티클을 찾아서 뭐가 문제인지 분석해 봐야 한다.