새 소식

언리얼 엔진 4.22 는 몰입도 높은 매력적인 게임, TV 생방송, 혁신적인 제품 시각화, 차세대 블록버스터 등 다양한 분야의 리얼타임 환경에서 포토리얼리즘의 한계를 뛰어넘기 위해 노력하고 있습니다. 하지만 기술의 획기적인 발전으로 인해 그 기술들을 이용하는데 개발 시간을 늘리는 것을 원치 않기에, 모든 사용자들을 위해 워크플로를 더욱 빠르고 접근하기 쉽게 만드는 것을 목표로 하고 있습니다.

언리얼 엔진은 Nvidia RTX 그래픽 카드의 실시간 레이 트레이싱을 통해 다이내믹 글로벌 일루미네이션, 픽셀 단위로 완벽한 리플렉션, 물리적으로 정확한 굴절 표현 등 가장 정확한 실시간 빛과 그림자 효과로 현실 세계를 구축할 수 있는 끝없는 파워를 제공합니다. 부드러운 영역 그림자와 앰비언트 오클루전은 마치 화면이 현실에 단단히 뿌리 내린 듯한 마무리감을 줍니다.

방대한 버추얼 프로덕션 기능으로 복잡한 라이브 연기를 캡처하고 녹화한 뒤 실시간으로 합성 할 수 있어 세트 현장에서의 워크플로가 빨라집니다. 새로운 멀티 유저 편집 기능을 사용하면 전체 팀이 함께 씬을 실시간으로 조정하고 연출할 수 있습니다.

최신 작품의 탄생을 기다리는 일 분 일 초는, 여러분에게도, 여러분의 고객에게도, 그리고 여러분의 비전에 있어서도 비용입니다. 그래서 언리얼 엔진은 새 버전 출시마다 일상의 반복처리를 더욱 쉽고 빠르게 하여, 고객들의 경험을 개선하고 가다듬는 데 더욱 많은 시간을 할애할 수 있도록 노력하고 있습니다. 라이브 코딩으로 언리얼 엔진에 Live++ 가 지원되면 프로젝트를 실행한 상태에서 아이디어를 현실로 단숨에 구현 할 수 있습니다. 전반적인 빌드 시간 최적화를 통해 증분 빌드의 반복처리 시간이 최대 3 배 빨라져 파이프라인의 귀중한 자원을 추가 확보할 수 있습니다.

이번 출시 버전에는 GitHub 의 엄청난 언리얼 엔진 개발자들이 제출한 개선 사항이 174 종 포함되어 있습니다! 언리얼 엔진 4.22 에 기여해 주신 모든 분들께 감사드립니다.

0xmono, Adam Moss (adamnv), Ahsan Muzaheed (muzaheed57), Alessio Sgarro (cmp-), Alexander Stevens (MilkyEngineer), AlexTimeFire, AlSafty, Andrzej K. Haczewski (ahaczewski), Anton Rassadin (Antonrr), Ben Peck (bpeck), BinaryRK, Branislav Grujic (grujicbr), Cameron Angus (kamrann), Cengiz Terzibas (yaakuro), Chris Conway (Koderz), Chris Gallegos (Chrispykins), Clinton Freeman (freemancw), Cristiano Carvalheiro (ccarvalheiro), Dan Ogles (dogles), Daniele Benegiamo (kafumanto), David Aylaian (davidaylaian), David Nadaski (GlassBeaver), David Sauve (notanumber), Deep Silver Dambuster Studios (DSDambuster), Dmitriy Donskoy (sentik), doodoori2, Dorgon Chang (dorgonman), Doug Moscrop (dougmoscrop), Doug Richardson (drichardson), Dzuelu, Erik Dubbelboer (erikdubbelboer), H1X4Dev, Hargreawe, hkozachkov2, Ilyin Aleksey (IlinAleksey), improbable-valentyn, Ivan Popelyshev (ivanpopelyshev), IvanKuzavkov, James Cahill (Prouser123), Jan Kaniewski (getnamo), Jin Hyung Ahn (zenoengine), jkinz3, Joe Best-Rotheray (cajoebestrotheray), joemmett, Josef Gluyas (Josef-CL), Kalle Hämäläinen (kallehamalainen), Kartik Saranathan (Kartiku), korkuveren, Kory Postma (korypostma), Leon Rosengarten (lion03), locus84, lotodore, Marat Radchenko (slonopotamus), Marcel (Zaratusa), Mark Whitty (Mosel3y), mastercoms, Mathias Hübscher (user37337), Michael Kösel (TheCodez), Michael Samiec (m-samiec), Mike Bell (MichaelBell), Mike Slegeir (tehpola), Mimus1, Mitsuhiro Koga (shiena), momboco, Morva Kristóf (KristofMorva), Muhammad A. Moniem (mamoniem), Nick (eezstreet), Nick Edwards (nedwardsnae), Nick Pruehs (npruehs), Ondrej Hrusovsky (skylonxe), Paul Hampson (TBBle), Philippe Chaintreuil (Philippe23), Phillip Baxter (PhilBax), projectgheist, RDIL, Riley Labrecque (rlabrecque), Roman K. (CrispMind), Robin Zoň (ZonRobin), roidanton, ruzickajason, ryugibo, Sam Hocevar (samhocevar), Satheesh (ryanjon2040), Scott Fries (ScottFries), Sébastien Rombauts (SRombauts), ShalokShalom, spoiltos, stanley1108, Stephen A. Imhoff (Clockwork-Muse), stkrwork, sturcotte06, Takashi Suzuki (wankotank), tgroll, Thang To (thangt), Tim Lincoln (Ratherbflyin), TommyTesla, Vladimir Ziablitskii (rainlabs), whoisfpc, YanaPIIDXer, Yannick Comte (demonixis), yhase7, Zeblote

주요 기능

신규: 실시간 레이 트레이싱 및 패스 트레이싱 (베타)

이번 버전부터 Ray Tracing(레이 트레이싱) 및 Path Tracing(패스 트레이싱) 기능이 베타 지원됩니다. Windows 10 RS5 업데이트 이상이 설치된 NVIDIA RTX 시리즈 카드 탑재 시스템에서 DirectX 12 및 DirectX Raytracing(DXR) 을 최대한 활용할 수 있습니다.

실시간 레이 트레이서

레이 트레이싱 기능은 레이 트레이싱 셰이더와 레이 트레이싱 이펙트 시리즈로 구성됩니다. 이 기능을 활용한 자연스럽고 사실적인 라이팅 이펙트는 실시간임에도 최신 오프라인 렌더러의 그림자, 앰비언트 오클루전, 리플렉션 등의 이펙트에 견줄만 합니다.

이미 다수의 레이 트레이싱 기능을 도입했고 계속해서 지원되는 기능을 확장해 갈 예정입니다. 이번 버전에 포함된 기능은 다음과 같습니다.

  • 디렉셔널, 포인트, 스포트, 렉트 라이트 유형에 부드러운 영역 그림자를 그립니다.
  • 카메라 프러스텀 안팎의 오브젝트에 정확한 리플렉션을 그립니다.
  • 씬의 바닥 오브젝트에 부드러운 앰비언트 오클루전을 그립니다.
  • 반투명 표면에 물리적으로 정확한 리프랙션(굴절) 및 리플렉션(반사) 결과물을 그립니다.
  • 광원의 다이내믹 글로벌 일루미네이션에서 간접광을 받습니다.
  • 그 외 여러 기능이 지원됩니다!

