뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드...

73
뭣이 중헌디? 성능 프로파일도 모름서 유니티 성능 프로파일링 가이드 Inven Game Conference 유니티테크놀로지스코리아 오지현

Upload: ozlael-ozlael

Post on 15-Apr-2017

1.177 views

Category:

Engineering


19 download

TRANSCRIPT

Page 1: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

뭣이중헌디? 성능프로파일도모름서

유니티성능프로파일링가이드

Inven Game Conference

유니티테크놀로지스코리아 오지현

Page 2: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

뭣이 중헌디?

Page 3: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

프로파일링?

Texture Size ?Pixel Shader ?

Draw Call ?Physics ?

Memory ?

Page 4: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

1 프로파일링?

병목탐지!

병목제거!

프로파일링!

Page 5: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

1

프로파일링이

중헌지도 모름서!

Page 6: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

“ ”

Page 7: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

성능 프로파일링... 언제 ?

Page 8: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

개발 후반부 ?- 수정이 불가능

개발 초반부 ?- 성능 측정 불필요- 특히 프로토타이핑 시점

Page 9: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

개발중반부부터

주기적으로

Page 10: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

툴의도움없이는빠른진행이어려움

Page 11: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

INDEX1

Chapter유니티프로파일러 Unity Profiler

2

Chapter프레임디버거 Frame Debugger

3

Chapter메모리프로파일러 Memory Profiler

4

Chapter엑스코드 Xcode - Instrument

5

Chapter쓰로틀링 Throttling

Page 12: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

Chpater [1]

유니티 프로파일러

Inven Game Conference

Unity > Window > Profiler

Page 13: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

https://docs.unity3d.com/Manual/Profiler.html

* PC와 디바이스를동일 네트워크 WiFi에 위치

디바이스에 연결해서 확인에디터상에서 돌아가는 게임을 확인하는 것은 의미 없음

1 Unity Profiler

Page 14: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

1 Unity Profiler

Page 15: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

21 FPS , Rez : 2560x1440

1 Unity Profiler

Page 16: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

1 Unity Profiler

Page 17: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

Frame End

CPU

GPU

CPU boundary VS GPU boundary

Frame Start

1 Unity Profiler

Page 18: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

Frame End

CPU

GPU

CPU boundary VS GPU boundary

Frame Start

1 Unity Profiler

Page 19: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

6 FPS , Rez : 2560x1440

1 Unity Profiler

Page 20: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

1 Unity Profiler

Page 21: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

Chpater [2]

프레임 디버거

Inven Game Conference

Unity > Window > Frame Debugger

Page 22: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

2 Frame Debugger

Page 23: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

2 Frame Debugger

Page 24: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

2 Frame Debugger

Page 25: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

2 Frame Debugger

Page 26: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

2 Frame Debugger

Page 27: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

2 Frame Debugger

Page 28: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

2 Frame Debugger

Page 29: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

2 Frame Debugger

Page 30: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

2 Frame Debugger

Page 31: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

2 Frame Debugger

Page 32: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

Sprite, UI 배칭의 영향 요인들

• Sorting Layer• Order in Layer• Sprite Packing• Position Z• Hierarchy• Canvas• Shader• 등등

Page 33: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

Chpater [3]

메모리 프로파일러

Inven Game Conference

https://bitbucket.org/Unity-Technologies/memoryprofilerProfiler

Page 34: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

https://bitbucket.org/Unity-Technologies/

3 Memory Profiler

Page 35: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

• 유니티 5.3 이상• 다운로드 받은 프로젝트의 Editor 폴더를 작업중인

프로젝트의 Editor 폴더로 드래그앤드랍 후 이름 변경

• 스크립트 백엔드 : IL2CPP (5.3 안드로이드!?)

• 디벨롭먼트 빌드로 실행• 유니티 프로파일러 윈도우 실행 및 디바이스 연결• Window > MemoryProfiler

3 Memory Profiler

Page 36: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

누르고 인내심 필요 ㅠㅠ

3 Memory Profiler

Page 37: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

3 Memory Profiler

Page 38: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

3 Memory Profiler

Page 39: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

3 Memory Profiler

Page 40: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

Android의 Compressed:

RGB 텍스쳐 -> ETC1RGBA 텍스쳐 -> ETC2

