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

  • View
    884

  • Download
    17

  • Category

    Career

Preview:

Citation preview

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

Inven Game Confer-ence

들어가기 전

발표자 소개

김영희현 NATgames TA

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

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

IN-DEX

1Chap-

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

2Chap-

ter Unreal4 의 모바일 제작

3Chap-

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

4Chap-

ter HIT 에서는…

5Chap-

ter 기타 Unreal4 프로젝트 제작 팁

PC 플랫폼 VS 모바일 플랫폼

Inven Game Conference

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

PC Platform

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

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

Mobile Platform

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

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

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

모바일 플랫폼의 가능성

Unreal4 의 모바일 제작

Inven Game Conference

2 Unreal4 의 모바일 제작

Unreal4 의 Mobile Features

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

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

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 프로젝트에서 지원하지 않는 사항

2 Unreal4 의 모바일 제작

Shader & Material

Traditional Shading Model VS Physical based Shading Model

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

2 Unreal4 의 모바일 제작

Shader & Material

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

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

코… 코드를 보자 !

2 Unreal4 의 모바일 제작

Shader & Material

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

준비해 뒀지롱 -!

Engine\Shaders\ BRDF.usf

2 Unreal4 의 모바일 제작

Shader & Material

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

놨지롱 ~!

Engine\Shaders\ BasePassForForwardShadingPixelShader.usf

2 Unreal4 의 모바일 제작

Shader & Material

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

시켜놓았지롱 ~!

Engine\Shaders\ BasePassForForwardShadingPixelShader.usf

그리고 또…

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

비교적 적다 .

2 Unreal4 의 모바일 제작

Shader & Material

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

2 Unreal4 의 모바일 제작

Shader & Material

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

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

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

DX11 OpenGL ES2

최적화 / 패키지 용량 이슈

Inven Game Conference

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

Optimization

HIT 프리뷰 단계에서는…

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

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

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

Optimization

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

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

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

Optimization

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

Snapdragon Profiler

Adreno GPU Profiler

Intel Graphics Performance Analyzers

Mali Graphics Debugger

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

Optimization

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)

다음과 같은 결과가 도출

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

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

Optimization

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

용량 이슈

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

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

용량 이슈

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

용량 이슈

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

늘어나고 있다 !

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

용량 이슈

배경 리소스의 구성

- Static Mesh- Material Instance- Texture

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

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

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

용량 이슈

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

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

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

용량 이슈

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

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

용량 이슈

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

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

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

HIT 에서는…

Inven Game Conference

2 Unreal4 의 모바일 제작

Shader & Material

HIT 에서는…

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

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

구현

4 HIT 에서는…

Lighting / Material

1 개에 Directional Light 에 2 개의 기능

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

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

4 HIT 에서는…

Lighting / Material

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

4 HIT 에서는…

Lighting / Material

Ambient Occlusion

NormalMap(worldSpace)·PixleNormal(worldSpace)

4 HIT 에서는…

Lighting / Material

Ambient Occlusion

4 HIT 에서는…

Lighting / Material

roughness flicker Issue

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

4 HIT 에서는…

Lighting / Material

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

4 HIT 에서는…

Lighting / Material

Indirect Light Cache Issue

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

4 HIT 에서는…

Lighting / Material

Indirect Light Cache Issue

4 HIT 에서는…

Lighting / Material

Indirect Light Cache Issue

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

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

4 HIT 에서는…

Lighting / Material

Indirect Light Cache Issue

4 HIT 에서는…

Lighting / Material

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

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

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

Inven Game Conference

기타 Unreal4 프로젝트 제작 팁

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

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

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

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

까다롭다 !

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

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

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

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

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

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

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

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

Alpha Channel 이 있을 때 PNG 는 피하자

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

Alpha Channel 이 있을 때 PNG 는 피하자

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

PNG Targa

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

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

Alpha Channel 이 있을 때 PNG 는 피하자

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

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

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

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

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

5 기타 Unreal4 프로젝트 제작 팁

기타 Unreal4 프로젝트 제작 팁

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

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

(ASTC/ETC1/ETC2)

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

5 QA

QA

Q & A young@natgames.co.kr

감사합니다[NATGAMES TA]

김영희

Recommended