View
855
Download
2
Category
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