Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
IGC(INVEN GAME CONFERENCE) 2018
포트나이트 배틀로얄
멀티플랫폼 지원
신광섭
디벨로퍼 릴레이션스 리드
에픽게임즈 코리아
IGC(INVEN GAME CONFERENCE) 2018
INTRODUCTION
IGC(INVEN GAME CONFERENCE) 2018
소개
PC, Mac, PS4, Xbox One, iOS, 안드로이드, 닌텐도 스위치
모든 유저들이 같이 크로스 플레이 가능!
● 같은 콘텐츠 – 콘솔/PC 부터 ...
IGC(INVEN GAME CONFERENCE) 2018
소개
● 포트나이트 배틀로얄 멀티플랫폼 지원의 Key point
PC/콘솔 <-> 모바일(iOS, Android)을 넘나드는
최적화, 최적화, 최적화
IGC(INVEN GAME CONFERENCE) 2018
소개
● Significance manager
● Ticking & 블루프린트
● 스트리밍
● 서버 퍼포먼스
● 프로파일링
● HLOD
● 콘솔 @ 60Hz
● ...
IGC(INVEN GAME CONFERENCE) 2018
SIGNIFICANCE
IGC(INVEN GAME CONFERENCE) 2018
● 게임 플레이어들을 아래에 기초해 Significance Bucket 에 할당:
○ 거리
○ 화면에서의 크기
○ 보이는지 여부
● 많은 스케일러빌티티(scala...
IGC(INVEN GAME CONFERENCE) 2018
애니메이션 - UPDATE RATE OPTIMIZATION
● 애니메이션 계산을 줄이는 엔진 기능
● Significance 에 의해서 컨트롤됨
URO 없음 UR...
IGC(INVEN GAME CONFERENCE) 2018
TICKING
IGC(INVEN GAME CONFERENCE) 2018
애니메이션 – 모듈형 캐릭터
● 5개의 메쉬로 이루어진 모듈형 캐릭터
● 각 파츠가 애님 블루프린트를 따로 가지고 있음!
1 – 기본 스켈레톤
2 - 머리
3 -...
IGC(INVEN GAME CONFERENCE) 2018
애니메이션 – 네이티브 코드화 작업
● 매 Tick 마다 일어나는 이벤트 그래프의 블루프린트를 C++로 변경
최적화 전
0.93 ms
최적화 후
0.19 ms
IGC(INVEN GAME CONFERENCE) 2018
TICKING - 액터
● ‘Dumpticks’ 콘솔 명령어로 사용 분석
● Tick 이벤트를 사용하는 블루프린트들
● Overlaps은 느린 것 중에 하나
○ ...
IGC(INVEN GAME CONFERENCE) 2018
SPAWNING
● 많은 액터들이 생성됨(Spawning)
○ 벽 건설
○ 보물상자 열기
○ 플레이어 제거
○ 네트워크 관련성(Network relevancy)
...
IGC(INVEN GAME CONFERENCE) 2018
TICKING - HUD
● Slate HUD가 ~2.6ms 비용 소요
● ~1ms 정도로 최적화
○ 느린 블루프린트 제거
○ 위젯들을 캐쉬하기 위해서 inval...
IGC(INVEN GAME CONFERENCE) 2018
TICKING – 하루의 변화 시스템
● MaterialParameterCollection에서 많은 라이팅 관련 변수들 변경
● 프레임당 하나의 변경만 업데이트 ...
IGC(INVEN GAME CONFERENCE) 2018
레벨 스트리밍
IGC(INVEN GAME CONFERENCE) 2018
레벨 스트리밍
● 포트나이트 2.2.0 버전부터 사용 (2018 1월쯤)
● 왜?
○ 메모리 사용량 줄이기
○ 맵의 퀄리티 높이기
○ 코스튬등의 다양성 늘리기 (...
IGC(INVEN GAME CONFERENCE) 2018
레벨 스트리밍 – 컴포넌트 등록
● Adaptive Time Slicing 사용
○ 스카이 다이빙: 5ms
○ 지면: 1ms
● 남는 GT 시간을 로딩에 사용
IGC(INVEN GAME CONFERENCE) 2018
서버 퍼포먼스
IGC(INVEN GAME CONFERENCE) 2018
서버 퍼포먼스 - 리플리케이션
- ~50,000 리플레케이트되는 액터들
- 100 개의 연결
- 400+ 스트리밍 레벨들
- 20 Hz tick 속도
- 최대한 ...
IGC(INVEN GAME CONFERENCE) 2018
● 네트워크 관련성(network relevancy)을 다시 정의
○ IsNetRelevantFor과 GetNetPriority가 사용되지 않음
● 그래프로 관련...
IGC(INVEN GAME CONFERENCE) 2018
데디케이티드 서버 - REPLICATED STATE 공유
- 자주 같은 state가 많은 클라이언트에 보내짐
- State를 따로 만들지 않고, 최대한 캐쉬/재사...
IGC(INVEN GAME CONFERENCE) 2018
서버 퍼포먼스 - 게임플레이
● 클라이언트 최적화가 많은 도움이 됨
● 클라이언트 캐릭터 이동을 합쳐 처리하도록 노력
○ 높은 FPS에서 너무 많은 RPC 호출 ...
IGC(INVEN GAME CONFERENCE) 2018
프로파일링
IGC(INVEN GAME CONFERENCE) 2018
프로파일링
● QA 팀은 데일리 100인 플레이 테스트에서 프로파일 데이터를 수집
● 하나의 완벽한 게임 플레이에서 얻어진 프로파일 데이터로 게임에서
발생한 각각...
IGC(INVEN GAME CONFERENCE) 2018
리플레이 시스템을 사용한 A/B 테스트
IGC(INVEN GAME CONFERENCE) 2018IGC(INVEN GAME CONFERENCE) 2018
콘솔에서 60 FPS
스위치에서 30 FPS
IGC(INVEN GAME CONFERENCE) 2018
이슈
30fps 게임을 60fps 으로 만드는 것은 여러 도전 이슈들이 생김
핵심 솔루션들:
● GPU Dynamic Resolution & Temporal AA...
IGC(INVEN GAME CONFERENCE) 2018
Spatial Upscale
Spatial Upscale
● UI 전에 업스케일링
● r.screenpercentage 으로 해상도 변경시
IGC(INVEN GAME CONFERENCE) 2018
Temporal Upsampling & Dynamic Resolution
● 해상도를 조절하는 옵션으로 UE4.19 추가됨
● Temporal Upsampling...
IGC(INVEN GAME CONFERENCE) 2018
Temporal Anti-Aliasing Upsample
Temporal Upsample (TAAU)
• TemporalAA에서 업샘플링
• 모션블러 블룸이 고해...
IGC(INVEN GAME CONFERENCE) 2018
Temporal AA Upscale Settings
● Temporal upsample로 해상도 변경
○ 차이가 거의 느껴지지 않음
○ 매 8 프레임마다 정한 G...
IGC(INVEN GAME CONFERENCE) 2018
GPU: 23.5ms
Dynamic Res: 100%
30 FPS
IGC(INVEN GAME CONFERENCE) 2018
GPU: 15.9ms
Dynamic Res: 83.4%
60 FPS
IGC(INVEN GAME CONFERENCE) 2018
IGC(INVEN GAME CONFERENCE) 2018
닌텐도 스위치
도킹 및 휴대용 모든 모드에서 GPU 사용을 최대화 하기 위해서
Dynamic resolution과 TAAU + 디퍼드 렌더러 사용. 그래도 30H...
IGC(INVEN GAME CONFERENCE) 2018
캐릭터 최적화
● 캐릭터 4 LOD, 무기 3 LOD
● LOD에서는 얼굴본 제거
● 모바일에서는 LOD 1 최소 LOD
● 캐릭터 LODs
○ LOD0 30,0...
IGC(INVEN GAME CONFERENCE) 2018
풀(GRASS) 최적화
● 풀(Grass) 최적화는 중요 요소 중에 하나
○ LOD 추가
○ 회전 제거등으로 버텍스 셰이더 최적화
○ 모바일에서는 버텍스 셰이더 ...
IGC(INVEN GAME CONFERENCE) 2018
Hierarchical LOD – 엄청난 기능, But 캐릭터에 가까이 있는 것에는 적용 불가능
IGC(INVEN GAME CONFERENCE) 2018
다이나믹 HLOD를 통한 부서지는 건물
● 틸티드 타워 지역은 15개의 빌딩과
오브젝트들로 약 2000개의 드로콜이였음
● 새로운 다이나믹 HLOD로 하나의 전체...
IGC(INVEN GAME CONFERENCE) 2018
DHLOD 비교
원본 메시 HLOD level 0 (다이나믹 HLOD) HLOD level 1 (프록시 HLOD)
~70,000 tris, 100s drawcal...
IGC(INVEN GAME CONFERENCE) 2018
다아나믹 HLOD 적용 전
~1800 draw calls, 484k tris (w/o shadows)
IGC(INVEN GAME CONFERENCE) 2018
다이나믹 HLOD 적용 후
~800 draw calls, 375k tris (w/o shadows)
IGC(INVEN GAME CONFERENCE) 2018
나무 임포스터
● Hemi-octahedral 캡쳐 레이아웃
● 각 프레임을 2D texture atlas로 만듬
● Vector->Octahedron 변환을 사...
IGC(INVEN GAME CONFERENCE) 2018
HLOD + 나무 임포스터
IGC(INVEN GAME CONFERENCE) 2018IGC(INVEN GAME CONFERENCE) 2018
모바일
하나의 게임 – 모든 플랫폼
IGC(INVEN GAME CONFERENCE) 2018
하나의 게임, 모든 플랫폼
크로스 플레이 지원을 위한 필수 조건들:
● 하나의 같은 맵으로 모든 플랫폼 지원
● 게임플레이에 영향을 주는 모든 요소들이 똑같이 지...
IGC(INVEN GAME CONFERENCE) 2018
하나의 게임, 모든 플랫폼
PC (최대 퀄리티)
IGC(INVEN GAME CONFERENCE) 2018
하나의 게임, 모든 플랫폼
PC (중간 퀄리티)
IGC(INVEN GAME CONFERENCE) 2018
하나의 게임, 모든 플랫폼
iPhone 8+ iOS (최대 퀄리티)
IGC(INVEN GAME CONFERENCE) 2018
하나의 게임, 모든 플랫폼
모바일 지원 중요 이슈들
● CPU - Thermal throttling
● 메모리
● 드로콜 줄이기 - HLOD
● GPU 속도 및 ...
IGC(INVEN GAME CONFERENCE) 2018
THERMAL THROTTLING
가장 높은 수준의 퀄리티로 30fps 을 원했음. 하지만..
CPU와 GPU를 최대치로 사용하는 것은 열을 발생했고, 결국 디바...
IGC(INVEN GAME CONFERENCE) 2018
메모리: 타켓
iOS에서 피지컬 메모리 GB당 700MB을 허용 버짓으로 잡음
● 2GB 디바이스에서 <1.4 GB (대부분의 폰들)
● 3GB 디바이스에서 <2...
IGC(INVEN GAME CONFERENCE) 2018
디바이스별 튜닝 – 스케일러빌리티(SCALABILITY)
애플/iOS
● 알고 있는 제한된 디바이스 종류만 존재, 디바이스별로 값들 세팅
● 메모리 허용량 – 폴...
IGC(INVEN GAME CONFERENCE) 2018
모바일 개선 사항들
안드로이드
Program Binary Cache와 shader precompilation을
통한 시작 시간 계산
Shader LRU Cache...
IGC(INVEN GAME CONFERENCE) 2018IGC(INVEN GAME CONFERENCE) 2018
감사합니다!
UNREALENGINE.COM
Nächste SlideShare
Wird geladen in …5
×

[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원

541 Aufrufe

Veröffentlicht am

[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원

  1. 1. IGC(INVEN GAME CONFERENCE) 2018 포트나이트 배틀로얄 멀티플랫폼 지원 신광섭 디벨로퍼 릴레이션스 리드 에픽게임즈 코리아
  2. 2. IGC(INVEN GAME CONFERENCE) 2018 INTRODUCTION
  3. 3. IGC(INVEN GAME CONFERENCE) 2018 소개 PC, Mac, PS4, Xbox One, iOS, 안드로이드, 닌텐도 스위치 모든 유저들이 같이 크로스 플레이 가능! ● 같은 콘텐츠 – 콘솔/PC 부터 모바일까지 아주 넓은 영역의 하드웨어 지원 ● 게임 콘텐츠도 같이 계속 업데이트 ○ 새로운 기능들 (자동차, 코스튬, 새로운 게임 모드) 도전 과제들 - 멀티플랫폼 지원
  4. 4. IGC(INVEN GAME CONFERENCE) 2018 소개 ● 포트나이트 배틀로얄 멀티플랫폼 지원의 Key point PC/콘솔 <-> 모바일(iOS, Android)을 넘나드는 최적화, 최적화, 최적화
  5. 5. IGC(INVEN GAME CONFERENCE) 2018 소개 ● Significance manager ● Ticking & 블루프린트 ● 스트리밍 ● 서버 퍼포먼스 ● 프로파일링 ● HLOD ● 콘솔 @ 60Hz ● CPU ● GPU ● 모바일 – IOS/Android 언리얼 엔진 4의 포트나이트 배틀로얄 최적화 중요 영역들
  6. 6. IGC(INVEN GAME CONFERENCE) 2018 SIGNIFICANCE
  7. 7. IGC(INVEN GAME CONFERENCE) 2018 ● 게임 플레이어들을 아래에 기초해 Significance Bucket 에 할당: ○ 거리 ○ 화면에서의 크기 ○ 보이는지 여부 ● 많은 스케일러빌티티(scalability) 시스템을 컨트롤 ● 엔진 기능! ○ 하지만 게임에 의존적 SIGNIFICANCE MANAGER 플레이어 중요도 높음 중요도 낮음 다른 플레이어
  8. 8. IGC(INVEN GAME CONFERENCE) 2018 애니메이션 - UPDATE RATE OPTIMIZATION ● 애니메이션 계산을 줄이는 엔진 기능 ● Significance 에 의해서 컨트롤됨 URO 없음 URO 4 URO 10 URO 4 – 보간 없음
  9. 9. IGC(INVEN GAME CONFERENCE) 2018 TICKING
  10. 10. IGC(INVEN GAME CONFERENCE) 2018 애니메이션 – 모듈형 캐릭터 ● 5개의 메쉬로 이루어진 모듈형 캐릭터 ● 각 파츠가 애님 블루프린트를 따로 가지고 있음! 1 – 기본 스켈레톤 2 - 머리 3 - 몸 4 - 가방 5 - 무기
  11. 11. IGC(INVEN GAME CONFERENCE) 2018 애니메이션 – 네이티브 코드화 작업 ● 매 Tick 마다 일어나는 이벤트 그래프의 블루프린트를 C++로 변경 최적화 전 0.93 ms 최적화 후 0.19 ms
  12. 12. IGC(INVEN GAME CONFERENCE) 2018 TICKING - 액터 ● ‘Dumpticks’ 콘솔 명령어로 사용 분석 ● Tick 이벤트를 사용하는 블루프린트들 ● Overlaps은 느린 것 중에 하나 ○ 문열기 ○ 회전하는 토마토 머리
  13. 13. IGC(INVEN GAME CONFERENCE) 2018 SPAWNING ● 많은 액터들이 생성됨(Spawning) ○ 벽 건설 ○ 보물상자 열기 ○ 플레이어 제거 ○ 네트워크 관련성(Network relevancy) ○ 발사되는 총알들 ● 파티클 풀링(Pooling) 시스템 추가! ○ 이펙트를 생성하는 비용 절감 ■ ParticleSystemComponent 생성 ■ ParticleSystem 설정 ○ Spawn Emitter 함수에 Pooling Method 옵션
  14. 14. IGC(INVEN GAME CONFERENCE) 2018 TICKING - HUD ● Slate HUD가 ~2.6ms 비용 소요 ● ~1ms 정도로 최적화 ○ 느린 블루프린트 제거 ○ 위젯들을 캐쉬하기 위해서 invalidation panels 사용 ○ 느린 위젯들 최적화 ● 추가적인 Slate 최적화 계획 중
  15. 15. IGC(INVEN GAME CONFERENCE) 2018 TICKING – 하루의 변화 시스템 ● MaterialParameterCollection에서 많은 라이팅 관련 변수들 변경 ● 프레임당 하나의 변경만 업데이트 하도록 시스템 최적화
  16. 16. IGC(INVEN GAME CONFERENCE) 2018 레벨 스트리밍
  17. 17. IGC(INVEN GAME CONFERENCE) 2018 레벨 스트리밍 ● 포트나이트 2.2.0 버전부터 사용 (2018 1월쯤) ● 왜? ○ 메모리 사용량 줄이기 ○ 맵의 퀄리티 높이기 ○ 코스튬등의 다양성 늘리기 (스킨, 가방, 무기등등) ○ 렌더링 최적화 ○ 게임플레이 최적화 ● 관련한 기술적 부분들 ○ IO 스레드 ○ Asynchronous deserialize ○ 메인 스레드에서 여러 프레임으로 나누어 로딩 ○ Texturestreaming 참여도 조절하기
  18. 18. IGC(INVEN GAME CONFERENCE) 2018 레벨 스트리밍 – 컴포넌트 등록 ● Adaptive Time Slicing 사용 ○ 스카이 다이빙: 5ms ○ 지면: 1ms ● 남는 GT 시간을 로딩에 사용
  19. 19. IGC(INVEN GAME CONFERENCE) 2018 서버 퍼포먼스
  20. 20. IGC(INVEN GAME CONFERENCE) 2018 서버 퍼포먼스 - 리플리케이션 - ~50,000 리플레케이트되는 액터들 - 100 개의 연결 - 400+ 스트리밍 레벨들 - 20 Hz tick 속도 - 최대한 낮은 빈도의 net 업데이트/ForceNetUpdate() - 관련성(relevancy) 거리를 최대한 줄이기 - 관련 없는 상태를 최대한 정확히 걸러내기
  21. 21. IGC(INVEN GAME CONFERENCE) 2018 ● 네트워크 관련성(network relevancy)을 다시 정의 ○ IsNetRelevantFor과 GetNetPriority가 사용되지 않음 ● 그래프로 관련이 있는 액터들만 필터링 ○ 공간 그리드(Spatial grid) ○ 스트리밍 ○ 항상 관련있음(Always Relevant) (팀/연결된 것들/모두) 서버 퍼포먼스 - 리플리케이션 그래프(REPLICATION GRAPH)
  22. 22. IGC(INVEN GAME CONFERENCE) 2018 데디케이티드 서버 - REPLICATED STATE 공유 - 자주 같은 state가 많은 클라이언트에 보내짐 - State를 따로 만들지 않고, 최대한 캐쉬/재사용하는 기능 추가 Actor Actor State Client Actor State Client Actor State Client Actor Client Actor State Client Client
  23. 23. IGC(INVEN GAME CONFERENCE) 2018 서버 퍼포먼스 - 게임플레이 ● 클라이언트 최적화가 많은 도움이 됨 ● 클라이언트 캐릭터 이동을 합쳐 처리하도록 노력 ○ 높은 FPS에서 너무 많은 RPC 호출 피하기 ○ 공격적으로 최소 프레임으로 처리 (약 20 Hz) ○ 레이턴시(latency)를 줄이기 위해 중요 이동의 경우 바로 보냄 ● 애니메이션 ○ 서버에서는 애니메이션 처리하지 않음 ○ 플레이어 컬리젼 비활성화 ○ 모든 불필요한 보여주기를 위한 컴포넌트들 제거
  24. 24. IGC(INVEN GAME CONFERENCE) 2018 프로파일링
  25. 25. IGC(INVEN GAME CONFERENCE) 2018 프로파일링 ● QA 팀은 데일리 100인 플레이 테스트에서 프로파일 데이터를 수집 ● 하나의 완벽한 게임 플레이에서 얻어진 프로파일 데이터로 게임에서 발생한 각각의 히치/느려지는 구간 분석 가능 ○ 히치가 60ms 이상으로 걸리는 경우 버그로 등록 ○ 성능 관련 버거는 크래쉬 다음으로 중요도가 높은 버그로 대응 ● 게임을 Reply 시스템으로 레코딩해서 확인 및 다른 플랫폼에서 테스트 가능
  26. 26. IGC(INVEN GAME CONFERENCE) 2018 리플레이 시스템을 사용한 A/B 테스트
  27. 27. IGC(INVEN GAME CONFERENCE) 2018IGC(INVEN GAME CONFERENCE) 2018 콘솔에서 60 FPS 스위치에서 30 FPS
  28. 28. IGC(INVEN GAME CONFERENCE) 2018 이슈 30fps 게임을 60fps 으로 만드는 것은 여러 도전 이슈들이 생김 핵심 솔루션들: ● GPU Dynamic Resolution & Temporal AA ● GPU 디바이스 프로파일을 통한 스케일링 ○ 그려지는 거리, 그림자 퀄리티, AO, 폴리지 밀도, 최소/최대 dynamic resolution ● CPU 스케일링 ○ 모바일 CPU 개선을 사용 (Ticking, LOD, 드로콜)
  29. 29. IGC(INVEN GAME CONFERENCE) 2018 Spatial Upscale Spatial Upscale ● UI 전에 업스케일링 ● r.screenpercentage 으로 해상도 변경시
  30. 30. IGC(INVEN GAME CONFERENCE) 2018 Temporal Upsampling & Dynamic Resolution ● 해상도를 조절하는 옵션으로 UE4.19 추가됨 ● Temporal Upsampling ○ Temporal upsampling은 높은 퀄리티의 업샘플링 가능 ○ TemporalAA 패스에서 업샘플링 ● Dynamic Resolution ○ GPU 부하에 따라서 자동으로 해상도가 변경되고, Temporal Upsampling을 통해 그 변화가 거의 느껴지지 않음
  31. 31. IGC(INVEN GAME CONFERENCE) 2018 Temporal Anti-Aliasing Upsample Temporal Upsample (TAAU) • TemporalAA에서 업샘플링 • 모션블러 블룸이 고해상도에서 처리되어서 Spatial Upscale에서 부하가 더 있음 • Dynamic Resolution 해상도가 여기서 변경됨
  32. 32. IGC(INVEN GAME CONFERENCE) 2018 Temporal AA Upscale Settings ● Temporal upsample로 해상도 변경 ○ 차이가 거의 느껴지지 않음 ○ 매 8 프레임마다 정한 GPU 허용량에 맞도록 동작 Xbox One X 예제 @ 65% 화면 비율 1: 렌더링 해상도 = 2080x1170 2: 버퍼 해상도 = 3200x1800
  33. 33. IGC(INVEN GAME CONFERENCE) 2018 GPU: 23.5ms Dynamic Res: 100% 30 FPS
  34. 34. IGC(INVEN GAME CONFERENCE) 2018 GPU: 15.9ms Dynamic Res: 83.4% 60 FPS
  35. 35. IGC(INVEN GAME CONFERENCE) 2018
  36. 36. IGC(INVEN GAME CONFERENCE) 2018 닌텐도 스위치 도킹 및 휴대용 모든 모드에서 GPU 사용을 최대화 하기 위해서 Dynamic resolution과 TAAU + 디퍼드 렌더러 사용. 그래도 30Hz 고정 최근에 Clustered Forward Renderer로 변경을 통해 10% 더 빠른 퍼포먼스 핸드헬드 모드에서는 배터리 사용량을 위해서 100% 퍼포먼스를 사용하지 않음
  37. 37. IGC(INVEN GAME CONFERENCE) 2018 캐릭터 최적화 ● 캐릭터 4 LOD, 무기 3 LOD ● LOD에서는 얼굴본 제거 ● 모바일에서는 LOD 1 최소 LOD ● 캐릭터 LODs ○ LOD0 30,000 tris ○ LOD1 15,000 tris ○ LOD2 3,000 tris ○ LOD3 300 tris
  38. 38. IGC(INVEN GAME CONFERENCE) 2018 풀(GRASS) 최적화 ● 풀(Grass) 최적화는 중요 요소 중에 하나 ○ LOD 추가 ○ 회전 제거등으로 버텍스 셰이더 최적화 ○ 모바일에서는 버텍스 셰이더 제거 ○ 게임에 영향을 주지 않는 풀의 Density scale 조정
  39. 39. IGC(INVEN GAME CONFERENCE) 2018 Hierarchical LOD – 엄청난 기능, But 캐릭터에 가까이 있는 것에는 적용 불가능
  40. 40. IGC(INVEN GAME CONFERENCE) 2018 다이나믹 HLOD를 통한 부서지는 건물 ● 틸티드 타워 지역은 15개의 빌딩과 오브젝트들로 약 2000개의 드로콜이였음 ● 새로운 다이나믹 HLOD로 하나의 전체 빌딩을 1개의 드로콜로 줄임 ● 렌더타켓 이용 ● 각 벽들의 부서진 여부를 처리하기 위해서 부서진 벽에 대한 인덱스를 렌더타켓에 검은 텍셀로 표시 ● UV와 버텍스컬러를 이용해서 RT를 읽어서 버텍스 셰이더에서 처리
  41. 41. IGC(INVEN GAME CONFERENCE) 2018 DHLOD 비교 원본 메시 HLOD level 0 (다이나믹 HLOD) HLOD level 1 (프록시 HLOD) ~70,000 tris, 100s drawcall 5,462 tris, 1 drawcall 1,150 tris, 1 drawcall 항상 로드됨스트리밍된 부서지는 요소들 스트리밍됨
  42. 42. IGC(INVEN GAME CONFERENCE) 2018 다아나믹 HLOD 적용 전 ~1800 draw calls, 484k tris (w/o shadows)
  43. 43. IGC(INVEN GAME CONFERENCE) 2018 다이나믹 HLOD 적용 후 ~800 draw calls, 375k tris (w/o shadows)
  44. 44. IGC(INVEN GAME CONFERENCE) 2018 나무 임포스터 ● Hemi-octahedral 캡쳐 레이아웃 ● 각 프레임을 2D texture atlas로 만듬 ● Vector->Octahedron 변환을 사용해서 프레임 인덱싱 ● UV 공간에서 +X, +Y, +XY 주변 좌표를 통한 간단한 주변 프레임 접근 ● 추가적인 정보: https://shaderbits.com/blog/octahedra l-impostors
  45. 45. IGC(INVEN GAME CONFERENCE) 2018 HLOD + 나무 임포스터
  46. 46. IGC(INVEN GAME CONFERENCE) 2018IGC(INVEN GAME CONFERENCE) 2018 모바일 하나의 게임 – 모든 플랫폼
  47. 47. IGC(INVEN GAME CONFERENCE) 2018 하나의 게임, 모든 플랫폼 크로스 플레이 지원을 위한 필수 조건들: ● 하나의 같은 맵으로 모든 플랫폼 지원 ● 게임플레이에 영향을 주는 모든 요소들이 똑같이 지원되어야 함 ● 전투가 가능한 거리가 모든 플랫폼에서 같아야 함 모바일 포팅이나 새로운 맵 추가가 아닌 하나의 같은 맵!
  48. 48. IGC(INVEN GAME CONFERENCE) 2018 하나의 게임, 모든 플랫폼 PC (최대 퀄리티)
  49. 49. IGC(INVEN GAME CONFERENCE) 2018 하나의 게임, 모든 플랫폼 PC (중간 퀄리티)
  50. 50. IGC(INVEN GAME CONFERENCE) 2018 하나의 게임, 모든 플랫폼 iPhone 8+ iOS (최대 퀄리티)
  51. 51. IGC(INVEN GAME CONFERENCE) 2018 하나의 게임, 모든 플랫폼 모바일 지원 중요 이슈들 ● CPU - Thermal throttling ● 메모리 ● 드로콜 줄이기 - HLOD ● GPU 속도 및 GPU 드라이버 – 해상도 줄이고 업스케일링
  52. 52. IGC(INVEN GAME CONFERENCE) 2018 THERMAL THROTTLING 가장 높은 수준의 퀄리티로 30fps 을 원했음. 하지만.. CPU와 GPU를 최대치로 사용하는 것은 열을 발생했고, 결국 디바이스 다운클럭(downclock) 발생 해결을 위한 키 포인트: CPU 코어들이 시간의 약 50%는 idle 상태로 있도록 했음. 그래서 60fps 타켓으로 최적화 하고, 30fps에 vsync 했음
  53. 53. IGC(INVEN GAME CONFERENCE) 2018 메모리: 타켓 iOS에서 피지컬 메모리 GB당 700MB을 허용 버짓으로 잡음 ● 2GB 디바이스에서 <1.4 GB (대부분의 폰들) ● 3GB 디바이스에서 <2.1 GB (“+” 폰들) ● 4GB 디바이스에서 <2.8 GB (큰 iPadPro) 안드로이드에서 메모리 상황은 디바이스마다 더 복잡함 ● 2GB 디바이스에서 <500 MB (아직 작업중) ● 3GB 디바이스에서 <1.4 GB (대부분의 경우 괜찮음) ● 4GB 디바이스 중에 특정 디바이스들 <1.4 GB (구글 픽셀폰!!!!) 안드로이드에서는 정확한 메모리 정보를 얻어오기 힘듬...
  54. 54. IGC(INVEN GAME CONFERENCE) 2018 디바이스별 튜닝 – 스케일러빌리티(SCALABILITY) 애플/iOS ● 알고 있는 제한된 디바이스 종류만 존재, 디바이스별로 값들 세팅 ● 메모리 허용량 – 폴리지 사용여부 (3GB 이상의 디바이스에서만) ● 디바이스별 설정 – 스케일러빌리티 세팅(해상도, 그림자 on/off, LOD 거리 등등) 안드로이드 ● 엄청나게 많은 종류의 디바이스들 (10,000+). 일반적으로 그래픽 API가 iOS만큼 빠르지 않음. ● 알려진 특정 디바이스나 테스트한 디바이스들은 각각에 맞는 튜닝 ● GPU 타입(Adreno 6xx 또는 Mali G7x등등)에 따른 세팅(Lowest, Low, Med, High 등등) ● 낮은 사양의 안드로이드 폰에는 특별히 낮은 FPS(20Hz) 사용 ● Vulkan은 현재 가장 높은 스펙의 삼성 디바이스에서만 더 빠름 (Adreno 630) 안드로이드 지원을 위해서 3월부터 8월초까지 최적화 및 안정화 작업이 필요했음!
  55. 55. IGC(INVEN GAME CONFERENCE) 2018 모바일 개선 사항들 안드로이드 Program Binary Cache와 shader precompilation을 통한 시작 시간 계산 Shader LRU Cache 를 통한 엄청난 메모리 절약 셰이더 사이즈 줄이기 위한 Emulated Uniform Buffers 개선 Vulkan 호환성 개선 및 최적화 CPU core thread affinity 조정 디바이스별 Mobile PIE 개선 안드로이드 Occlusion Query 개선 디바이스 프로파일 개선 Virtual Keyboard 수정 많은 버그들 수정 IOS Web Browser Widget UObject 바인딩 지원 iPhone XS/XSMax/XR 지원 버그들 수정 모바일 GPU particle 시뮬레이션 성능 개선 dithered LOD transitions 수정 Sky cubemap 반사 수정 터레인 웨이트맵 텍스처 압축
  56. 56. IGC(INVEN GAME CONFERENCE) 2018IGC(INVEN GAME CONFERENCE) 2018 감사합니다! UNREALENGINE.COM

×