[igc 2016] 넷게임즈 김영희 - unreal4를 사용해 모바일 프로젝트 제작하기

58
Unreal4 를 를를를 를를를 를를를를 를를 Inven Game Conference

Upload: -

Post on 15-Apr-2017

853 views

Category:

Career


2 download

TRANSCRIPT

Page 1: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

Unreal4 를 사용한 모바일 프로젝트 제작

Inven Game Confer-ence

Page 2: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

들어가기 전

발표자 소개

김영희현 NATgames TA

- 모바일 RPG HIT Animation Part - 모바일 RPG HIT Technical Artist

- TV 애니메이션 뽀롱뽀롱 뽀로로 스리즈 리깅 ,R&D 담당- TV 애니메이션 서커스쇼 리깅 ,R&D 담당- TV 애니메이션 꼬마버스 타요 3 기 리깅 ,R&D 담당

Page 3: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

IN-DEX

1Chap-

ter PC 플랫폼 VS 모바일 플랫폼

2Chap-

ter Unreal4 의 모바일 제작

3Chap-

ter 최적화 / 패키지 용량 이슈

4Chap-

ter HIT 에서는…

5Chap-

ter 기타 Unreal4 프로젝트 제작 팁

Page 4: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

PC 플랫폼 VS 모바일 플랫폼

Inven Game Conference

Page 5: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

1 PC 플랫폼 VS 모바일 플랫폼

PC Platform

PC Platform• 화려한 Post processing• 품질 좋은 Texture 압축 (DXT1 / DTX5)• GPU 제조사별 제약 없음• DX11 이후부터는 Pipeline 구조 변화로 Tessellation 등 을 쉽게 구현• Throttling / Battery 무관

Page 6: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

1 PC 플랫폼 VS 모바일 플랫폼

Mobile Platform

Mobile Platform•ETC1 , ETC2 , ASTC , ATC , PVRTC … 지원하는 Texture 압축이 천차만별• Post processing 의 기능 제약 있음 • GPU 제조사별 그래픽 제약이 있음•Throttling / Battery 등의 제약이 있음• Memory 등 하드웨어 능력의 제약이 있음

Page 7: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

1 PC 플랫폼 VS 모바일 플랫폼

모바일 플랫폼의 가능성

모바일은 개발환경이 너무 좋지 않다 .

하지만…

•4.13 – Custom Post processing•4.12 – Dynamic Planner Reflection •4.12 – GPU Particle•4.12 – Temporal A.A•4.12 – Dynamic cascade Shadow•4.12 – Depth Of Field•4.11 – Mobile refraction•4.9 – Dynamic Lighting•4.9 – Mobile Decal•4.8 – Mobile Preview

Page 8: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

1 PC 플랫폼 VS 모바일 플랫폼

모바일 플랫폼의 가능성

Page 9: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

Unreal4 의 모바일 제작

Inven Game Conference

Page 10: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

2 Unreal4 의 모바일 제작

Unreal4 의 Mobile Features

Unity / Unreal 과 같은 차세대 게임엔진은 모두 크로스 플랫폼을 지원함에 따라 PC Platform 의 Features 를 일부를 사용하는 식으로 Mobile Platform 에 적용

Unreal4 Mobile 에서 지원되는 Feature 를 살펴보자 !

Page 11: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

2 Unreal4 의 모바일 제작

Unreal4 의 Mobile Features

• 이하 내용은 Unreal 4.8.3 버전 기준• 최신버전과 기능이 다른 부분은 따로 언급

모바일에서 지원되는 기능과 안되는 기능을 확실히 구별하여 사용하자

Light / Shadow PostProcessing Material Particles Sys-tem

Movable Light White Balance Scene Color GPU SpritesStationay Light 는 1 개만 ColorGrading Refraction

Light Min Roughness Film Tone Mapper TessellationLight Function Light Propagation Volume Subsurface ScatteringLight Shafts Ambient Cubemap Ambient Occlusion

Dynamic Shadow Auto Exposure Noise NodeAtomospheric Fog Lens Flares Particles Position

NodeAmbient Occlusion Particle Speed NodeGlobal Illumination Particle Size Node