자세한 내용은 실시간 레이 트레이싱 문서를 참고하세요.

패스 트레이서

레이 트레이서 이외에도 간접광에 완벽한 글로벌 일루미네이션 패스를 지원하는 비편향(unbiased) 패스 트레이서가 지원됩니다. 익스포트한 뒤 다른 오프라인 패스 트레이서에서 비교할 필요가 없어지므로 언리얼에서 씬의 콘텐츠를 만드는 워크플로가 향상됩니다.

자세한 내용은 패스 트레이서 문서를 참고하세요.

신규: 하이 레벨 렌더링 리팩터링

이번 버전에서는 언리얼 엔진의 메시 드로잉 기능을 완전히 새로 작성하여 실시간 레이 트레이싱이 지원되고 드로잉 퍼포먼스가 향상됩니다. 앞으로 계속해서 렌더링 작업을 GPU 로 옮길 계획입니다.

메시 드로잉 파이프라인 리팩터링

새로운 메시 드로잉 파이프라인에서는 정적인 씬 요소에 대한 그리기 정보가 캐시를 더욱 적극적으로 활용하며, 가능한 경우 자동 인스턴싱이 드로 콜을 병합해 줍니다. 새로운 메시 패스(pass) 구현을 위한 코드 줄 수가 4 ~ 6 분의 1 로 줄어듭니다!

이번 리팩터링 대상은 주로 렌더러 내 메시 드로잉 쪽이며 커스텀 씬 프록시와 렌더러로의 인터페이스에 대한 영향은 최소한으로 했습니다. 커스텀 드로잉 폴리시의 경우 새 아키텍처의 FMeshPassProcessors 로 다시 작성해야 합니다. 즉 변화가 너무 커서 드로잉 폴리시의 하위 호환성을 유지할 수 없었다는 뜻입니다.

자세한 정보는, 메시 드로잉 파이프라인 문서를 참고하세요.

신규: C++ 반복처리 시간 개선

라이브 코딩 (실험단계)

모든 개발자가 언리얼 엔진 프로젝트에 Live++ 를 사용할 수 있도록 Molecular Matters 와 라이선스를 체결, 새로운 Live Coding (라이브 코딩) 기능으로 통합했습니다. 이제 개발 환경의 C++ 코드 변경사항을 컴파일하여 실행 중인 에디터나 독립형 게임에 패치로 적용하는 작업이 초 단위로 이루어집니다. 기존 핫 리로드 메커니즘과 달리, 라이브 코딩은 오브젝트 리인스턴싱을 특별히 고려할 필요 없이 개별 함수를 패치하므로, 규모가 큰 프로젝트의 신뢰성과 확장성이 훨씬 높아집니다.

사용하려면 에디터의 컴파일 버튼 옆 드롭다운에서 라이브 코딩 (실험단계) 옵션을 체크하거나, Ctrl+Alt+F11 키를 눌러 변경사항을 컴파일하고 적용하면 됩니다. 쿠킹된 게임에서 사용하려면, 콘솔 창에 "LiveCoding" 을 입력하면 됩니다.

참고:

  • 엔진 실행 도중의 클래스 레이아웃 수정은 지원하지 않습니다. 앞으로 지원할 계획입니다.
  • 현재 Windows 만 지원합니다.

빌드 시간

UnrealBuildTool 및 UnrealHeaderTool 을 최적화하여 C++ 반복처리 시간이 최대 3배 빨라졌습니다!

전체 빌드 (UE4Editor Win64 Development)

 
 

언리얼 엔진 4.21

언리얼 엔진 4.22

개선

총 빌드 시간:

436.90

326.81

30% 개선

UnrealHeaderTool 컴파일:

46.12

46.30

 

헤더 생성

25.05

15.50

60% 개선

UE4Editor 컴파일

323.15

257.97

25% 개선

UnrealBuildTool 오버헤드

42.58

7.04

600% 개선

증분 빌드 (UE4Editor Win64 Development)

 
 

언리얼 엔진 4.21

언리얼 엔진 4.22

개선

총 빌드 시간:

7.47

2.14

340% 개선

Compiling UE4Editor

1.19

1.08

 

UnrealBuildTool overhead

6.28

1.06

590% 개선

코드 변경 없음 (UE4Editor Win64 Development)

 
 

언리얼 엔진 4.21

언리얼 엔진 4.22

개선

UnrealBuildTool 오버헤드

5.38

1.03

520% 개선

추가로, 증분 빌드에 대한 종속성 검사, 프로젝트에서 추가 및 제거되는 파일 감지는 물론 컴파일러 주도형 인클루드 종속성 검사 정확도가 크게 향상되었습니다.

신규: 버추얼 프로덕션 파이프라인 개선

언리얼 엔진은 파이프라인 모든 부분을 크게 개선하여 리얼타임 버추얼 프로덕션 업계를 선도합니다.

컴포셔 실시간 합성 (베타)

Composure (컴포셔) 합성 시스템이 크게 개선되어 언리얼 엔진 안에서 이미지, 비디오 피드, CG 요소를 바로 합성하는 작업이 훨씬 쉬워졌습니다.

내장된 합성 시스템으로 그린 스크린 씬과 언리얼 엔진 레벨 콘텐츠의 합성 결과물을 쉽게 시각화시켜 볼 수 있습니다. 이는 프리비즈에 유용합니다. 디렉터는 촬영한 필름의 녹색 배경을 대체하고 언리얼 엔진의 디지털 콘텐츠로 강화시킨 이후의 최종 씬이 어떤지 바로 파악할 수 있기 때문입니다. 이러한 엔진 내 결과물은 다른 서드파티 소프트웨어에서 오프라인 작동하는 합성 프로그램의 귀중한 레퍼런스가 될 수도 있습니다.

개선 사항은 다음과 같습니다.

  • 머티리얼로 레이어 블렌딩을 구동합니다.
  • 포스트 프로세스 파이프라인을 활용하여 Light Wrap (라이트 랩) 같은 이펙트를 만들 수 있습니다.
  • 미디어 프레임워크 및 전문가급 비디오 I/O 시스템을 사용하여 비디오 비디오 입력 및 렌더 출력을 캡처할 수 있습니다.
  • 내장 렌더 패스(pass)로 크로마키, 번짐제거(despill), 톤매핑 등을 처리할 수 있습니다. 아니면 별도의 커스텀 패스(pass)를 만들 수도 있습니다.

컴포셔 시스템은 전통적인 오프라인 합성 워크플로 역시 제공하므로 언리얼 엔진에서 선택한 오브젝트의 렌더링을 익스포트해서 외부 어플리케이션의 합성 소스로 사용할 수 있습니다.

OpenColorIO (OCIO) 컬러 프로파일 (실험단계)

이제 OpenColorIO (OCIO) 컬러 프로파일을 사용하여 언리얼 엔진 안에서 바로 텍스처 또는 컴포셔 엘리먼트의 색 공간을 변환할 수 있습니다. 첫 촬영부터 합성은 물론 최종 출력까지, 비디오의 색과 컴퓨터가 생성한 요소의 색을 일관성있게 유지하는 데 도움이 됩니다.