ETC2는 OpenGL ES3.0부터 지원

OpenGL ES2.0에서 ETC2 사용 시->압축이 풀려서 메모리에 적재

3 Memory Profiler

Page 41: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

ES3.0 지원 기기:4MB

3 Memory Profiler

Page 42: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

ES2.0 기기가 타겟이라면,

(Sprite, UI 에서만 지원. Packing Tag 필수)

3 Memory Profiler

Page 43: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

using UnityEditor;

public class ResourceModifierTest : AssetPostprocessor {

void OnPreprocessTexture()

{

var importer = (assetImporter as TextureImporter);

if( importer.textureType == TextureImporterType.Sprite) {

importer.SetPlatformTextureSettings(

"Android", 1024, TextureImporterFormat.AutomaticCompressed);

importer.SetPlatformTextureSettings(

"iPhone", 1024, TextureImporterFormat.AutomaticCompressed);

importer.SetAllowsAlphaSplitting( true);

importer.mipmapEnabled = false;

}

}

}

3 Memory Profiler

Page 44: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

3 Memory Profiler

Page 45: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

Decompress On Load

오디오 압축 풀려서 메모리에 적재BGM처럼 큰 오디오에는 치명적작은 효과음만 사용

iOS에서 Vorbis를 사용해도 마찬가지iOS에서는 OGG 네이티브 지원 XiOS에서는 MP3 사용 권장

3 Memory Profiler

Page 46: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

3 Memory Profiler

Page 47: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

중복 리소스

유니티는 중폭 파일 체크 XFont, Audio, Texture ...

에셋 번들 사용시에도 주의AssetBundle.Unload(false) ?Unity - AssetBundle usage patterns

Memory Profiler로 실수들 확인 가능

3 Memory Profiler

Page 48: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

3 Memory Profiler

Page 49: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

3 Memory Profiler

Page 50: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

using UnityEditor;

public class ResourceModifierTest : AssetPostprocessor {

void OnPreprocessModel () {var importer = (assetImporter as ModelImporter);importer.isReadable = false;importer.optimizeMesh = true;if (assetPath.Contains("@")) {

importer.importMaterials = false;}

}

}

3 Memory Profiler

Page 51: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

Chpater [4]

엑스코드

Inven Game Conference

Page 52: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

CPU Profiling – Instrument

https://blogs.unity3d.com/kr/2016/02/01/profiling-with-instruments/

4 Xcode

Page 53: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

4 Xcode

Page 54: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

Xcode > Product > Profile > Instrument

4 Xcode

Page 55: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

4 Xcode

Page 56: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

CharacterBehavior_Update_m3719746460

클래스명 메서드명 UID

4 Xcode

Page 57: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

4 Xcode

Page 58: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

public static class ExtensionMethods

{

public static bool HasParameterOfType (this Animator self, string name, AnimatorControllerParameterType type)

{

var parameters = self.parameters;foreach (var currParam in parameters) {

if (currParam.type == type && currParam.name == name) {

return true;

}

}

return false;

}

}

5%?!

4 Xcode

Page 59: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

GPU Profiling

4 Xcode

Page 60: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

Xcode > Product > Scheme > Edit Scheme

4 Xcode

Page 61: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

VertexPixel

4 Xcode

Page 62: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

Vertex Pixel

4 Xcode

Page 63: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

4 Xcode

Page 64: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

4 Xcode

Page 65: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

4 Xcode

Page 66: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

4 Xcode

Page 67: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

4 Xcode

Page 68: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

마지막으로 ...

쓰로틀링

Inven Game Conference

Page 69: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

데이터를 어지럽히는 주범일부 기기는 끄기 가능

쓰로틀링 Throttling

5 Throttling

Page 70: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

5 Throttling

Page 71: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)
Page 72: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

유니티프리미엄기술지원-기업대상유료서비스-전문가의프로젝트리뷰및컨설팅-유니티버그우선순위해결-상품문의 : [email protected]

유니티개발자포럼-페이스북유니티개발자커뮤니티

https://www.facebook.com/groups/unitykorea

-네이버카페유니티허브http://cafe.naver.com/unityhub

-유니티포럼https://forum.unity3d.com/

Page 73: 뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)

감사합니다

[ 유니티테크놀로지스코리아 / 차장 ]

오 지 현