언리얼 엔진 4.12 출시!
2016년 6월 1일

언리얼 엔진 4.12 출시!

저자: Alexander Paschall

이번 출시에는 GitHub 의 언리얼 엔진 개발자 커뮤니티가 제출한 106 종의 개선사항을 포함해서 수 백 종의 언리얼 엔진 4 업데이트가 포함되어 있습니다! 언리얼 엔진 4.12 에 기여해 주신 모든 분들께 감사의 말씀 올립니다:

aninda, amcofi, Artem V. Navrotskiy (bozaro), Beau Hardy (psychogony), Black Phoenix (PhoenixBlack), Brent Scriver (FineRedMist), Cedric Neukirchen (eXifreXi), Céleste (CelPlays), chendi (cdsama), Courtland Idstrom (Frugality), David Palacios (Hevedy), DavidNSllva, Erik (erikbye), esdasuka, Frank Force (KilledByAPixel), Graham Hughes (graehu), Grimmick, Hannah Gamiel (hgamiel), Hongjun Han (h27han), Ian Fox (MaideCa), jamendxman3, James Baxter (TheJamsh), Jarl Gullberg (Nihlus), Jason (Abatron), Jeremy (JeroMiya), Jorge Martins (SNikon), Kartik (i64), Kim Sang Kyun (skkim-ginno), Konstantin Zaitcev (kosz78), Leon Rosengarten (lion03), M3d10n, MacAndor, Maik Klein (MaikKlein), Manny (Manny-MADE), Marat Radchenko (slonopotamus), Mathew Wadstein (MWadstein), Lucyberad, Matthias Hölzl (hoelzl), MAVRIN (artemavrin), Maxim Pestun (maxpestun), mbehensky, meChiel, mfortin-bhvr, mipg, Narendra Umate (ardneran), Nikola Dimitroff (nikoladimitroff), Pablo Zurita (pzurita), phoboz-net, Pierre-Luc Loyer (plloyer), Piotr Bąk (Pierdek), projectgheist, Rama (EverNewJoy), Robert Chubb (SaxonRah), Robert Khalikov (nbjk667), Robert Segal (robertfsegal), RobertTroughton, Ryan Nielson (RyanNielson), Samuel Groß (saelo), Sasha Petrovich (xulture), Sébastien Rombauts (SRombauts), Stephen Whittle (stephenwhittle), Taces, Temaran, Tim Lindeberg (timlindeberg), Tobias Mollstam (mollstam), wdhwg001, Will Stahl (merlin91), WymzeeLabs, Yohann Martel (ymartel06), Zelex.

새로운 내용

언리얼 엔진 4.12 에서는 Sequencer (시퀀서)를 사용할 수 있습니다! 이는 완전 비선형 실시간 시네마틱 & 애니메이션 툴 로, 마티네의 뒤를 잇습니다. 여러가지 강력한 기능이 많이 있는데, 자동 키프레임, 시네마틱 카메라, 라이브 게임플레이 녹화 등입니다. 시퀀서로 대규모 애니메이션 프로젝트의 공동 작업이 편해지는데, 시퀀스를 원하는 만큼 다수의 애셋으로 나누어 체계적인 관리가 가능하기 때문입니다. 기존 마티네 애니메이션을 열면 시퀀서로 임포트할 수 있으며, 기존 마티네 역시도 계속 지원됩니다.

언리얼의 VR 에디터 미리보기도 가능합니다. 가상현실에서 모션 콘트롤러를 사용하여 월드를 자유롭게 돌아다닐 수 있는 미래형 기능입니다. 액터의 선택과 이동, 새 오브젝트의 배치와 에디터의 UI 접근까지, 모두 가상현실 몰입 상태에서 가능합니다. 이 기능은 현재 HTC Vive 또는 Oculus Touch 개발 하드웨어를 필요로 합니다. 시험해 보려면, 에디터 개인설정의 실험단계 부분 Enable VR Editing (VR 편집 활성화) 옵션을 켜기만 하면 됩니다.

윈도우에서 작업하시는 C++ 프로그래머 분들께 한 말씀, 이제 언리얼 엔진은 Visual Studio 2015 가 필수 입니다. Visual Studio 2015 모든 데스크탑 버전이 지원되며, (무료) Express 와 Community 에디션도 포함됩니다. 마음 편히 업그레이드해 주시기 바랍니다.

모든 출시마다 렌더링, VR, 애니메이션, 오디오, 모바일 디바이스용 주요 신기능을 선보이는 것은 물론 퍼포먼스 향상이나 보고된 버그를 잡는 데도 열심히 노력하고 있습니다. 언리얼 엔진 4.12, 즐겨주시기 바랍니다!

주요 기능

시퀀서

비선형 에디터의 위력과 3D 애니메이션 편집 기능이 결합된 시퀀서는, 게임내 시네마틱은 물론 영화, 텔레비전, 사전 시각화의 시퀀스 샷 제작도 가능합니다.

비선형 작업방식