Motion Blur Particle Direction Node

AntiAliasing (Temporal AA 만지원 )Screen Space Reflections

Mobile 프로젝트에서 지원하지 않는 사항

Page 12: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

2 Unreal4 의 모바일 제작

Shader & Material

Traditional Shading Model VS Physical based Shading Model

•Shading Model 을 새로 개발해서 사용할 것인가 !•기본 Unreal PBR 을 사용할 것인가 !

Page 13: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

2 Unreal4 의 모바일 제작

Shader & Material

• PBR 은 비싼거 아닌가 ?• 과연 PBR 을 아티스트가 다루기 직관적 일까 ?• 우리 게임에 PBR 까지는 필요 없을지도…• 완전히 다른 Shading Model 로 개발하면 좋지 않을까 ?

흔한 초보 TA 의 의미 없는 생각

코… 코드를 보자 !

Page 14: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

2 Unreal4 의 모바일 제작

Shader & Material

PBR 은 비싸다 ?그럴 줄 알고 모바일용 Environment BRDF Model 은 근사 코드로

준비해 뒀지롱 -!

Engine\Shaders\ BRDF.usf

Page 15: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

2 Unreal4 의 모바일 제작

Shader & Material

PBR 은 비싸다 ?Directional Light 연산도 따로 준비해

놨지롱 ~!

Engine\Shaders\ BasePassForForwardShadingPixelShader.usf

Page 16: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

2 Unreal4 의 모바일 제작

Shader & Material

PBR 은 비싸다 ?Rough 가 필요없어 ? 그럼 미리 상수화

시켜놓았지롱 ~!

Engine\Shaders\ BasePassForForwardShadingPixelShader.usf

그리고 또…

아무튼 랜더링레벨 별로 Shading 코드가 다르다 . ES2 레벨에서의 퀄리티도 만족스러우며 , Instruction 도

비교적 적다 .

Page 17: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

2 Unreal4 의 모바일 제작

Shader & Material

Material Editor 에서 Vertex Shader 연산도 가능함에따라 GPU 자원을 더 효율적으로 사용 할 수 있음

Page 18: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

2 Unreal4 의 모바일 제작

Shader & Material

•PBR 이 비싸지 않을까 ?• 렌더링 레벨별로 Shading Code 가 적절히 나눠져 있음 .

•과연 PBR 을 아티스트가 다루기 직관적 일까 ?• Parameter 가 적고 랜더링 레벨별로 다르지 않아서 큰 어려움이 없음

• 우리 게임에 PBR 까지는 필요 없을지도…• 상황에 따라 Fully Rough / Unlit 을 사용

DX11 OpenGL ES2

Page 19: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

최적화 / 패키지 용량 이슈

Inven Game Conference

Page 20: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

3 최적화 / 패키지 용량 이슈

Optimization

HIT 프리뷰 단계에서는…

• 탑다운 뷰 때문에 상대적으로 Overdraw 가 적게 발생 . • Opacity 가 들어간 Material 사용 안함 .• 고정된 뷰로 Mesh 를 아낄 수 있음 .• CPU 자원 > GPU 자원

그럼 일단 최적의 Draw Call 을 측정하는 것을 중점을 두자 !

Page 21: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

3 최적화 / 패키지 용량 이슈

Optimization

모바일 퍼포먼스 체크할 때 염두 해야 할 점

•모바일 개발에서는 실제 디바이스에서 퍼포먼스를 측정하는 것을 습관화하자 .• 용량측정은 쿠킹이 완료된 Pak 파일로 분석하자 .• 따라서 레퍼런스가 될 타겟을 지정해 놓자 .•GPU 프로파일러를 활용하자 !HIT 의 테스트 타겟은 갤럭시 S4 (Adreno 320)!

Page 22: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

3 최적화 / 패키지 용량 이슈

Optimization

GPU 프로파일러를 활용하자 !

Snapdragon Profiler

Adreno GPU Profiler

Intel Graphics Performance Analyzers

Mali Graphics Debugger

Page 23: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

3 최적화 / 패키지 용량 이슈

Optimization

Page 24: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

3 최적화 / 패키지 용량 이슈

Optimization