하드웨어 가속 비디오 디코딩 (실험단계)

Windows 플랫폼에서, 이제 GPU 를 사용하여 H.264 비디오 스트림 처리 속도를 높일 수 있습니다. 비디오 스트림을 재생할 때의 CPU 부담을 감소시켜, 비디오 재생이 부드러워 지고 동영상 파일 해상도를 높이거나 동시에 더 여러 입력 피드를 받을 수도 있습니다.

하드웨어 디코딩을 사용하려면, 프로젝트 세팅 창의 플러그인 - WMF Media 섹션에서 Hardware Accelerated Video Decoding (Experimental) (하드웨어 가속 비디오 디코딩 (실험단계)) 세팅을 체크하면 됩니다.

신규 미디어 I/O 포맷

지원하는 전문가급 비디오 I/O 포맷과 디바이스가 더욱 늘어났습니다.

  • AJA 및 Blackmagic 모두 4K UHD 입력을 지원합니다.
    • 8 비트 및 10 비트 입력 모두 지원합니다.
    • 싱글 링크, 듀얼 링크, 쿼드 링크를 지원합니다.
  • AJA Kona 5 디바이스를 지원합니다.
    • HDMI 2.0 입력을 지원합니다.
    • 높은 프레임 속도의 (최대 60fps) UHD 를 지원합니다.

nDisplay 개선

nDisplay 멀티 디스플레이 렌더링 시스템 안정성을 높여주는 신기능이 다수 추가되어, 새로운 종류의 하드웨어 구성과 입력을 처리할 수 있습니다.

  • 각 클러스터 노드의 애플리케이션 창은 이제 정의된 스크린 스페이스 좌표 위치에 다중 뷰포트를 포함시킬 수 있습니다. 하나의 컴퓨터에서 실행되는 단일 언리얼 엔진 인스턴스로 다수의 오프셋 디스플레이를 처리할 수 있습니다.
  • 이전 버전에서 nDisplay 시스템에서 노드에 입력을 제공하는 유일한 방법은 VRPN 을 통하는 것이었습니다. 이번 버전에는 클러스터 이벤트라는 새로운 통신 수단이 추가되어, 연결된 모든 컴퓨터에 동기화된 반응을 보이도록 만들 수 있습니다.
  • nDisplay 구성 파일에 입력 서브시스템 관련 더욱 많은 것들이 노출되어 있어, 프로젝트를 다시 패키징할 필요 없이 어트리뷰트와 매핑을 변경할 수 있습니다.
  • 이미 nDisplay 를 사용 중인 경우, 구성 파일을 새로운 스키마에 맞게 약간 조정해야 할 수 있습니다. 하지만 이제 nDisplay 런처가 구성 파일을 자동으로 업그레이드할 수 있습니다.

자세한 내용은 nDisplay 문서 문서를 참고하세요.

신규: 홀로렌즈 원격 스트리밍 지원

이제 언리얼 엔진 4 에 Windows Mixed Reality 플러그인을 통한 Holographic Remoting (홀로그래픽 리모팅)이 지원됩니다!언리얼 애플리케이션을 Windows 데스크톱 PC 에서 실행하고 렌더링된 결과를 와이파이를 통해 실시간 무선 스트리밍할 수 있습니다.

신규: 오디오 시스템 개선

TimeSynth (베타)

TimeSynth 는 사운드 디자이너가 오디오 클립의 시작, 중지, 연결을 정교하게 제어할 수 있도록 하는 데 초점을 맞추는 새로운 오디오 컴포넌트입니다. 이를 통해 인터랙티브 음악 애플리케이션에 필수인 정밀한 동기성 오디오 이벤트 큐 설정이 가능합니다.

레이어 방식 사운드 컨커런시

이제 사운드 컨커런시(동시재생) 시스템이 여러 세팅이나 그룹을 관찰합니다. 즉, (AudioComponent, SoundBase, 또는 SynthComponent 같은) 사운드 오브젝트가 ConcurrencySet (컨커런시 세트) 프로퍼티에 지정된 모든 요건을 충족하지 못하는 경우, 새로운 사운드는 재생되지 않습니다. 추가로, 새로운 사운드가 모든 컨커런시 세트 해결 규칙을 만족하여 재생되는 경우, 하나 이상의 사운드가 중지될 수 있습니다.

서브믹스에 스펙트럼 분석 툴 (새 엔진)

이제 디자이너는 게임플레이 도중 서브믹스의 스펙트럼 에너지를 분석하여 현재 재생 중인 오디오의 주파수에 따라 게임플레이에서도 머티리얼에서도 가능한 대상 어디서도 사운드 모듈레이션을 구동할 수 있습니다.

 

사운드 웨이브의 구운 스펙트럼 분석 커브 및 엔벨로프

이제 사운드 웨이브를 미리 분석하여 엔벨로프와 스펙트럼 에너지 데이터를 만들어 두고, 재생 도중 블루프린트에서 사용할 수 있습니다. 사운드 디자이너가 놀라운 오디오 구동 시스템을 만드는 동시에, 스펙트럼 분석 작업의 부하를 분산시켜 런타임 퍼포먼스를 향상시킬 수 있습니다. 추가로 프록시 사운드 웨이브의 분석 데이터를 사운드 웨이브의 분석 데이터로 대체하면, 게임플레이를 구동할 때 특정 상황에 별도의 사운드 이벤트가 대신 발동되도록 할 수도 있습니다.

사운드 애셋 임포트 개선

사운드 애셋 임포트 기능이 크게 개선되었습니다. 현재 멀티 채널 WAV 파일은 물론, 이제 언리얼 오디오 엔진에 AIFF, FLAC, Ogg Vorbis 를 포함한 여러가지 다양한 사운드 파일 포맷 임포트가 지원됩니다.

MIDI 디바이스 플러그인 개선

이제 MIDI 디바이스 플러그인은 MIDI 메시지의 외부 MIDI 디바이스 전송 뿐 아니라 MIDI 디바이스 입력 처리도 가능합니다. 추가로 플러그인의 블루프린트 API 가 개선되어 MIDI 메시지 파싱이 단순해 졌습니다. 사운드 디자이너가 MIDI I/O 를 프로젝트에 보다 효율적으로 통합할 수 있게 됩니다.

신규: 시퀀서 개선

업계를 선도하는 시퀀서 선형 애니메이션 툴셋이 다시 한 번 큰 도약을 합니다. 새로 추가된 툴과 발전된 기능은 버추얼 프로덕션 프로젝트 뿐만 아니라 개발자 삶의 질 향상에도 큰 도움이 될 것입니다.

시퀀서 테이크 레코더

테이크 레코더를 통해 버추얼 프로덕션 워크플로에서 녹화 퍼포먼스의 빠른 반복 처리와 이전 테이크의 신속한 리뷰 가 가능합니다! 시퀀스 레코더의 토대 위에 녹화할 수 있는 대상이나 데이터 처리 방식의 개선은 물론, 다양한 사용 사례에 맞게 시스템을 확장할 수 있도록 만들었습니다. 씬의 캐릭터에 연결된 모션 캡처에서 애니메이션을 쉽게 녹화하는 것은 물론, 실제 라이브 링크 데이터로 만들어 앞으로의 재생에 사용할 수도 있습니다. 액터를 서브시퀀스로 녹화하고 테이크 메타데이터로 체계를 정리하면, 프로덕션 규모나 테이크 수에 상관 없이 쉽게 수용할 수 있습니다.