시퀀서의 비선형 작업방식은 창의적이고 반복처리를 통한 해결 방법으로 샷의 구성 및 편집이 가능합니다. 라이트의 색 변경이나 포그 엘리먼트 추가처럼 특정 샷에 대한 변화가 쉽게 가능하며, 기존 테이크를 돌려보면서 시퀀스 조합을 실험해 보기에도 좋습니다. 다수의 아티스트들이 동시에 다수의 샷 작업을 하기에도 좋게끔 디자인되어 있습니다. 런처 학습 탭의 Subway Sequencer (지하철 시퀀서) 프로젝트를 열어 보면 실제 시퀀서 작동방식을 확인할 수 있습니다.

  • 전통적인 비선형 편집 프로그램처럼 샷 재배치가 가능합니다.
  • 쉽게 한 샷의 다른 테이크를 찍고 되돌릴 수 있습니다.
  • 샷 단위 조정과 샷 전용 액터 스폰이 가능합니다.
  • 협업을 염두에 두고 디자인되었습니다.

직관적 유저 인터페이스

유저 인터페이스 디자인은 마티네와 전통적 3D 소프트웨어 패키지의 영향을 받아, 애니메이션 데이터의 확인, 편집, 체계 정리를 명확하고 간결한 방식으로 처리할 수 있습니다. 3D 콘텐츠 제작자는 인터페이스가 직관적이고 익숙하다고 느낄 것입니다.

  • 액터 유형에 따라 자동 트랙 생성이 가능합니다.
  • 표준 키보드 단축키가 지원됩니다.
  • 자동 키프레임 기능이 지원됩니다.
  • 트랙과 키 편집/생성 위젯이 포함되어 있습니다.
  • 트랙 색을 사용자가 정의할 수 있습니다.
  • 키프레임 모양과 색을 보간 작동방식으로 정의할 수 있습니다.
  • 폴더와 라벨로 체계적인 관리가 가능합니다.

시네마틱 카메라와 시네마틱 뷰포트

새로운 카메라 릭 액터와 결합된 새로운 시네마틱 카메라 액터로 영화 제작자는 물론 초보자들도 현실적인 카메라 샷을 쉽게 만들 수 있습니다. 효율적인 새 뷰포트로 영화 제작에서 데일리용 샷 시퀀스를 확인할 수 있습니다.

  • 시네마틱 카메라 액터의 프로퍼티로 현실의 카메라를 흉내낼 수 있습니다.
  • 렌즈와 필름백 세팅 커스터마이징이 가능합니다.
  • 초점 거리가 지원됩니다.
  • 바라보는 곳의 트래킹이 가능합니다.
  • 카메라 릭 크레인과 카메라 릭 레일 액터가 지원됩니다.
  • 시네마틱 뷰포트가 제공됩니다.
  • 타임라인과 트랜스포트 제어가 포함되어 있습니다.
  • 컷 지점의 샷 인/아웃을 나타내는 프레임 번호가 표시됩니다.
  • 원활한 구성을 위한 오버레이와 프레임 헬퍼가 있습니다.

시퀀스 녹화

시퀀스 녹화는 게임플레이를 녹화한 뒤 그 녹화된 요소를 샷에 바로 넣을 수 있습니다. 심지어 기존 녹화를 재생하는 장면을 녹화하는 것도 가능합니다.

언리얼 VR 에디터 (프리뷰)

새로운 "VR 에디터" 모드로 가상현실 몰입 상태에서 레벨을 돌아다니며 편집할 수 있습니다! 오브젝트 선택과 이동은 물론, "월드" 자체를 잡아당겨 전체 레벨을 자유로이 이동, 회전, 스케일 조절까지 가능합니다! 가상현실 모션 콘트롤러로 자신의 관점에서 오브젝트에 대한 일대일 제어가 가능합니다.

가상현실에서 콘텐츠 브라우저와 같이 익숙한 에디터 기능에 접근한 뒤 트랜스폼 기즈모를 사용해서 오브젝트를 정교히 배치할 수 있습니다. 스내핑 툴로 줄도 깔끔하게 맞출 수 있습니다.

월드를 양쪽 손으로 잡아당겨 월드 스케일을 정말 크게 만들 수 있습니다. 레벨의 미세한 디테일을 조사하고 편집하기가 쉬워집니다.

이 기능은 아직 초기 프리뷰 단계라, 에디터 개인설정의 실험단계/VR 부분 아래 Enable VR Editing (VR 편집 활성화) 옵션을 켜줘야 합니다. 그러면 새로운 "VR 모드" 툴바 버튼이 나타나 언제든지 VR 모드 토글이 가능합니다! 원하는 어떤 프로젝트든 VR 에디터를 사용할 수 있으며, (파일 - 새 레벨 옵션으로 접근할 수 있는) VR-Basic 맵에서 간단한 실험도 가능합니다.

중요: VR 에디터 모드는 월드와 UI 상호작용을 위해 모션 콘트롤러가 필요하므로, HTC Vive 또는 Oculus Rift 에 터치 콘트롤러 개발 하드웨어가 필요합니다.

참고로 이 기능은 아직 초기 실험단계인 점, 지속적으로 서서히 발전시켜 나갈 것이라는 점 유념해 주시기 바랍니다. 확인해 보시고, 피드백 감사히 받겠습니다! 언리얼 VR 에디터 관련 부가 정보를 많이 얻을 수 있는 링크입니다:

데이드림 VR 지원

4.12 에 구글의 새로운 Daydream (데이드림) 플랫폼이 지원됨을 발표하게 되어 기쁩니다! 데이드림은 새로운 모바일 VR 플랫폼으로, 데이드림 인증 폰에서 고품질 VR 체험을 선사할 수 있습니다. UE4 에는 모든 데이드림 세트에 포함된 모션 콘트롤러를 포함해서, 이 플랫폼이 완벽 지원됩니다.

데이드림 개발 키트가 없어도 바로 시작하실 수 있습니다! 같은 플러그인으로 구글 카드보드 앱을 만들 수도 있습니다. 데이드림 폰이 아닌 다른 안드로이드 디바이스에서는 해당 기능을 끄기만 하면 됩니다.

지원 활성화 방법은, 에디터의 플러그인 창에서 Google VR (구글 VR) & Google VR Controller (구글 VR 콘트롤러) 옵션을 켜주면 됩니다.

플레이너 리플렉션

이제 실시간 평면 리플렉션이 지원됩니다!

리플렉션 방향에서 씬을 다시 한 번 렌더링하는 방식으로 작동하기에, 상당한 비용이 듭니다. 그러나 리플렉션 퀄리티가 스크린 스페이스 리플렉션보다 훨씬 좋습니다.

왼쪽: 스크린 스페이스 리플렉션에 화면밖 부분 누수, 오른쪽: 플레이너 리플렉션 플레이너 리플렉션을 사용하려면, 먼저 렌더링 프로젝트 세팅의 Support global clip plane for Planar Reflections (플레이너 리플렉션에 글로벌 클립 면 지원) 옵션을 켜고 에디터를 재시작합니다. 그런 다음 플레이너 리플렉션 액터를 배치하고 씬에서 위치를 조정합니다. 주변의 리플렉션이 있는 머티리얼은 자동으로 플레이너 리플렉션에 영향을 받으며, 그 노멀을 사용하여 리플렉션에 디스토션 효과를 줘서 파동을 시뮬레이션해 냅니다.

이 기능은 아직은 신기능으로 몇 가지 제약이 따릅니다:

  • 리플렉션 패스에서 어떤 렌더링 기능을 켜고 끌지 제어할 수 있는 방법이 없습니다.
  • 리플렉션 패스에서는 다이내믹 섀도우와 포그가 틀리게 나옵니다.
  • 러프니스 값은 상수만 지원되며, 플레이너 리플렉션 컴포넌트에서 지정합니다.
  • 플레이너 리플렉션은 모바일에서 작동은 하나, 플레이너 리플렉션을 사용하는 머티리얼은 머티리얼 프로퍼티의 Mobile 섹션 아래 Planar Reflections 플래그를 설정해 줘야 합니다.

하이 퀄리티 리플렉션

이번 출시에는 고도로 사실적인 표면 리플렉션을 위한 여러가지 새로운 렌더링 기능이 추가되었습니다!

매우 높은 퀄리티의 바삭한 리플렉션을 구현하여 무엇보다 사실적인 차량 도색 표현을 이뤄내고자 했습니다. 여기에는 지오메트리 데이터 처리와 인코딩 방식에서부터 씬의 고해상도 리플렉션 캡처 활성화에 이르기까지 여러 분야의 개선이 필요했습니다.

고정밀 스태틱 메시 버텍스 노멀 & 탄젠트 인코딩 - 하이 퀄리티 리플렉션을 내는 데 있어 단 하나 가장 중요한 요소는 버텍스 노멀 & 탄젠트 표현을 얼마나 정확히 할 수 있는가에 달려 있습니다. 그래서 노멀과 탄젠트를 채널 벡터당 16 비트 인코드 옵션을 추가했습니다. 이를 통해 개발자들은 버텍스 버퍼 인코딩에 있어 퀄리티와 메모리 사이의 균형을 쉽게 맞출 수 있게 되었습니다. 이 Use High Precision Tangent Basis (고정밀 탄젠트 베이시스 사용) 옵션은 스태틱 메시 에디터의 Build Settings (빌드 세팅) 섹션에서 찾을 수 있습니다.

스카이 큐브맵 & 리플렉션 프로브의 커스텀 해상도 - 하이 퀄리티 리플렉션을 내기 위한 두 번째 부분은, 배경과 로컬 리플렉션입니다. 기존에 엔진은 스카이 라이트와 리플렉션 프로브가 이용하는 쿠킹된 큐브맵 해상도를 하드코딩했었습니다. 이제 개발자가 해상도를 선택하여 퍼포먼스, 메모리, 퀄리티 사이의 균형을 맞출 수 있게 되었습니다. 참고로 스카이라이트 큐브맵 해상도는 스카이라이트 별로 설정 가능한 반면, 리플렉션 프로브의 큐브맵 해상도는 프로젝트 단위 세팅으로 설정됩니다. 매우 높은 해상도를 사용하면 GPU 메모리 요구치로 인해 퍼포먼스에 크게 영향을 끼칠 수 있습니다.

