SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Skyscraper
Visual
Engineering
Vision
SS Studio
Technical Director
Kyoung seok, Ko
1. 본인이 이해한 Skyscraper는
“고층빌딩이 밀집한 도심에서 빠르고
최적화된 환경에서 총기 전투를 해야
하는 게임이다”
2. 목표로 하는 게임 그래픽의
방향성은 (1)AAA게임의 그것이 아닙니다.
단, 엣지 있는 도심 배경과 힙한
캐릭터 그래픽에 발목을 잡지 않는
선에서 상쾌한 게임 플레이 환경을
제공하는 것을 GOAL로 잡았습니다
(1) Unreal Engine 5도입의 반대:
개발 기간의 증가 및 필요 사양이 많이 올라감
Key Challenges
For Skyscraper Backgrounds
• 고층 건물들로 인한 그림자 컬링의 어려움
• 수 많은 부속품 사용으로 인한
Shadow Depth 처리 비용증가
• 컬링 비용의 증가
• 히치 발생으로 인한 쾌적한 FPS플레이의 방해
• 그냥 느림(많은 디테일을 가진 건물들의
집합체의
산물인 도시를 빠르게 렌더링 하겠다는 것이
욕심
그림자
최적화.
고층빌딩으로 인한 그림자
때문에 Far Cascade도 사용해야
했습니다.
그래서 가장 먼저 한 작업은
Ghost Shadow mesh를 제작한
것입니다
기본 개념은 근거리에서도
사용가능한 그림자용
HLOD(=흡사한)입니다
사용과 관리가 간편하도록
플러그인으로 제작
Ghost Shadow Mesh Detail
• 도시의 건물들의 구성은 주로 리소스의
효율과 Draw Call 때문에
• 메쉬 인스턴싱의 조합으로 이루어져
있습니다.
하지만,이 방법이 그림자 패스 렌더링에
유리한 것은 아니므로
• 볼륨안의 메쉬들을 하나의 메쉬로
병합해서 메인 패스에 그리지 않는 하나의
메쉬로 만들어주고 원래 있던 메쉬들은
종류별로 인스턴싱 해줍니다
TA님들이 절찬리
사용 중에 계십니다
그림자 최적화.
Extream
Shadow
• Disable / Drawcalls : 5,417
• Enable / Drawcalls : 4,389
그림자 최적화.
Extream Shadow
• Quality • Enable
• Disble
컬링 최적화
하이브리드 오클루젼
컬링 엔진
언리얼 엔진은 가시성 컬링,
디스턴스 컬링 볼륨 및 하드웨어 오클루젼(HW) 컬링으로
컬링 프로세스가 구성 됩니다
밀집도 높은 환경에서 HW컬링은 너무 많은 쿼리 요청으로
인해
GPU부하를 일으키고
RHI Commands 캐쉬의 Flushing을 일으킵니다
그에 따라 프레임 드랍 및 Hitch가 심해지는 결과가
나타납니다
소프트웨어 컬링
프로세스에서
한번 거른 후 HW오클루젼
프로세스를 실행
RHI CMD 감소
RHI Commands Cache
Flushing이 되지 않음.
• 48.98 FPS / 20.42MS
• 75.58 FPS / 13.05MS
Additional View Trick
카메라를 심하게 돌릴 때는 순간적으로 가시거리를 줄인다
PSO Caching
• The Pipeline State Object (PSO)
caching tools help reduce the time it
takes to reload an Unreal Engine 4
(UE4) level and it's content.
• 파이프라인 상태를 캐쉬로
만듦
• Hitch 방어에 큰 도움
• 8년 정도의
언리얼 엔진 개발 이력에
처음 시도해 봄
PSO Cache 프로세스
1. 패키징 빌드
2. 빌드 된 클라이언트로 –
logPSO를 첨부하여 녹화
3. 녹화된 .shk화일을
툴을 이용해 .CSV로 변환
4. 변환된 .CSV를 타겟 플랫폼의
PilelineCaches폴더에 넣고
재 빌드
언리얼 엔진 문서도 있고 하지만,해보면 잘 되지 않아서
되는 방법 위주로 컨플에 기술 했습니다
DLSS 2,FSR 2등
업스케일링 기술 추가
• Upscale들이 RHI Thread들을 건들기
때문에 셋팅 변경 등의 작업을 수행 할 시에
로딩등 민감한 작업을 하지 않아야 하는데
적용시에 많은 시행착오가 있었습니다
문서에 기술 되지 않은 내용들
• HLOD,Imposter,섹터 레벨 최적화 등
배경이나 TA의 수 많은 노력이 있었습니다
단, 현문서는 TD의 엔지니어링 측면만 다루다 보니 빠져 있습니다
다시한번 여러분의 노력에 감사합니다
최적화 기록
• 2022/08/22
• 30FPS언더,다수 Hitch 발생
• 2022/09/22
• 70~60FPS,Hitch 감소함
• 2022/11/17
• 110 FPS,Hitch 거의 없어짐
생산성 향상
Polygon Decal Plugin
생산성 향상
Polygon Decal Plugin
• 디퍼드 데칼로는 해결되지 않는 갈증이
있으므로
• 디퍼드 데칼의 보조로 폴리곤 데칼을
제작했습니다
• 폴리곤 데칼은 말 그대로 대상 오브젝트의
폴리곤 정점을 따서 데칼을 만듭니다
• 사용되는 머터리얼은 스태틱 오브젝트와
마찬가지로 스태틱 오브젝트에 사용되는
머터리얼 종류를 동일하게 사용할 수
있습니다
Quality
• 언리얼 엔진 4의 한계와
• 고사양이 되는 문제 때문에
• DX12 Raytracing은
배제하고
DX12 Rasterize한도내의
ScreenSpace기반의 기술을
가지고 Try함에 있어,
허들이 많이 존재함
일반적인 품질 대비 코스트
위의 표는 상품 서비스에 대한 품질 대비 비용
도표이지만,
세상만사가 비슷해서 게임 그래픽도 크게 다르지
않다고 봅니다
NC같은 돈 많은 집안은 GOAL을
그래프의 끝을 더 잡는 것이고
적절한 점을 잡는 것은 전략적인 사고가 필요한
것 같습니다
Global
Illumination
& Ambient
Occlusion
Global Illumination
& Ambient Occlusion
• Key Features
1. Ambient Cube
2. LPV
3. SSGI
4. SSAO
Ambient Cubemap
• 엠비언트 큐브맵은
포스트 프로세스 볼륨에
가장 간단하게 환경광을 변화시킬 수
있지만
pre integrated skin에 영향을 주어
사용하기 어려워서
그 점(피부나 눈동자가 영향을 받지 않도록)을
수정했습니다
곧이어 이미지와 IBL색을 따로
조절할 수 있게 하여 보다
사용폭이 넓게 만들겠습니다
Ambient Cubemap
• Custom Parameter
• r.artmouse.AmbientCube.Enable
CustomParam
• r.artmouse.AmbientCube.HighRo
ughnessIntensity
• r.artmouse.AmbientCube.Rough
nessOffset
• r.artmouse.AmbientCube.Reflect
ionWeight
• 엠비언트 큐브맵 사용의 또 하나의 망설여지는 지점은
높은 러프니스를 가진 머터리얼에서도 원하지 않는
반사효과가 나타난다는 것입니다(사진 Intensity 1)
• 여러가지의 파라메터를 사용해
스카이라이트처럼 높은 러프니스를 가진 머터리얼에
엠비언트만 사용 할 수 있습니다
• 물론 큐브맵을 교체하면, 그 큐브맵의 색 반영
LPV(Light Propagation Volume)
• LPV는 만지기 까다로운 물건 입니다.
미 구현된 기능도 많고(UE5 루멘이 있어
영원히 미 구현),
가장 중요한 것은 피부에 영향을 미친다는 것입니다
(LPV의 개선사항은 많지만,
추가 메인 작업으로 하기에는 코스트만
계속 늘어날 것입니다.
Sub작업으로 Main작업이 지루할 때마다 보면 될 것 같습니다)
• 언리얼 엔진의 렌더링 파이프라인은
LPV를 처리한 후 pre-integrated Skin의 후처리 프로세스가 걸려
스킨 오브젝트가 나오면 LPV효과가 사라지는 것입니다
• LPV 합성 프로세스 부분을 파이프라인상에서 스킨 후처리 후로
변경했습니다.
그러나 LPV PostProcess가 스킨 후처리와 ADD가 되어 피부를
망칩니다
• 수정 된 LPV 파이프라인과 LPV의 내부 Shader에서
Scene의 SubSurfaceScattering의 마스크 영역을
만들어 피부와의 충돌 문제를 피했습니다
SSGI (GI)
• SSGI는 다시 GI와 AO로 나뉩니다.
• GI는
SSGI에서 좀 더 품질을 올리기 위해
엔진을 Modify 했습니다
• AO는
SSGI가 Enable이 되면 SSAO의
AO는 사라지고 SSGI의 AO가
표현됩니다
• 언리얼 엔진의 기본 SSGI입니다.
• 확산과 세부강도를 조절 할 수 있게
SSGI의 Shader를 수정 했습니다
• r.artmouse.SSGI.Power외
r.artmouse.SSGI.Intensity로
수정하고 셋팅 할 수 있습니다.
SSGI (AO)
• SSGI의 AO는 특히 문제가 많습니다,
AO때문에 사용을 고려해야 할 정도입니다.
품질은 SSAO에 비해 좋으나
화면에 붙어 있는 느낌이 전혀 없습니다.
특히 근거리에서 너무 심한데,
이것은 GI ColorBleed는 좀 넘어 갈 수도 있는 문제입니다만,
AO의 경우에는 마치 액체가 흐르는 느낌이 되어버려
보기 거북합니다.
• 기본 언리얼 엔진 SSGI의 AO
SSGI (AO)
파이프라인과
내부 Shader의
수정
Global
Illumination
& Ambient
Occlusion
Next Key
Challenges
Skyscraper는 간단히
말해서 어떤 게임인가?
게임 디자이너가
아니더라도 자신이 만드는 게임이 무엇인지는 고민을
하고 바로 어떤 게임을 만들고 있는지 알고 있어야
개발 방향,전략,목표와 To-do 리스트를 작성할 수
있다고 생각합니다
마천루가 펼쳐지는
현대적인 도시 배경에서
HIP한 스타일들의 캐릭터가 나와,
익스트림 스포츠 비슷하게 이동 및 행동하고
게임 플레이의 템포는 하이퍼 스타일에
가까운데,
비주얼 스타일은 조금 더 리얼 베이스의
배틀 로얄 FPS/TPS게임이야
1. 밀집도 있는 도심의 컬링을 효과적으로 하는 것이
중요
2. 이동속도가 빠르고 화면 전환 및 높은 곳에서 도심
전경을 바라보는 일이 많아, LOD와 동적 화면
스케일링도 필요
3. 유리,거울,철제,플라스틱 합성의류가 다수
등장함에 띠리 반사가 중요,레이트레이싱을 사용 할
수는 없지만
반사의 트릭과 퀄러티가 중요함으로 추가 대책이
필요
4. 다수 멀티플레이의 다양한 동작으로 인해,
캐릭터 이동,애니메이션 최적화등이 필요함
캐릭터 최적화
5. 밀리터리 전장이 아니라 스트리트의 배경으로
원색이 잘 나오고 밝은 환경을 대비하기 위해
GI,Gamma,HDR등의 세밀한 사용이 중요
시장 진입을 위한
개발 전략
• 후발 주자이기 때문에
어쩔 수 없이 niche 전략으로 나갈 수 밖에 없는 것 같다.
• 유저 풀이 어느정도 목표치에 도달 시점에,
Mass 접근방식으로 방향을 선회해야 할 듯하다
(니치 전략은 한계가 있으므로)
• 우리가 할 수 있는 니치 전략으로는 두가지가 있는 것 같다
• 시장 나누기
• - 우리 게임만의 특성으로 비집고 들어가야.
• 시작 리더의 약 . 강점 이용
• 배그,에이펙스 레전드,포트나이트의 장 단점 리스트화
• 우리 게임의 단점보완
• - 예) 초반 파밍에서 TTK가 극히 짧음->
공중에 극히 기본적인 아이템 배치로 글라이딩을 하면서
획득 할 수 있게(기본으로 주어지는 것보다 파밍 느낌을
낼 수 있으면서도 초반 비무장상태에서 죽는 경험을 줄일 수
있지 않을까.)
Thank you
End of Skyscraper Visual
Engineering Vision