적정 Draw Call• 몬스터 스폰 하지 않았을 때 120±10• 몬스터 스폰 + 전투 시 180±20• 로비화면에서 200±20

제약사항• Bone 최대 75 개 제한• Vertex 캐릭터당 12000 개 가량 사용• Mesh LOD 는 사용하지 않음• Particle System 의 Bounding Box FIX 하여 Update 비용 절감• 퀄리티 옵션별로 Particle System Detail Mode 사용• 퀄리티 옵션별로 Material Quality Level 사용• 퀄리티 옵션별로 HDR 사용• 퀄리티 옵션별로 Shading Model 변화 (Lambert – PBR)

다음과 같은 결과가 도출

Page 25: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

DrawCall 을 낮추기 위해서는 Merge Actor 기능을 잘 활용하자 . 꼬옥 !

3 최적화 / 패키지 용량 이슈

Optimization

Page 26: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

3 최적화 / 패키지 용량 이슈

용량 이슈

HIT 는 상대적으로 작은 용량으로 시작했으나 , 업데이트규모가 커 상당히 데이터 크기가 커질 것으로 예상

타 게임들과 비교 - 꾸준히 오르긴 하지만 실제는 약간 완만하게 올라가고 있음

용량 이슈

Page 27: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

3 최적화 / 패키지 용량 이슈

용량 이슈

리소스 변화 추이를 관찰한 결과배경 ( 레벨 ) 관련 리소스가 가장 많이

늘어나고 있다 !

Page 28: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

3 최적화 / 패키지 용량 이슈

용량 이슈

배경 리소스의 구성

- Static Mesh- Material Instance- Texture

- Level- Light Map / Shadow Map- Vertex Color Data- Blocking Volume- Reflection Capture

배경 리소스 제작 시 Light UV 를 효율적으로 할당하는 것이 가장 중요하다 !!

Page 29: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

3 최적화 / 패키지 용량 이슈

용량 이슈

• AOS 에서만 ShadowMap 이 ETC1 으로 압축 안됨 .• 이를 압축하여 사용하면 용량이 훨씬 절감됨 . • 아래 경로에 TEXTUREGROUP_Shadowmap 관련 압축 방식을 지정

\Engine\Source\Developer\Android\AndroidTargetPlatform\Private \AndroidTargetPlatform.inl

Page 30: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

3 최적화 / 패키지 용량 이슈

용량 이슈

불필요한 리소스는 쿠킹이 안되게 설정해두자 .

Page 31: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

3 최적화 / 패키지 용량 이슈

용량 이슈

• ETC1 에서는 Alpha Channel 이 있는 Texture 사용을 자제• Shadow Map 이 압축이 안되는 현상 수정• Material 에 Switch Parameter 를 사용하면 Instance 의 용량 증가• Texture Size 는 512 이하 제한

• 레벨이 늘어나는 것은 어쩔 수 없음 (…)• 결국 용량이슈는 잘못된 데이터가 들어가지 않게끔 하는 것이 관건 !

• 쿠킹 데이터 분석 , 관련 Commandlet 을 통해 잘못된 데이터를 수시로 체크 !

Page 32: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

HIT 에서는…

Inven Game Conference

Page 33: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

2 Unreal4 의 모바일 제작

Shader & Material

HIT 에서는…

그러나… 하나의 Stationary Light 로는 캐릭터와 배경을 동시에 풍부하게 표현하는 것이 힘듦 ! Reflection Capture 의 환경이 좋지 않아 풍부한 PBR Shader 의 표현이 좋지 않음 !

• Lighting / Shadow• Stationary Light 1 개 배치• Static Light 다수 배치• Reflection Capture 1 개 배치• Dynamic Shadow 는 Modulate 로 자체

구현

Page 34: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

4 HIT 에서는…

Lighting / Material

1 개에 Directional Light 에 2 개의 기능

• Static Mesh 를 비추는 Light• Movable Mesh 를 비추는 Light

엔진팀에서 뚝딱 만들어 주었다 !

Page 35: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

4 HIT 에서는…

Lighting / Material

캐릭터용 Material• Roughness Clamp 0.4 ~ 1.0• Rim Light• Ambient Base Color• Ambient Occlusion• Fog