컴포셔 시퀀서 트랙

새로운 Composure (컴포셔) 트랙으로 시퀀스를 컴포셔에 정의된 레이어로 익스포트 하는 작업이 쉬워집니다. 다수의 트랙을 추가하면 한 번에 둘 이상의 레이어에 익스포트할 수 있습니다. 컴포셔에서 레이어를 끌어 시퀀서에 놓으면 바로 그 레이어에 대한 트랙이 생성됩니다.

시퀀서의 레이어 방식 애니메이션 워크플로

이제 하나의 트랙에 가중치를 입힌 섹션을 여러 개 사용하는 레이어 방식 애니메이션을 만들 수 있습니다. 레이어 방식 애니메이션은 Transform (트랜스폼) 트랙은 물론 여러가지 다른 프로퍼티 트랙에도 지원됩니다.

라이브 링크 시퀀서 트랙

이제 시퀀서 트랙에 입력되는 라이브 링크 데이터를 녹화한 뒤 재생할 수 있습니다. 타임코드 및 엔진 틱 당 다수의 샘플이 포함된 라이브 링크 데이터는 시퀀서 재생 속도보다 높은 해상도로 저장할 수 있습니다.

오브젝트 바인딩 시퀀서 트랙

이제 시퀀서에서 액터의 프로퍼티에 할당된 오브젝트, 즉 스태틱 메시, 스켈레탈 메시, 머티리얼 등을 변경할 수 있습니다. 시퀀서에 액터를 추가하고 나면, 이 오브젝트 레퍼런스 프로퍼티는 해당 액터에 대한 트랙 메뉴에서 다른 프로퍼티처럼 사용할 수 있습니다.

시퀀서에서 네트워크 리플리케이션

이제 레벨 시퀀스 액터의 Replicate Playback (재생 리플리케이트) 프로퍼티로 리플리케이션 설정된 레벨 시퀀스 액터는 서버와 클라이언트 사이 재생 시간이 동기화됩니다.

시퀀서에 Python 지원 강화

시퀀서의 Python 지원 중 무비 씬 기능이 개선되었습니다.
  • 무비 씬 섹션과 키 데이터 조작
  • 무비 씬 캡처

기타 시퀀서 개선

  • 이제 하나의 트랙에 여러 오브젝트를 할당할 수 있습니다.
  • 이제 여러 트랙에서 섹션을 한꺼번에 복사/붙여넣기 할 수 있습니다.
  • 이제 프레임에 라벨 마크를 붙이고 그 위치로 빠르게 점프하여 시퀀스를 재생할 수 있습니다. 각 마크마다 색을 설정하면 구분이 쉽습니다.
  • 트랙/섹션을 블루프린트로 노출 - Todo, 런타임 서브섹션/테이크 토글입니다.

신규: 애니메이션 버짓 시스템 (베타)

새로운 Anim Budgeter (애니메이션 버지터, 예산 관리) 툴은 플랫폼 별로 (게임스레드에서 수행할 ms 단위 작업량으로) 고정 예산을 설정해 두면, 현재 작업이 그 예산에 맞는지 아니면 작업량을 줄여야 하는지 알 수 있습니다. 애니메이션 업데이트 총 비용을 측정하고, 단일 작업 단위의 비용을 계산하는 식으로 작동합니다. 예산에 맞도록 작업량을 줄여야 하는 경우, 중요도에 따라 이루어지며 여러 영역에 목표를 잡습니다. 예를 들면 틱을 중지하고 마스터 포즈 컴포넌트를 사용하거나, 업데이트 속도를 낮추거나, 업데이트 사이 보간을 하거나 (하지 않거나) 등입니다. 목표는 고정된 (게임스레드) 예산에 맞게 로드를 동적으로 조절하는 것입니다.

신규: 애니메이션 공유 플러그인

Animation Sharing (애니메이션 공유) 플러그인이 새로 추가되어, 액터 군중에 필요한 전반적인 애니메이션 작업량을 줄일 수 있습니다. 마스터 포즈 컴포넌트 시스템을 기반으로 하며, 블렌딩 및 애디티브 애니메이션 스테이트를 추가할 수도 있습니다. 애니메이션 스테이트는 평가할 애니메이션 인스턴스를 담는 버킷이 됩니다. 그런 다음 결과 포즈를 그 버킷의 모든 자손 컴포넌트 파트에 전송합니다. 자세한 시스템 분석은 아래 도표를 참고하세요.

 

아래 비디오의 스켈레탈 메시 컴포넌트는 개별 스테이트와 그 스테이트 사이 블렌딩에 사용되는 추가 인스턴스를 나타냅니다. 군중도 보이는데, 모두 개별 액터로서 그에 대한 애니메이션 스테이트를 결정합니다. 애니메이션 스테이트에 따라 스켈레탈 메시 컴포넌트를 마스터 컴포넌트에 연결하여 애니메이션을 구동하고 있습니다. 비디오에서 애니메이션 스테이트에 대한 포즈만 평가하고, 크라우드(군중) 액터는 그 본 트랜스폼 결과만 복사할 뿐입니다.

신규: 긴 파일명 지원 (실험단계)