Weitere ähnliche Inhalte

Was ist angesagt?

UI드자이너의 짧은 언리얼 UMG 사용기
UI드자이너의 짧은 언리얼 UMG 사용기UI드자이너의 짧은 언리얼 UMG 사용기
UI드자이너의 짧은 언리얼 UMG 사용기Hong-Gi Joe
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다Lee Dustin
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018devCAT Studio, NEXON
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019devCAT Studio, NEXON
 
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしよう
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしようビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしよう
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしようUnity Technologies Japan K.K.
 
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1MoonLightMS
 
슈팅 게임에서 레벨 디자인 하기
슈팅 게임에서 레벨 디자인 하기슈팅 게임에서 레벨 디자인 하기
슈팅 게임에서 레벨 디자인 하기용태 이
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할Hoyoung Choi
 
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리강 민우
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipelinechangehee lee
 
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…Drecom Co., Ltd.
 
オンラインゲームと社内テスト
オンラインゲームと社内テストオンラインゲームと社内テスト
オンラインゲームと社内テストKatsumi Mizushima
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
【Unity】より良い表現のためのライティング戦略
【Unity】より良い表現のためのライティング戦略【Unity】より良い表現のためのライティング戦略
【Unity】より良い表現のためのライティング戦略Takayasu Beharu
 