리플렉션 프로브용 커스텀 큐브맵 - 이제 각 리플렉션 프로브별로 커스텀 큐브맵을 지정할 수도 있게 되었습니다. 이를 통해 디테일이 살아있는 커스텀 큐브맵을 만들어 로컬 리플렉션을 강화 또는 미세 조정할 수 있습니다.

고정밀 GBuffer 노멀 인코딩 - 마지막으로 고정밀 GBuffer 노멀 인코딩 포맷을 선택할 수 있는 옵션을 노출시켜, 다른 기술보다도 SSR 이 고정밀 노멀에 의존할 수 있도록 했습니다. 고정밀 GBuffer 노멀 인코딩은 노멀 벡터를 채널 당 16 비트의 3 채널로 인코딩합니다. 이 인코딩은 GPU 메모리를 더욱 많이 쓰므로 퍼포먼스에 영향이 있을 것입니다.

이중 노멀 투명 코팅 셰이딩 모델

이제 Clear Coat (투명 코팅) 머티리얼에 복수의 노멀을 사용하여 카본 파이버같은 표면에 보다 사실적인 셰이딩을 낼 수 있게 되었습니다.

왼쪽: 구형 UE4 투명 코팅, 가운데: 신형 UE4 클리어 코팅에 하단 노멀, 오른쪽: 실제 사진

투명 코팅 셰이딩 모델에 이제 투명 코팅층 아래 표면에 쓸 이차 노멀 맵을 지정할 수 있는 옵션이 생겼습니다. 이를 통해 카본 파이버처럼 투명 코팅층과 지오메트리 표면이 다른 복잡한 머티리얼을 보다 정확히 모델링해 낼 수 있게 되었습니다.

이 옵션은 프로젝트 세팅을 통해 켜줘야 합니다: 렌더링 -> Clear Coat Use Dual Normal (투명 코팅에 이중 노멀 사용). 이 기능을 켜면 모든 투명 코팅 머티리얼에 약간의 비용이 추가되고 메인 렌더링 코드에도 약간의 부하가 더해집니다.

사용하려면 반드시 머티리얼 그래프에 Clear Coat Bottom Normal 노드를 배치해야 합니다. 여기에 이차 노멀 계산의 출력을 연결합니다.

OSVR 지원 (프리뷰)

OSVR 팀의 노력 덕에 UE4 에 이제 기본적으로 OSVR 이 지원됩니다!

OSVR 소프트웨어 플랫폼을 통해 이제 다양한 VR & AR 디바이스 및 주변기기와의 통신을 엔진 공용 층을 통해서 할 수 있게 되었습니다. 플랫폼 및 지원되는 디바이스 관련 상세 정보는 NEW! 에서 참고하시기 바랍니다.

벌칸 모바일 렌더리 (프리뷰)

이번 출시에서는 Vulkan (벌칸) 그래픽 API 를 사용한 모바일 렌더링의 초기 프리뷰가 가능합니다.

위 스크린샷은 벌칸으로 렌더링된 ProtoStar (프로토스타) 데모로, 삼성 갤럭시 S7 언팩 이벤트에서 선보인 것입니다. 현재 모바일 렌더링 기능만 구현되어 있습니다.

고품질 모바일 포스트 프로세싱

컬러 그레이딩 포함 필르믹 톤매퍼가 이제 모바일 디바이스에서 작동됩니다!

더 높은 품질의 가우시안 뎁스 오브 필드가 ES3.1 지원 모바일 디바이스에서 지원됩니다!

모바일용 섀도 향상

단일 스테이셔너리 라이트에 대한 다이내믹 캐스케이드 섀도 맵이 이제 모바일 렌더러에 지원됩니다!

스테이셔너리 디렉셔널 라이트는 이제 무버블 오브젝트에 대해서만 전체 씬 다이내믹 CSM 섀도를 드리우고, 씬의 스태틱 오브젝트가 드리우는 미리계산 그림자와 제대로 블렌드합니다. CSM 섀도는 모듈레이트 섀도에 보이는 이중 그림자 문제가 보이지 않으며, 이 기법은 다수의 오브젝트에 그림자를 드리울 때는 더욱 빠르기도 합니다.

  • 이 기능은 텍스처 샘플러를 하나 추가로 사용하나, 프로젝트 세팅에서 끌 수 있습니다: 렌더링 -> 모바일 -> Combined Static and CSM Shadowing (스태틱 & CSM 섀도 혼합). 그러면 머티리얼에서 샘플러를 하나 추가로 사용할 수 있습니다.
  • 혼합 섀도를 받는 컴포넌트는 Receive Combined Static and CSM Shadows from Stationary Lights (스테이셔너리 라이트에서 스태틱 & CSM 혼합 섀도 받기) 플래그를 설정해 줘야 합니다.

고사양 안드로이드 & iOS 디바이스용 GPU 파티클

벡터 필드 포함 GPU 파티클이 이제 고사양 모바일 디바이스에서 작동됩니다!

  • 이 기능은 모바일 디바이스에서 MRT 지원 32 비트 부동소수점 렌더 타겟을 지원해야 합니다.
  • 애플은 A8 칩 이상이 탑재된 디바이스에서 지원됩니다 (아이폰 6, 아이패드 에어 2, 아이패드 미니 4 이상).
  • 안드로이드 6.0 이상 Adreno 4xx 와 Mali-T7xx GPU 탑재 디바이스에서 지원됩니다 (갤럭시 노트 4, 노트 5, S6, S7, 넥서스 6P 등).

