NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
http://ndcreplay.nexon.com/NDC2017/sessions/NDC2017_0079.html 이곳에서 영상과 슬라이드를 함께 보실 수 있습니다.
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기강 민우펄어비스의 MMORPG, 검은사막에 적용되어있는 AI 네비게이션 기능은 VOXEL 기반으로 자체 개발한 엔진을 이용해 구현되어 있습니다. 기존의 대다수 상용 라이브러리들이 네비 메쉬라고 하는 이동가능한 평면을 표현하는 폴리곤 기반의 데이터를 이용해 길찾기를 수행해주는 것에 비해 근간이 다릅니다. 이 강연에서는 검은사막의 네비게이션 엔진을 구현하고, 서버 / 클라이언트에 적용하면서 얻게된 노하우와 적용된 결과물들을 소개합니다.
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계승명 양2015년 NDC에서 발표한 내용입니다.
야생의 땅 듀랑고에서 샌드박스 MMO 월드에 서버 CPU자원을 효율적으로 사용하는 시뮬레이션을 추가하기 위한 디자인 전략과, 샌드박스 MMO의 하드코어함을 완화하기 위한 부동산 정책 디자인에 대한 내용이 있습니다.
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
http://ndcreplay.nexon.com/NDC2017/sessions/NDC2017_0079.html 이곳에서 영상과 슬라이드를 함께 보실 수 있습니다.
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기강 민우펄어비스의 MMORPG, 검은사막에 적용되어있는 AI 네비게이션 기능은 VOXEL 기반으로 자체 개발한 엔진을 이용해 구현되어 있습니다. 기존의 대다수 상용 라이브러리들이 네비 메쉬라고 하는 이동가능한 평면을 표현하는 폴리곤 기반의 데이터를 이용해 길찾기를 수행해주는 것에 비해 근간이 다릅니다. 이 강연에서는 검은사막의 네비게이션 엔진을 구현하고, 서버 / 클라이언트에 적용하면서 얻게된 노하우와 적용된 결과물들을 소개합니다.
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계승명 양2015년 NDC에서 발표한 내용입니다.
야생의 땅 듀랑고에서 샌드박스 MMO 월드에 서버 CPU자원을 효율적으로 사용하는 시뮬레이션을 추가하기 위한 디자인 전략과, 샌드박스 MMO의 하드코어함을 완화하기 위한 부동산 정책 디자인에 대한 내용이 있습니다.
[IGC 2016] 블루홀 브랜든 그린 - 모드 개발자에서 크리에이티브 디렉터로, PLAYERUNKNOWN 이야기강 민우이 세션에서는 브랜든 그린이 자신의 게임, 모드 개발 관련 경험을 나누며 지금까지 어떤 길을 걸었는지를 이야기할 예정입니다. 소박하게 시작했던 첫 게임 개발 경험부터 H1Z1에서 엄청난 성공을 거두기까지, 배틀 로얄이라는 새로운 장르를 만들기 위해 그간 거쳐온 이야기를 들려줍니다.
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우본 세션에서는 Protocol:hyperspace Diver의 개발 과정 전반에 대한 포스트 모템을 수행하며 기획적인 부분을 바탕으로 제기된 요구사항에 대응하기 위한 기술적인 이슈에 어떻게 대응하였는지를 살펴볼 예정입니다. 게임을 기획하며 게임에 어떤 기능들이 요구되었으며, 엔진 레벨에서부터 모바일 게임을 개발하는 과정에서 이런 요구사항들에 어떻게 대응하였는지를 살펴봅니다. 게임을 위한 전체적인 설계 및 문제 해결 전략과 각각의 문제 해결 과정에서 세부 내용에 대한 기술적 노하우를 공유합니다.
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo KimProtocol:hyperspace Diver 개발 포스트모템
IGC2017에서 발표한 세션의 자료를 공유합니다.
이전 NDC17에서 발표한 내용과는 초점을 조금 다르게 잡고 새롭게 구성한 것입니다.
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례SangYun Yi20160305 부산 정보산업 진흥원 주최
부산 문화 컴플렉스(Busan Culture Complex) 컨퍼런스 발표 자료
Unity 3D를 통한 게임 환경 분석 및 개발 사례 공유
[IGC 2016] 에픽게임스코리아 신광섭 - 언리얼 엔진4, VR과 AR강 민우오큘러스, HTC Vive, 기어 VR, PS VR, 안드로이드 Daydream 등 모든 최신 VR을 지원하고 있는 언리얼 엔진 4를 사용한 대표적인 VR 타이들과 개발 사례를 알아봅니다. 또한 VR을 좀 더 쉽고 편리하게 개발할 수 있는 언리얼 엔진4만의 기능들을 살펴보고, 향후 업데이트 계획을 공유합니다. VR 외에 언리얼 엔진4 AR 개발에 대해서도 살펴볼 예정입니다.
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가강 민우The document discusses HTML5 technology and capabilities for games. It describes HTML5 rendering and technologies like WebGL that enable 3D graphics. It also covers sound, controls, and game engines in HTML5. The document addresses current limitations of HTML5 like lower performance compared to native apps. It outlines a three-phase project to test HTML5 and WebGL capabilities for games on mobile and PC by developing test games and evaluating performance, gameplay and development process. Keywords mentioned for HTML5 include the internet, sharing content across platforms, and its potential.
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법강 민우Abe Taraky provides a concept design presentation covering world building for a triple AAA title. The presentation discusses what makes a character design iconic, diving deep into reference material to reverse engineer source inspiration. It also addresses bringing different design variables together and putting the concept art insights into practice, noting the goal involves two different variables. The presentation concludes by thanking the audience and asking if there are any questions.
2. 들어가기 전
발표자 소개
김영희
현 NATgames TA
- 모바일 RPG HIT Animation Part
- 모바일 RPG HIT Technical Artist
- TV 애니메이션 뽀롱뽀롱 뽀로로 스리즈 리깅,R&D 담당
- TV 애니메이션 서커스쇼 리깅,R&D 담당
- TV 애니메이션 꼬마버스 타요 3기 리깅,R&D 담당
3. INDEX
1
Chapter
PC플랫폼 VS 모바일 플랫폼
2
Chapter
Unreal4의 모바일 제작
3
Chapter
최적화 / 패키지 용량 이슈
4
Chapter
HIT에서는…
5
Chapter
기타 Unreal4 프로젝트 제작 팁
5. 1
PC플랫폼 VS 모바일 플랫폼
PC Platform
PC Platform
• 화려한 Post processing
• 품질 좋은 Texture 압축(DXT1 / DTX5)
• GPU 제조사별 제약 없음
• DX11 이후부터는 Pipeline 구조 변화로 Tessellation등 을 쉽게 구현
• Throttling / Battery 무관
6. 1
PC플랫폼 VS 모바일 플랫폼
Mobile Platform
Mobile Platform
•ETC1 , ETC2 , ASTC , ATC , PVRTC … 지원하는 Texture압축이 천차만별
• Post processing 의 기능 제약 있음
• GPU 제조사별 그래픽 제약이 있음
•Throttling / Battery 등의 제약이 있음
• Memory 등 하드웨어 능력의 제약이 있음
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
10. 2
Unreal4의 모바일 제작
Unreal4의 Mobile Features
Unity / Unreal과 같은 차세대 게임엔진은 모두 크로스 플랫폼을
지원함에 따라 PC Platform의 Features를 일부를 사용하는 식으로
Mobile Platform에 적용
Unreal4 Mobile에서 지원되는
Feature를 살펴보자!
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. 2
Unreal4의 모바일 제작
Shader & Material
Traditional Shading Model VS Physical based Shading Model
•Shading Model을 새로 개발해서 사용할 것인가!
•기본 Unreal PBR을 사용할 것인가!
13. 2
Unreal4의 모바일 제작
Shader & Material
• PBR은 비싼거 아닌가?
• 과연 PBR을 아티스트가 다루기 직관적 일까?
• 우리 게임에 PBR까지는 필요 없을지도…
• 완전히 다른 Shading Model로 개발하면 좋지 않을까?
흔한 초보 TA의 의미 없는 생각
코… 코드를 보자!
14. 2
Unreal4의 모바일 제작
Shader & Material
PBR은 비싸다?
그럴 줄 알고 모바일용 Environment BRDF Model은 근사 코드로 준비해 뒀지롱-!
EngineShaders BRDF.usf
15. 2
Unreal4의 모바일 제작
Shader & Material
PBR은 비싸다?
Directional Light 연산도 따로 준비해 놨지롱~!
EngineShaders BasePassForForwardShadingPixelShader.usf
16. 2
Unreal4의 모바일 제작
Shader & Material
PBR은 비싸다?
Rough가 필요없어? 그럼 미리 상수화 시켜놓았지롱~!
EngineShaders BasePassForForwardShadingPixelShader.usf
그리고 또…
아무튼 랜더링레벨 별로 Shading 코드가 다르다.
ES2레벨에서의 퀄리티도 만족스러우며, Instruction도 비교적 적다.
17. 2
Unreal4의 모바일 제작
Shader & Material
Material Editor에서 Vertex Shader 연산도 가능함에
따라 GPU자원을 더 효율적으로 사용 할 수 있음
18. 2
Unreal4의 모바일 제작
Shader & Material
•PBR이 비싸지 않을까?
• 렌더링 레벨별로 Shading Code가 적절히 나눠져 있음.
•과연 PBR을 아티스트가 다루기 직관적 일까?
• Parameter가 적고 랜더링 레벨별로 다르지 않아서 큰 어려움이 없음
• 우리 게임에 PBR까지는 필요 없을지도…
•상황에 따라 Fully Rough / Unlit을 사용
DX11 OpenGL ES2
20. 3
최적화 / 패키지 용량 이슈
Optimization
HIT 프리뷰 단계에서는…
• 탑다운 뷰 때문에 상대적으로 Overdraw가 적게 발생.
• Opacity가 들어간 Material 사용 안함.
• 고정된 뷰로 Mesh를 아낄 수 있음.
• CPU자원 > GPU자원
그럼 일단 최적의 Draw Call을 측정하는 것을 중점을 두자!
21. 3
최적화 / 패키지 용량 이슈
Optimization
모바일 퍼포먼스 체크할 때 염두 해야 할 점
•모바일 개발에서는 실제 디바이스에서 퍼포먼스를 측정하는 것을 습관화하자.
• 용량측정은 쿠킹이 완료된 Pak파일로 분석하자.
• 따라서 레퍼런스가 될 타겟을 지정해 놓자.
•GPU 프로파일러를 활용하자!
HIT의 테스트 타겟은 갤럭시S4 (Adreno 320)!
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. DrawCall을 낮추기 위해서는 Merge Actor 기능을 잘 활용하자. 꼬옥!
3
최적화 / 패키지 용량 이슈
Optimization
26. 3
최적화 / 패키지 용량 이슈
용량 이슈
HIT는 상대적으로 작은 용량으로 시작했으나, 업데이트
규모가 커 상당히 데이터 크기가 커질 것으로 예상
타 게임들과 비교 - 꾸준히 오르긴 하지만 실제는 약간 완만하게 올라가고 있음
용량 이슈
27. 3
최적화 / 패키지 용량 이슈
용량 이슈
리소스 변화 추이를 관찰한 결과
배경(레벨) 관련 리소스가 가장 많이 늘어나고 있다!
28. 3
최적화 / 패키지 용량 이슈
용량 이슈
배경 리소스의 구성
- Static Mesh
- Material Instance
- Texture
- Level
- Light Map / Shadow Map
- Vertex Color Data
- Blocking Volume
- Reflection Capture
배경 리소스 제작 시 Light UV를 효율적으로 할당하는 것이 가장 중요하
다!!
29. 3
최적화 / 패키지 용량 이슈
용량 이슈
• AOS에서만 ShadowMap이 ETC1으로 압축 안됨.
• 이를 압축하여 사용하면 용량이 훨씬 절감됨.
• 아래 경로에 TEXTUREGROUP_Shadowmap관련 압축
방식을 지정
EngineSourceDeveloperAndroidAndroidTargetPlatformPrivate AndroidTargetPlatform.inl
31. 3
최적화 / 패키지 용량 이슈
용량 이슈
• ETC1 에서는 Alpha Channel 이 있는 Texture 사용을 자제
• Shadow Map이 압축이 안되는 현상 수정
• Material에 Switch Parameter를 사용하면 Instance의 용량 증가
• Texture Size는 512 이하 제한
• 레벨이 늘어나는 것은 어쩔 수 없음(…)
• 결국 용량이슈는 잘못된 데이터가 들어가지
않게끔 하는 것이 관건!
• 쿠킹 데이터 분석, 관련 Commandlet을 통해
잘못된 데이터를 수시로 체크!
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 로 자체 구현
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
45. 4
HIT에서는…
Lighting / Material
BG Material
• 배경용 Material은 대부분 Fully Rough
• 기능별로 Material을 다수 제작
• Unlit 사용
• Translucent은 자제
• 용량이슈로 인해서 Switch Parameter를 사용하기보다
Material을 나눠서 제작
(위와같이 동일한 기능의 Material들이 퀄리티별로 다수 존재)
47. 5
기타 Unreal4 프로젝트 제작 팁
기타 Unreal4 프로젝트 제작 팁
Mali GPU에서만 발생하던 UV 정밀도 문제
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. 5
기타 Unreal4 프로젝트 제작 팁
기타 Unreal4 프로젝트 제작 팁
sRGB사용 여부는 Texture와 Material 모두 수정하자!
ES2에서는 아무리 Texture에 sRGB를 꺼놓아도 위와 같
이 Sampling되면 말짱 헛빵!
50. 5
기타 Unreal4 프로젝트 제작 팁
기타 Unreal4 프로젝트 제작 팁
sRGB를 잘못 on / off 해서 Texture를 그렸다면?
Photoshop에서 Curve 조절을 통해 돌려놓을 수 있다!
Pow(2.2) 혹은 Pow(1/2.2)
51. 5
기타 Unreal4 프로젝트 제작 팁
기타 Unreal4 프로젝트 제작 팁
Alpha Channel이 있을 때 PNG는 피하자
52. 5
기타 Unreal4 프로젝트 제작 팁
기타 Unreal4 프로젝트 제작 팁
Alpha Channel이 있을 때 PNG는 피하자
Alpha영역에 Color정보가 없으면 흰색으
로 채워짐
PNG Targa
Alpha영역의 어떠한 정보도
무시되어 번짐
53. 5
기타 Unreal4 프로젝트 제작 팁
기타 Unreal4 프로젝트 제작 팁
Alpha Channel이 있을 때 PNG는 피하자
54. 5
기타 Unreal4 프로젝트 제작 팁
기타 Unreal4 프로젝트 제작 팁
ETC1의 압축은 다른 채널까지 영향을 끼치는 방식이다.
55. 5
기타 Unreal4 프로젝트 제작 팁
기타 Unreal4 프로젝트 제작 팁
ETC1의 압축은 다른 채널까지 영향을 끼치는 방식이다.
Pow 나 Clamp를 사용하여 작은 값 줄여서 사용..
56. 5
기타 Unreal4 프로젝트 제작 팁
기타 Unreal4 프로젝트 제작 팁
ETC1의 압축은 다른 채널까지 영향을 끼치는 방식이다.
Mali Texture Compression Tool 으로 Cooking 전에 확인 가능
(ASTC/ETC1/ETC2)
http://malideveloper.arm.com/resources/tools/mali-gpu-texture-compression-tool/