Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

5,269 views

Published on

Unreal4 엔진을 사용하여 모바일 프로젝트를 제작하는것에 있어서 PC프로젝트를 진행할때와 달리 주의해야 하는 점과 팁들에 관하여 이야기하고, 이를 HIT 프로젝트에는 어떻게 접목시켰는지에 대하여 강연합니다.

Published in: Career
  • Be the first to comment

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

  1. 1. Unreal4를 사용한 모바일 프로젝트 제작 Inven Game Conference
  2. 2. 들어가기 전 발표자 소개 김영희 현 NATgames TA - 모바일 RPG HIT Animation Part - 모바일 RPG HIT Technical Artist - TV 애니메이션 뽀롱뽀롱 뽀로로 스리즈 리깅,R&D 담당 - TV 애니메이션 서커스쇼 리깅,R&D 담당 - TV 애니메이션 꼬마버스 타요 3기 리깅,R&D 담당
  3. 3. INDEX 1 Chapter PC플랫폼 VS 모바일 플랫폼 2 Chapter Unreal4의 모바일 제작 3 Chapter 최적화 / 패키지 용량 이슈 4 Chapter HIT에서는… 5 Chapter 기타 Unreal4 프로젝트 제작 팁
  4. 4. PC플랫폼 VS 모바일 플랫폼 Inven Game Conference
  5. 5. 1 PC플랫폼 VS 모바일 플랫폼 PC Platform PC Platform • 화려한 Post processing • 품질 좋은 Texture 압축(DXT1 / DTX5) • GPU 제조사별 제약 없음 • DX11 이후부터는 Pipeline 구조 변화로 Tessellation등 을 쉽게 구현 • Throttling / Battery 무관
  6. 6. 1 PC플랫폼 VS 모바일 플랫폼 Mobile Platform Mobile Platform •ETC1 , ETC2 , ASTC , ATC , PVRTC … 지원하는 Texture압축이 천차만별 • Post processing 의 기능 제약 있음 • GPU 제조사별 그래픽 제약이 있음 •Throttling / Battery 등의 제약이 있음 • Memory 등 하드웨어 능력의 제약이 있음
  7. 7. 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
  8. 8. 1 PC플랫폼 VS 모바일 플랫폼 모바일 플랫폼의 가능성
  9. 9. Unreal4의 모바일 제작 Inven Game Conference
  10. 10. 2 Unreal4의 모바일 제작 Unreal4의 Mobile Features Unity / Unreal과 같은 차세대 게임엔진은 모두 크로스 플랫폼을 지원함에 따라 PC Platform의 Features를 일부를 사용하는 식으로 Mobile Platform에 적용 Unreal4 Mobile에서 지원되는 Feature를 살펴보자!
  11. 11. 2 Unreal4의 모바일 제작 Unreal4의 Mobile Features • 이하 내용은 Unreal 4.8.3 버전 기준 • 최신버전과 기능이 다른 부분은 따로 언급 모바일에서 지원되는 기능과 안되는 기능을 확실히 구별하여 사용하자 Light / Shadow PostProcessing Material Particles System Movable Light White Balance Scene Color GPU Sprites Stationay Light는 1개만 ColorGrading Refraction Light Min Roughness Film Tone Mapper Tessellation Light Function Light Propagation Volume Subsurface Scattering Light Shafts Ambient Cubemap Ambient Occlusion Dynamic Shadow Auto Exposure Noise Node Atomospheric Fog Lens Flares Particles Position Node Ambient Occlusion Particle Speed Node Global Illumination Particle Size Node Motion Blur Particle Direction Node AntiAliasing (Temporal AA만지원) Screen Space Reflections Mobile프로젝트에서 지원하지 않는 사항
  12. 12. 2 Unreal4의 모바일 제작 Shader & Material Traditional Shading Model VS Physical based Shading Model •Shading Model을 새로 개발해서 사용할 것인가! •기본 Unreal PBR을 사용할 것인가!
  13. 13. 2 Unreal4의 모바일 제작 Shader & Material • PBR은 비싼거 아닌가? • 과연 PBR을 아티스트가 다루기 직관적 일까? • 우리 게임에 PBR까지는 필요 없을지도… • 완전히 다른 Shading Model로 개발하면 좋지 않을까? 흔한 초보 TA의 의미 없는 생각 코… 코드를 보자!
  14. 14. 2 Unreal4의 모바일 제작 Shader & Material PBR은 비싸다? 그럴 줄 알고 모바일용 Environment BRDF Model은 근사 코드로 준비해 뒀지롱-! EngineShaders BRDF.usf
  15. 15. 2 Unreal4의 모바일 제작 Shader & Material PBR은 비싸다? Directional Light 연산도 따로 준비해 놨지롱~! EngineShaders BasePassForForwardShadingPixelShader.usf
  16. 16. 2 Unreal4의 모바일 제작 Shader & Material PBR은 비싸다? Rough가 필요없어? 그럼 미리 상수화 시켜놓았지롱~! EngineShaders BasePassForForwardShadingPixelShader.usf 그리고 또… 아무튼 랜더링레벨 별로 Shading 코드가 다르다. ES2레벨에서의 퀄리티도 만족스러우며, Instruction도 비교적 적다.
  17. 17. 2 Unreal4의 모바일 제작 Shader & Material Material Editor에서 Vertex Shader 연산도 가능함에 따라 GPU자원을 더 효율적으로 사용 할 수 있음
  18. 18. 2 Unreal4의 모바일 제작 Shader & Material •PBR이 비싸지 않을까? • 렌더링 레벨별로 Shading Code가 적절히 나눠져 있음. •과연 PBR을 아티스트가 다루기 직관적 일까? • Parameter가 적고 랜더링 레벨별로 다르지 않아서 큰 어려움이 없음 • 우리 게임에 PBR까지는 필요 없을지도… •상황에 따라 Fully Rough / Unlit을 사용 DX11 OpenGL ES2
  19. 19. 최적화 / 패키지 용량 이슈 Inven Game Conference
  20. 20. 3 최적화 / 패키지 용량 이슈 Optimization HIT 프리뷰 단계에서는… • 탑다운 뷰 때문에 상대적으로 Overdraw가 적게 발생. • Opacity가 들어간 Material 사용 안함. • 고정된 뷰로 Mesh를 아낄 수 있음. • CPU자원 > GPU자원 그럼 일단 최적의 Draw Call을 측정하는 것을 중점을 두자!
  21. 21. 3 최적화 / 패키지 용량 이슈 Optimization 모바일 퍼포먼스 체크할 때 염두 해야 할 점 •모바일 개발에서는 실제 디바이스에서 퍼포먼스를 측정하는 것을 습관화하자. • 용량측정은 쿠킹이 완료된 Pak파일로 분석하자. • 따라서 레퍼런스가 될 타겟을 지정해 놓자. •GPU 프로파일러를 활용하자! HIT의 테스트 타겟은 갤럭시S4 (Adreno 320)!
  22. 22. 3 최적화 / 패키지 용량 이슈 Optimization GPU 프로파일러를 활용하자! Snapdragon Profiler Adreno GPU Profiler Intel Graphics Performance Analyzers Mali Graphics Debugger
  23. 23. 3 최적화 / 패키지 용량 이슈 Optimization
  24. 24. 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) 다음과 같은 결과가 도출
  25. 25. DrawCall을 낮추기 위해서는 Merge Actor 기능을 잘 활용하자. 꼬옥! 3 최적화 / 패키지 용량 이슈 Optimization
  26. 26. 3 최적화 / 패키지 용량 이슈 용량 이슈 HIT는 상대적으로 작은 용량으로 시작했으나, 업데이트 규모가 커 상당히 데이터 크기가 커질 것으로 예상 타 게임들과 비교 - 꾸준히 오르긴 하지만 실제는 약간 완만하게 올라가고 있음 용량 이슈
  27. 27. 3 최적화 / 패키지 용량 이슈 용량 이슈 리소스 변화 추이를 관찰한 결과 배경(레벨) 관련 리소스가 가장 많이 늘어나고 있다!
  28. 28. 3 최적화 / 패키지 용량 이슈 용량 이슈 배경 리소스의 구성 - Static Mesh - Material Instance - Texture - Level - Light Map / Shadow Map - Vertex Color Data - Blocking Volume - Reflection Capture 배경 리소스 제작 시 Light UV를 효율적으로 할당하는 것이 가장 중요하 다!!
  29. 29. 3 최적화 / 패키지 용량 이슈 용량 이슈 • AOS에서만 ShadowMap이 ETC1으로 압축 안됨. • 이를 압축하여 사용하면 용량이 훨씬 절감됨. • 아래 경로에 TEXTUREGROUP_Shadowmap관련 압축 방식을 지정 EngineSourceDeveloperAndroidAndroidTargetPlatformPrivate AndroidTargetPlatform.inl
  30. 30. 3 최적화 / 패키지 용량 이슈 용량 이슈 불필요한 리소스는 쿠킹이 안되게 설정해두자.
  31. 31. 3 최적화 / 패키지 용량 이슈 용량 이슈 • ETC1 에서는 Alpha Channel 이 있는 Texture 사용을 자제 • Shadow Map이 압축이 안되는 현상 수정 • Material에 Switch Parameter를 사용하면 Instance의 용량 증가 • Texture Size는 512 이하 제한 • 레벨이 늘어나는 것은 어쩔 수 없음(…) • 결국 용량이슈는 잘못된 데이터가 들어가지 않게끔 하는 것이 관건! • 쿠킹 데이터 분석, 관련 Commandlet을 통해 잘못된 데이터를 수시로 체크!
  32. 32. HIT에서는… Inven Game Conference
  33. 33. 2 Unreal4의 모바일 제작 Shader & Material HIT에서는… 그러나…  하나의 Stationary Light로는 캐릭터와 배경을 동시에 풍부하게 표현하는 것이 힘듦!  Reflection Capture의 환경이 좋지 않아 풍부한 PBR Shader의 표현이 좋지 않음! • Lighting / Shadow • Stationary Light 1개 배치 • Static Light 다수 배치 • Reflection Capture 1개 배치 •Dynamic Shadow는 Modulate 로 자체 구현
  34. 34. 4 HIT에서는… Lighting / Material 1개에 Directional Light에 2개의 기능 • Static Mesh를 비추는 Light • Movable Mesh를 비추는 Light 엔진팀에서 뚝딱 만들어 주었다!
  35. 35. 4 HIT에서는… Lighting / Material 캐릭터용 Material • Roughness Clamp 0.4 ~ 1.0 • Rim Light • Ambient Base Color • Ambient Occlusion • Fog
  36. 36. 4 HIT에서는… Lighting / Material Ambient Occlusion NormalMap(worldSpace)·PixleNormal(worldSpace)
  37. 37. 4 HIT에서는… Lighting / Material Ambient Occlusion
  38. 38. 4 HIT에서는… Lighting / Material roughness flicker Issue
  39. 39. 4 HIT에서는… Lighting / Material Phong Approx half 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
  40. 40. 4 HIT에서는… Lighting / Material 밋밋한 배경에는 Reflection Capture에 Cube Map 사용
  41. 41. 4 HIT에서는… Lighting / Material Indirect Light Cache Issue 어두운 영역에서 Light Cache가 다소 어둡게 구워진다.
  42. 42. 4 HIT에서는… Lighting / Material Indirect Light Cache Issue
  43. 43. 4 HIT에서는… Lighting / Material Indirect Light Cache Issue 샘플링 수가 작아지니 오히려 보기 좋다! (국소적인 Level에서만 해당됨)
  44. 44. 4 HIT에서는… Lighting / Material Indirect Light Cache Issue
  45. 45. 4 HIT에서는… Lighting / Material BG Material • 배경용 Material은 대부분 Fully Rough • 기능별로 Material을 다수 제작 • Unlit 사용 • Translucent은 자제 • 용량이슈로 인해서 Switch Parameter를 사용하기보다 Material을 나눠서 제작 (위와같이 동일한 기능의 Material들이 퀄리티별로 다수 존재)
  46. 46. Inven Game Conference 기타 Unreal4 프로젝트 제작 팁
  47. 47. 5 기타 Unreal4 프로젝트 제작 팁 기타 Unreal4 프로젝트 제작 팁 Mali GPU에서만 발생하던 UV 정밀도 문제
  48. 48. 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 ..... • 직관적이지 않은 값으로 아티스트가 표현하기가 매우 까다롭다!
  49. 49. 5 기타 Unreal4 프로젝트 제작 팁 기타 Unreal4 프로젝트 제작 팁 sRGB사용 여부는 Texture와 Material 모두 수정하자! ES2에서는 아무리 Texture에 sRGB를 꺼놓아도 위와 같 이 Sampling되면 말짱 헛빵!
  50. 50. 5 기타 Unreal4 프로젝트 제작 팁 기타 Unreal4 프로젝트 제작 팁 sRGB를 잘못 on / off 해서 Texture를 그렸다면? Photoshop에서 Curve 조절을 통해 돌려놓을 수 있다! Pow(2.2) 혹은 Pow(1/2.2)
  51. 51. 5 기타 Unreal4 프로젝트 제작 팁 기타 Unreal4 프로젝트 제작 팁 Alpha Channel이 있을 때 PNG는 피하자
  52. 52. 5 기타 Unreal4 프로젝트 제작 팁 기타 Unreal4 프로젝트 제작 팁 Alpha Channel이 있을 때 PNG는 피하자 Alpha영역에 Color정보가 없으면 흰색으 로 채워짐 PNG Targa Alpha영역의 어떠한 정보도 무시되어 번짐
  53. 53. 5 기타 Unreal4 프로젝트 제작 팁 기타 Unreal4 프로젝트 제작 팁 Alpha Channel이 있을 때 PNG는 피하자
  54. 54. 5 기타 Unreal4 프로젝트 제작 팁 기타 Unreal4 프로젝트 제작 팁 ETC1의 압축은 다른 채널까지 영향을 끼치는 방식이다.
  55. 55. 5 기타 Unreal4 프로젝트 제작 팁 기타 Unreal4 프로젝트 제작 팁 ETC1의 압축은 다른 채널까지 영향을 끼치는 방식이다. Pow 나 Clamp를 사용하여 작은 값 줄여서 사용..
  56. 56. 5 기타 Unreal4 프로젝트 제작 팁 기타 Unreal4 프로젝트 제작 팁 ETC1의 압축은 다른 채널까지 영향을 끼치는 방식이다. Mali Texture Compression Tool 으로 Cooking 전에 확인 가능 (ASTC/ETC1/ETC2) http://malideveloper.arm.com/resources/tools/mali-gpu-texture-compression-tool/
  57. 57. 5 QA QA Q & A young@natgames.co.kr
  58. 58. 감사합니다 [ N A T G A M E S T A ] 김 영 희

×