【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity DevelopersUnityTechnologiesJapan002
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술henjeon
 

Was ist angesagt? (20)

UI드자이너의 짧은 언리얼 UMG 사용기
UI드자이너의 짧은 언리얼 UMG 사용기UI드자이너의 짧은 언리얼 UMG 사용기
UI드자이너의 짧은 언리얼 UMG 사용기
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
 
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしよう
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしようビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしよう
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしよう
 
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1
 
슈팅 게임에서 레벨 디자인 하기
슈팅 게임에서 레벨 디자인 하기슈팅 게임에서 레벨 디자인 하기
슈팅 게임에서 레벨 디자인 하기
 
4 writing treatment
4 writing treatment4 writing treatment
4 writing treatment
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
 
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
 
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
 
オンラインゲームと社内テスト
オンラインゲームと社内テストオンラインゲームと社内テスト
オンラインゲームと社内テスト
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
Virtual Reality(full)
Virtual Reality(full)Virtual Reality(full)
Virtual Reality(full)
 
【Unity】より良い表現のためのライティング戦略
【Unity】より良い表現のためのライティング戦略【Unity】より良い表現のためのライティング戦略
【Unity】より良い表現のためのライティング戦略
 
【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers
 
UE4で学ぶ水中表現(UE4 Environment Art Dive)
UE4で学ぶ水中表現(UE4 Environment Art Dive)UE4で学ぶ水中表現(UE4 Environment Art Dive)
UE4で学ぶ水中表現(UE4 Environment Art Dive)
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
 

