SlideShare a Scribd company logo
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

More Related Content

What's hot

스키닝 애니메이션
스키닝 애니메이션스키닝 애니메이션
스키닝 애니메이션
sung suk seo
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
Lee Dustin
 
Recast Detour.pptx
Recast Detour.pptxRecast Detour.pptx
Recast Detour.pptx
MUUMUMUMU
 
언리얼을 활용한 오브젝트 풀링
언리얼을 활용한 오브젝트 풀링언리얼을 활용한 오브젝트 풀링
언리얼을 활용한 오브젝트 풀링
TonyCms
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
영욱 오
 
GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자
TonyCms
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
Yongha Kim
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
 
UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1
Hong-Gi Joe
 
우리 프로젝트에 맞는 게임 엔진 - 테크니컬아트디렉터 김태근
우리 프로젝트에 맞는 게임 엔진 - 테크니컬아트디렉터 김태근우리 프로젝트에 맞는 게임 엔진 - 테크니컬아트디렉터 김태근
우리 프로젝트에 맞는 게임 엔진 - 테크니컬아트디렉터 김태근
Visual Tech Dev
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2
Kyoung Seok(경석) Ko(고)
 
정종필 팀장이됐어요(더저용량)
정종필 팀장이됐어요(더저용량)정종필 팀장이됐어요(더저용량)
정종필 팀장이됐어요(더저용량)
JP Jung
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
MinGeun Park
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
민웅 이
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
devCAT Studio, NEXON
 
게임 AI를 통해 본 인공지능 기본 개념
게임 AI를 통해 본 인공지능 기본 개념게임 AI를 통해 본 인공지능 기본 개념
게임 AI를 통해 본 인공지능 기본 개념
Keunhyun Oh
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptx
TonyCms
 
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - PerfornanceGCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
상현 조
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
devCAT Studio, NEXON
 

What's hot (20)

스키닝 애니메이션
스키닝 애니메이션스키닝 애니메이션
스키닝 애니메이션
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
 
Recast Detour.pptx
Recast Detour.pptxRecast Detour.pptx
Recast Detour.pptx
 
카툰 렌더링
카툰 렌더링카툰 렌더링
카툰 렌더링
 
언리얼을 활용한 오브젝트 풀링
언리얼을 활용한 오브젝트 풀링언리얼을 활용한 오브젝트 풀링
언리얼을 활용한 오브젝트 풀링
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
 
GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1
 
우리 프로젝트에 맞는 게임 엔진 - 테크니컬아트디렉터 김태근
우리 프로젝트에 맞는 게임 엔진 - 테크니컬아트디렉터 김태근우리 프로젝트에 맞는 게임 엔진 - 테크니컬아트디렉터 김태근
우리 프로젝트에 맞는 게임 엔진 - 테크니컬아트디렉터 김태근
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2
 
정종필 팀장이됐어요(더저용량)
정종필 팀장이됐어요(더저용량)정종필 팀장이됐어요(더저용량)
정종필 팀장이됐어요(더저용량)
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
게임 AI를 통해 본 인공지능 기본 개념
게임 AI를 통해 본 인공지능 기본 개념게임 AI를 통해 본 인공지능 기본 개념
게임 AI를 통해 본 인공지능 기본 개념
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptx
 
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - PerfornanceGCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 

Similar to 엔지니어링 비젼_동영상제거.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
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
Chang W. Doh
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
changehee lee
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
changehee lee
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
devCAT Studio, NEXON
 
Gametech2015
Gametech2015Gametech2015
Gametech2015
SangYun Yi
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
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 설계 리뷰, NDC2018
devCAT Studio, NEXON
 
Place site Design
Place site DesignPlace site Design
Place site Design
HaYoungChoi17
 
모바일 엔진 개발기
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기
changehee lee
 
[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud
MinGeun Park
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS Lambda
Seungho Kim
 
KGC 2013 DevSisters
KGC 2013 DevSistersKGC 2013 DevSisters
KGC 2013 DevSisters
Amazon Web Services Korea
 
Kgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmicKgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmic
Lee Jungpyo
 

Similar to 엔지니어링 비젼_동영상제거.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
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
 
[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
 

엔지니어링 비젼_동영상제거.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