블루프린트를 C++ 로 쿠킹 (프리뷰)

블루프린트 실행에 들어가는 가상머신 부하를 줄이기 위해, 블루프린트를 네이티브 소스 코드로 패키징해 주는 기능을 추가했습니다. 이 기능은 아직 실험단계라 발매되는 게임에는 사용을 자제해 주시고, 사용 후 피드백 주시면 감사하겠습니다!

  • 에디터에서 프로젝트의 패키징 세팅을 통해 켤 수 있습니다: 실험단계 => Nativize Blueprint Assets (블루프린트 애셋 네이티브화).
  • UAT BuildCookRun 스크립트에 -NativizeAssets 파라미터를 붙여 실행시킬 수도 있습니다.
  • 생성되는 소스는 프로젝트의 Intermediate (중간) 폴더 내 플러그인으로 저장됩니다: ...\Intermediate\<플랫폼>\NativizedAssets\
  • 게임의 DefaultEditor.ini 내 [BlueprintNativizationSettings] 아래에서 특정 블루프린트를 프로세스에서 제외시킬 수 있습니다.
  • 블루프린트 일반 유형을 제외시킬 수 있습니다: +ExcludedBlueprintTypes=/Script/UMGEditor.WidgetBlueprint
  • 특정 애셋 역시 제외시킬 수 있습니다: +ExcludedAssets=/Game/Blueprints/MyBlueprint

그래스 & 폴리지 스케일 조정

스케일 조정(scalability) 시스템에 폴리지 스케일 조정 세팅이 새로 생겼습니다. 랜드스케이프 그래프와 폴리지 밀도를 현재 스케일 조정 세팅에 따라 자동으로 감소시킬 수 있으며, 이 세팅은 실행시간에 변경할 수 있으므로, 게임에서 폴리지 디테일 세팅 슬라이더를 구현할 수 있습니다.

랜드스케이프 그래스는 폴리지 스케일 조정에 자동으로 포함되나, 폴리지에서는 폴리지 타입의 Scalability 섹션에서 Enable Density Scaling (밀도 스케일 조절 활성화) 옵션을 켜 줘야 합니다. 전형적으로 작은 바위나 덤불처럼 콜리전이 없는 디테일 폴리지에 켜줍니다. 나무와 같이 콜리전이 있는 폴리지 타입은 꺼줘야 하는데, 제거된 인스턴스에 대한 콜리전이 게임에 계속 남아있기 때문입니다. 밀도 스케일 조절은 grass.DensityScale 와 foliage.DensityScale 로 환경설정된 각 스케일 조절 레벨마다 그래스와 폴리지에 적용되는데, 이 변수들은 BaseScalability.ini 의 [FoliageQuality] 섹션 아래 있으며, 게임의 DefaultScalability.ini 에서 덮어쓸 수 있습니다.

iOS 용 UMG 웹 브라우저 위젯

UMG 웹 브라우저 위젯이 이제 iOS 에 지원됩니다!

데스크탑 플랫폼의 웹 브라우저로는 Chromium 이 사용되나, iOS 와 안드로이드 둘 다 UMG 레이아웃에 일치하도록 맞춰진 네이티브 WebKit 콘트롤을 사용하므로, 실행파일 크기가 최소화되고 퍼포먼스가 향상됩니다.

트위스트 보정형 애니메이션 노드

새로운 Twist Corrective (트위스트 보정형) 노드를 추가, 모프 타겟과 같은 것에서 어느 한 본을 기준으로 다른 본의 트위스트에 따라 커브 값을 구동시킬 수 있습니다. 예를 들어, 목이 오른쪽이나 왼쪽으로 너무 뒤틀린 경우, 목에 모프 타겟을 적용하여 보다 부드러운 모양새를 낼 수 있습니다.

본 이름과 로컬 축, 트위스트 노멀을 트위스트 축으로 사용해서 베이스 프레임과 트위스트 프레임을 지정합니다. 지정한 커브를 사용하여 [레퍼런스 포즈 델타 각도, 최대 각도] 값을 [매핑된 최소 범위, 매핑된 최대 범위] 로 매핑시킵니다.

풀 씬 임포터

풀 씬 임포트로 이제 Max / Maya / Blender 에서 이미 만든 환경을 가져와 전체 씬을 에디터의 레벨에 임포트할 수 있습니다.

환경에 새로운 씬 FBX 애셋이 생성되어, 다시 임포트하여 환경 반복처리 작업도 할 수 있습니다. 4.11 에서 사용할 수 있었던 초기 버전은 스태틱 메시가 들어있는 씬만 지원합니다. 4.12 버전에서는 스켈레탈 메시가 포함된 씬도 임포트할 수 있어 완성도가 높아졌습니다. 이 기능을 시험해 보려면, 메뉴에서 파일 > 씬 임포트 후 임포트할 FBX 환경을 선택하기만 하면 됩니다.