Page 36: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

4 HIT 에서는…

Lighting / Material

Ambient Occlusion

NormalMap(worldSpace)·PixleNormal(worldSpace)

Page 37: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

4 HIT 에서는…

Lighting / Material

Ambient Occlusion

Page 38: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

4 HIT 에서는…

Lighting / Material

roughness flicker Issue

Page 39: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

4 HIT 에서는…

Lighting / Material

Phong Approxhalf a2 = a * a;float rcp_a2 = rcp(a2); half c = 0.72134752 * rcp_a2 + 0.39674113;return min(rcp_a2 * exp2( c * RoL - c ),50);

roughness flicker Issue

일반적인 Cos , Pow 를 사용한 Phong

Page 40: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

4 HIT 에서는…

Lighting / Material

밋밋한 배경에는 Reflection Capture 에 Cube Map 사용

Page 41: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

4 HIT 에서는…

Lighting / Material

Indirect Light Cache Issue

어두운 영역에서 Light Cache 가 다소 어둡게 구워진다 .

Page 42: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

4 HIT 에서는…

Lighting / Material

Indirect Light Cache Issue

Page 43: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

4 HIT 에서는…

Lighting / Material

Indirect Light Cache Issue

샘플링 수가 작아지니오히려 보기 좋다 !

(국소적인 Level 에서만 해당됨 )

Page 44: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

4 HIT 에서는…

Lighting / Material

Indirect Light Cache Issue

Page 45: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

4 HIT 에서는…

Lighting / Material

BG Material• 배경용 Material 은 대부분 Fully Rough• 기능별로 Material 을 다수 제작• Unlit 사용• Translucent 은 자제

• 용량이슈로 인해서 Switch Parameter 를 사용하기보다 Material 을 나눠서 제작

( 위와같이 동일한 기능의 Material 들이 퀄리티별로 다수 존재 )

Page 46: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

Inven Game Conference

기타 Unreal4 프로젝트 제작 팁

Page 47: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

Mali GPU 에서만 발생하던 UV 정밀도 문제

Page 48: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

sRGB 를 Mask Map 에 사용하지 말자

이전에 잘못 사용하던 Character Material• Clamp 0.4 – 1.0• SRGB값으로 인해 0.6 의 값을 칠해도 0.4 로 표현됨 !• 0.7 = 0.456• 0.8 = 0.612

.....• 직관적이지 않은 값으로 아티스트가 표현하기가 매우

까다롭다 !

Page 49: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

sRGB 사용 여부는 Texture와 Material 모두 수정하자 !

ES2 에서는 아무리 Texture 에 sRGB 를 꺼놓아도 위와 같이 Sampling 되면 말짱 헛빵 !

Page 50: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

sRGB 를 잘못 on / off 해서 Texture 를 그렸다면 ?

Photoshop 에서 Curve 조절을 통해 돌려놓을 수 있다 !

Pow(2.2) 혹은 Pow(1/2.2)

Page 51: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

Alpha Channel 이 있을 때 PNG 는 피하자

Page 52: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

Alpha Channel 이 있을 때 PNG 는 피하자

Alpha 영역에 Color 정보가 없으면 흰색으로 채워짐

PNG Targa

Alpha 영역의 어떠한 정보도무시되어 번짐

Page 53: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

Alpha Channel 이 있을 때 PNG 는 피하자

Page 54: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

ETC1 의 압축은 다른 채널까지 영향을 끼치는 방식이다 .

Page 55: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

ETC1 의 압축은 다른 채널까지 영향을 끼치는 방식이다 .

Pow 나 Clamp 를 사용하여 작은 값 줄여서 사용 ..

Page 56: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

ETC1 의 압축은 다른 채널까지 영향을 끼치는 방식이다 .

Mali Texture Compression Tool  으로 Cooking 전에 확인 가능

(ASTC/ETC1/ETC2)

http://malideveloper.arm.com/resources/tools/mali-gpu-texture-compression-tool/

Page 57: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

5 QA

QA

Q & A [email protected]

Page 58: [IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기

감사합니다[NATGAMES TA]

김영희