Ähnlich wie 엔지니어링 비젼_동영상제거.pptx

[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Minsu Park
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo Kim
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 JiUng Choi
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기Chang W. Doh
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기changehee lee
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012devCAT Studio, NEXON
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기Chang W. Doh
 
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트강 민우
 
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기강 민우
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
모바일 엔진 개발기
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기changehee lee
 
[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhudMinGeun Park
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS LambdaSeungho Kim
 
Kgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmicKgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmicLee Jungpyo
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...hoondong kim
 

Ähnlich wie 엔지니어링 비젼_동영상제거.pptx (20)

[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 
Gametech2015
Gametech2015Gametech2015
Gametech2015
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
 
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
 
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
Place site Design
Place site DesignPlace site Design
Place site Design
 
모바일 엔진 개발기
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기
 
[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS Lambda
 
KGC 2013 DevSisters
KGC 2013 DevSistersKGC 2013 DevSisters
KGC 2013 DevSisters
 
Kgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmicKgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmic
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
 

엔지니어링 비젼_동영상제거.pptx

  • 2. 1. 본인이 이해한 Skyscraper는 “고층빌딩이 밀집한 도심에서 빠르고 최적화된 환경에서 총기 전투를 해야 하는 게임이다” 2. 목표로 하는 게임 그래픽의 방향성은 (1)AAA게임의 그것이 아닙니다. 단, 엣지 있는 도심 배경과 힙한 캐릭터 그래픽에 발목을 잡지 않는 선에서 상쾌한 게임 플레이 환경을 제공하는 것을 GOAL로 잡았습니다 (1) Unreal Engine 5도입의 반대: 개발 기간의 증가 및 필요 사양이 많이 올라감
  • 3. Key Challenges For Skyscraper Backgrounds • 고층 건물들로 인한 그림자 컬링의 어려움 • 수 많은 부속품 사용으로 인한 Shadow Depth 처리 비용증가 • 컬링 비용의 증가 • 히치 발생으로 인한 쾌적한 FPS플레이의 방해 • 그냥 느림(많은 디테일을 가진 건물들의 집합체의 산물인 도시를 빠르게 렌더링 하겠다는 것이 욕심
  • 5. 고층빌딩으로 인한 그림자 때문에 Far Cascade도 사용해야 했습니다. 그래서 가장 먼저 한 작업은 Ghost Shadow mesh를 제작한 것입니다 기본 개념은 근거리에서도 사용가능한 그림자용 HLOD(=흡사한)입니다 사용과 관리가 간편하도록 플러그인으로 제작
  • 6. Ghost Shadow Mesh Detail • 도시의 건물들의 구성은 주로 리소스의 효율과 Draw Call 때문에 • 메쉬 인스턴싱의 조합으로 이루어져 있습니다. 하지만,이 방법이 그림자 패스 렌더링에 유리한 것은 아니므로 • 볼륨안의 메쉬들을 하나의 메쉬로 병합해서 메인 패스에 그리지 않는 하나의 메쉬로 만들어주고 원래 있던 메쉬들은 종류별로 인스턴싱 해줍니다
  • 8. 그림자 최적화. Extream Shadow • Disable / Drawcalls : 5,417 • Enable / Drawcalls : 4,389
  • 9. 그림자 최적화. Extream Shadow • Quality • Enable • Disble
  • 11. 하이브리드 오클루젼 컬링 엔진 언리얼 엔진은 가시성 컬링, 디스턴스 컬링 볼륨 및 하드웨어 오클루젼(HW) 컬링으로 컬링 프로세스가 구성 됩니다 밀집도 높은 환경에서 HW컬링은 너무 많은 쿼리 요청으로 인해 GPU부하를 일으키고 RHI Commands 캐쉬의 Flushing을 일으킵니다 그에 따라 프레임 드랍 및 Hitch가 심해지는 결과가 나타납니다
  • 12. 소프트웨어 컬링 프로세스에서 한번 거른 후 HW오클루젼 프로세스를 실행 RHI CMD 감소 RHI Commands Cache Flushing이 되지 않음.
  • 13. • 48.98 FPS / 20.42MS • 75.58 FPS / 13.05MS
  • 14. Additional View Trick 카메라를 심하게 돌릴 때는 순간적으로 가시거리를 줄인다
  • 15. PSO Caching • The Pipeline State Object (PSO) caching tools help reduce the time it takes to reload an Unreal Engine 4 (UE4) level and it's content. • 파이프라인 상태를 캐쉬로 만듦 • Hitch 방어에 큰 도움 • 8년 정도의 언리얼 엔진 개발 이력에 처음 시도해 봄
  • 16. PSO Cache 프로세스 1. 패키징 빌드 2. 빌드 된 클라이언트로 – logPSO를 첨부하여 녹화 3. 녹화된 .shk화일을 툴을 이용해 .CSV로 변환 4. 변환된 .CSV를 타겟 플랫폼의 PilelineCaches폴더에 넣고 재 빌드 언리얼 엔진 문서도 있고 하지만,해보면 잘 되지 않아서 되는 방법 위주로 컨플에 기술 했습니다
  • 17. DLSS 2,FSR 2등 업스케일링 기술 추가 • Upscale들이 RHI Thread들을 건들기 때문에 셋팅 변경 등의 작업을 수행 할 시에 로딩등 민감한 작업을 하지 않아야 하는데 적용시에 많은 시행착오가 있었습니다
  • 18. 문서에 기술 되지 않은 내용들 • HLOD,Imposter,섹터 레벨 최적화 등 배경이나 TA의 수 많은 노력이 있었습니다 단, 현문서는 TD의 엔지니어링 측면만 다루다 보니 빠져 있습니다 다시한번 여러분의 노력에 감사합니다
  • 19. 최적화 기록 • 2022/08/22 • 30FPS언더,다수 Hitch 발생 • 2022/09/22 • 70~60FPS,Hitch 감소함 • 2022/11/17 • 110 FPS,Hitch 거의 없어짐
  • 21. 생산성 향상 Polygon Decal Plugin • 디퍼드 데칼로는 해결되지 않는 갈증이 있으므로 • 디퍼드 데칼의 보조로 폴리곤 데칼을 제작했습니다 • 폴리곤 데칼은 말 그대로 대상 오브젝트의 폴리곤 정점을 따서 데칼을 만듭니다 • 사용되는 머터리얼은 스태틱 오브젝트와 마찬가지로 스태틱 오브젝트에 사용되는 머터리얼 종류를 동일하게 사용할 수 있습니다
  • 22. Quality • 언리얼 엔진 4의 한계와 • 고사양이 되는 문제 때문에 • DX12 Raytracing은 배제하고 DX12 Rasterize한도내의 ScreenSpace기반의 기술을 가지고 Try함에 있어, 허들이 많이 존재함
  • 23. 일반적인 품질 대비 코스트 위의 표는 상품 서비스에 대한 품질 대비 비용 도표이지만, 세상만사가 비슷해서 게임 그래픽도 크게 다르지 않다고 봅니다 NC같은 돈 많은 집안은 GOAL을 그래프의 끝을 더 잡는 것이고 적절한 점을 잡는 것은 전략적인 사고가 필요한 것 같습니다
  • 25. Global Illumination & Ambient Occlusion • Key Features 1. Ambient Cube 2. LPV 3. SSGI 4. SSAO
  • 26. Ambient Cubemap • 엠비언트 큐브맵은 포스트 프로세스 볼륨에 가장 간단하게 환경광을 변화시킬 수 있지만 pre integrated skin에 영향을 주어 사용하기 어려워서 그 점(피부나 눈동자가 영향을 받지 않도록)을 수정했습니다 곧이어 이미지와 IBL색을 따로 조절할 수 있게 하여 보다 사용폭이 넓게 만들겠습니다
  • 27. Ambient Cubemap • Custom Parameter • r.artmouse.AmbientCube.Enable CustomParam • r.artmouse.AmbientCube.HighRo ughnessIntensity • r.artmouse.AmbientCube.Rough nessOffset • r.artmouse.AmbientCube.Reflect ionWeight • 엠비언트 큐브맵 사용의 또 하나의 망설여지는 지점은 높은 러프니스를 가진 머터리얼에서도 원하지 않는 반사효과가 나타난다는 것입니다(사진 Intensity 1) • 여러가지의 파라메터를 사용해 스카이라이트처럼 높은 러프니스를 가진 머터리얼에 엠비언트만 사용 할 수 있습니다 • 물론 큐브맵을 교체하면, 그 큐브맵의 색 반영
  • 28. LPV(Light Propagation Volume) • LPV는 만지기 까다로운 물건 입니다. 미 구현된 기능도 많고(UE5 루멘이 있어 영원히 미 구현), 가장 중요한 것은 피부에 영향을 미친다는 것입니다 (LPV의 개선사항은 많지만, 추가 메인 작업으로 하기에는 코스트만 계속 늘어날 것입니다. Sub작업으로 Main작업이 지루할 때마다 보면 될 것 같습니다) • 언리얼 엔진의 렌더링 파이프라인은 LPV를 처리한 후 pre-integrated Skin의 후처리 프로세스가 걸려 스킨 오브젝트가 나오면 LPV효과가 사라지는 것입니다 • LPV 합성 프로세스 부분을 파이프라인상에서 스킨 후처리 후로 변경했습니다. 그러나 LPV PostProcess가 스킨 후처리와 ADD가 되어 피부를 망칩니다 • 수정 된 LPV 파이프라인과 LPV의 내부 Shader에서 Scene의 SubSurfaceScattering의 마스크 영역을 만들어 피부와의 충돌 문제를 피했습니다
  • 29. SSGI (GI) • SSGI는 다시 GI와 AO로 나뉩니다. • GI는 SSGI에서 좀 더 품질을 올리기 위해 엔진을 Modify 했습니다 • AO는 SSGI가 Enable이 되면 SSAO의 AO는 사라지고 SSGI의 AO가 표현됩니다 • 언리얼 엔진의 기본 SSGI입니다. • 확산과 세부강도를 조절 할 수 있게 SSGI의 Shader를 수정 했습니다 • r.artmouse.SSGI.Power외 r.artmouse.SSGI.Intensity로 수정하고 셋팅 할 수 있습니다.
  • 30. SSGI (AO) • SSGI의 AO는 특히 문제가 많습니다, AO때문에 사용을 고려해야 할 정도입니다. 품질은 SSAO에 비해 좋으나 화면에 붙어 있는 느낌이 전혀 없습니다. 특히 근거리에서 너무 심한데, 이것은 GI ColorBleed는 좀 넘어 갈 수도 있는 문제입니다만, AO의 경우에는 마치 액체가 흐르는 느낌이 되어버려 보기 거북합니다. • 기본 언리얼 엔진 SSGI의 AO
  • 34. Skyscraper는 간단히 말해서 어떤 게임인가? 게임 디자이너가 아니더라도 자신이 만드는 게임이 무엇인지는 고민을 하고 바로 어떤 게임을 만들고 있는지 알고 있어야 개발 방향,전략,목표와 To-do 리스트를 작성할 수 있다고 생각합니다
  • 35. 마천루가 펼쳐지는 현대적인 도시 배경에서 HIP한 스타일들의 캐릭터가 나와, 익스트림 스포츠 비슷하게 이동 및 행동하고 게임 플레이의 템포는 하이퍼 스타일에 가까운데, 비주얼 스타일은 조금 더 리얼 베이스의 배틀 로얄 FPS/TPS게임이야 1. 밀집도 있는 도심의 컬링을 효과적으로 하는 것이 중요 2. 이동속도가 빠르고 화면 전환 및 높은 곳에서 도심 전경을 바라보는 일이 많아, LOD와 동적 화면 스케일링도 필요 3. 유리,거울,철제,플라스틱 합성의류가 다수 등장함에 띠리 반사가 중요,레이트레이싱을 사용 할 수는 없지만 반사의 트릭과 퀄러티가 중요함으로 추가 대책이 필요 4. 다수 멀티플레이의 다양한 동작으로 인해, 캐릭터 이동,애니메이션 최적화등이 필요함 캐릭터 최적화 5. 밀리터리 전장이 아니라 스트리트의 배경으로 원색이 잘 나오고 밝은 환경을 대비하기 위해 GI,Gamma,HDR등의 세밀한 사용이 중요
  • 36. 시장 진입을 위한 개발 전략 • 후발 주자이기 때문에 어쩔 수 없이 niche 전략으로 나갈 수 밖에 없는 것 같다. • 유저 풀이 어느정도 목표치에 도달 시점에, Mass 접근방식으로 방향을 선회해야 할 듯하다 (니치 전략은 한계가 있으므로) • 우리가 할 수 있는 니치 전략으로는 두가지가 있는 것 같다 • 시장 나누기 • - 우리 게임만의 특성으로 비집고 들어가야. • 시작 리더의 약 . 강점 이용 • 배그,에이펙스 레전드,포트나이트의 장 단점 리스트화 • 우리 게임의 단점보완 • - 예) 초반 파밍에서 TTK가 극히 짧음-> 공중에 극히 기본적인 아이템 배치로 글라이딩을 하면서 획득 할 수 있게(기본으로 주어지는 것보다 파밍 느낌을 낼 수 있으면서도 초반 비무장상태에서 죽는 경험을 줄일 수 있지 않을까.)
  • 37. Thank you End of Skyscraper Visual Engineering Vision