액터 병합

이제 손쉽게 레벨 뷰포트에서 바로 메시 액터를 병합할 수 있습니다. 드로 콜이 줄어 퍼포먼스가 향상됩니다.

스태틱 메시 병합 예제로, 왼쪽 은 레벨 뷰포트의 이전 뷰 / 오른쪽 은 스태틱 메시 에디터의 이후 뷰입니다. Merge Actor (액터 병합) 기능은 엔진의 실험단계 기능에서 탈피, 창/개발자/기타 아래에서 찾을 수 있습니다. UI 패널도 계층형 LOD 시스템용 병합 경로에 대한 최신 변경사항을 지원하도록 확장 및 업데이트 되었습니다.

픽셀 조사기

새로운 Pixel Inspector (픽셀 조사기)는 씬의 픽셀을 클릭하면 그 색이 나오는 데 기여한 머티리얼과 렌더링 상태를 시각화시켜 주는 툴입니다.

씬의 픽셀 색이 왜 이상하게 나오는지 궁금했던 적이 있나요? 어떤 머티리얼 입력때문에 그 픽셀 색이 그렇게 나오는지 알려주는 툴이 있다면 어떨까요? 픽셀 조사기 툴이 도와드립니다!

픽셀 조사기 툴은 툴바의 개발자 툴 아래에서 찾을 수 있습니다. Enable Pixel Inspector (픽셀 조사기 활성화) 박스를 체크한 뒤, 에디터 뷰포트( 레벨, 머티리얼, 블루프린트 등)에 커서를 올리면 표시됩니다. Esc 키를 치면 픽셀 조사기가 조사를 중단하고 마지막으로 조사한 픽셀을 분석해 볼 수 있습니다.

플랫폼 SDK 업데이트

매번 출시마다 플랫폼 협력사의 최신 SDK 출시를 지원하도록 엔진 업데이트를 하고 있습니다. 이번 출시에는 콘솔 플랫폼과 아울러 HTML5 와 안드로이드도 업데이트되었습니다.

  • Xbox One: March 2016 XDK 로 업그레이드 되었습니다.
  • Playstation 4: PS4 SDK 3.508.031 로 업그레이드 되었습니다.
  • HTML5: Emscripten 1.35.0 으로 업그레이드 되었습니다.
  • 안드로이드: NDK 11c 로 업그레이드 되었습니다. CodeWorks for Android 1R4 인스톨러는 기존의 (Engine/Extras/AndroidWorks 에 위치한) AndroidWorks 1R1 을 대체합니다.

마스크 필드 변수

이제 인티저 프로퍼티를 비트마스크로 선언할 수 있으며, 여기에 선택적으로 비트플래그 값으로 캡슐화되는 열거형을 연관시켜 줄 수 있습니다. 이 작업은 C++ 와 블루프린트 양쪽에서 작동합니다!

  • 네이티브 프로퍼티는 Bitmask 메타데이터를 마킹하면, 블루프린트 에디터에 추가되는 변수는 Bitmask 체크박스가 생깁니다.
  • 비트마스크 변수에는 다양한 Default Value (기본값) 인터페이스가 있어, (Set 노드와 마찬가지로) 다수의 비트를 체크할 수 있습니다.
  • 비트마스크 연산을 지원하는 노드가 추가되었습니다: Make Bitmask, Bitwise NOT

TV 안전 지대 디버깅

콘솔 타이틀 작업시, UI 가 TV 화면 가장자리에 너무 가까이 나오지 않도록 하는 것이 중요합니다. 그러한 경우를 예방하는 데 도움이 되는 간단한 툴을 추가했습니다.

사용하려면 DefaultEngine.ini 의 [SystemSettings] 아래 다음 줄을 추가하거나, 콘솔 명령으로 입력하면 됩니다:

r.DebugSafeZone.Mode 로 디버그 시각화 오버레이를 조절합니다 (0..2, 기본값 0).

  • 0: Safe Zone (안전 지대) 오버레이를 표시하지 않습니다.
  • 1: 제목 안전 지대 오버레이를 표시합니다.
  • 2: 액션 안전 지대 오버레이를 표시합니다.

r.DebugSafeZone.OverlayAlpha 로 디버그 시각화 오버레이 불투명도를 조절합니다 (0..1, 기본값 0.3).

기본적으로 안전 지대를 지원하지 않는 플랫폼에서는, 에디터에서의 빠르고 쉬운 테스트용으로 안전 지대 시뮬레이션이 가능합니다:

  • r.DebugSafeZone.TitleRatio 는 제목 안전 지대 여백을 FDisplayMetrics 단위로 반환합니다.
  • r.DebugActionZone.ActionRatio 는 액션 안전 지대 여백을 FDisplayMetrics 단위로 반환합니다.
  • 둘 다 0..1 범위이며 기본값은 1, 즉 디스플레이 100% 가 안전함을 나타냅니다. 전형적인 테스트 값은 0.9 입니다.

내장된 컴포짓 애니메이션