Windows 10 Anniversary Update 사용자의 경우 긴 파일 경로명을 지원합니다! 기존에 Windows 의 경로명은 260 자로 제한되어 있어, 이름을 짓는 규칙이 복잡하고 애셋의 계층 구조가 깊은 프로젝트에 문제가 생길 수 있었습니다. Windows 10 Anniversary Update 에는 훨씬 긴 파일명이 지원되며, 사용자와 각 애플리케이션에서 사용 옵션을 설정해야 합니다. Windows 10 의 긴 파일 경로 지원을 사용하는 방법은 다음과 같습니다.

  • Windows 10 버전이 1607 이상인지 확인합니다.
  • group policy setting (그룹 정책 설정) 또는 레지스트리에서 LongPathsEnabled 옵션을 설정하세요 ( https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#maxpath 참고).
  • 언리얼 에디터의 실험단계 세팅 대화창에서 "Enable Long Paths Support" (긴 경로 지원 활성화) 옵션을 켭니다.

주: 긴 경로 지원은 보편적으로 적용되지 않으며, 서드파티 툴은 물론 Windows Explorer 와 같은 운영 체제 일부분에서도 제대로 지원하지 않을 수 있습니다.

신규: 블루프린트 인덱싱 최적화

블루프린트 검색 데이터 인덱스를 만드는 방법이 변경되어 에디터와 에디터에서 플레이 시작 시간이 크게 향상되었습니다. 이제 블루프린트에서 찾기 탭을 열 때까지 검색 데이터 업데이트를 보류하고, 업데이트를 비동기 실행하여, 애셋 로딩 프로세스에서 블루프린트 인덱스를 다시 만드는 작업이 분리됩니다.

신규: Steamworks 지원 개선

Steam 에 UE4 를 사용하는 것이 훨씬 쉬워졌습니다! Steam 에서 멀티플레이어 게임을 개발하는 개발자들의 삶을 질을 향상시켜줄 사용 편의성 개선 사항은 다음과 같습니다.

  • 이제 새로운 "-SteamServerName" 실행 인수를 붙이면 Steam 의 데디케이티드 서버가 (최대 63 자까지) 사용자 정의 이름을 받을 수 있습니다.
  • 이제 프로젝트에서 bUseSteamNetworking 구성 값을 비활성화하고 그 NetDriver 구성 값을 원하는 내재 네트워크 레이어로 설정하면 Steam 네트워크 레이어를 오버라이드할 수 있습니다.
  • 표준 게임 네트워킹은 물론 UE4 Beacons 를 사용하는 Steam NetDrivers 사용 편의성도 크게 향상되었습니다.
  • 이제 특정 필수 Steam 값, 예를 들면 데디케이티드 서버 이름이나 애플리케이션 ID 같은 것을 프로젝트의 Target.cs 파일에 설정할 수 있습니다. 더이상 이 값을 변경해도 엔진을 다시 컴파일할 필요가 없습니다.

신규: 프리뷰 씬 세팅 개선

Preview Scene Settings (프리뷰 씬 세팅) 에 라이팅을 끌 필요 없이 인바이런먼트 큐브맵을 숨길 수 있도록 해주는 (Show Environment, 환경 표시) 기능을 추가했습니다. 프리뷰 씬 세팅 패널의 Use Sky Lighting (스카이 라이팅 사용) 프로퍼티를 확인하세요.

신규: 스켈레탈 메시 LOD 감소

스켈레탈 메시 감소 툴을 사용하면 언리얼 에디터만으로도 레벨 오브 디테일(LOD)에 사용할 수 있도록 복잡도를 감소시킨 스켈레탈 메시 버전을 생성할 수 있습니다! 더이상 시간 소모가 심하고 오류에 취약한 외부 디지털 콘텐츠 제작 (DCC) 프로그램이나 서드파티 툴에 의존할 필요가 없습니다. 정확한 고퀄리티 레벨 오브 디테일을 만들어 뷰포트에서 그 결과를 즉시 확인할 수 있습니다.

자세한 정보는 스켈레탈 메시 감소 툴 문서를 참고하세요.

신규: 플랫폼 별 프로퍼티 개선

Per Platform Properties (플랫폼 별 프로퍼티) 기능이 확장되어 Platform Group (플랫폼 그룹) 뿐 아니라 Target Platform (타깃 플랫폼)에 따라서도 값을 설정할 수 있게 되었습니다.

신규: Gauntlet 자동화 프레임워크 개선

Gauntlet 자동화 프레임워크가 사용 편의성, 문서, 학습 예제 등 여러가지 개선되었습니다.

문서 & 샘플 추가

  • Gauntlet 아키텍처 및 시작하기 관련 문서가 추가되었습니다.
  • ActionRPG 및 Profile Guided Optimization (프로파일 기반 최적화) 예제가 추가되었습니다.
  • 에디터 로드 및 PIE 시간 추적 예제가 추가되었습니다.

iOS 지원

Gauntlet 이 이제 iOS 의 IPA 파일 설치 및 실행을 지원합니다 (Mac 호스트가 필요합니다). 이제 PC, Mac, PS4, XB1, Switch, Android, 그리고 iOS 까지 지원하게 되었습니다.

프로파일 기반 최적화

PS4, XboxOne, Switch 프로젝트에 대한 프로파일 기반 최적화 (Profile Guided Optimization, PGO) 파일을 자동 생성하는 예제 스크립트가 추가되었습니다.

리포트 생성

HTML 및 마크다운 빌더로 커스텀 리포트를 생성할 수 있습니다.

신규: Visual Studio 2019 지원

Visual Studio 2019 가 지원됩니다. Visual Studio 2019 를 기본 사용하려면, 에디터의 소스 컨트롤 세팅에서 "Visual Studio 2019" 를 IDE 로 선택해야 합니다.

새로운 C++ 표준 버전으로 전환하는 기능도 지원합니다. 프로젝트가 지원하는 C++ 표준 버전을 변경하려면, .target.cs 파일에서 CppStandard 프로퍼티 값을 다음 중 하나로 설정하세요.

 

버전

C++14

CppStandardVersion.Cpp14

C++17

CppStandardVersion.Cpp17

Latest

CppStandardVersion.Latest

그와 동시에, Visual Studio 2015 는 더이상 지원하지 않습니다. 강제로 Visual Studio 2015 컴파일러로 프로젝트를 빌드하려면, 프로젝트의 .target.cs 파일에서 WindowsPlatform.Compiler = WindowsCompiler.VisualStudio2015 를 설정하면 됩니다. 참고로 에픽게임즈 런처에서 다운로드한 엔진 버전은 Visual Studio 2015 를 지원하지 않으며, 내부적으로도 더이상 테스트하지 않고 있습니다.

신규: 서브시스템

Subsystem (서브시스템)은 관리받는 수명이 있는 자동 인스턴싱 클래스로 복잡하게 엔진 클래스를 수정하거나 덮어쓸 필요 없이 쉽게 사용할 수 있는 확장 지점을 제공함과 동시에, 기본적으로 블루프린트와 Python 에 노출되는 부분이 있습니다.

현재 지원되는 서브시스템 수명

Engine

class UMyEngineSubsystem : public UEngineSubsystem { ... };

엔진 서브시스템의 모듈이 로드되면, 모듈의 Startup() 함수 반환 이후 서브시스템을 Initialize() 합니다. 서브시스템은 모듈의 Shutdown() 함수 반환 이후 Deinitialize() 합니다.

이 서브시스템은 GEngine 을 통해 액세스할 수 있습니다.

UMyEngineSubsystem MySubsystem = GEngine->GetEngineSubsystem();

Editor

class UMyEditorSubsystem : public UEditorSubsystem { ... };

에디터 서브시스템의 모듈이 로드되면, 모듈의 Startup() 함수 반환 이후 서브시스템을 Initialize() 합니다. 서브시스템은 모듈의 Shutdown() 함수 반환 이후 Deinitialize() 합니다.

이 서브시스템은 GEditor 를 통해 액세스할 수 있습니다.

UMyEditorSubsystem MySubsystem = GEditor->GetEditorSubsystem();

참고: 이 에디터 전용 서브시스템은 일반 블루프린트에 액세스할 수 없으며, 에디터 유틸리티 위젯 및 블류틸리티 클래스에만 액세스할 수 있습니다.

GameInstance

class UMyGameSubsystem : public UGameInstanceSubsystem { ... };

UGameInstance 를 통해 액세스할 수 있습니다.

UGameInstance* GameInstance = ...;
UMyGameSubsystem* MySubsystem = GameInstance->GetSubsystem();

LocalPlayer

class UMyPlayerSubsystem : public ULocalPlayerSubsystem { ... };

ULocalPlayer 를 통해 액세스할 수 있습니다.

ULocalPlayer* LocalPlayer = ...;
UMyPlayerSubsystem * MySubsystem = LocalPlayer->GetSubsystem();

블루프린트에서 서브시스템 액세스

서브시스템은 블루프린트에 자동 노출되며, 컨텍스트를 이해하는 스마트 노드가 추가되며 형변환이 필요치 않습니다.

표준 UFUNCTION() 마크업 및 규칙으로 블루프린트에 어떤 API 를 사용할 수 있는지 제어할 수 있습니다.

Python 에서의 서브시스템

Python 을 사용하여 에디터 스크립트를 작성하는 경우, 서브시스템에서 값을 구하는 자체 액세서를 사용할 수 있습니다.

my_engine_subsystem = unreal.get_engine_subsystem(unreal.MyEngineSubsystem)
my_editor_subsystem = unreal.get_editor_subsystem(unreal.MyEditorSubsystem)

참고: Python 은 현재 실험단계 기능입니다.

에디터 유틸리티 위젯

Editor Utility Widget (에디터 유틸리티 위젯)은 언리얼 에디터 기능을 확장하여 UMG UI 에디터와 블루프린트 비주얼 스크립팅 로직만으로 새로운 유저 인터페이스를 만들 수 있습니다! 이는 에디터 전용 UI 패널로, 다른 언리얼 에디터 패널처럼 에디터 메뉴에서 선택할 수 있습니다.

에디터 유틸리티 위젯을 생성하려면, 콘텐츠 브라우저 에서 우클릭하고 에디터 유틸리티 > 에디터 위젯 을 선택하면 됩니다.

블루프린트를 편집하려면, 에디터 위젯 애셋 에 더블클릭하면 됩니다. 에디터 위젯 애셋에 대한 블루프린트를 편집한 이후, 에디터 위젯을 우클릭하고 Run Editor Utility Widget (에디터 유틸리티 위젯 실행)을 선택하면 탭에 UI 가 열립니다. 이 탭은 레벨 에디터 탭에만 도킹할 수 있습니다. 레벨 에디터의 창 드롭다운 메뉴 중 에디터 유틸리티 위젯 카테고리 아래 나타납니다. 실험단계 기능입니다.

신규: 머티리얼 분석 툴

Material Analyzer (머티리얼 분석 툴)에서는 머티리얼과 머티리얼 인스턴스에 사용된 파라미터를 전체적으로 확인하면서, 어떤 머티리얼 인스턴스를 어떻게 통합 및 최적화하면 렌더 스테이트 전환을 최소화하고 메모리를 절약할 수 있을지 알 수 있습니다. 머티리얼 분석 툴은 창 > 개발자 툴 에서 확인할 수 있습니다.

트리 형태로 나열되는 머티리얼 옆의 제안 목록에는 정적 오버라이드 세트가 같아서 최적화할 수 있는 머티리얼 인스턴스 그룹이 표시됩니다. 관련된 인스턴스 전부를 로컬 컬렉션에 넣으면, 쉽게 찾아 업데이트할 수 있습니다.

신규: 자손 및 후손 액터 선택

이제 월드 아웃라이너레벨 뷰포트 의 컨텍스트 메뉴에서 선택을 모든 직계 자손 또는 선택된 액터의 모든 후손으로 확장할 수 있어, 크고 복잡한 씬 계층구조 작업이 쉬워집니다.

신규: 스케일 적용 카메라의 줌 및 패닝

레벨 뷰포트에 선택된 오브젝트가 둘 이상인 경우, 이제 카메라 줌 및 패닝 작업 감도가 오브젝트와 카메라 사이 거리에 따라 스케일을 자동 조절합니다. 카메라 이동의 느낌이 더욱 자연스러워 지며, 아주 작은 기계 부속이나 거대한 랜드스케이프처럼 크기가 극단적인 오브젝트 작업을 할 때 특히 좋습니다.

기존 방식으로 돌아가는 방법은 에디터 개인설정 창의 레벨 에디터 > 뷰포트 섹션에 새로 생긴 Use distance-scaled camera speed (거리에 따른 카메라 속도 조절 사용) 옵션을 끄면 됩니다.

신규: 선택 주위 궤도

이제 레벨 뷰포트에 오브젝트가 둘 이상 선택된 경우, 카메라가 화면 가운데가 아닌 선택한 오브젝트들의 피벗을 중심으로 궤도를 돌도록 만들 수 있습니다.

이 모드는 에디터 개인설정 창의 레벨 에디터 > 뷰포트 섹션에 있는 Orbit camera around selection (선택 중심 카메라 궤도) 옵션으로 사용할 수 있습니다.

신규: 멀티 레이어 가시성 토글

이제 여러 레이어의 가시성을 동시에 토글할 수 있습니다. 레이어를 CTRL 클릭으로 선택합니다. 그런 다음 선택된 레이어 옆 눈 아이콘 을 클릭하면 선택된 모든 레이어의 가시성이 토글됩니다.

 

신규: 멀티 유저 편집 (베타)

이제 여러 명의 레벨 디자이너가 다수의 언리얼 에디터 인스턴스를 서로 연결하여 공유 편집 세션에서 협업 하면서, 똑같은 가상 세계를 실시간으로 같이 만들 수 있습니다.

  • 데디케이티드 서버가 모든 사용자의 수정 사항을 전부 기록한 뒤, 연결된 모든 컴퓨터 사이 에디터 상태를 동기화합니다.
  • 한 컴퓨터에서 레벨 및 시퀀스를 변경하면, 그 변경사항은 같은 세션의 일부인 다른 모든 컴퓨터에 라이브로 자동 미러링됩니다.
  • 머티리얼같은 다른 애셋 유형을 변경하면, 저장할 때 다른 모든 컴퓨터에 리플리케이트합니다.
  • 편집 세션을 떠나기 전, 각 사용자는 그 세션 도중의 변경 사항을 프로젝트 로컬 사본에 적용할지 선택할 수 있습니다.

신규: 프리뷰 렌더링 레벨 개선

다양한 디바이스와 플랫폼의 셰이딩 모델에서 작업할 때 모든 에디터 뷰포트에서 같은 셰이딩 모델을 일관되게 사용할 수 있도록, 그리고 기본 셰이더 모델 5 (SM5) 및 선택된 프리뷰 렌더링 레벨 사이를 즉시 전환할 수 있도록 모바일 프리뷰어 워크플로를 개선했습니다.

메인 툴바 세팅 드롭다운 메뉴에서 프리뷰 렌더링 레벨 을 선택하고 셰이더 컴파일 대상 플랫폼을 선택하는 것으로 시작합니다. 컴파일이 끝나면, 메인 툴바에 추가된 프리뷰 모드 버튼으로 뷰 모드를 전환합니다.

자세한 내용은 모바일 프리뷰어 문서를 참고하세요.

신규: 모바일에 다이내믹 스포트라이트 지원

이제 고사양 모바일 디바이스에서 그림자를 드리우지 않는 다이내믹 스포트 라이트를 지원합니다.

프로젝트 세팅 > 렌더링 > 모바일 셰이더 퍼뮤테이션 에서 Support Movable Spotlights (무버블 스포트라이트 지원) 옵션으로 사용할 수 있습니다.

자세한 정보는 모바일 플랫폼용 라이팅 문서를 참고하세요.

신규: SaveGame 시스템 iCloud 지원

이제 iOS 및 tvOS 모두 ISaveGameSystem 인터페이스를 사용하여 iCloud 에 게임을 저장하는 기능이 지원됩니다. 프로젝트 세팅 > 플랫폼 > iOS > OnlineEnable Cloud Kit Support (클라우드 키트 지원 활성화) 옵션으로 사용할 수 있습니다. 그리고 iCloud save files sync strategy (iCloud 파일 저장 동기화 전략) 옵션에서 프로젝트에 가장 잘 맞는 동기화 방법을 선택하면 됩니다. 현재 사용할 수 있는 iCloud 동기화 옵션은 다음과 같습니다.

  • 안함 (게임 저장/로드에 iCloud 를 사용하지 않습니다).
  • 게임을 시작할 때만 (iOS)
  • 항상 (LoadGame 호출 시마다)

신규: 디바이스 출력 창 개선

디바이스 출력 로그 창이 크게 개선되어 실험단계 상태를 벗어났습니다. 디바이스 출력 로그 창을 통해 PC 에서 iOS 디바이스로 콘솔 명령을 전송할 수도 있습니다. 디바이스 출력 로그에 액세스하려면 창 > 개발자 툴 > 디바이스 출력 로그 를 선택하면 됩니다.

신규: HTML5 플랫폼 개선 (실험단계)

HTML 5 프로젝트의 멀티스레드 지원이 실험단계로 추가되었습니다. 이 기능을 사용하려면 언리얼 엔진 4 소스 코드 액세스가 필요합니다.

일부 브라우저는 멀티스레드 모드로 실행하려면 특수 플래그를 활성화해야 합니다. 자세한 정보는 https://github.com/emscripten-core/emscripten/wiki/Pthreads-with-WebAssembly 페이지를 참고하세요.
  • Chrome 사용자의 경우 다음 플래그를 붙여 실행하면 됩니다.
--js-flags=--experimental-wasm-threads --enable-features=WebAssembly,SharedArrayBuffer

다른 활성화/비활성화 방법은 chrome://flags/#enable-webassembly-threads 의 "WebAssembly threads support" 입니다.
 
  • Firefox nightly 에서는 about:config 에서 javascript.options.shared_memory 개인설정을 true 로 설정하여 SharedArrayBuffer 를 활성화할 수 있습니다.

신규: iOS 선호 방향

이제 Landscape Left (가로 왼쪽) 및 Landscape Right (가로 오른쪽) 방향 모두 지원하는 iOS 디바이스에서 실행 시 기본 사용할 선호 방향을 설정할 수 있습니다.

신규: 나이아가라 벡터 필드 데이터 인터페이스

이제 Vector Field Data Interface (벡터 필드 데이터 인터페이스) 가 CPU 및 GPU 파티클 모두에 똑같이 작동합니다! Sample Vector Field (벡터 필드 샘플링) 모듈을 사용하여 벡터 필드를 샘플링할 수 있습니다. 노출된 주 입력은 세 가지입니다.

  • VectorField: 벡터 필드 데이터 인터페이스 인스턴스로, 스태틱 벡터 필드 오브젝트 자체와 축 별 타일링 플래그가 들어있습니다.
  • SamplePoint: 벡터 필드를 샘플링할 지점입니다. 기본값은 Particles.Position 지만 사용자 정의할 수 있습니다.
  • Intensity: 샘플링한 벡터에 적용할 스케일입니다.

옵션 입력도 여러가지 있습니다.

  • ApplyFalloff: 샘플링된 벡터에 감쇠 함수를 적용하여, 벡터 필드의 바운딩 박스 가장자리로 가면서 벡터 필드 영향력이 0 으로 수렴하도록 합니다.
  • UseExponentialFalloff: 감쇠 함수가 선형이 아닌 지수형이 됩니다.
  • FalloffDistance: 감쇠 함수를 적용할 때, 바운딩 박스 가장자리에서 얼마나 멀리까지 감쇠를 적용할지 결정하는 값입니다.
  • FieldCoordinates: 이미터의 Localspace 파라미터를 덮어쓸 수 있도록 해줍니다. 옵션은 세 가지입니다.
    • Simulation: Emitter.Localspace 파라미터를 사용합니다.
    • World: Emitter.Localspace 파라미터와 무관하게 벡터 필드가 항상 월드 원점 기준이 되도록 위치와 트랜스폼을 덮어씁니다.
    • Local: Emitter.Localspace 파라미터와 무관하게 벡터 필드가 항상 시스템 자체 기준이 되도록 위치와 트랜스폼을 덮어씁니다.
  • FieldTranslate: FieldCoordinates 로 정의된 원점 기준으로 벡터 필드에 적용할 오프셋입니다.
  • FieldRotate: FieldCoordinates 로 정의된 원점 기준으로 벡터 필드에 적용할 방향입니다.
  • FieldScale: 벡터 필드의 스케일을 다시 조절합니다.

SampleVectorField 모듈에는 많은 유틸리티 기능이 제공되므로, 오버헤드가 생길 수 있습니다. 특수한 벡터 필드 샘플링을 사용할 수 있는데, 스크립트 에디터에서 벡터 필드 데이터 인터페이스 오브젝트에 SampleField 노드를 포함시키면 됩니다.

여기서 예상되는 입력은 벡터 필드 자체의 볼륨 기준으로, 적용되는 트랜스폼이 없기 때문입니다.

벡터 필드 사용법과 쉽게 시각화하는 법 예제는 VectorFieldVisualizationSystem 입니다.

신규: 나이아가라 컬 노이즈 데이터 인터페이스

이제 Curl Noise Data Interface (컬 노이즈 데이터 인터페이스)는 내재된 단일 노이즈 함수 기반으로 컬 노이즈를 절차적 생성하며, 그 결과는 CPU 및 GPU 이미터 모두 동일합니다. SampleCurlNoiseField 모듈을 사용하여 파티클에 컬 노이즈를 사용할 것을 추천합니다. 이 모듈에 노출된 주 입력은 둘입니다.

  • Strength: 모듈이 생성하는 출력 벡터의 스케일입니다.
  • Length Scale: 컬 노이즈가 생성하는 소용돌이의 대략 크기입니다.

옵션 입력은 셋입니다.

  • Offset: 노이즈 필드 패닝에 쓰입니다.
  • Noise Field: 데이터 인터페이스 오브젝트 자체이며, 주로 시드 조정에 쓰입니다.
  • Sample Point: 샘플링할 지점을 나타냅니다. 기본값은 Particles.Position 이지만, 다른 값을 사용할 수도 있습니다.

컬 노이즈 필드는 원래 타일링되지 않지만, 그 절차적 속성으로 인해 갑자기 끝나지는 않습니다. 타일링 컬 노이즈 필드를 만들기 위해서는, 벡터 필드 데이터 인터페이스를 대신 사용하고, 주기적인 볼륨 텍스처 컬 노이즈를 벡터 필드로 추가하는 방법을 고려할 수 있습니다.

신규: 나이아가라의 결정론적 난수 생성

CPU 및 GPU 나이아가라 이미터 모두에 결정론적(, 실행할 때마다 생성 순서가 동일한) 난수 생성을 지원합니다. 난수 생성 작동 방식은 Emitter Properties 모듈에서 글로벌 제어할 수 있으며, 옵션은 다음과 같습니다.

  • Determinism: 전체 이미터의 난수 생성을 결정론적으로 할지 비결정론적으로 할지 결정합니다.
  • Random Seed: 결정론적 난수 생성 프로그램에 사용되는 글로벌 시드입니다.

RandomRange 나이아가라 함수는 스크립트 안에서 난수를 생성할 때 권장되는 방법입니다. 받는 값은 다음과 같습니다.

  • Min: 생성되는 난수의 하한을 정의합니다. integer 또는 float 유형일 수 있습니다.
  • Max: 생성되는 난수의 상한을 정의합니다. integer 또는 float ㅇ형일 수 있습니다.
  • RandomnessMode: 난수 생성기의 결정론 모드를 제어하는 enum 이며 가능한 값은 다음과 같습니다.
    • Simulation Defaults: 기본 동작으로, Emitter.Determinism 값을 상속합니다.
    • Deterministic: 결정론적 난수 생성 프로그램을 사용합니다.
    • Non-deterministic: 비결정론적 난수 생성 프로그램을 사용합니다.
  • OverrideSeed: Emitter.GlobalSeed 에 정의된 시드를 덮어쓸지 여부를 결정합니다.
  • Seed: OverrideSeed 옵션이 켜졌을 때 Emitter.GlobalSeed 에 덮어쓸 값입니다.

마지막 RandomnessMode, OverrideSeed, Seed 셋은 처음에 숨겨져 있지만, 노드 아래 화살표를 클릭하면 나타납니다.

결정론적 난수 생성을 위한 다른 방법은 Seeded Random 노드에 시드 값을 명시적으로 전달하는 것입니다. 예를 들어 Random Range 기능의 특수화는 다음과 같습니다.

결정론적 난수 생성 비용은 비결정론적 난수보다 생성되는 유형에 따라 1.5 에서 2 배 정도 비쌉니다. 일반적으로 스크립트에 난수가 둘 이상 필요한 경우, 호출 한 번에 생성하여 결과를 나눈 뒤 별도로 처리하는 것이 좋습니다.

신규: 나이아가라 수학 연산을 위한 추가 입력

이제 다수의 스크립트 수학 연산이 입력 핀을 몇 개든 지원합니다. 입력 핀을 추가하려면 추가 (+) 버튼을 클릭하거나 추가 버튼 옆 핀에 연결하면 됩니다.

신규: 나이아가라 스크립트 폐기 지원

이제 스크립트 에디터에서 모듈, 동적 입력, 함수에 대한 스크립트에 deprecated (폐기) 마크할 수 있습니다. 이제 폐기된 스크립트를 사용하는 이미터와 시스템은 UI 에 오류가 표시되고, 폐기된 스크립트는 메뉴에 추가 옵션으로 나타나지 않습니다.

신규: 신규 나이아가라 초기화 모듈

파티클을 초기화할 때 사용되는 일반 어트리뷰트 대부분이 노출되어 있는 새 모듈이 추가되었습니다.

신규: 나이아가라의 시뮬레이션 대상으로 선택 노드

Select by Simulation Target (시뮬레이션 대상으로 선택) 노드는 이미터의 실행 위치가 CPU 벡터 머신인지 GPU 컴퓨트 스크립트인지에 따라 다른 로직을 실행할 수 있습니다. 일반적으로 대부분의 스크립트는 두 시뮬레이션 대상에서 동일하게 실행되어야 합니다. 하지만 항상 가능한 일은 아닌데, 데이터 인터페이스 호출을 할 때는 특히 그렇습니다. 정확한 패리티 확인이 불가능한 경우, 모듈 제작자는 새 노드의 더 많은 도구로 일관된 동작을 구축할 수 있습니다. 그 사용법 예제는, 새로운 콜리전 반응 모듈을 참고하세요.

신규: 나이아가라의 새로운 콜리전 시스템

나이아가라의 콜리전을 완벽히 다시 작성하여 레이 트레이스 기반 CPU 콜리전, CPU+GPU 분석 평면 콜리전, CPU 씬 뎁스, 디스턴스 필드 콜리전을 지원합니다.

추가된 기능은 다음과 같습니다.

  • 이전의 나이아가라 및 캐스케이드 구현과 비교하여 전반적으로 안정성이 크게 향상되었습니다.
  • CPU 콜리전은 복원력 및 마찰 계수와 같은 씬의 피지컬 머티리얼 특성을 활용할 수 있으며, 여러 가지 통합 체계를 제공합니다.
  • 유용성 향상을 위해 시스템을 단일 모듈로 작성했습니다.
  • 이제 콜리전이 모든 렌더러에서 잘 작동합니다.
  • "rest" (휴식) 상태를 설정할 수 있어 특히 어려운 상황에서도 파티클의 안정성을 보장할 수 있습니다.
  • 등식은 물리 기반이며, 질량 및 기타 시스템 프로퍼티를 사용하여 작동합니다.
  • 정적, 미끄럼, 구름 마찰을 비롯한 여러 고급 옵션이 노출되었습니다.
  • 콜리전 반경은 스프라이트와 메시에 대해 자동 계산됩니다. 선택적으로 이 파라미터를 직접 지정할 수 있습니다.

신규: 플랫폼 SDK 업그레이드

매 출시 버전마다 플랫폼 파트너사의 최신 SDK 버전을 지원하도록 엔진을 업데이트하고 있습니다.

  • 빌드 팜 컴파일 대상 IDE 버전
    • Visual Studio - Visual Studio 2017 v15.6.3 toolchain (14.13.26128) 및 Windows 10 SDK (10.0.16299.0)
      • 최소 지원 버전
        • Visual Studio 2017 v15.6
      • 필수 NET 4.6.2 Targeting Pack
    • Xcode - Xcode 10.1
  • Android
    • Android NDK r14b (Windows 및 Mac 의 CodeWorks 는 새로운 CodeWorks for Android 1r7u1 인스톨러로 대체하고, Linux 는 1r6u1 기반 수정 버전을 사용합니다.)
    • 참고: 이제 기능 (예: RECORD_AUDIO, CAMERA) 별로 권한 요청이 필요합니다. 자세한 정보는 Android 업그레이드 노트 를 참고하세요.
  • HTML5
    • Emscripten 1.37.19
  • Linux "SDK" (cross-toolchain)
  • Lumin
    • 0.19.0
  • Steam
    • 1.39
  • SteamVR
    • 1.0.16
  • Oculus Runtime
    • 1.32
  • Switch
    • SDK 7.3.0 + 옵션 NEX 4.4.2 (펌웨어 7.x.x-x.x)
    • SDK 6.4.0 + 옵션 NEX 4.6.2 (펌웨어 6.x.x-x.x)
    • 지원 IDE: Visual Studio 2017, Visual Studio 2015
  • PS4
    • 6.008.061
    • 펌웨어 버전 6.008.021
    • 지원 IDE: Visual Studio 2017, Visual Studio 2015
  • XboxOne
    • XDK: July 2018 QFE-4
    • 펌웨어 버전: December 2018 (버전 10.0.17763.3066)
    • 지원 IDE: Visual Studio 2017
  • macOS
    • SDK 10.14
  • iOS
    • SDK 12
  • tvOS
    • SDK 12