이제 애님 몽타주나 애님 컴포짓에 다른 애님 컴포짓을 내장시켜, 독립적인 애니메이션 애셋을 보다 유연하게 생성할 수 있습니다. 아래 그림에서 TEST_Montage 에 TEST_AnimComposite 이 들어있으며, 그 자체에도 여러가지 다른 애니메이션 시퀀스가 들어있습니다.

콜리전 메시에 선택적 LOD

이제 Complex (복합, 폴리 단위) 콜리전에 스태틱 메시의 어떤 LOD 를 사용할 것인지 선택할 수 있습니다. 이를 통해 Simple (단순, 컨벡스 헐) 콜리전이 적합하지 않은 메시에 대해 보다 단순한 형태의 콜리전 표현을 임포트 또는 생성 가능합니다. 이는 작동방식이나 퍼포먼스 향상으로 이어지고, 하이 폴리 메시의 메모리 사용량이 크게 줄어듭니다.

메시의 기본 콜리전

스태틱 메시 컴포넌트는 이제 디폴트 콜리전을 지원, 즉 스태틱 메시 애셋에서의 콜리전 세팅을 그대로 사용합니다. 이로써 콜리전 정보를 한 곳에 지정할 수 있어, 인스턴스를 맵에 배치하면서 일일이 업데이트해야 하던 작업이 편해집니다. 스카이 돔 메시를 예로 들 수 있겠는데, 이제 애셋 자체에 콜리전을 끄면 각 인스턴스는 기본적으로 콜리전이 꺼진 상태로 배치됩니다.

필요한 경우 스태틱 메시 컴포넌트의 세팅을 기본값 이외의 것으로 변경해서 인스턴스별로 세팅을 덮어쓰는 것도 여전히 가능합니다.

캐릭터 이동 속도 해킹 방지

네트워크 게임은 종종 사용자가 치트를 통해 불공정한 이득을 보려는 대상이 되곤 합니다. 일반적으로 게임에서 많이 사용되는 방법은 치트 소프트웨어를 사용하여 게임 클라이언트에서의 시간 흐름을 빠르게 하는 방법이 있습니다. 변경되지 않은 캐릭터 이동 함수성을 사용해서 만들어진 게임들은 이러한 치트에 취약하여, 종종 치트를 쓰는 사람은 보다 빠른 속도로 이동이 가능했었습니다.

이러한 유형의 치트 방지에 도움이 되고자 캐릭터 이동에 설정 가능한 시간 차이 감지법과 해결법(, 소위 스피드 핵 방지법)을 추가했습니다.

감지법은 서버가 지난 번 이동 신호를 받은 이후 알려진 서버 권위자 경과 시간과 클라이언트의 타임 스탬프를 비교한 뒤, 이 차이 누계 수치를 기록합니다. 이 시간 차이가 설정한 한계치를 넘으면 감지법을 발동시키고, 옵션을 통해 해결까지도 발동합니다. 해결법은 앞으로의 클라이언트가 보고한 경과 시간을 서버 시간으로 덮어쓰고 이러한 이동 경과 시간의 일정 부분을 시간 차이가 해소될 때까지 빼앗긴(감지된 총 차이) 시간을 갚는 데 사용합니다.

시간 차이 방지법은 기본적으로 꺼져있으며, 새로 생긴 설정가능 옵션은 GameNetworkManager 에 있습니다. 기본값은 BaseGame.ini 에서 찾을 수 있으며, 프로젝트 전용 게임 config 파일에서 덮어쓸 수 있습니다.

네트워크 리플레케이션 최적화

적응형 네트워크 업데이트 빈도라는 신기능을 추가, 보통은 액터에 아무런 변화가 없는데도 리플리케이트 중복 시도로 낭비되는 CPU 사이클을 절약시켜 줍니다. 시스템은 액터에 프로퍼티가 얼마나 자주 변하는지 학습한 뒤, 서서히 액터의 네트워크 업데이트 빈도를 동적으로 적응시켜 나갑니다.

이 신기능을 사용하면 리플리케이션 퍼포먼스가 대폭 향상될 수 있습니다!

네트워크 리플레이에 커스텀 데이터

리플레이는 이제 일반 네트워크 스트림과 별도로 정보를 저장할 수 있습니다. 이 기능은 캐릭터 무브먼트 컴포넌트의 위치 스무딩을 크게 향상시키는 데 사용되었습니다. 위치 데이더가 별도로 저장되므로, 이제 스트림을 미리 살펴 캐릭터의 위치를 정확히 예상할 수가 있게 되었고, 이펙트나 기타 이벤트와 더욱 잘 맞아떨어지게 되었습니다.

ACharacter::PreReplication 을 살펴보면 이 기능이 어떻게 사용되었는지 감을 잡을 수 있습니다. ChangedPropertyTracker.SetExternalData 를 사용해서 해당 프레임에서 액터에 원하는 데이터를 저장합니다. 그리고 CharacterMovementCompoment.cpp 를 살펴보면, UDemoNetDriver::GetExternalDataArrayForObject 를 사용해서 이 추가 정보를 구하는 방법을 확인할 수 있습니다.

사운드 믹스에 동적인 사운드 클래스 조정 덮어쓰기

UE4 사운드 믹스는 사운드 클래스 프로퍼티를 동적으로 조정할 수 있는 강력한 툴입니다. 하지만 이전 버전까지 커다란 한계점은, 사운드 믹스 애셋 자체가 게임플레이 도중 동적으로 변할 수 없었다는 점입니다. 이러한 한계점 우회법 한 가지는, 볼륨 조정만 다른 사운드 믹스를 다수 만들어 두는 것이었습니다. 그런 다음 게임플레이 도중 이러한 정적인 사운드 믹스를 푸시 / 팝 하여 게임의 사운드 클래스를 게임 상태와 짝짓는 것이었습니다. 이는 복잡하고 오류에 취약한 구현 전략이라 게임 상태와 사운드 클래스간의 부드럽고 연속적인 매핑이 불가능했습니다.

4.12 에서는 이제 블루프린트에서 새로운 블루프린트 함수 Set Sound Mix Class Override 를 사용하여 사운드 믹스가 자신의 사운드 클래스 조정을 동적으로 덮어쓸 수 있게 되었습니다.

사운드 믹스 내 사운드 클래스 조정 값은 지정된 페이드 인 시간에 걸쳐 주어진 값으로 보간됩니다. 지정된 사운드 클래스가 사운드 믹스 내 존재하지 않는 경우, 사운드 클래스를 사운드 믹스에 덧붙이고, 1.0 에서부터 목표 값으로 (즉 미적용 값에서 적용 값으로) 보간해 갑니다. 이 기능을 통해 사운드 디자이너는 동적인 게임플레이 이벤트나 게임 상태에 맞춰 사운드 믹스 볼륨을 밀접하게 통합시킬 수 있을 것입니다. 예를 들어, 이제 사운드 클래스의 프로퍼티를 어떤 게임 상태, 즉 차의 주행 속도, 맵에서의 정교한 위치, 액터 생명력 수준, 플레이어의 공포 수준 등과 밀접하게 결합시키는 것이 가능해 졌습니다. 이 기능으로 또 한가지, 슬레이트에 게임의 볼륨 선호도 패널을 작성할 수가 있어, C++ 코드를 통해 사운드 클래스 볼륨을 수동으로 덮어쓴 뒤 정적인 애셋 데이터에 쓰지 않아도 되게 되었습니다.

덮어쓰기를 제거하려면 새로운 블루프린트 함수 Clear Sound Mix Class Override 를 사용합니다. 그러면 사운드 클래스 조정 값을 덮어쓰지 않은 상태의 원래 값으로 보간해 갑니다. 사운드 클래스가 원래 사운드 믹스 내에 없는 경우, 조정 값은 페이드 아웃 시간에 걸쳐 1.0 으로 보간해 가며, 완료시 사운드 믹스에서 자동 제거됩니다.

오디오 현지화 (프리뷰)

4.12 에는 (다이얼로그 웨이브와 다이얼로그 보이스 애셋을 통한) 오디오 현지화 내장 기능이 개선되어, 시도후 피드백을 제공받아도 괜찮은 시점에 이르렀습니다.

  • 구어 텍스트는 이제 다이얼로그 웨이브 애셋에서 수집한 뒤 다른 애셋 기반 텍스트와 함께 번역할 수 있도록 PO 파일에 포함됩니다.
  • 다이얼로그 웨이브 애셋의 오디오 녹화 & 임포트 지원을 위한 여러가지 새로운 커맨드렛이 추가되었습니다 (현지화 대시보드에도 통합되어 있습니다).
  • ExportDialogueScript - 컬처 별 CSV 파일을 익스포트, 다이얼로그 각 줄과 그에 연관된 파일명이 들어있습니다.
  • ImportDialogueScript - 사본 수정된 컬처 별 CSV 파일을 임포트하고 녹음된 다이얼로그가 있는 번역을 업데이트합니다.
  • ImportLocalizedDialogue - 컬처별 녹음된 WAV 파일을 임포트하고 현지화된 다이얼로그 & 사운드 웨이브 애셋을 생성합니다.

Xbox One 에서의 비동기 계산

Async compute (비동기 계산) 기능이 Xbox One 에 지원됩니다. 이를 통해 그리기 도중 GPU 에 남는 자원을 다른 작업에 할당시켜, 전반적인 GPU 프레임 시간이 빨라집니다. 이는 현재 리플렉션 인바이언먼트와 SSAO 패스에 사용되고 있으며, 앞으로 추가될 예정입니다.

랜드스케이프 콜리전 개선

랜드스케이프는 이제 Simplified Player Collision (단순화된 플레이어 콜리전)을 지원합니다. 새로운 Simple Collision Mip Level (단순 콜리전 밉 레벨) 세팅을 통해 단순화된 콜리전에 사용할 랜드스케이프 LOD 레벨을 선택할 수 있습니다. 콜리전 밉 레벨 값은 여전히 디테일 콜리전에 사용할 랜드스케이프 LOD 레벨을 지정하는 데 사용됩니다.

이제 스플라인 메시에 대한 콜리전을 실행시간에 생성할 수 있습니다.

* 역주: 출시 노트 전문은 언리얼 엔진 공식 문서를 확인해 주시기 바랍니다.