언리얼 엔진 4.19 릴리즈 노트

언리얼 엔진 4.19 릴리즈 노트입니다.

Windows
MacOS
Linux
목차

image alt text

새로운 기능

언리얼 엔진 4.19 를 사용하면 창의적 프로세스로 한 발 더 나아갈 수 있습니다. 매우 직관적인 툴로 콘텐츠 제작에 더 많은 시간을 할애할 수 있습니다. 렌더링, 피직스, 랜드스케이프, 터레인 시스템 등이 개선되어 이전보다 더 빠른 속도로 월드를 제작 할 수 있습니다. 저희의 최우선 과제는 항상 저희 툴을 사용하는 개발자의 삶의 질 향상이므로, 개발자가 더욱 많은 작업을 할 수 있도록 개선할 수 있는 부분이 없는지 계속해서 검토하고 있습니다.

언리얼 엔진 4.19 를 사용하면 게임, 단방향 매체, 건축 시각화 또는 제품 디자인 도구를 만들 때 완성된 제품이 모든 단계에서 어떻게 보일지 정확히 알 수 있습니다. 새로운 라이브 링크 플러그인은 외부 콘텐츠 제작 도구와 언리얼 엔진 간의 작업방식을 자연스럽게 혼합하여 소스 콘텐츠 변경 결과를 바로 확인할 수 있도록 해줍니다. 시퀀서의 지속적인 개선으로 실시간 씬을 더욱 완벽하게 제어 할 수 있습니다.

상상 속 세계를 현실화 하는 데 있어 한계는 없습니다. 랜드스케이프 렌더링 최적화 덕분에 거대한 오픈월드에서 숨이 멎을듯한 풍경을 만들 수 있습니다. 새로운 동적 해상도 기능을 사용하면 필요에 따라 해상도를 조정하여 원하는 프레임 속도를 맞춰주므로 PlayStation 4 및 Xbox One 에서 보다 부드럽게 실행됩니다.

작업방식이 편하고 사용하기 쉽지 않으면 릴리즈의 완성이라고 할 수 없습니다. 이러한 점에서 언리얼 엔진 4.19 는 여러분을 실망시키지 않습니다. 머티리얼 레이어 및 파라미터를 사용하는 것이 직관적으로 더 쉬워졌습니다. 블루프린트 디버깅은 단계별 실행, 스텝 인 및 스텝 아웃 기능을 통해 더욱 강력해졌습니다. 이제 콘텐츠 폴더를 즐겨찾기로 설정할 수 있습니다. 애니메이션 툴의 핀 고정 가능 명령, 다중 뷰포트 기능 등 여러 기능이 향상되었습니다.

이번 릴리즈에는 위 모든 업데이트는 물론 엄청난 GitHub 언리얼 엔진 커뮤니티 개발자들이 제출한 개선 사항이 128 종 포함되어 있습니다! 언리얼 엔진 4.19 에 기여해 주신 분들께 감사드립니다:

Adam Rehn (adamrehn), Alex Chi (alexchicn), Alexander Stevens (MilkyEngineer), alexformosoc, Andrew Armbruster (aarmbruster), Anton Rassadin (Antonrr) Austin Pukasamsombut (AustinPuk-Conffx), Bo Anderson (Bo98), Carlos (carloshellin), Carsten Neumann (cneumann), Celso Dantas (celsodantas), Chris Conway (Koderz), Chris Dietsch (cdietschrun), Chrispykins, Clinton Freeman (freemancw), cmheo, CuoXia (shrimpy56), Daniel Butum (leyyin), Daniel Neel (dneelyep), Daniel Sell (djsell), David Payne (dwrpayne), DavidNSilva, Deep Silver Dambuster Studios (DSDambuster), Derek van Vliet (derekvanvliet), DerelictHelmsman, dfb, Dorgon Chang (dorgonman), druhasu, Eddy Luten (EddyLuten), foollbar, GeorgeR, Giperionn, Hyuk Kim (Hybrid0), Ilya (ill), Jack Knobel (jackknobel), Jacob Nelson (JacobNelsonGames), James Horsley (mmdanggg2), Jared Taylor (Vaei), Javad Shafique (JavadSM), jessicafalk, John W. Ratcliff (jratcliff63367), Jørgen P. Tjernø (jorgenpt), Josef Gluyas (Josef-CL), Julien Le Corre (jlc-innerspace), konflictue, Kryofenix, Kyle Langley (Vawx), Marcin Gorzel (mgorzel), Matt Hoffman (LordNed), Matthew Davey (reapazor), Michael Allar (Allar), Michał Nowak (BibbitM), Mikael Hermansson (mihe), mkirzinger, Mustafa Top (MSTF), nakapon, nullbus, pfoote, phlknght, projectgheist, Richard Schubert (Hemofektik), Ron Radeztsky, rlefebvre, ruffenman, sangpan, Sébastien Rombauts (SRombauts), smt923, Stefan Zimecki (stefanzimecki), Stephen Swires (sswires), Tim Niederhausen (timniederhausen), Timothee Besset (TTimo), Tom Ward (tomwardio), tomari, TomFors, Toru Hisai (torus), Vikram Saran (vikhik), yaakuro, Yohann Martel (ymartel06), YuchenMei, Zeno Ahn (zenoengine)

주요 기능

신규 : 템포럴 업샘플

템포럴 업샘플(Temporal Upsample)이라는 새로운 업스케일 메서드를 추가했습니다. 프레임을 더 낮은 해상도로 임시 축적한 뒤 주 공간 스케일을 올려 결과물이 흐려지는 것을 줄여줍니다.

1 템포럴 업샘플 활성화시; 2 - 템포럴 업샘플 비활성화시

이전 버전에서 스크린 퍼센티지(Screen Percentage) 라는 개념은, 3D씬을 더 낮은 해상도로 렌더링한 뒤 공간적으로 스케일을 올려 출력 해상도로 높인 뒤, 그 위에 UI 를 그리는 것이었습니다. 저사양 하드웨어의 GPU 예산을 맞출 수 있는 매우 유연한 방법이었지만 결과물의 선명도를 희생시켜야 한다는 단점이 있었습니다.

이제 단일 스크린 퍼센티지 대신, 별도로 제공되는 두 개의 스크린 퍼센티지를 업스케일에 사용할 수 있습니다:

  • 주 스크린 퍼센티지는 기본적으로 전과 같은 공간적 업스케일 패스를 사용합니다.

  • 보조 스크린 퍼센티지는 UI 를 그리기 전, 포스트 프로세싱의 끝 부분에서 정적, 공간적 업스케일만을 담당합니다.

image alt text

TAA (Temporal Anti-Aliasing) 패스에서 동작하는 템포럴 업스칼라는 주 스크린 퍼센티지를 50%에서 최대 200%까지 다양하게 변경하여 지오메트리 선명도를 일정하게 유지합니다. 실제로 스크린 퍼센티지를 낮춘다 할지라도 TAAU 를 켜면, 보통은 뭉개지거나 섞여버리고 말았을 배경의 지오메트리에 디테일과 복잡도가 유지됩니다. 위 예의 철망이나 전신주에서 확인할 수 있습니다.

더 많은 정보는 템포럴 업샘플 및 스크린 퍼센티지 페이지를 참고하세요.

신규 : 동적 해상도

이제 PlayStation 4와 Xbox One 게임에서 원하는 프레임 속도를 내기 위해 필요에 따라 해상도를 조절하는 방식을 지원 합니다! 휴리스틱을 통해 이전 프레임 GPU 작업 부하에 따라 주 스크린 퍼센티지를 설정하는 방식으로 작동합니다.

image alt text

더 많은 플랫폼에 대한 지원은 향후 릴리즈에서 제공 될 예정입니다. 자세한 내용은 동적 해상도 페이지를 참조하십시오.

신규 : 언리얼 AR 프레임워크

언리얼 엔진의 이번 릴리즈의 통합된 언리얼 AR 프레임워크에서는 애플 및 Google 핸드헬드 플랫폼 모두에서 증강 현실 응용 프로그램을 빌드하기 위한 풍부하고 통일 된 프레임 워크를 제공합니다. 프레임워크는 단일 개발 패스를 제공함으로써 개발자는 하나의 코드 패스로 두 플랫폼의 AR 응용 프로그램을 모두 제작할 수 있습니다. 통합된 언리얼 AR 프레임워크에는 정렬, 라이트 추정, 고정하기, 세션 스테이트, 트레이스 결과등을 지원하는 함수가 포함되어 있습니다.

image alt text

신규 : 통합된 언리얼 AR 프레임워크 프로젝트 템플릿

또한 새 기능을 시연하는 완벽한 예제 프로젝트로 블루프린트 템플릿에 휴대형 증강 현실(Handheld AR) 템플릿을 새로 추가하였습니다.

image alt text

신규 : 물리적 라이트 밝기 단위

언리얼 엔진 4.19에 새로 도입된 기능으로, 모든 라이트의 단위는 이제 물리기반 단위로 정의됩니다. 어떤 라이트는 이미 잘 정의된 값을 사용하는 것도 있지만, 아직 엔진 전용 값을 사용하는 것도 있습니다. 밝기 단위는 (적용 가능한 경우) 드롭 다운 메뉴에서 선택할 수 있습니다. 호환성을 위해 기본 라이트 밝기 단위는 이전 버전의 엔진과 호환됩니다. 새로운 라이트 단위 프로퍼티는 라이트 별로 편집할 수 있으며, 라이팅 관련 계산 시 엔진이 "강도" (Intensity) 프로퍼티를 해석하는 방법이 변경됩니다.

image alt text

Litrix의 Project courtesy

신규 : 라이브 링크 플러그인 개선사항

이제 Maya 라이브 링크 플러그인을 사용할 수 있으며 Maya와 UE4 사이의 연결을 설정하여 Maya에서 변경된 내용을 UE4 에디터에서 실시간 으로 볼 수 있습니다.

플러그인이 활성화 되면, Maya 버전과 관련된 바이너리 파일을 Maya의 Plugins 폴더에 복사하고 Maya Plugins Manager를 통해 활성화 해야 합니다.

Engine\Extras\MayaLiveLink\LiveLinkMaya.zip 위치에서 엔진 설치 폴더 내에 Maya 라이브 링크 플러그인의 바이너리 파일을 찾을 수 있습니다. zip 파일에는 Windows 용 Maya 2016/2017/2018 용 바이너리가 있습니다. 다른 버전의 바이너리가 필요한 경우 Engine\Source\Programs\MayaLiveLinkPlugin 폴더에서 소스를 찾을 수 있을 것입니다.

Maya 라이브 링크 UI 창은 MEL 콘솔에서 MayaLiveLinkU 명령으로 활성화 할 수 있습니다. 맨 위 오른쪽에는 이 Maya 인스턴스가 언리얼 엔진(클라이언트)에 연결되어 있는지 여부를 보여주는 디스플레이가 있습니다. 언리얼 엔진 라이브 링크 아래에는 현재 스트리밍되고 있는 모든 대상(서브젝트)의 리스트가 있습니다. (위 이미지에서는 현재 하나만 스트리밍 중). 하단 창에서는 스트리밍되는 대상을 추가하고 제거할 컨트롤을 사용할 수 있습니다.

모션빌더 라이브 링크 플러그인

현재 씬에서 선택된 오브젝트를 스트리밍 목록에 추가 할 수 있습니다 (위 그림 참조). 이 창에서 이름은 Subject Name 열에 설정 할 수 있으며 Stream Type (카메라, 스켈레톤 등)을 설정할 수 있습니다. 대상의 스트리밍 사용 여부 또한 여기서 설정할 수 있습니다.

활성 카메라를 에디터 활성 카메라로 스트리밍

이제 Maya에서 활성 카메라 제어 상태가 에디터의 활성 카메라에 동기화 됩니다. 스트리밍이 더욱 강력해지고 얼굴 릭 / 리프 본이 올바르게 업데이트 되도록 에디터 업데이트 훅을 수정했습니다.

라이브 링크에 버추얼 서브젝트 추가

버추얼 서브젝트는 라이브 링크에 들어오는 여러 서브젝트를 하나의 서브젝트로 결합하여 에디터에서 사용할 수있는 방법입니다. 버추얼 서브젝트는 엔진 내에서 생성되며 공통의 루트에 연결된 여러 개의 실제 서브젝트의 본들을 포함합니다.

아래는 버추얼 서브젝트가 에디터에서 스켈레탈 메시에 적용된 모습입니다.

image alt text

여기에서는 Add > Add Virtual Subject 를 사용하여 새로운 버추얼 서브젝트를 만들고 Maya 라이브링크 소스에서 대상(서브젝트)을 읽어오도록 설정했습니다. 버추얼 서브젝트는 Maya에서 전송되는 세 가지 서브젝트들로 구성됩니다.

라이브 링크 플러그인 개발

라이브 링크의 목적은 스트리밍을 위한 공통된 인터페이스를 제공하고 UE4 외부 소스 (예 : DDC 도구 및 모션 캡처 서버)에서 모든 종류의 애니메이션 데이터를 사용하는 것입니다. 언리얼 플러그인을 통해 확장 가능하도록 설계되었으므로 서드 파티가 엔진 변경에 따른 개발과 유지 보수없이 새로운 기능을 개발할 수 있습니다.

라이브 링크를 통합하는 방법은 두 가지입니다:

  1. 새로운 소스를 라이브 링크에 노출하는 언리얼 엔진 플러그인을 만듭니다. 이미 자체 스트리밍 프로토콜이 있는 사용자에게 권장되는 방법입니다.

  2. 메시지 버스 엔드 포인트를 서드 파티 소프트웨어에 통합시켜 내장 메시지 버스 소스에 대한 데이터 전송기 역할을 할 수 있도록 합니다. Maya와 모션빌더 플러그인 제작에 사용된 방법입니다.

일반 플러그인 개발에 대한 개요는 플러그인 설명서 페이지를 참조하십시오.

라이브 링크 모션 컨트롤러 지원

이제 라이브 링크를 모션 컨트롤러와 함께 사용할 수 있습니다. 모션 컨트롤러의 모션 소스 프로퍼티를 라이브 링크 내 제목으로 설정할 수 있습니다. 이런 식으로 설정하면 모션 컨트롤러 컴포넌트의 위치는 서브젝트의 첫 번째 트랜스폼이 관리합니다.

모션 컨트롤러 통합은 라이브 링크 주제의 커스텀 파라미터에 접근할 수도 있습니다. 이들은 라이브 링크 서브젝트에 내장된 커브를 통해 전달됩니다.

값에 접근하려면 MotionControllerComponent 를 상속받는 새 블루프린트 컴포넌트 속의 OnMotionControllerUpdated 함수를 오버라이드 해야 합니다. OnMotionControllerUpdated 이벤트가 호출될 때는 모션 컨트롤러에서 GetParameterValue 호출이 유효합니다.

다음은 라이브 링크의 Intensity 파라미터로 라이트 컴포넌트의 강도를 변경 할 수 있는 한 예입니다.

image alt text

기타 개선 사항

  • 라이브 링크 소스에 사용자 지정 설정을 정의하는 기능 추가 - IKinema 등의 파트너가 라이브 링크 지원 기능을 만들어 달라고 요청하였습니다.

  • 라이브 링크 소스가 스켈레톤을 라이브 링크 클라이언트로 전송하는 기능에서 GUID도 함께 전송가능 - 스켈레톤을 보낼 때 메시지 버스 소스가 이제 GUID를 함께 전송합니다.

  • Live Link Retargeter API에 Virtual Initialization 함수 및 Update DeltaTime 파라미터 추가

신규 : 시퀀서 개선사항

시퀀서를 보다 강력하고 효율적으로 만들기 위해 시퀀서의 기능과 작업방식을 지속적으로 개선하고 있습니다.

오브젝트 트랙 복사/붙여넣기/복제하기

마우스 우클릭 컨텍스트 메뉴에서 오브젝트 트랙과 그 자식 트랙을 복사 / 붙여넣기 / 복제할 수 있습니다. 스포너블을 같은 레벨 시퀀스 또는 다른 레벨 시퀀스로 복사하거나, 포제서블을 한 레벨 시퀀스에서 다른 레벨 시퀀스로 복사하면, 그 오브젝트는 다른 레벨 시퀀스의 같은 오브젝트에 바인딩됩니다. 이제 UMG 애니메이션을 다른 UMG 애니메이션으로 복사 할 수도 있습니다.

레벨 시퀀스 다이내믹 트랜스폼 원점

런타임에서 월드 좌표로 설정된 시퀀스 트랜스폼 트랙으로 제어되는 액터에 오프셋을 적용할 수 있습니다. 이렇게 하면 다른 좌표 공간에서 레벨 시퀀스를 재사용 할 수 있습니다. 이 기능을 사용하려면 레벨 시퀀스의 세부 정보 패널에서 Override Instance Data 옵션을 활성화 한 다음 트랜스폼 오리진 액터(Transform Origin Actor) 를 할당합니다.

Transform Origin 섹션에 지정된 트랜스폼은 (스케일을 무시하고) 시퀀스 내 모든 절대 트랜스폼 섹션에 더합니다. 최적의 결과를 얻으려면 액터의 시작 트랜스폼을 레벨 시퀀스의 0,0,0에 키 프레임으로 지정하고 지정한 트랜스폼 오리진 액터가 월드에서 시작할 위치를 (아래 그림처럼) 지정하도록 하세요.

키를 누를 때마다 (위 참고), 큐브가 이동하며 우리의 액터는 트랜스폼 오리진 액터의 위치에서 시작하여 경로를 따라 계속 걷습니다.

시퀀서 애님 블루프린트 웨이트 컨트롤

시퀀서 웨이트 블랜딩이 이제 애니메이션 블루프린트 내에서 동작합니다. 동일한 슬롯을 애니메이션에 사용하고 커브로 웨이트를 제어할 수 있습니다. 블렌드할 각 애니메이션의 속성에서 동일한 슬롯 이름을 지정하세요. 그런 다음 원하는 웨이트 값을 키 프레임으로 만드세요. 애님 블루프린트 내부에서 슬롯 노드를 사용하세요. 애님 블루프린트는 블렌딩할 때 제공한 웨이트 값을 사용합니다.

향상된 시퀀서 에디터 성능

  • 즉석 컴파일 (Compile On The Fly) 로직 - 시퀀서는 이제 소스 데이터에서 버전이 지난 평가 템플릿을 일부 또는 전부 필요에 따라 컴파일 할 수 있습니다. 에디터에서 시퀀서 작업을 할 때 훨씬 효율적으로 컴파일 할 수 있습니다.

  • 디테일 패널 업데이트 - 디테일 패널은 이제 시퀀서 에디터에서 스크러빙 / 재생하는 동안 업데이트를 연기합니다.

작은 개선사항들

  • "When Finished"(완료 시)의 기본값을 .ini 로 설정할 수 있습니다.

    • 레벨 시퀀스의 경우 RestoreState(기존 값으로 복귀)가 기본값으로 계속 사용됩니다. UMG의 경우 현재 기본값은 Keep State(현재 상태 유지)입니다.

    [/Script/LevelSequence.LevelSequence] DefaultCompletionMode=RestoreState

  • 시퀀서가 활성화되었을 때 카메라가 제어되지 않는 문제로 인한 혼란스러움을 줄이기 위해 카메라를 추가 할 때 항상 카메라 컷 트랙을 만들도록 하였습니다.

  • 자동 키 설정/키 추가 시 더 이상 회전 값이 뒤집히지 않습니다.

  • 트리 뷰에서 선택된 액터만 표시하는 옵션이 추가되었습니다. 이 기능은 레벨 시퀀스에서 많은 수의 액터를 가지고 작업하는 경우 뷰 상하 스크롤을 제한시킬 때 좋습니다.

  • 일정 프레임 간격마다 트랜스폼 트랙을 키로 굽는 옵션이 생겼습니다.

  • 트랜스폼 트랙에서 카메라 애니메이션을 만드는 옵션이 생겼습니다.

  • 서브시퀀스의 스포너블에 (패스 트랙, 카메라 컷 또는 어태치 트랙을) 바인딩하는 기능이 추가되었습니다.

  • 이제 섹션을 행 아래만이 아닌 위로도 끌어 올릴 수 있습니다.

신규 : 랜드스케이프 렌더링 최적화

랜드 스케이프 레벨 오브 디테일 (LOD) 시스템이 변경되어 거리 기반 대신 스태틱 메시 LOD 시스템의 작동 방식과 마찬가지로 화면 크기를 사용하여 컴포넌트의 디테일을 결정합니다. 이제 LOD 분포가 원거리 트라이앵글에서도 그 화면 크기에 따라 보다 일관된 크기를 제공합니다. 이것은 이전에 불가능했던 디테일을 유지할 수 있습니다.

image alt text

image alt text image alt text

(왼쪽: 기존 방식, 오른쪽: 새로운 방식)

에디터의 뷰포트> Visualizer(보통 Lit가 선택된 버튼)> LOD 로 이동하여 Landscape LOD를 시각화할 수 있습니다.

다음 설정을 사용하여 화면 크기에 따라 LOD가 전환되는 시점을 제어할 수 있습니다. 또한, 이제는 머티리얼 테셀레이션을 제어할 수 있으므로 다이내믹 섀도잉이 활성화된 디렉셔널 라이트를 사용하는 도중 추가적인 퍼포먼스 이득을 볼 수 있습니다.

image alt text

신규 : 프록시 LOD 시스템 (실험단계 기능)

새로운 프록시 LOD 시스템은 다수의 메시에 쓰이는 구운 머티리얼을 가진 로우 폴리 LOD 를 생성하는 실험단계 플러그인입니다. 새로운 시스템은 HLOD에서 사용되며 Simplygon 을 대체합니다.

: 현재 Windows 만 지원됩니다.

이 툴을 사용하려면 프로젝트 세팅 창의 에디터 섹션에서 "Hierarchical LOD Mesh Simplification" 옵션을 찾으십시오. Hierarchical LOD Mesh Reduction Plugin 에서 새로운 모듈 "ProxyLODMeshReduction" 을 선택할 수 있을 것입니다. 에디터 재시작을 선택하면 이 플러그인은 스태틱 메시 병합 LOD 용 서드 파티 툴 Simplygon 을 대체합니다. 이 새로운 플러그인에 접근하는 방법은 HLOD 아웃라이너와 액터 병합 대화창 두 가지입니다.

image alt text image alt text

원본 지오메트리: 지오메트리 11 개, 트라이앵글 38,360 개, 버텍스 27,194 개 | 프록시 LOD 시스템 적용 지오메트리: 지오메트리 1 개, 트라이앵글 8,095 개, 버텍스 5,663 개

신규 : 머티리얼 파라미터 편집 및 저장

이제 머티리얼 에디터와 머티리얼 인스턴스 에디터에서 파라미터 값을 새 자손 인스턴스 또는 동기 인스턴스에 저장 할 수 있습니다!

image alt text

  • 동기 인스턴스에 저장(Save to Sibling Instance) 을 사용하면 동일한 부모를 갖는 새 머티리얼 인스턴스를 생성한 뒤 현재 파라미터와 변경해 본 값을 옮깁니다.

  • 자손 인스턴스에 저장(Save to Child Instance) 을 사용하면 현재 인스턴스를 부모 머티리얼로 하는 새 머티리얼 인스턴스를 만들고 현재 파라미터와 변경해 본 값을 옮깁니다.

머티리얼 에디터에는 파라미터 디폴트(Parameter Defaults) 패널이 있습니다. 여기서는 모든 파라미터에 대해 머티리얼 그래프에 설정된 기본값에 접근할 수 있습니다. 여기서 파라미터 기본값을 쉽게 변경할 수 있습니다.

image alt text

신규 : 머티리얼 레이어링 (실험단계 기능)

머티리얼 레이어링을 사용하면 새로운 머티리얼 레이어 및 머티리얼 레이어 블렌드 애셋을 사용하여 머티리얼을 쌓아서 결합 할 수 있습니다! 이를 통해 노드 섹션을 직접 작성하지 않고도 정확한 머티리얼 그래프를 작성할 수 있습니다. 이 기능은 머티리얼 함수와 유사하지만 자손 인스턴스 생성을 지원합니다.

머티리얼 레이어링은 실험단계 기능이며 프로젝트 세팅에서 Rendering> Support Material Layers 를 체크하여 활성화 할 수 있습니다.

자세한 내용은 포럼 에 게시 된 게시물을 참조하십시오.

신규 : 자동 컨벡스 툴 업그레이드

자동 컨벡스 툴(Auto Convex Tool)을 사용하여 스태틱 메시에 단순화된 콜리전을 생성할 때 Accuracy (정확도) 대신 Max Hulls (최대 헐 수) 를 지정할 수 있습니다. 이제 스태틱 메시 에디터에서는 백그라운드에서 계산을 합니다. 자동 컨벡스 툴은 최신 버전의 V-HACD 라이브러리를 사용하여 더 정확한 결과를 제공합니다.

image alt text

신규 : 커브만 있는 애니메이션을 사용하여 페이셜 애니메이션 공유 개선

본 트랜스폼 없이 애니메이션 커브로 포즈를 구동시켜 캐릭터 사이에 페이셜 애니메이션을 공유할 수 있습니다. 본 트랜스폼은, 한 메시의 레퍼런스 포즈가 있어도, 다른 메시에는 작동하지 않을 것입니다. 그래서 각기 다른 메시 사이 커브를 공유하려면 본 트랜스폼은 제거하고 메시 자체 레퍼런스 포즈로 시작하는 것이 중요합니다. 이렇게 하면 서로 다른 얼굴 메시에 페이셜 커브를 공유할 수 있습니다.

사용자가 모든 본 트랙을 삭제하고 애니메이션 커브만 남길 수 있는 기능을 추가했습니다. 애니메이션 아래 애셋 메뉴의 본 트랙 제거(Remove Bone Tracks) 옵션입니다.

바디 애니메이션을 공유하지만 얼굴은 커브로 애니메이션 하려는 경우에도 애니메이션 모디파이어를 이용하여 특정 조인트만을 제거할 수도 있습니다. 주어진 애니메이션 시퀀스에서 이름으로 커브를 찾아서 삭제하기 위해 본 애니메이션 제거(Remove Bone Animation) 함수를 추가하였습니다 ( [Names] 라는 이름을 갖는 원시 애니메이션 커브는 스켈레톤에서 제거되지 않을 수 있습니다.) 그리고 지정한 애니메이션 시퀀스로부터 모든 애니메이션 본 트랙 데이터를 제거하기 위해 모든 본 애니메이션 제거(Remove All Bone Animation) 함수를 만들었습니다.

image alt text

또한 임포트 프로세스 도중 본 트랙 (커브만 있는 애니메이션) 임포트를 선택하지 않을 수 있도록 했습니다.

애셋에 포함 된 웨이트를 선택하기 위해 포즈 미리보기를 수정했습니다. 애셋의 애셋 디테일 탭 아래 Animation Track Names 에서 애니메이션에 포함된 본 트랙을 볼 수 있습니다.

신규: 클로스 업데이트

클로스 애셋에 추가 된 새로운 "애님 드라이브"기능과 시뮬레이션용 런타임 인터랙션은 클로스를 애니메이션 위치로 당기는 스프링을 구동하는 데 사용되는 “애님 드라이브 멀티플라이어”에 마스크 타깃을 새로 추가하여, 시네마틱이나 애니메이션 구동 씬에서 애니메이터가 제어할 수 있도록 해줍니다.

블루프린트가 스켈레탈 메시 컴포넌트에서 접근할 수 있는 "인터랙터(Interactor)" 오브젝트를 사용하여 런타임에 조절할 수 있습니다. 런타임에 설정된 값은 칠해진 값과 곱셈 결합하여 최종 스프링 및 댐퍼 세기를 얻습니다.

기타 개선 사항은 다음과 같습니다:

  • 클로딩 시뮬레이션에서 중력 오버라이드 지원 - 스켈레탈 메시 컴포넌트에서 인터랙터 오브젝트를 사용하여 임의로 중력을 지정할 수 있습니다.

  • 클로스 보이는 범위 자동 조절 기능 추가 - 또한 필요할 때 그 범위를 확장하는 툴도 추가하였습니다.

  • 향상된 클로스 시각화 - 클로스 페인트 모드가 활성화되었을 때 기능을 켤 수 있습니다.

  • 클로딩 생성 메뉴가 이제 기본으로 스켈레탈 메시 피직스 애셋을 사용합니다.

신규 : 애니메이션 블루프린트 개선

애님 블루프린트 시스템에 삶의 질을 향상시켜줄 몇 가지 개선 사항을 추가하였습니다:

  • 이제 스켈레탈 메시 컴포넌트에서 포스트 프로세스 인스턴스를 실행할지 여부를 블루프린트와 애니메이션 에디터 시리즈 양쪽에서 제어할 수 있습니다.

  • 포즈 복사(Copy Pose) 노드는 이제 본 트랜스폼은 물론 커브 복사도 지원합니다 - 이 옵션을 사용 하여 커브를 복사하려면 bCopyCurves 를 활성화 해야 합니다 (기본적으로 비활성화됨). 활성화되면 현재 스켈레톤에있는 커브를 복사합니다. 커브 목록이 변경되면 애니메이션 시스템을 다시 초기화해야합니다.

  • 애디티브 포즈(Additive Pose)에서 애니메이션을 재생할 때 애디티브 경고를 추가했습니다 - 애디티브 애니메이션을 사용하지 않는 애니메이션이 (Apply Additive 와 같은) 애디티브 애니메이션 노드의 애디티브 핀에 연결되면, 애니메이션 및 블루프린트 이름과 함께 메시지 로그에 경고를 출력합니다.

  • 스켈레탈 메시 컴포넌트의 네이티브 애님 인스턴스 선택이 가능합니다 - 스켈레탈 메시 컴포넌트에 네이티브 애니메이션 인스턴스를 설정하도록 할 수 있습니다. 이전에는 스켈레탈 메시 컴포넌트에만 애님 블루프린트를 설정할 수 있었습니다.

신규 : 애니메이션 도구 개선

애니메이션 에디터에 핀 고정 가능 명령 목록을 추가했습니다.

스켈레톤 트리 필터 또는 뷰포트 메뉴에서 메뉴 옵션을 Shift+좌클릭하면 명령이 메뉴 외부에 ‘핀’ 으로 고정됩니다. 이렇게 하면 자주 사용되는 명령을 핀으로 고정하여 쉽게 접할 수 있습니다.

모든 애니메이션 에디터 뷰포트에 최대 4개의 독립 뷰포트를 추가했습니다 - 모든 애니메이션 관련 에디터는 동일한 씬에 최대 4개의 독립 뷰포트를 열 수 있습니다. 각 뷰포트는 자체 설정이 가능합니다.

image alt text

(각 뷰포트의 카메라가) 지정된 본을 일정 거리를 유지하며 따라가는 기능을 추가했습니다.

스켈레탈 메시 컴포넌트 디버그 정보를 추가했습니다.

스켈레탈 메시 에디터에 표시된 뷰포트 텍스트를 확장 할 수 있습니다. 현재의 클로스 값(Cloth Value)을 표시하는 줄도 추가되었습니다.

런타임에서 스켈레탈 메시 섹션 표시여부를 변경할 수 있는 기능을 추가했습니다.

런타임에 스켈레탈 메시 머티리얼 섹션을 표시 또는 숨기는 ShowMaterialSection (머티리얼 섹션 표시) 함수를 블루프린트로 노출시켰습니다. ShowAllMaterialSections (모든 머티리얼 섹션 표시) 및 IsMaterialSectionShown (머티리얼 섹션이 표시되었는지) 함수를 추가했습니다. 애셋에서 내부적으로 사용하던 'disable'(비활성화) 및 'highlight'(강조) 플래그가 제거되었습니다. 이제 항상 컴포넌트 별 플래그를 사용합니다.

BreakStruct (구조체 분해) 노드 버튼에 "연결되지 않은 핀 숨기기(Hide Unconnected Pin)" 기능이 추가되었습니다.

구조체 분해 노드에 연결되지 않은 핀을 빠르게 숨길 수있는 버튼이 추가되었습니다.

image alt text

추가적인 애니메이션 툴 개선 사항은 다음과 같습니다:

  • 스켈레탈 메시 프로퍼티를 변경할 때 모션 블러 문제를 수정했습니다 - 애니메이션 시스템은 이전 본 트랜스폼에 순번을 붙여 가지고 있다가, RenderState 재생성 시 렌더 스레드에 본 트랜스폼을 전송합니다. 프레임 번호 가 여전히 존재하는데 그 이유는 클로딩 시스템이 아직 이를 사용하고 있기 때문입니다. 컴포넌트에서 틱이 일어날 때마다 순번이 증가합니다. 만약 틱이 일어나지 않으면 같은 순번이 (히스토리가) 유지됩니다.

  • 애니메이션 에디터에 시퀀스 녹화 설정을 노출했습니다.

  • 콜리전 모양에 이름을 붙일 수 있습니다 - 이제 피직스 애셋을 편집 할 때 개별 콜리전 모양의 이름을 지정할 수 있습니다.

  • 애니메이션 에디터 뷰포트에서 바운드 따라가기(Bounds Following) 기능이 개선되었습니다 - 이제 랙 없이 따라갑니다.

  • 포즈 애셋 내에서 리타깃 소스를 변경하는 기능을 추가했습니다- 포즈 애셋은 원본 소스 포즈를 저장하므로 리타깃 소스 변경시 새 포즈를 다시 계산할 수 있습니다. 리타깃 소스는 포즈 애셋 델타 트랜스폼을 굽는 데 사용되므로, 서로 다른 메시에 대해 동일한 애셋을 사용하는 경우 올바른 리타깃 소스가 있는지 확인해야 합니다.

  • 환경설정에 메시 페인트 버텍스 크기 지정이 가능합니다- 사용자 별 설정에 메시 페인트 설정을 추가하고 미리보기 버텍스 크기를 추가하여 사용자가 환경설정에서 각기 다른 크기의 메시에 대해 지정할 수 있습니다.

  • 페르소나에서 애니메이션 미리보기 툴팁을 변경하여 애니메이션이 로드되지 않은 경우 로드를 중지합니다.

  • 이제 미리보기 버튼은 애니메이션 에디터에서 사용 가능한 곳에만 나타납니다 - 미리보기 메시, 애니메이션 미리보기 및 참조 포즈는 모두 툴바를 통해 편집할 수 있습니다.

  • 고급 프리뷰 씬 세팅 패널에 검색창을 추가했습니다.

  • HLOD 아웃라이너 트리 뷰의 HLOD 레벨 노드에 컨텍스트 메뉴를 추가했습니다 - 현재 레벨 뷰포트 선택에서 새 클러스터를 만들 수 있습니다.

  • 프리뷰 씬에서 포스트 프로세싱을 토글하기 위한 단축키 및 명령을 추가했습니다.

  • 메시 페인터에서 전경색과 배경색을 전환하는 단축키를 추가했습니다 - 기본적으로 메시 페인터가 활성화되면 X 키가 단축키로 설정됩니다.

  • 머티리얼 굽기(Baking)가 실험단계를 벗어났습니다.

  • 메시 페인터에 RGBA 마스크 지원 추가 - 메시 페인터 내부의 채우기 도구를 사용하는 도중 RGBA 채널을 마스크로 사용할 수 있습니다.

  • ProceduralMeshComponent (프로시저럴 메시 컴포넌트)에 'GetSectionFromProceduralMesh' (프로시저럴 메시에서 섹션 구하기) 유틸리티 함수를 추가했습니다.

  • 동기화 그룹 내의 팔로워 애니메이션에 노티파이를 설정할 수 있도록 플래그를 추가했습니다.

  • 모든 애셋 쿠킹 시 로그의 상세 정도를 줄였습니다 - 기존 애셋 당 4줄 출력되던 것이 현재 2 줄 출력됩니다.

  • Spring AnimNode의 강성(Stiffness)과 감쇠(Damping)를 핀으로 노출하였습니다 - 스프링 애님 노드에서 스프링 감쇠 및 스프링 강성을 핀으로 노출 하였습니다.

신규 : 모션 컨트롤러 컴포넌트 시각화

언리얼 엔진 4.19 의 모션 컨트롤러에는 빠르게 (그리고 더 쉽게) 시각화용 스태틱 메시를 추가할 수 있는 Visualization (시각화) 카테고리가 추가되었습니다. 기본적으로 시스템은 연결된 모션 컨트롤러와 동일한 스태틱 메시 모델을 로드 시도합니다.

  • 메시 컨트롤러 컴포넌트에 새로 추가된 시각화 관련 옵션은 다음과 같습니다: 디바이스 모델 표시, 모델 소스 표시, 커스텀 디스플레이 메시, 디스플레이 메시 머티리얼 오버라이드

    • 커스텀 디스플레이 메시(Custom Display Mesh)디스플레이 모델 소스(Display Model Source) 가 "커스텀(Custom)"으로 설정된 경우에만 사용할 수 있습니다.

    • 보다 복잡한 커스텀 모델의 경우, 직접 스태틱 메시 모델을 붙이세요.

    • 타깃 XR 시스템이 로드되지 않은 경우 '디스플레이 모델 소스'를 수동으로 설정할 수 있습니다.

  • 기본적으로 '디스플레이 모델 소스'는 비어있는 경우 배후의 XR 시스템에서 모델을 로드 시도합니다.

    • 별개의 XR 시스템은 IXRSystemAssets 인터페이스를 구현하여 이 기능을 지원합니다. 현재 Oculus 및 SteamVR 만 이 기능을 지원합니다.

신규 : Vive Pro 지원

image alt text

SteamVR 을 지원하는 모든 기존 UE4 컨텐츠는 HTC 가 새롭게 발표한 Vive Pro 와 호환됩니다! Vive Pro 는 별도의 수정 없이 기존 UE4 프로젝트를 사용할 수 있지만, 더 높은 해상도에서 작동하므로 그에 맞게 퍼포먼스를 확인하고 최적화시켜 줘야 할 것입니다.

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

모든 언리얼 엔진 릴리즈마다 플랫폼 파트너의 최신 SDK 릴리즈를 지원하도록 업데이트합니다.

image alt text

  • 빌드 팜에서 컴파일되는 IDE 버전

    • Visual Studio :Visual Studio 2015 업데이트 3

    • Xcode : Xcode 9.2

  • Android :

    • NDK 12b (Android 1r6u1 용 새 CodeWorks가 이전 CodeWorks for Android 1R5를 대체합니다. 여전히 NDK 12b를 사용합니다.)

  • HTML5 : emscripten toolchain 1.37.19

  • Linux : v11_clang-5.0.0-centos7

  • Steam : 1.39

  • Oculus Runtime : 1.17

  • SteamVR : 1.39

  • Switch: 3.7.0 + NEX 4.3.1 (선택 사항), 4.5.0 + NEX 4.3.1 (선택 사항), 펌웨어 버전 3.0.1-1.0

  • PS4 :

    • 5.008.071

    • 펌웨어 버전 4.730.001

    • 지원되는 IDE : Visual Studio 2015, Visual Studio 2013

  • Xbox One (XB1, XB1-S, XB1-X) :

    • XDK: June 2017 QFE9

    • 펌웨어 버전 : October 2017 Preview 3 (버전 16291.1000.170913-1900)

    • 지원되는 IDE : Visual Studio 2017

  • macOS : SDK 10.13

  • iOS : SDK 11

  • tvOS : SDK 11

신규 : 입력 지연시간 낮은 프레임 동기화 (Xbox One 및 PlayStation 4)

지연시간 낮은 프레임 동기화(low-latency frame syncing) 모드는 게임, 렌더링, RHI 스레드 및 GPU 간에 스레드 동기화를 수행하는 방식을 수정하여 입력 지연시간을 크게 줄여 제어합니다. 지연시간 낮은 프레임 동기화의 효과는 r.GTSyncType 콘솔 변수를 사용하여 제어할 수 있습니다. 이 콘솔 변수는 새 프레임 동기화 메커니즘이 작동하는 방식을 결정합니다. 아래 값으로 설정할 수 있습니다:

  • 0 - 게임 스레드가 렌더링 스레드와 동기화 (이전 작동방식, 기본값)

  • 1 - 게임 스레드가 RHI 스레드에 동기화 (병렬 렌더링 이전의 UE4 에 해당)

  • 2 - 게임 스레드가 스왑 체인으로 밀리초 단위 +/- 오프셋을 주고 동기화 (지원되는 플랫폼 전용, vsync 활성화 상태에서만 작동)

자세한 내용은 Low Latency Frame Syncing 페이지를 참조하십시오.

신규 : 암호화/사이닝 키 생성기

이제는 단일 통합 세팅 패널을 통해 에디터에서 .pak 파일 서명 및 암호화를 완벽하게 구성 할 수 있습니다. 이 기능들은 프로젝트 세팅 > 프로젝트 섹션 > 암호화 패널(Crypto)에서 설정 할 수 있습니다.

image alt text

이 패널에서 서명 또는 암호화를 위한 키를 생성하거나 지울 수 있으며, 다양한 유형의 서명 및 암호화를 활성화 또는 비활성화 할 수 있습니다. 이 메뉴에서 가능한 작업은 다음과 같습니다:

  • Pak .ini 파일 암호화 - 프로젝트의 .pak 파일에있는 모든 .ini 파일을 암호화합니다. 이렇게하면 최소한의 런타임 비용으로 제품의 구성 데이터를 쉽게 마이닝하거나 변경하는 것을 방지할 수 있습니다.

  • Pak Index 암호화 - pak 파일 인덱스를 암호화하여 최소한의 런타임 비용으로 UnrealPak 이 제품의 pak 파일을 열거나 읽거나 언패킹하지 못하게 합니다.

  • Uasset 파일 암호화 - pak 파일의 uasset 파일을 암호화합니다. uasset 파일에는 실제 애셋 데이터 자체가 아닌 애셋에 대한 헤더 정보가 들어 있습니다. 이 데이터를 암호화하면 데이터에 대한 보안이 강화되지만 런타임 비용이 조금 추가되고 데이터 엔트로피가 증가하여 패치 크기에 악영향을 줄 수 있습니다.

  • Encrypt Assets - pak 파일 내의 모든 Asset 을 완전히 암호화합니다. 이 설정은 런타임 파일 읽기/쓰기 퍼포먼스에 상당한 영향을 미치며 최종 패키지 데이터의 엔트로피 양을 늘려 배포 패치 시스템의 효율성을 떨어뜨립니다.

신규 : 블루프린트 디버깅을 위한 콜스택 표시

현재 블루프린트 호출 스택을 표시하는 컨트롤이 개발자 도구 메뉴에 추가되었습니다. 콜스택에서 항목을 두 번 클릭하면 블루프린트 에디터 속 해당 노드로 바로 이동합니다.

image alt text

신규 : 블루프린트 디버깅시 싱글 스텝 기능 개선

엔진의 블루프린트 디버거는 블루프린트 중단점에서 멈추었을 때 스텝 인(Step Into, F11) , 스텝 오버(Step Over, F10) 및 스텝 아웃(Step Out, Alt + Shift + F11) 기능을 지원하여 디버깅 세션을 더 빠르고 쉽게 할 수 있습니다.

image alt text

또한 매크로와 접힌 그래프 노드를 더 세분화해서 살펴보거나, 넘어갈 수 있는 기능을 제공합니다:

신규 : 디스크 크기 최적화 도구 개선

패키지 게임의 디스크 및 다운로드 크기를 분석하는 데 도움이 되는 몇 가지 도구가 추가되거나 향상되었습니다. 애셋 검사(Audit Asset) 창에는 패키지의 모든 청크 / Pak 파일을 보여주는 새로운 "청크 추가(Add Chunks)" 옵션이 있으며 레퍼런스 뷰어와 사이즈 맵을 통해 왜 애셋이 특정 청크로 분할되는지 그 이유를 분석 할 수 있습니다.

사이즈 맵 도구가 기본적으로 디스크 크기를 표시하도록 변경되어 예상 메모리 크기보다 더 정확합니다. 애셋 검사 창에서 플랫폼을 선택하면 해당 플랫폼에서 실제 쿠킹된 크기가 표시됩니다. 사이즈 맵의 사용자 인터페이스는 마우스 오른쪽 버튼을 더 잘 지원하도록, 그리고 더 좋은 성능을 내도록 개선되었습니다.

image alt text

신규 : 오디오 기능 향상

Steam Audio Beta 10 (새 오디오 엔진 전용)으로 업그레이드되었습니다.

image alt text

Steam Audio (Beta 10 Release)에 대한 업데이트와 함께 향상된 기능은 다음과 같습니다:

  • Android에 공간화 및 차폐(occulusion)가 지원됩니다.

  • Steam Audio 기능을 쉽게 접할 수 있는 에디터 모드가 제공됩니다.

  • Phonon Geometry 컴포넌트를 모든 스태틱 메시 액터에 추가/제거하는 버튼이 생겼습니다.

  • 디버깅을 위해 씬을 .obj로 익스포트 하는 버튼이 추가되었습니다.

  • 파일로 익스포트 하기 위해 Phonon Scene 액터를 삭제했습니다.

  • 프로브 생성 및 굽기는 로딩과 맵 파일 저장이 느려지는 것을 피하기 위해 데이터를 디스크에 기록합니다.

  • 다양한 정보 표시가 개선되었습니다.

  • 수많은 버그가 수정되었습니다.

Oculus 오디오 업데이트 (새로운 오디오 엔진 전용)

image alt text

Oculus Audio 플러그인이 Android 에 대한 지원을 포함하여 업데이트되었습니다.

HRTF 공간화를 제공하는 것 외에도 Oculus Audio 의 룸 모델링 리버브는 볼류매트릭 파라미터 및 Ambisonics Source 재생을 지원합니다.

Resonance Audio Plugin 추가 (새 오디오 엔진 전용)

image alt text

언리얼용 Resonance Audio 플러그인은 이제 UE 4.19의 엔진 플러그인의 일부로 포함되었습니다. Resonance Audio 플러그인은 Windows, iOS, Android, Linux 및 Mac에서 스테레오 공간화, 반향, 사운드 지향성 및 앰비소닉스 재생을 지원합니다.

First-Order Ambisonics 파일 지원 (플러그인을 통해 지원되는 재생)

First-Order Ambisonics 파일은 이제 언리얼 프로젝트로 가져와 선택한 공간화 플러그인을 사용하여 재생할 수 있습니다. First-Order Ambisonics 는 음장의 전방, 오른쪽 및 상향 벡터를 제공하는 구형 서라운드 형식으로, 설계자는 수직 사운드 방향을 포함한 서라운드 사운드 환경을 만들 수 있습니다. 이 기능은 사용자가 머리를 기울여 수직 음장의 자연스러운 변화를 경험하도록 하거나, 사용자가 머리 방향이 수직으로 바뀔 수도 있는 다른 인터랙티브 환경에서 VR 을 사용할 때 유용합니다. 사용자는 파일 이름에 FuMa 또는 AmbiX (2가지 First-Order Ambisonics 채널 구성) 태그를 포함시켜 4채널 First-Order Ambisonics 파일을 가져올 수 있습니다. Oculus Audio 와 Google Resonance 모두 앰비소닉 재생이 구현되어 있습니다.

UE4 내장 VOIP 구현 개선 (새 오디오 엔진 전용)

내장 VOIP 구현이 개선되어 Windows 에서 무음 감지 기능이 향상되고 간섭성이 개선됩니다. 또한 VOIP 소스를 씬에 가져오기가 지원되어 아래와 같은 것들이 가능합니다:

  • 공간화(Spatialization)

  • 거리 감쇠(Distance Attenuation)

  • 반향(Reverb)

  • 임의 음원 효과(Custom Source Effects)

모두 UVoipTalker 씬 컴포넌트로 제어합니다.

새 마이크 캡처 컴포넌트 (새 오디오 엔진 전용) (Windows 전용)

Microphone Capture Component (마이크 캡처 컴포넌트)를 구현하여, 다음과 같은 것들이 가능합니다:

  • 오디오를 오디오 믹서에서 사용할 수 있도록 게임에 바로 물려줍니다.

  • 실시간 진폭 데이터를 사용하여 게임 내 파라미터를 구동합니다.

  • 소스 이펙트 또는 서브믹스 이펙트로 오디오를 처리합니다.

현재 로컬 클라이언트 마이크 캡처에만 사용되며 VoIP 시스템에는 연결되어 있지 않습니다.

현재 마이크 출력을 직접 녹음하여 애셋으로 저장하는 기능은 지원하지 않지만 서드 파티 플러그인 개발자가 마이크 입력 데이터를 활용할 수 있는 방법이 있습니다.

블루프린트 데이터로 실시간 오디오 진폭 가져 오기 (새 오디오 엔진 전용)

진폭 엔벨로프 데이터를 구하는 기능을 추가했습니다. 블루프린트 델리게이트를 통해 오디오 컴포넌트 및 신디 컴포넌트를 바로 따라갑니다.

image alt text

프리 / 포스트 소스 이펙트 버스 전송 유형 (새로운 오디오 엔진 전용)

Pre-/Post-Source Effect Bus Sends 타입을 추가하여 설계자가 소스 이펙트와 감쇠 프로세싱 전/후에 소스 버스로 소스 오디오를 보낼 수 있습니다.

멀티채널 파일 임포트 지원

이제 인터리브 멀티채널 wav 파일을 브라우저로 직접 가져 오는 기능이 (다수의 모노 파일을 사용하는 기존 방식에 추가로) 지원됩니다.

신디에서 샘플링 속도 제어

신디사이저가 초기화시 요청된 샘플링 속도를 변경하여 신디 소스가 별도의 샘플링 속도를 지정할 수 있도록 하는 기능을 추가했습니다.

향상된 크로스 플랫폼 오디오 플러그인 (새로운 오디오 엔진 전용)

이제 사용자는 오디오 플러그인 소스 세팅을 여러 개 만들어 각기 다른 플러그인에 각기 다른 세팅을 가질 수 있습니다. 이는 각기 다른 플랫폼마다 각기 다른 플러그인을 사용하는 멀티 SKU 제품으로 작업하는 디자이너에게 특히 유용합니다.

플러그인 드롭다운 메뉴에 PS4 및 Switch 플랫폼 세팅을 추가하여 편리해졌습니다.

패너 소스 이펙트 추가

이 소스 이펙트를 통해 디자이너는 블루프린트에서 스테레오 패닝 값을 소스 이펙트로 구동시킬 수 있습니다. 모노 또는 스테레오 3d / 2d 소스의 패닝을 변경할 수 있습니다.

신규 : 피직스 개선

피직스 오브젝트를 보다 쉽고 효율적으로 만들기 위해 피직스 시스템에 몇 가지 개선 및 최적화가 이루어졌습니다!

  • 피직스 애셋 에디터에 "선택된 컨스트레인트만 표시(Show Only Selected Constraints)" 옵션이 추가되었습니다.

  • 바디와 컨스트레인트 선택을 전환하는 Ctrl+T 키보드 단축키가 추가되었습니다.

  • 런타임에서 Continuous Collision Detection (연속 충돌 감지) 옵션을 변경하기위한 "Set Use CCD" (CCD 사용 설정) 기능이 추가되었습니다.

  • 바디인스턴스 런타임 메모리 절약 - 에디터가 아닌 빌드에서 FBodyInstance :: ResponseToChannels_DEPRECATED 속성을 제거하여 메모리를 절약했습니다.

  • 콜리전 테스트의 연관성 상태를 얻기 위한 함수를 SpringArmComponent 에 추가했습니다.

  • 씬 쿼리 히치 프로파일링을 위한 기능 추가 - p.SQHitchDetection 콘솔 변수를 사용합니다.

  • C++ 에서 추가 확장 가능하도록 일부 PhysicsAsset 기능을 노출시켰습니다.

  • 초기 오버랩 시 HitResult 정보 개선 - 이제 겹친 점들 중 가장 깊이 위치한 것의 PhysX 정보가 ImpactPoint 에 포함됩니다.

  • PhysX 없이도 깨끗한 엔진 컴파일 - #define WITH_PHYSX 0 으로 설정하면 오류없이 컴파일할 수 있습니다.

신규 : iOS에서 자동 코드 서명

Xcode 를 사용할 때 자동 코드 사이닝(ACS) 기능이 UE 4.19 에 도입되었습니다. ACS 와 Team ID 를 함께 사용하면 iOS 프로젝트용 패키지를 만들고 signing 할 수 있습니다. 이 기능은 Mac에 인증서가 있을 때 미리 설치된 mobile provision 없어도 사용할 수 있습니다. 개발 팀은 앱을 설치할 iOS 기기를 Apple 계정에 추가하여야 하지만 이 기능을 사용하는 경우 더 이상 Mac에 mobile provision 을 다운로드하여 설치할 필요가 없습니다.

신규 : Android 4.19 개선 사항

  • 프록시 네트워크를 지원합니다.

  • 기기에서 지원되지 않는 텍스처 형식을 사용하는 모바일 프로젝트에서 실행 중 지원되는 텍스처 형식을 알려주는 새로운 팝업 상자가 추가되었습니다.

  • 빌드가 실패했는지 여부를 빨리 알 수 있도록 프로젝트를 컴파일하고 압축하기 전에 NDK 및 SDK 플랫폼 유효성 검사가 추가되었습니다.

신규 : 콘텐츠 브라우저의 폴더 즐겨 찾기

이제 콘텐츠 브라우저에서 폴더를 즐겨찾기로 설정 하면 쉽게 접근하도록 만들 수 있습니다. 폴더를 즐겨찾기 설정하면 폴더 트리 위에있는 새로운 "Favorites" (즐겨찾기) 섹션 아래에 폴더가 채워집니다. 이 섹션의 폴더에 우클릭하는 것만으로 추가 또는 제거할 수 있습니다.

콘텐츠 브라우저의 즐겨찾기 섹션은 ‘뷰 옵션’ 중 ‘즐겨찾기 표시’ 옵션으로 켜고 끌 수 있습니다. 이 기능은 기본적으로 켜져 있습니다.

image alt text

RELEASE NOTES

AI

  • Bug Fix: Fixed the On Perception Updated delegate to be correctly bindable to AI Perception Component.

Behavior Tree

  • Bug Fix: Changed the order of the Behavior Tree tick to allow Blueprint-based nodes to update before processing search data.

  • Bug Fix: Fixed a bug that caused a Behavior Tree asset containing a Run Dynamic Behavior node to become dirty upon opening.

  • Bug Fix: Fixed a Behavior Tree state change during a latent abort. Decorators and services updates are delayed until after the aborting node finishes.

  • New: Added the local decorator scope to the Behavior Tree Composite Nodes. The local decorator scope is controlled by the Apply Decorator Scopevariable. This addition provides better control of flow-observing decorators, allowing them to be active only in a specified branch of the tree.

  • New: Added a simple mechanism for logging Behavior Treenodes that reference empty or removed Blackboard keys.

Debugging Tools

  • New: Extended the EQS Testing Pawn with an option to specify navigation agent properties to support navigation-related EQS tests and features.

  • New: Added more Visual Logging functions to Blueprint.

  • Bug Fix: Fixed some existing Visual Logging Blueprint functions.

  • Bug Fix: Fixed cases where changes to Nav Mesh Bounds Volumes properties were not causing Nav Mesh to rebuild.

  • Bug Fix: Fixed a failure to set the area flags when updating the Nav Area of a given Nav Mesh poly.

  • New: Made updates to allow the proper use of Nav Link Component via Blueprints.

Animation

  • Crash Fix: Fixed a crash when opening Animation Compression settings for newly imported Alembic File.

  • Crash Fix: Applied a fix for a rare crash when Notify Queue caches a pointer to the notify that if garbage collected, would have a pointer to invalid memory. We now cache a pointer to the owner of the notify memory so we can track its validity.

  • Crash Fix: Applied a fix for a Live Link module startup crash.

  • Crash Fix: Prevented threaded work from running in a single-threaded environment, which avoids a Linux server crash.

  • Bug Fix: Fixed debug builds hitting checkSlow when using a post process Anim Instance on a Skeletal Mesh Component without a main AnimInstance.

  • Bug Fix: Fixed some race conditions in Skeletal Mesh Resource Sync UV Channel Data and Static Mesh Render Data Sync UV Channel Data.

  • Bug Fix: Fixed a bug with adjacency DDC serialization in Skeletal Meshes.

  • Bug Fix: Non-rendered anim updates now run on worker threads.

  • Bug Fix: Changed the way Get Bone Poses For Time inside of the Animation Modifiers library retrieves the Bone Transforms for a specific time-code.

  • Bug Fix: Fixed Anim Sequence Base Get Time At Frame and Anim Sequence Base Get Frame At Time to return correct frame indices.

  • Bug Fix: Fixed pasted socket name getting an appended _0 when no other sockets contained that name.

  • Bug Fix: Reset Tick Records when doing 'Only Tick Montages When Not Rendered' since the montage will appear to have jumped when regular ticking resumes.

  • Bug Fix: URO now ensures you don't skip more frames than desired when switching LODs.

  • Bug Fix: Animation tasks are no longer created for Skeletal Meshes that have no anim instance.

  • Bug Fix: Skeletal Meshes that are not being ticked due to URO can no longer dispatch tick tasks.

  • Bug Fix: Fix for notifies not getting fired in cases where Always Tick Pose was set on Skeletal Mesh Components.

  • Bug Fix: Looping sound cues and particle systems used in notifies no longer leak a component per invocation.

  • Bug Fix: Recalc Required Bones now uses correct predicted LOD level instead of defaulting to 0.

  • New: Optimized Post Anim Evaluation when URO is skipping a frame with no interpolation.

  • New: Changed the notify system to allow notifies on follower animations in a sync group to be triggered.

  • New: Added two callbacks on Character Movement Component for the root motion world space conversion to allow users to modify the root motion:

    • Pre conversion (while it is still in component space).

    • Post conversion (when it is in world space).

  • New: Added Virtual Subjects to Live Link which are created within the client and contain the bones of multiple real subjects.

  • New: Added Initialization and Update Delta Time to Live Link Retargeter API:

    • Pushing skeleton to Live Link can now take source GUID.

    • Message bus source pushes GUID when sending skeleton.

  • New: Added 'Play Rate Basis' to Sequence Player node to scale Play Rate without having to do more expensive BP code.

  • New: Added support for Dialogue Waves driving Audio Curve Source Components.

  • New: Added default Get Axis Vector static function to Axis Option.

  • New: Skeletal Mesh Component Init Anim doesn't call Update and Eval anymore.

  • New: Rigid Body Anim Node Updates:

    • Now maintains Bone Velocity transfers through LOD changes.

    • Added support for transferring angular velocity.

    • Added option Transfer Bone Velocities to transfer bone velocities to simulation upon start, so ragdolls transition seamlessly from kinematic (animation) to simulation.

    • Added Freeze Incoming Pose On Start option to freeze incoming pose and stop ticking/evaluating rest of the AnimGraph.

  • New: Moved Update Component Pose Any Thread and Evaluate Component Pose Any Thread functions to Anim Node Skeletal Control Base to enable overriding these in child classes.

  • New: Added Pre Eval Skel Control Any Thread to Skel Control Base, to allow capture of incoming pose before SkelControl is evaluated.

  • New: Added the Empty function to Base Compact Pose and FCS Pose to release allocated arrays.

  • New: Added the notify class name to the notify tooltip.

  • New: Optimized redundant key removal on curves. Optimized code takes less than 1% of the time to execute of the original.

  • New: Added prebuilt binaries for the Maya Live Link plugin to Engine/Extras (Maya 2016, Maya 2017, Maya 2018).

  • New: Skeletal Mesh Render Data Get Max Bones Per Section is now an ENGINE_API exported function.

Animation Assets

  • Crash Fix: Fixed a crash with streaming if a montage is streamed out while an event is queued.

  • Crash Fix: A crash no longer occurs due to oversampling animation during compression.

  • Crash Fix: No longer crashes when the Skeleton has been changed and joints have been removed from a Pose Asset.

  • Bug Fix: Fixed an ensure that was triggering when compressing an animation which has had its Skeleton switched due to Skeletal Mesh Merging.

  • Bug Fix: Changed raw animation data evaluation so that Virtual Bone positions are built before interpolation is carried out instead of after.

    • This fixes a slight mismatch between the Virtual Bone positions in raw animation and compressed animation.

  • Bug Fix: Marker Sync position is now maintained across instant transitions.

  • Bug Fix: Animations with a scaled root bone now generate correct root motion.

  • Bug Fix: Changes Retarget Source hard reference to Soft Object Ptr, so that the Skeleton won't load all the references of Retarget Sources.

  • Bug Fix: Fixed Pose Asset retargeting not working for additive pose assets.

  • Bug Fix: Fixed issues with Pose Assets of additive blending using shortest path to blend, causing it to blend between rather than accumulating.

  • Bug Fix: Fixed Retarget Source for Pose Asset.

    • Changing Retarget Source in Pose Asset now works.

    • Pose Asset now saves original source pose, so that it can recalculate new pose when Retarget Source changes.

    • Retarget Source is used to bake the pose asset delta transform.

  • New: Native Animation Instances can now be set on Skeletal Mesh Components.

  • New: Anim Sequence Base is now entirely exported with ENGINE_API.

  • New: Added support for curve-only animation (required for facial pose retargeting).

  • New: Added inline time/frame settings to notify context menu.

Animation Blueprints

  • Crash Fix: Loading an Anim Instance with a re-instanced class no longer crashes.

  • Crash Fix: A crash no longer occurs when loading reparented Animation Blueprints that do not have an Anim Graph but are no longer Child Blueprints.

  • Crash Fix: Initialized Poses To Evaluate on Blend nodes to fix a crash from gathering stale data after reinitializing.

  • Bug Fix: Fixed "Modify Curve" Anim Node breaking certain nodes that were used before it (due to not caching bones correctly).

  • Bug Fix: Anim Dynamics correctly calculates simulation transforms and world vector transformations.

  • Bug Fix: Transition nodes no longer reference the wrong state node due to non-unique node GUIDs being introduced by copy and paste.

  • Bug Fix: Subinstance nodes inside states no longer fail to correctly create bridge variables on their skeleton class due to not correctly processing subgraphs in the Anim Blueprint compiler.

  • Bug Fix: Added a fix for animation reinitializing when replacing animation via Single Node Instance.

  • Bug Fix: Added code to correct duplicate node GUIDs during Anim Blueprint compilation.

  • New: Copy Pose node now supports copying curves as well as bone transforms. Enable Copy Curves if you want to copy curves (by default, this is not enabled).

  • New: Added ability for worker thread Animation Blueprint code to report to Message Log and added additive warning when playing an animation on an additive pose.

  • New: Added "Uncheck All Unconnected Pins" for button Break Struct nodes.

  • New: Added Native Begin Play function to Anim Instance.

  • New: Added ability to control whether or not a post process instance runs on a skeletal mesh component. Exposed both to blueprints and anim editor suite

  • New: Added support for logical negation when copying to array properties in the fast path.

  • Deprecated: Get Scalar Parameter Default has been deprecated and replaced with Get Scalar Parameter Default Value.

Animation Tools

  • Crash Fix: Removing bones in a LOD on a Skeleton that has Virtual Bones no longer crashes.

  • Crash Fix: Crash no longer occurs when updating clothing paint mode after tab spawners have been destroyed by the hosting application.

  • Crash Fix: Attempting to zero out an array with the wrong size in Control Rig no longer crashes.

  • Crash Fix: Addressed a crash in Animation Editor menus caused by audio compression.

  • Crash Fix: No longer crashes when displaying a two bone IK gizmo for a node that hadn't had a chance to evaluate or had a zero alpha.

  • Bug Fix: Skeleton Tree now correctly no longer allows selection of filtered items.

  • Bug Fix: Bone modifications via transform type-in can now be undone.

  • Bug Fix: Fix to make sure Debug Bone Rendering of raw animation data in the Animation Editors actually shows the raw data when an animation uses additive track layers instead of showing the source.

  • Bug Fix: Fixed bad blend profile references from copy/paste operations on nodes using external profiles.

  • Bug Fix: Fixed Blend Profile properties not being correctly customized on anim nodes - and Animation Sequence references not being correctly filtered on anim nodes.

  • Bug Fix: Addressed Single Node Instances not getting ticked properly. Due to them not increasing UpdateCounter, and forcing a tick even if we're doing parallel ticking later.

  • Bug Fix: Removed recompress animation from curve track actions. This allows for smoother interaction on animations with a slow recompression time.

  • Bug Fix: Text is now red again in Anim Viewports.

  • Bug Fix: Fixed Set Root Motion Enabled Anim Data Modifier node (previously didn't set the enabled flag)

  • New: Exposed Sequence Recording Settings in Animation Editors.

  • New: Changed animation preview tooltips in Persona to stop loading the animation if it is not already loaded.

  • New: Tweaked debug display of Anim Sequences and added DeltaTime to AnimInstance debug.

  • New: The console command "showdebug animation" now shows current LOD and counters to know if Update/Eval/Cachebones/Init was called.

    • Also for URO settings, renamed Display Debug Custom to Display Debug Instance.

  • New: Added Anim Instance Display Debug Custom, to display custom debug info before AnimGraph display.

  • New: Removing a section when creating a clothing data entry will now just disable the section in the mesh, so that the operation is non-destructive to the mesh data.

  • New: Moved Live Link Message Bus Source heartbeats to their own thread using a new Heartbeat Manager singleton. This prevents sources from incorrectly being removed during Slate UI operations.

Import/Export

  • New: Refactored Facial Animation importing so it can be used from inside other modules.

Skeletal Mesh

  • Crash Fix: Undoing a change on a Skeletal Mesh that uses Virtual Bones no longer crashes.

  • Crash Fix: Setting a Master Pose Component on a Slave Component using the Rigidbody node during actor construction will not result in a crash.

  • Crash Fix: No longer crashes when clearing a Skeletal Mesh on a Skeletal Mesh Component with an active Post Process Anim Instance.

  • Bug Fix: Skeletal Mesh Component LOD info no longer cleans up all override resources and only cleans up one.

  • Bug Fix: Set the Used by Morph Target Material option to only the Materials affecting section deform by a Morph Target instead of all Materials used by the Skinned Mesh component.

  • Bug Fix: Multi-convex generation for Skeletal Meshes no longer uses incorrect index buffer.

  • Bug Fix: Correctly return whether a Skeletal Mesh section is shown or not when it has not been edited.

  • New: Exposed Show Material Section function to hide/show Skeletal Mesh material sections at runtime to Blueprint (also added Show All Material Sections and Is Material Section Shown functions).

  • New: Animation System owns previous Bone Transform with revision number that are used for motion blur or temporal AA, so that it can send to the render thread when RenderState is recreated.

  • New: You can set attached and parent to sync their LOD by setting Sync Attach Parent LOD to true.

Tools

  • Crash Fix: Skeletal Mesh Editor no longer crashes when importing more than 5 LODs.

  • Bug Fix: Refactored View menus in Animation Editors.

  • Bug Fix: Incorrect reporting of Animation Blueprint Fast Path is no longer caused by enabling the Compilation Manager.

  • Bug Fix: Compression Settings panel no longer allows "Use Adaptive Error" and "Use Adaptive Error 2" to be enabled at the same time.

  • Bug Fix: Ensured bounds inside of the Animation Editor(s) are correctly shown for Alembic Skeletal Meshes.

  • Bug Fix: Removed unused preferences from Persona Options.

  • Bug Fix: Persona Viewport settings are now per-asset editor.

  • New: Defaulted the Clothing Create menu to use the Skeletal Mesh Physics Asset.

  • New: All animation-related editors now have the ability to open up to 4 separate viewports onto the same scene, each with their own settings.

    • Added the ability to follow (and orbit) a specified bone as well.

    • Added a new "pinnable command list" widget to animation editors.

  • New: Preview buttons are now present where applicable inside the Animation Editors.

  • New: Added Mesh Paint settings to per-user settings and added preview vertex size so it's configurable by the user for use on differently sized meshes.

  • New: Auto-range feature added to cloth view ranges and a way for tools to extend those ranges when necessary.

  • New: Improved Skeletal Mesh Component debugging.

    • Extended the viewport text seen in Skeletal Mesh Editor.

    • Added lines for current cloth value.

  • New: Clothing visualizations can now be enabled while clothing paint mode is active.

  • New: Added a search bar to the Advanced Preview Scene settings panel.

Audio

  • Crash Fix: Fixed an issue with VOIP crashing on Mac.

  • Crash Fix: Fixed Ngs2 sources getting recycled while getting setup.

  • Crash Fix: Applied a fix for editing inherited audio component overrides in attenuation detail customization.

  • Crash Fix: Fixed a crash in the Audio Device function, Processing Pending Active Sound Stops.

  • Bug Fix: Fixed a case where audio is already set to be a preview sound. Sequencer sets the sound to be a preview sound when scrubbing in editor.

  • Bug Fix: Fixed a hang during multi-PIE shutdown when using a synth component.

  • Bug Fix: Sound mix fade time now fades audio properly.

  • Bug Fix: Fixed a bug during shutdown of audio mixer.

  • Bug Fix: The sample rate of synth components can now be overridden in C++.

  • Bug Fix: Fixed a bug in Android VOIP.

  • Bug Fix: Fixed a potential memory leak caused when starting and stopping a SynthComponent on the same frame.

  • Bug Fix: Fixed Ogg Vorbis 5.1 channel ordering channel maps in the Audio Mixer.

  • Bug Fix: Fixed an issue where audio sources were gently filtered near Nyquist when a source's LPF was set to max frequency in the new Audio Engine.

  • Bug Fix: Fixed a memory leak in the audio decompressor.

  • Bug Fix: Libvorbis DLL failing to load will now recover gracefully.

  • Bug Fix: Removed "Stopping sound already in the process of stopping" log spam.

  • Bug Fix: Envelope Attack and Release times are now setting properly on Synth Components.

  • Bug Fix: White Noise in the new Audio Engine no longer produces non-uniform noise.

  • Bug Fix: Fixed an issue in which the Delay Submix effect would allocate too much memory for delay lines.

  • Bug Fix: Recording audio in Recording Sequencer will no longer cause the Editor process to persist after shutdown.

  • Bug Fix: Fixed issues in wavetable sampleplayer synth component.

  • New: Added the ability for Submixes to define their own channel format. Currently, Stereo, Quad, 5.1, 7.1, and first order ambisonics are supported.

  • New: Made improvements to Unreal Engine 4's native VOIP implementation. Spatialization, Distance Attenuation, Reverb, and custom effects for a player's voice can now be controlled using the UVoipTalker Scene Component.

  • New: The new Microphone Capture Component enables feeding audio directly into a game for use with the Audio Engine and for driving in-game parameters.

  • New: Upgraded to Steam Audio Beta 10.

  • New: Added the ability to get envelope following Audio Components and Synth Components through BP delegates.

  • New: Added the ability for synthesizers to modify the requested sample rate on initialization.

  • New: Users can now have different Audio Plugin source settings for different Plugins.

  • New: Added a Panner Source Effect.

  • New: Sound Submixes and Sound Classes are now Blueprint types.

  • New: Added support for seeking with ADPCM.

  • New: Optimized Active Sound by not processing active sounds if they are out of range.

  • New: On Mac Media, audio playback uses the operating system media player mixer rather than mixing in Unreal Engine 4. This is currently only enabled on Mac, but may come to iOS in the future.

  • New: Oculus Audio Plugin has been updated. It now includes a Reverb Plugin, as well as support for Android and playing back Ambisonics files.

  • New: First-order Ambisonics files can now be imported into Unreal projects and played back using select Spatialization Plugins.

  • New: Added pre and post Source Effect Bus Send types. At this time, sending audio to post-source effects sends before distance-based effects, such as occlusion and distance attenuation are applied.

  • New: Multichannel file import is now supported.

  • New: The Allow Anyone To Destroy Me variable is now enabled on audio components.

  • New: The Resonance Audio Plugin for Unreal is now included as an Engine Plugin. The Resonance Audio Plugin supports binaural spatialization, reverberation, sound directivity, and ambisonics playback on Windows, iOS, Android, Linux, and Mac.

  • New: Audio Components can automatically manage attachment, opting in to cache their attach parent and attach socket. This enables them to attach to their cached parent only while playing audio, then detach after playback is completed. Set to false by default.

  • New: Optimizing the way audio stream chunks are serialized to take advantage of alignment optimizations on console.

  • New: Added a Blueprint function for enabling and disabling the Low Pass Filter on Audio Components, as well as setting the frequency of the filter.

  • New: Added "Owner" parameter to Play Sound At Location and Play Sound 2D functions to support "Limit to Owner" concurrency settings.

Automation

  • Crash Fix: Fixed a crash in Screen Shot Manager caused by an attempt to access a deleted String in an async lambda expression.

  • Bug Fix: Fixed issue with UnrealBuildTool and AutomationTool always being out of date, which forced a rebuild and made it impossible to debug operations dependent on them.

  • Bug Fix: Automated test screenshots now have more consistent overrides for gamma, eye adaption, dpi and other post process effects (regardless of capture mode).

  • Bug Fix: Fixed automation routines that list files in Perforce to return those whose last action was a rename.

  • New: Added automated test for per-platform blacklist defined in the relative platform engine ini file.

  • New: Automated test screenshots are now able to test against a hierarchical fallback platform and RHI.

  • New: Added button to automated test screenshot browser to add or replace all outstanding test reports (if appropriate).

  • New: Automated screenshot tests that fail due to size mismatch will now show a delta image, where mismatched bounds are colored red.

Blueprints

  • Crash Fix: Fixed inclusion of private plugin header files in nativized Blueprint C++ source.

  • Crash Fix: Resolved a potential crash that could occur prior to initiating a global "Find in Blueprints" indexing operation with source control disabled.

  • Crash Fix: Fixed a crash when using EDL to load certain data-only blueprints that inherit from other blueprint classes

  • Crash Fix: Fixed a crash on load in a nativized build caused by a reference to a Blueprint class containing a User-Defined Enum asset.

  • Crash Fix: Fixed a potential crash when collapsing nodes to a function when a potential entry pin had no links.

  • Crash Fix: Fixed a crash when using blueprinted components created by a specialized subclass of Blueprint.

  • Crash Fix: Added a guard fix against a reported crash when deleting a non-root scene component with no parent attachment.

  • Crash Fix: Prevented a reported crash when deleting one or more Actor components.

  • Crash Fix: Added a guard fix against a reported crash when setting bIsEditorOnly flag on attached scene components.

  • Crash Fix: Fixed an issue where split struct pins would not respect Allowed Classes on things like Slate Font Info, which could cause crashes when passing in the wrong type of asset

  • Crash Fix: Fixed occasional crashes when manually compiling simple blueprints.

  • Crash Fix: Fixed several crash and data loss issues when undoing changes to user defined structs used in Data Tables

  • Bug Fix: In the Blueprint Material And Texture Nodes Plugin, clamping sampled HDR render target values by setting Range Compression Mode in the Read Surface Data Flags to RCM_MinMax now behaves as expected.

  • Bug Fix: User Defined Structures now store default values in the same way that native structs do, so they will now be correct in cooked builds and when added to containers. Changing the default value will also correctly propagate to unmodified instances in blueprints or other user structs.

  • Bug Fix: Fixed missing Outer mapping at cook time on nested subobjects instanced with the New Object function in emitted C++ code during Blueprint nativization.

  • Bug Fix: Blueprint nativization now emits external plugin dependencies to the generated plugin descriptor file in order to mute UBT warnings at build time.

  • Bug Fix: Removed the Inverse Lerp node and redirected it to call Normalize To Range. Also Fixed incorrect value being returned by Normalize To Range when Range Min and Range Max are equal.

  • Bug Fix: Fixed a rare linker issue where Is Blueprint Finalization Pending would return true when trying to force-load subobjects that weren't ready to be loaded. This would prevent some placeholder objects from being replaced.

  • Bug Fix: We now ensure that "-build" is always passed to BuildCookRun automation workflows in the editor for projects configured with Blueprint nativization enabled so that it doesn't skip that stage.

  • Bug Fix: Revised both UAT/UBT-driven and custom code/data workflows to more seamlessly work with Blueprint nativization settings.

  • Bug Fix: Ed Graph Schema's Break Single Pin Link function is now correctly marked as a const function.

  • Bug Fix: Local variables can now be created in blueprint function libraries.

  • Bug Fix: Fixed several issues with copy/pasting nodes that allow customizing which pins are visible.

  • Bug Fix: Light error sprite will no longer appear in blueprint preview window.

  • Bug Fix: Copy-pasting a collapsed graph containing a map input will no longer result in a map with an unset value type.

  • Bug Fix: Prevented nativization from creating uncompilable code when using a non-referenceable term (e.g. subclass of, weak object pointer) in a select node.

  • Bug Fix: We now properly cast between mismatched soft pointer types in nativized Blueprint C++ assignment statements and function calls.

  • Bug Fix: Blueprints that are asynchronously loaded inside the editor are correctly registered with editor systems like the list of cast nodes.

  • Bug Fix: Text can be specified in blueprint functions as default parameters.

  • Bug Fix: Fixed a serialization oversight in Ed Graph Pin that could lead to a compile error during Blueprint nativization.

  • Bug Fix: Added more descriptive log output after an attempt to break Blueprint execution on an unimplemented function/interface.

  • Bug Fix: Added Component nodes no longer lose their component type when another the component blueprint is compiled

  • Bug Fix: Split struct pins now handle both user struct variable renaming and native Core Redirects variable renaming, the same way that Make/Break did before.

  • Bug Fix: Implemented Get Redirect Pin Names for async nodes. This fixes a bug where property redirectors on async nodes did not work correctly.

  • Bug Fix: Fixed issues where type would not be correctly propagated through multiple redirect nodes.

  • Bug Fix: User Defined Structures can now be imported from text using the human-readable field names, which fixes their use in nested arrays inside data table rows.

  • Bug Fix: User Defined Structures that are nested inside other user structs can now be safely modified. It is now safe to modify the inner struct's defaults without corrupting the outer struct, and those default changes will be correctly propagated to the outer struct.

  • Bug Fix: Blueprint nativization now correctly generates and builds code for "Client" builds

  • Bug Fix: Improvements to the Cpp backend to allow VC++ to compile nativized code more effectively

  • Bug Fix: Subobjects of assets are now correctly referenced by nativized code Disabled animation fast-path optimization when running a native anim BP, as native code is faster!

  • Bug Fix: Fix split pins on macro instances for resolved wildcard pins not resetting when disconnected

  • Bug Fix: Child Actor Template label in the details panel will now correctly reflect the selected class.

  • Bug Fix: Blueprints that have no parent class can now be reparented when using the compilation manager

  • Bug Fix: Harden pin serialization logic, specifically to prevent crash due to bad 'conform' routines when renaming functions

  • Bug Fix: Fixed ensure when initializing replication data for blueprint generated classes

  • Bug Fix: Fixed missing marching ants on trace wires when stopped at a breakpoint in macro and collapsed source graphs.

  • Bug Fix: Fix issue where references from a component to its parent blueprint would be cleared on compilation.

  • Bug Fix: Fixed an ensure when exiting PIE after tracing into a Blueprint Function Library source graph while single-stepping.

  • Bug Fix: Fixed incorrect access to nested instanced subobjects in nativized Blueprint class constructor code.

  • Bug Fix: Prevented debug object selection dropdown from displaying objects with pending-kill outers.

  • Bug Fix: Fixed a packaging build failure that could occur with Blueprint nativization enabled and EDL disabled.

  • Bug Fix: The proper syntax is now being emitted for set/map fields containing converted assets to C++ class headers when Blueprint nativization is enabled.

  • Bug Fix: Fixed a scoping issue for local instanced subobject references in nativized Blueprint C++ code.

  • Bug Fix: Fix several issues with the class pin on the Spawn Actor From Class node

  • Bug Fix: Added more verbose log output to assist with debugging any crash reports due to an invalid object reference detected in the BP event graph frame during garbage collection.

  • New: Added Call Stack controls for viewing Blueprint call stacks when paused at a breakpoint. These are available from the Developer Tools menu.

  • New: Improved Blueprint single-step debugging and breakpoints.

    • Added new Step Over (F10) and Step Out (ALT+SHIFT+F11) debugging features.

    • Added the ability to break directly on and step into/over/out of macro and collapsed graph nodes.

  • New: Updated numeric graph pins to use a numeric editor.

  • New: Validated Get option for Soft Object/Class references in blueprints.

  • New: The Game Mode Base function Get Default Pawn Class For Controller can now be called in blueprints.

  • New: Added an Editor Preferences setting to disable navigation to native functions from call function nodes.

  • New: Deprecated properties can still be accessed in blueprints so long as they have blueprint getters and setters. This creates a clean deprecation path for blueprint-accessed properties.

  • New: Added new Blueprint functions to query parameters from Material Instance Constant objects. Previously, these were only available on Material Instance Dynamic objects. The functions included are:

    • Get Scalar Parameter Value

    • Get Texture Parameter Value

    • Get Vector Parameter Value

  • New: Added a step to the compilation manager to skip recompilation of classes that are dependent on a given classes function signatures when those signatures have not changed. This greatly improves compile times for blueprints with large numbers of dependencies.

  • New: Preserve graph editor widgets when clicking on a hyperlink, this speeds up navigation via the debugger "step" command and Find in Blueprints control - both are now more responsive.

  • New: Added Vector Length XY to Blueprint math library.

Core

  • Crash Fix: Fixed a crash on shutdown due to component visualizers not being cleaned up properly by the Unregister Component Visualizer function.

  • Crash Fix: Network platform file heartbeat function can no longer cause a crash by firing during async loading.

  • Crash Fix: Fixed a potential garbage collection crash caused by a stale pointer in Anim Instance Proxy.

  • Crash Fix: Fixed CVar access crashes with the async loading thread enabled.

  • Crash Fix: Fixed a crash in EDL loading when simple construction scripts and inherited component handlers were not being loaded early enough in complicated blueprint hierarchies.

  • Crash Fix: Rntering a single quote in an ini field will no longer crash the editor or make a project fail to load.

  • Crash Fix: Dumping stats with massive callstacks no longer causes a crash.

  • Crash Fix: Fixed some crashes with the new Blueprint Garbage Collection weak reference feature (and possibly Hot Reload) by updating the archive's serialized property when serializing arrays, sets, or maps to point to the inner property.

  • Crash Fix: Fixed a crash that could happen when GC Objects were constructed and destroyed during engine shutdown.

  • Crash Fix: An editor startup crash when using cook-on-the-side has been fixed.

  • Crash Fix: Fixed an issue where packaged games that disabled the TCP/UDP messaging plugins would crash on startup in shipping configuration.

  • Crash Fix: Fixed a crash when the engine was reporting package errors.

  • Crash Fix: Running DDC commandlet with an invalid package name no longer causes crashes.

  • Bug Fix: Multicast Delegate Property's Identical function now has the same behavior as Delegate Property's Identical function. This prevents it from giving incorrect results and causing serialization errors.

  • Bug Fix: The Asset Registry module is now always preloaded on startup, even if EDL is disabled.

  • Bug Fix: Fixed Thread Sanitizer warnings in stats system. Optimized Cycle Counter's Start function to only read the stat name once (atomically).

  • Bug Fix: Fix ambiguities in calculating root directory.

  • Bug Fix: When serializing a compressed archive with multithreaded compression enabled, the engine will wait for the oldest async task instead of spinning.

  • Bug Fix: When Async time limit is set to a low value, the linker will no longer get stuck in a loop of reloading the preload dependencies.

  • Bug Fix: Fixed a small race condition with config data in Low Level Mem Tracker.

  • Bug Fix: Fixed some data races in Compression's stats.

  • Bug Fix: Shared Ptr, Shared Ref and Weak Ptr assignment operators are now implemented as copy-and-swap, to avoid bad states being visible to any destructors being called.

  • Bug Fix: Added atomic reads to Shared Ptr, Shared Ref, and Weak Ptr in Thread Safe mode.

  • Bug Fix: Used new Platform Atomics function, AtomicRead, in Thread Safe Counter‘s Get Value function.

  • Bug Fix: Fixed thread-unsafe sharing of a static array in the String function, Parse Into Array WS.

  • Bug Fix: Fixed a regression in hot reload speed accidentally introduced in 4.17, caused by rerunning UnrealHeaderTool redundantly if a source file has changed in the same folder as a header file which contains at least one UCLASS. This has also been fixed in non-hot-reload compiles.

  • Bug Fix: Removed a redundant call to Update Vertices when creating a level's model components, which was causing a race condition with the renderer thread.

  • Bug Fix: Suppressed Thread Sanitizer warnings in the Async Read Request interface.

  • Bug Fix: Fixed the debugger visualization of Array with an Inline Allocator or Fixed Allocator. Improved the visualization of Sparse Array.

  • Bug Fix: Fixed the wrong "P_GET_" macro being used in the generated code for Soft Class Ptr properties.

  • Bug Fix: Removed a redundant class access modifier from Queue.

  • Bug Fix: Freed the stats thread on shutdown.

  • Bug Fix: Is Integral now correctly reports true for int64 on 32-bit platforms.

  • Bug Fix: Fixed truncation errors in the parsing of very large integer values in FJsonObject::GetIntegerField().

  • Bug Fix: Unreal Header Tool's error reporting now specifies the correct source file when a header doesn't specify a .generated.h as its last #include.

  • Bug Fix: Deleted an unnecessary specialization of Make Array View.

  • Bug Fix: Removed String's char pointer constructor's confusing void pointer parameter.

  • Bug Fix: Base64's Encode function is now const-correct.

  • Bug Fix: Json Value no longer stringifies whole numbers as floats.

  • Bug Fix: Relaxed enum property importing to allow valid integer values to be imported too. This was previously made more strict, which caused a regression in Data Table importing.

  • Bug Fix: Fixed memory leaks for pipe writes and added data pipe writes.

  • Bug Fix: Fast XML now properly parses attributes with legally unescaped single and double quote characters

  • Bug Fix: Zipping in UAT now always uses UTF-8 encoding to prevent Unicode issues.

  • Bug Fix: Fixed pure-virtual function call in Multicast Delegate Property.

  • Bug Fix: Fixed console output not working when using "-log" in a shipping build.

  • Bug Fix: Loading maps via content browser or async load in the editor no longer leads to their references not loading properly.

  • Bug Fix: Fixed an issue where deleting a source package would not cause the generated cooked package to get deleted while doing an incremental build.

  • Bug Fix: Enum redirects handle typedef enums properly when a value redirect is not also specified. Enum classes continue to work correctly.

  • Bug Fix: Fixed an issue where the Streamable Manager could return partially loaded objects when called from Post Load. It will now schedule a callback for when those objects finish loading instead.

  • Bug Fix: Comparing NAME_None to an empty string, or a Name constructed from an empty string, now correctly returns true.

  • Bug Fix: Fixed cmake include directory generation putting engine include files in the game root.

  • Bug Fix: Fixed cases where an include path that is external to both the engine and game root were incorrectly getting the game root prepended.

  • Bug Fix: Many fixes were implemented for Thread Sanitizer warnings.

  • Bug Fix: Fixed build command line in generated projects missing a space before the compiler version override.

  • Bug Fix: If UAT is invoked with platforms in both the "-platform" and “-targetplatform” command-line switches, we will now build using all of them rather than just the ones in “-targetplatform”.

  • Bug Fix: Fixed cases where String's Printf function was used without a formatting string.

  • Bug Fix: Updated loading movie code to properly calculate delta time when throttled at 60 frames per second.

  • Bug Fix: Fixed an inconsistency with how Soft Object Ptr case is managed between Linker Save and Archive Save Tag Imports, which could cause a cook ensure under some circumstances.

  • Bug Fix: Fixed an occasional loading assert in Script Struct's Post Load function caused by a race condition on the Prepare CPP Struct Ops Completed variable.

  • Bug Fix: Changed Visual Studio Code project file generation to use "taskName" rather than "label" for C# build task names.

  • Bug Fix: Improved whitespace handling in both Map Property's and Set Property's "ImportText_Internal" function. Emptied the map or set if an error occurs during a text import of a property to avoid bad container states.

  • Bug Fix: Fixed a potential buffer overrun in Set Property.

  • Bug Fix: Map Property's Import Text function now correctly skips duplicate keys.

  • Bug Fix: Unreal Build Tool now enforces Development and Debug configurations in existing C# projects. Fixes command-line builds and prevents solution from being marked dirty on initial load.

  • Bug Fix: Cleaned up delegates in UObjectGlobals.h, fixing several incorrect comments and moving some editor delegates into WITH_EDITOR.

  • Bug Fix: Fixed an optimization issue with CPU benchmarking. Also added better support for debugging local rocket builds.

  • Bug Fix: Fixed the final enumerators being missing from the generated FOREACH_ENUM_ macros.

  • Bug Fix: Parallel .pak generation now uses the number of reported CPU cores. Also fixed an issue with concurrent .ini file reading.

  • Bug Fix: Dedicated servers do not include RHI modules except NullRHI.

  • Bug Fix: Changed String's Parse Into Array function to use Reset instead of Empty on the passed in array, allowing it to be approximately resized

  • Bug Fix: Fixed accounting for Curve Table assets in "obj list".

  • Bug Fix: Fixed a bug that caused the engine to fail to identify a running instance of Visual Studio as having the current solution open.

  • Bug Fix: Fixed the "quote issue" with foreign project build tasks on PC.

  • Bug Fix: Fixed limit on number of async precache tasks while cooking, due to counter not being updated correctly.

  • Bug Fix: The Windows version string is now determined correctly.

  • Bug Fix: Asset registry memory usage reported by memreport is now correct.

  • Bug Fix: Fixed Platform File Pak interface's Find Files Recursively function not correctly calling the base class implementation.

  • Bug Fix: Literal soft object pins are correctly cooked and tracked in the reference viewer. This may cause assets referenced by disabled nodes to be cooked into your project. In this case, the reference viewer will track which blueprints are causing this.

  • Bug Fix: The serializing object will now be logged during reachability analysis in the event that an invalid object reference is detected during a garbage collection pass.

  • Bug Fix: Hot reloads no longer occur during PIE, which was causing bad states in blueprint types when they are reinstanced.

  • New: Encryption/Signing Key Generator. A plugin which allows the automatic creation and configuration of in-engine data cryptography through the project settings, under the "crypto" header.

    • Added options to plugin settings which allow encryption to be used on the various asset files in a pak. Encryption can be used on just the .uasset file, which contains only the package header information, or the .uexp and .ubulk files too, which contain the rest of the package data. Encryption on .uasset files provides a good compromise between data security and runtime performance.

  • New: Added Level Streaming CVars to customize streaming for your project. These all default to enabled, but can be disabled to make different trade offs for memory and level loading performance.

    • "s.ForceGCAfterLevelStreamedOut" - Whether to force a GC after levels are streamed out to instantly reclaim the memory, at the cost of a hitch. Defaults to on.

    • "s.ContinuouslyIncrementalGCWhileLevelsPendingPurge" - Whether to repeatedly kick off incremental GC when there are levels still waiting to be purged. Defaults to on.

    • "s.AllowLevelRequestsWhileAsyncLoadingInMatch" - Enables level streaming requests while async loading (of anything) while the match is already in progress and no loading screen is up. Defaults to on.

    • Added several new stats for potentially slow code.

    • Added SCOPE_CYCLE_UOBJECT macro, instead of using Scope Cycle Counter UObject directly.

  • New: Cheat cvars are now usable in Test builds by default. Can be overridden by defining ALLOW_CHEAT_CVARS_IN_TEST as 0 in Target.cs files.

  • New: Make Weak Object Ptr function, which constructs a Weak Object Ptr from a C++ pointer by deducing its type. Fixed Weak Object Ptr's constructor which implicitly removed const.

  • New: Upgraded the Array function, Insert, to allow it to take an array with any allocator type. It can also move elements out of another Array.

  • New: Array now has a "_GetRef" variants for many of its functions, which will create an element and return a reference to it rather than its index in the Array. These functions are: “Insert_GetRef”, “InsertZeroed_GetRef”, “InsertDefaulted_GetRef”, “Emplace_GetRef”, “EmplaceAt_GetRef”, “Add_GetRef”, “AddZeroed_GetRef” and “AddDefaulted_GetRef”.

  • New: There is a new Multi Map function, Append, to match the Map class' function of the same name.

  • New: Base64 encoding library now supports ANSI/wide characters, decoding streams without padding marks, and decoding into preallocated buffers without writing dummy padding bytes.

  • New: Integer support added to Is Aligned.

  • New: Static asserts to stop alignment functions (Align(), IsAligned(), etc.) being called with non-intergal, non-pointer types.

  • New: Visual Studio Code project file generation now creates a .code-workspace for the workspace. Allows foreign projects to "mount" the UE4 folder so that the engine tasks are available, and all engine source is visible to VSCode for searching purposes

  • New: Visual Studio Code - Add launch task for generating project files for the given folder

  • New: Ensure that all branches within Generic Platform Misc's Root Dir function produce an absolute path with no duplicate slashes. Remove relative-to-absolute conversion of the root directory from the Paths function, Make Standard Filename, now that we know Root Dir always returns an absolute path.

  • New: Added Net Serialize to Date Time.

  • New: Vector 4 now features a -= operator.

  • New: Allowed Visit Tuple Elements to take multiple tuples of the same size. These are now iterated in parallel and will invoke the visitor with multiple arguments.

  • New: Minimal Name now has an Is None function.

  • New: Relaxed memory ordering atomic operations.

  • New: Atomic object wrapper has been created. This guarantees atomic access to the underlying object, with additional memory ordering guarantees.

  • New: Platform Atomics now has an Atomic Read function.

  • New: Added overloads of atomic functions to handle int8, int16, and int64, in addition to the existing int32.

    • Switched Android and Linux builds over to use the Clang implementation.

  • New: Command-line option "-NOEDL" will disable EDL.

  • New: Command-line "-diffonly" mode added to cook commandlet. This mode compares packages on disk that have already been cooked with packages currently being cooked to detect deterministic cook issues.

  • New: Added As Const helper function, for const-ifying pointers and references.

  • New: Checks to prevent Flush Async Loading and Load Object / Load Package from being called from any threads other than the game thread.

  • New: Tickable Base Objects can now avoid calling Is Tickable every frame if they will never or always be ticked.

  • New: Denormalized values are now allowed when converting float32 to float16.

  • New: Added static asserts to Logf and checkf to ensure that they're always called with a literal formatting string.

  • New: Cook metadata like DevelopmentAssetRegistry.bin will no longer be packed into a shipping game.

  • New: Added a new target rule, "Use Inlining", to UnrealBuildTool to disable inlining for debugging purposes - defaults to true.

  • New: Opened .pak files can be listed with the console command "DumpOpenedFiles".

  • New: Added a new command line option, "-statnamedevents", for enabling named events.

  • New: Json Object Converter now supports sets in its Json Value To UProperty function.

  • New: Mutable lambda functions can now be bound to delegates.

  • New: To go along with changes to the Size Map tool, the way that ResourceSize is calculated has changed. Exclusive is the same but Inclusive is now EstimatedTotal and represents the total size of the object and all of its sub objects, but not any external assets it references. It now tries to estimate the size on a generic cooked platform so it will handle texture LOD bias better.

  • New: The Platform Stack Walk function, Capture Stack Backtrace, now returns the stack size rather than checking for the first null pointer, to prevent truncated callstacks if parts of the stack are zeroed out.

  • New: Improved "caching file" message in networkplatformfile so it says "Requesting file..." and is only output when we actually request the file from the server.

  • New: Improved Variant's support for move semantics. Switched Variant Types over to an enum class to aid debugger visualization.

  • New: When cooking with Generate Chunks and the asset manager enabled, AllChunksInfo.csv is now written out to the CookMetadata directory. This file can be used to look for historical chunk size changes, and it now uses the per-platform cooked size.

  • New: Added more debug info for ensure in Linker Save when a name that has not yet been mapped is being serialized.

  • New: Tweaked "LogInit" command-line logging to clarify when the command line is incomplete due to some arguments being filtered out.

  • New: Promoted Statistical Float (a utility class to track basic statistics of a real number data series with constant storage) into Core from FunctionalTesting

  • New: Made optimizations to Paths function, Is Relative.

  • New: Improved cook performance by optimizing the EDL assumption verification code.

  • New: Removed all locks from EDL Cook Checker to improve Save Package performance.

  • New: Optimized adding and removing objects to GC Object Referencer.

  • New: Switched our allocator to ANSI when running a Thread Sanitizer build, for better error reporting.

  • New: Improved filename to long package name resolution when providing a relative path.

  • Removed: Move-unaware allocators are no longer usable with containers.

  • Removed: Startup Packages have been removed, along with the associated code.

  • Removed: Removed deprecated delegate functions.

Editor

  • Crash Fix: Fixed a crash when opening the level viewport context menu if the actor-component selection is out of sync.

  • Crash Fix: Details panel no longer crashes after compiling blueprints that have edit condition properties.

  • Crash Fix: The .fbx scene importer no longer causes a morph target import crash.

  • Bug Fix: Added a value threshold for Paint and Fill values while using the Cloth Painter to prevent negative numbers.

  • Bug Fix: Fixed Camera Rig Rail Preview Meshes to match Spline Component .

  • Bug Fix: Added ".vscode" folder to generated .gitignore file for new projects.

  • Bug Fix: Fixed an issue with content browser columns not sorting properly.

  • Bug Fix: Made the font editor canvas respect DPI scale.

  • Bug Fix: Fixed a crash when dragging and dropping a non-array UI element onto array element..

  • Bug Fix: Fixed "Game Gets Mouse Control" setting.

  • Bug Fix: Duplicate actors are no longer created for USD primitives that specify a custom actor class.

  • Bug Fix: Moving a copy of an Actor to a different persistent level or sublevel now only dirties the target level.

  • Bug Fix: Clamped "Assets to Load at Once Before Warning" so it cannot be set below 1.

  • Bug Fix: Fixed auto import to import into the correct map folder.

  • Bug Fix: Fixed reordering of materials when importing a LOD containing new materials.

  • Bug Fix: Fixed a crash using Actor Details with the struct details panel.

  • Bug Fix: Fixed .fbx importer scale not always applying.

  • Bug Fix: The "Add New C++ Class" dialog now remembers the previously-selected module.

  • Bug Fix: Source Control Submit Files now interprets Escape key as if the user clicked "cancel".

  • Bug Fix: Fixed a leak in the Git plugin.

  • Bug Fix: Fixed Resave Packages working poorly with projects on other Windows drives with names like X, Y, Z.

  • Bug Fix: Prevented hit proxies from being rendered for cursor query when the cursor is not visible.

  • Bug Fix: Source control submenu menu customization

  • Bug Fix: Fixed window size and position adjustment not accounting for primary monitor not being a high DPI monitor when a secondary monitor is.

  • Bug Fix: Expanded array elements no longer collapse after reordering with drag-and-drop.

  • Bug Fix: Fixed a bug where Undo History would be cleared up when starting a multiplayer game in editor with 2 or more players.

  • Bug Fix: Fixed a crash when additional level viewport sprites are added after the level editor module is loaded.

  • Bug Fix: Fixed pending netgame travels in Play in Editor games erroneously stating there was a problem browsing to the pending map.

  • Bug Fix: Opening a color picker no longer causes values to change each time.

  • Bug Fix: Source control module now properly allows you to select a workspace when a dialog is up (e.g. the save asset dialog).

  • Bug Fix: Fixed a bug that caused Visual Studio to open repeatedly.

  • Bug Fix: Prevented importing more than MAX_SKELETAL_MESH_LODS when importing a skeletal mesh.

  • Bug Fix: Array reordering in a Blueprint now propagates to placed instances.

  • Bug Fix: Fixed a crash that could happen while hot-reloading content in the editor.

  • Bug Fix: Fixed levels not being lockable or unlockable if they are not checked out.

  • Bug Fix: Fixed HLOD auto-clustering incorrectly including transient and template actors.

  • Bug Fix: The Enter key now works as expected for details panel asset pickers.

  • Bug Fix: Removed circular referencing to parent window when creating an asset from an object.

  • Bug Fix: Perforce Plugin: Removed all calls to methods that would store passwords on the users local machine.

  • New: Added "favorite folders" to the content browser. You can add or remove folders from the Favorites list in the folder's right-click context menu, and hide or show the Favorites list in the Content Browser options.

  • New: Added support for the replay (demo) system, both record and playback, in PIE sessions. Demos from PIE sessions are compatible with those made in standalone instances, and vice versa.

  • New: Added the ability to have conditionally overridden HLOD settings from project-global defaults.

  • New: Created an Actor Component to decode Linear timecodes from an audio source. Outputs timecode, or timecode event.

  • New: Added an editor setting for the shared DDC location to use.

  • New: Improved cook process asset error handling including content browser links and better failure notification

  • New: Added support for canvas-based DPI scaling.

  • New: If a shared DDC is not being used with Perforce, a notification with a link on how to setup a shared DDC will be presented.

  • New: Unattended commandlets can now rename and save packages.

  • New: Added camera speed scalar setting and Toolbar UI to increase range on camera speed presets.

  • New: Added a setting to enable/disable high DPI support in editor.

  • New: Replaced the skeletal mesh import option "keep overlapping vertex" with thresholds, enabling the user to control the vertices' welding thresholds.

  • New: The Persistent Level in the Levels tab can now be locked.

  • New: Added the Auto Checkout function to Asset Rename Manager for commandlet usage.

  • New: The realtime level editor viewport is disabled if running under remote desktop.

  • New: Added the project setting "bValidateUnloadedSoftActorReferences" to the Blueprints section. This setting is true by default. Setting it to false it will disable the code that loads assets to check for references when deleting/renaming an actor.

  • New: Added documentation tooltips showing type information to header columns of DataTables.

  • New: Added Rename Assets With Dialog to Asset Tools. All previous implementations now use the "With Dialog" version. Delete Object and Duplicate Asset can be completed without dialog.

  • New: Added a variable called GIsRunningUnattendedScript. If true, we are running an editor script that should not prompt any modal dialog. Can be set for commandlets with "-RUNNINGUNATTENDEDSCRIPT" command-line option.

  • New: Many improvements to the Asset Audit, Size Map, and Reference Viewer tools to support their use in analyzing cooked content

  • New: Added a function. Get All Content Browser Command Extenders to Content Browser Module that supports registering commands/keybinds to extend the content browser via plugins.

  • New: Added "Don't show this again" checkbox to warning about deleting actors referenced by HLOD Actors.

  • New: Added new options to the "ResavePackages" commandlet when using "-BuildHLOD":

    • "-ForceEnableHLOD" turns on Hierarchical LOD in the level automatically.

    • "-ForceSingleCluster" turns on the Force Single Cluster for Level" option automatically.

    • "-ForceHLODSetupAsset=" clobbers the level's customized HLOD asset with the specified one..

    • "-SkipToMap" will resume generating HLODs at the specified map name (going in the order of map files found while searching folders).

  • New: In the glTF importer plugin: Import Static Mesh, Material, and Texture assets from the Khronos glTF 2.0 format. Text (.gltf) and Crash Fix: Fixed frequent crash when opening Config Editor more than once per session.

  • New: Added support for binary (.glb) files are supported.

  • New: Improved morph target import time.

  • Removed: Removed .fbx export file version 2010 compatibility. The 2018 .fbx SDK does not export to 2010 and earlier file formats.

Content Browser

  • Crash Fix: Fixed a crash when renaming an asset without an enabled source control via the Asset Tool.

  • Crash Fix: Fixed a crash that could happen when content hot-reloading a Level with streaming sub-Levels.

  • Bug Fix: Fixed the asset search suggestions list closing if you clicked on its scrollbar.

  • Bug Fix: Selection no longer resets when changing certain view settings.

  • Bug Fix: Fixed the row structure tag not appearing for Data Table assets.

  • Bug Fix: Fixed an issue so that we verify a folder is newly created before removing from the tree list.

  • Bug Fix: Fixed an issue with dragging and dropping folders.

  • New: Added a Clear option for the Content Browser folder search box when using the escape key.

  • New: Improved responsiveness of Open Asset dialog and when searching or filtering assets.

  • New: Added the ability for the Reference Viewer to show and copy references lists for nodes with multiple objects, or multiple selected nodes.

Foliage

  • Crash Fix: Fixed a crash for Instanced Static meshes and Foliage when used with a Static Mesh that had an invalid lightmap coordinate index set.

  • Crash Fix: Fixed a crash that could happen when replacing placed instances with another asset type.

  • Bug Fix: We now properly update random streams for Static Mesh instancing only when adding new instances or from saved data.

  • Bug Fix: Fixed a Static Mesh Instancing issue where the proper index would not be removed after multiple add and removes.

  • Bug Fix: When duplicating Static Mesh Instances through the Details panel, the source transform is now correctly used for the result.

  • Bug Fix: Fixed an issue with a special case where building a Blueprint that used a Foliage type would remove all visible Foliage already painted.

  • Bug Fix: When moving Foliage from one level to another, if there was an error during the process, it would not abort the process gracefully.

  • Bug Fix: Fixed a case where having very low FPS would cause the foliage to disappear for a few frames while moving the camera.

  • Bug Fix: Fixed an issue that prevented foliage addition during PIE or Simulate mode.

  • Bug Fix: Fixed a special case where adding and removing multiple times would cause the regeneration of random streams for all changed instances.

Landscape

  • Crash Fix: Fixed a crash when updating Landscape grass.

  • Crash Fix: Fixed a crash where you would use the Spline Component with no point specified.

  • Crash Fix: Fixed a case where it was possible that doing undo on Landscape would cause an assert or crash.

  • Bug Fix: Fixed an issue that could cause Landscape shaders to be recompiled very often during the cook process.

  • New: Added the possibility to update the Landscape Material at runtime using Material Instance Dynamic Materials.

Material Editor

  • Crash Fix: Fixed a crash when filtering Material Layers drop-down with no set value.

  • Crash Fix: Fixed a crash caused by the Layered Material property widget of the Material Instance Editor.

  • Crash Fix: Fixed an assert on expanding vector param in Layered Material.

  • Bug Fix: Fixed an issue to not show empty Global group if it only contained the Material Layer parameter.

  • Bug Fix: Fixed an issue with Details panels to now "own" a color picker so that a different Detail panel refreshing doesn't close it. This fixed the refreshing state of the graph after changing the texture or color parameter values.

  • Bug Fix: Fixed an issue to allow visible parameters parameter retrieval to correctly recurse through internally called functions. Previous checks were intended to prevent function previews from leaving their graph through unhooked inputs but unintentionally blocked all function inputs.

  • Bug Fix: Fixed an issue with Material overrides to display the actually used values even when greyed out.

  • Bug Fix: Fixed a reset to default issue on Material Layer Parameter node and layers.

  • Bug Fix: Changing a parameter in the Material Parameter Panel now dirties the Material correctly. Changing a layer parameter in the Material Instance Editor now refreshes the details panel as well.

  • Bug Fix: Fixed an issue with thumbnails for Material Function Instances not being able to delete new function instances.

  • Bug Fix: Empty Material groups are now being pruned correctly.

  • Bug Fix: Toggling "Show Background" now updates the background correctly.

  • Bug Fix: Material window now uses the background color set in preview scene.

  • Bug Fix: Fixed an issue to properly display the Material node preview label is now centered on HiDPI screens.

  • New: Turned on Material Layering by default.

    • Adding parent field and asset field to Material Layers and Material Layer Blends. Setting the parent restricts the assets available, and setting the layer or blend asset fills in the parent as well.

    • Added Content Browser filters for Material Layers, Material Layer Instances, Material Blends, and Material Blend Instances.

  • New: Added a Parameter Defaults tab to the Material Editor so users can see and change the default value of all the parameter nodes currently in the Material Graph, also added Parameter Defaults tab support for Material Functions.

  • New: Save to Child and Save To Sibling buttons now work for material layer parameters and are shown on the material layer parameter panel.

  • New: Creating a new parameter immediately allows naming.

  • New: Added axis input to the material editor's viewport client to allow rotating the preview viewport.

  • New: Material Blends now have plane mesh previews in their icons.

  • New: Added Material Layers Parameters Preview (all editing disabled) panel to the Material Editor.

  • New: Layers in Material Layer Functions can now be renamed, except Layer 0, which is always named "Background".

  • New: Added access to a Material Function Instance's parent in the Material Instance Editor.

  • New: Disabled being able to create a layer or blend in the asset drop-down, sections of the stack that have been disabled now inactivate that part of the UI.

  • New: The create a Layer or Blend in asset drop-down menu has been disabled. Sections of the stack that have been disabled are no inactive for that part of the UI.

  • New: Create Function Instance now indicates if you are making a Layer or a Blend.

  • New: Updated the optional example Layers and Blends checkbox in the Experimental Settings so that it makes basic Layers and Blends when you create new assets.

  • New: The Parent field in Layer and Blend Instances is now editable.

  • New: Any applicable Layer and Blend compile warnings now also appear in the Layer or Blend itself. We enforce only two layers in a blend and prevent users from deleting Layer or Blend output nodes.

  • Removed: Parent drop-down has been removed from Layers and Clends. A filter button has been added instead.

Media Framework

  • Crash Fix: Fixed a crash with Media assets in Media Sound Component's "Update Player."

  • Crash Fix: Fixed a crash when opening AVF Media after opening multiple media players.

  • Crash Fix: Fixed a crash due to a race condition by adding a missing scope lock to WMF Media.

  • Crash Fix: Fixed a crash for media textures that could happen if the media player is generated from GC clustered Blueprint.

  • Bug Fix: Fixed external textures not registering correctly in all cases for the Engine.

  • Bug Fix: Fixed Media Asset issue with Media Player's Previous and Next not playing automatically if the player was playing previously.

  • Bug Fix: Fixed an issue with image media player never finishing initialization if loading failed.

  • Bug Fix: Fixed an ensure when cooking projects that use Image Media Source.

  • Bug Fix: Fixed media sessions that were no generating Playback End Reached event when session forced to stop for WMF Media.

  • Bug Fix: Fixed an issue with video capture on Windows 7 where the feed would display black or error out when selecting a different track and format.

  • Bug Fix: Fixed issues with tracks being reported in reverse order.

  • Bug Fix: Fixed an issue where external textures referenced by a Material before being associate with a Media Player never having their uniform expressions reached.

  • New: Added simplified track switching to enable seeking.

  • New: Added a notification if no video track is available or selected to the Media Player Editor.

  • New: Added the ability to disable video output when no video track is selected for Image Media.

  • New: Added verbose logging to the Media Player BP functions for Media Assets.

  • Removed: Looping option has been removed from playlists for Media Assets.

Sequencer

  • Crash Fix: Fixed a copy/paste crash that could happen when only processing Movie Scene Copyable Binding and objects that can be spawned by the movie scene spawn were registered.

  • Crash Fix: Fixed a crash when an existing hotspot is null.

  • Crash Fix: Fixed a crash when pasting a camera cut track that happened when the outer track isn't set to the movie scene.

  • Crash Fix: Prevented a crash by ensuring that the null object in property actuate when there's a track without a binding object. This occured when pasting a property track to the root.

  • Crash Fix: Fixed a crash when dragging a Level Sequence into the tree area.

  • Crash Fix: Fixed a crash caused by erroneous persistent references to FSequencer.

  • Crash Fix: Fixed a crash when calling Set Playback Position in an event when adding Set Playback Position as a latent action.

  • Crash Fix: Prevented a reload crash that could happen if a Sequence was being recorded in a currently opened Sequencer. On Recording Started and On Recording Finished are now set to multicast delegates.

  • Crash Fix: Added a nullptr check to fix a crash in Actor Sequence when it doesn't exist.

  • Crash Fix: Fixed a crash opening a new Sequence while another is still active.

  • Crash Fix: Fixed a crash when an Actor Factory is not found.

  • Crash Fix: Added null checks to prevent a crash when saving the default state of a spawnable.

  • Bug Fix: Fixed an issue to unregister missing track editors in Movie Scene Tools.

  • Bug Fix: Fixed an issue with quaternions > rotation > quaternions so that unwinding is only processed if the last transform is valid.

  • Bug Fix: Fixed a rotation rotator to quaternion to rotator conversion which prevents you from typing in a rotation of 0,0,320 into the Key Editor. Unwind rotations from the previous transform to the current transform so that the nearest rotation is set rather than the rotator to quaternion to rotator conversion.

  • Bug Fix: Sequencer: Set min/max values for generic key area so that they don't default to 0,10.

  • Bug Fix: Fixed an issue returning unhandled only if not dragged. There was an issue where dragging in the track area would sometimes leave the handled state with the time slider controller to not allow you to pop up a menu with the movement tool.

  • Bug Fix: Fixed a problem to now defer Details panel updates on scrubbing and playing.

  • Bug Fix: Fixed an issue by adding a null check and warning for invalid Get Parameter Collection Instance.

  • Bug Fix: Fixed an issue to set row index when creating a new take

  • Bug Fix: Fixed issues with pre-edit property chain broadcast so that the property path will include possible struct/array node.

  • Bug Fix: Fixed all light colors being set if any color property is animated.

  • Bug Fix: Fixed spawnables not playing back when Editor Preview Actor was set to false for Sequencer spawnables so that Begin Play doesn't get skipped.

  • Bug Fix: Fixed an issue to reset drop node on drag leave.

  • Bug Fix: Fixed a delay at shot boundaries causing Sequences to not play back and render out. The shot ID needs to be tracked to determine whether a new shot is encountered.

  • Bug Fix: Fixed a delay before warm up causing Sequences not to render.

  • Bug Fix: Fixed an issue to enable the camera cut track when popping back to the master only if there's a camera cut track in the Master Sequence. It addresses an issue where if you don't have a camera cut track in the Master, the camera gets locked to a camera cut in a sub-scene and you can't toggle out of it.

  • Bug Fix: Pivot locations are now updated for a selection when closing Sequencer.

  • Bug Fix: Fixed an overlap issue by looking at the key behind it. It addresses if there's 3 keyframes on consecutive frames, so if you zoom out, you should see two bordered keys when the overlap threshold is passed.

  • Bug Fix: Fixed UMG animations not working with Blueprint Nativization.

  • Bug Fix: Fixed an issue in Sequencer to remove null tracks on object bindings. Tracks can become null if they're from a plugin and the plugin is disabled.

  • Bug Fix: Moved some commands out of the generic Sequencer command bindings so that they don't take over the viewport. For example, end for "Snap to Floor" should still function in the viewport.

  • Bug Fix: Fixed an issue to restore pre-animated state when changing active channels.

  • Bug Fix: Fixed an issue to suspend broadcast of selection delegates when performing multiple operations.

  • Bug Fix: Display names for Shot are now switched to FString so that it's not localized.

  • Bug Fix: Fixed an issue with Sequence Recorder to close the target animation asset editor if it exists before recording into it.

  • Bug Fix: Fixed an issue with Sequence Recorder to record to the specified target animation for the target Actor only. Newly tracked components will have newly created animations so that they don't record to the same target animation assets.

  • Bug Fix: Sequencer now uses drag and drop actor factory if specified. This ensures that the correct Actor Factory is used in creating the object template for the Sequencer spawner. It fixes some spawnables not getting created properly (for example, an Empty Actor).

  • Bug Fix: We prevent throttling on the Curve Editor so that the Editor world tick can apply. It fixes the viewport not updating sometimes when adjusting curves in the Curve Editor.

  • Bug Fix: Fixed an issue where parameters were not used.

  • Bug Fix: Fixed WMF Media for IYUV encoded AVIs not playing correctly.

  • Bug Fix: Fixed WMF Media that caused H.265 frames to be dropped due to false negative buffer size checks.

  • Bug Fix: Fixed an issue in Sequencer to always save the default spawnable states regardless of the focused Sequence. Addresses issue if you step back to the Master Sequence (and the spawnable if it still exists) and then scrubs outside the region where the spawnable exists. It gets destroyed but saved default spawnable state doesn't get called because it's no longer the focused Sequence.

  • Bug Fix: Fixed Sequencer viewport invalidation so that it happens on Sequence evaluation.

  • Bug Fix: Fixed an issue when scrolling in track area.

  • Bug Fix: Fixed an issue with Sequence Recorder causing duplicate Actor triggers before playing so that the Sequence can be recorded and played back at the same time.

  • Bug Fix: Fixed an issue with Sequence Recorder when recording spawnables not getting the correct position for being spawned at.

  • Bug Fix: Fixed an issue with Sequence Recorder to record spawn Actors immediately so that they won't be missed if they're deleted before Tick.

  • Bug Fix: Fixed a problem where Sequencer was not updating after toggling Bind Sequencer to PIE/Simulate while PIE is active.

  • Bug Fix: Addressed an issue in Sequencer to find available non-overlapping row index when adding sub-sections.

  • Bug Fix: Fixed an issue with Sequence Recorder to address Level Sequences no triggering when recording. Level Sequences would not get recorded if the World Settings Actor was not recorded.

  • Bug Fix: Fixed an issue in Sequence Recorder causing Editor-only components to be recorded.

  • Bug Fix: Fixed missing display text for audio and video tracks when switching media.

  • Bug Fix: Fixed a slot animation issue where it was not being restored for montages that are recreated during evaluation.

  • Bug Fix: Fixed the import camera in Sequencer so that when new Cameras are created, values from the FBX are going to the newly created Cameras. Also, added Reduce Keys and Reduce Keys Tolerance to import FBX options.

  • Bug Fix: Fixed an issue in Sequencer when exporting unmatched float properties to custom attributes.

  • Bug Fix: Fixed an issue in Sequencer to override the animation asset in the player state if it doesn't match the animation asset being evaluated.

  • Bug Fix: Fixed an issue in Sequencer so that we don't update current time to be within the view range when stepping into a Sequence.

  • Bug Fix: Fixed an issue to skip binding IDs if the Sequence can't be found.

  • New: Added some options to the Curve Editor for Modify Owner Change to the Curve Owner Interface. We call mark as changed when modifying keys or tangents.

  • New: We now add a transaction for easing length.

  • New: Added Copy, cut, paste, and duplicate options to object bindings.

  • New: Added the ability to drag sections up in Sequencer.

  • New: Sequencer can now compile on the fly.

    • It is now able to compile partially or completely out-of-date evaluation templates from the source data as needed. It affords much more efficient compilation when working within Sequencer.

    • The concept of "instance data" for sub-Sequences, available through Movie Scene Player interface or persistent data stores. It replaces the compilation of specific templates for control rig templates.

    • Moved sub-tracks and sections to the Movie Scene module.

    • Removed the concept of shared tracks. Any previous uses should port over to shared execution tokens instead.

  • New: Now automatically create a camera cut track if a camera is dropped and there's no existing camera cut or there's no existing camera cut sections.

  • New: The sub-Sequence name is now displayed on binding ID pickers rather than sub-section name.

  • New: Added an active column for Sequence Recorder.

  • New: Added an option to export an object's transform to a Camera Anim asset.

  • New: We now allow blending for vector tracks.

  • New: Added an option to bake transforms to keys.

  • New: Added configuration for default completion mode for Movie Scene Sequences. The default Level Sequences is Restore State. All others, such as UMG are set to Keep State.

  • New: We now update auto scroll when moving Keys or Sections.

  • New: Added the ability to specify a global transform origin for Level Sequences"

    • It leverages the new concept of specifying an instance data object to the evaluation that allows systems to inject information into a Sequence at runtime, enabling more dynamic control of the track.

    • Level Sequence Actors use this by default to supply a dynamic "transform origin" to all component transform tracks, which all absolute transform sections will be added.

  • New: The constraint guid has been switched to constraint binding ID.

  • New: Playback speed has been added to the settings menu.

  • New: Added recording button to Sequence Recorder that adds for any selected Actors.

  • New: Added option to only show selected nodes only.

  • New: Added option to disable camera cuts on the Movie Scene Player.

  • New: Added icons in Sequencer for Delete and Rename icons.

  • New: Added default expansion states to allow track editors to specify them per track type. Material track is currently the only track that defaults to expanded.

  • Deprecated: We now show binding ID picker customization on all Details panels. This allows creation of new camera cut sections from existing bindings. Add New Camera Cut has been deprecated.

  • Removed: In Sequencer, the hotkeys Shift-C and Shift-D for toggling the Cinematic viewport have been removed. This was causing some confusion when users were accidently hitting them.

Static Mesh Editor

  • Crash Fix: Fixed an Editor crash when a distributed Simplygon job fails.

  • New: Moved the LOD sections dropdown to the LOD picker category. Custom LOD checkboxes are now hidden until "Custom" is checked. The same change applies to the Skeletal Mesh Editor.

  • New: Added LOD menu to viewport toolbar.

World Browser

  • Bug Fix: Fixed issues with re-importing of tiled Landscape data in the Word Composition window.

Gameplay Framework

  • Crash Fix: Fixed a crash in the Get Asset Registry Tags function in Static Mesh that happened when the Find Object function was called during saving.

  • Crash Fix: Fixed a rare crash when child actor components were loaded as part of an async sublevel load.

  • Crash Fix: Servers traveling to a world that shares a name with an Asset will log a warning instead of crashing. The full path to the map file can be used to travel successfully in these cases.

  • Crash Fix: Fixed an initialization crash when using GameplayTags from global singleton objects.

  • Crash Fix: Removed an extra dereference that was causing a crash in the Gameplay Cue Manager.

  • Bug Fix: Added tracking of Idle Seconds to the Performance Data Consumer interface's Frame Data.

  • Bug Fix: Fixed the Load Asset blueprint node so it can be correctly called from a loop with different inputs.

  • Bug Fix: Player Camera Manager's Update View Target Internal function will no longer apply values from Blueprint Update Camera if it returns false.

  • Bug Fix: Fixed an issue where module redirects could cause the Asset Manager to incorrectly allow Primary Assets with the wrong base class.

  • Bug Fix: Fixed several bugs with async loading streaming levels via Streamable Manager, levels loaded this way now correctly handle offsets and navigation.

  • Bug Fix: Disabled the duplicate Primary Asset ID ensure for editor-only types like Maps, as it could activate unnecessarily.

  • Bug Fix: Exporting a Package without a type now adds warnings to the output logs.

  • Bug Fix: Components and Tick functions will no longer be unregistered and re-registered when testing a rename for an Actor.

  • Bug Fix: Modified Gameplay Tag's Import Text Item function to account for redirects when establishing Tag Name.

  • Bug Fix: Fixed character proxies doing up to two floor checks when only rotation is changed (there shouldn't be any). Added some optional verbose logging to the Find Floor and Compute Floor Dist functions.

  • Bug Fix: String allocations are no longer performed on every Server Move function call that the server runs.

  • Bug Fix: A bug with Post Significance not firing when unregistering an object unless it was the last object of its tag has been fixed.

  • Bug Fix: The engine will now only create a Material Instance Dynamic as a child of the calling object if the construction script is running. Otherwise, it will be created in the transient package.

  • Bug Fix: Fixed clients bypassing network move combining and RPC throttling when there is no acceleration and velocity is non-zero (for instance, when falling or decelerating). Changed velocity condition on whether moves may be combined to a delta from or to zero velocity.

  • Bug Fix: Fixed "infinite jump" exploits from rogue clients. The server no longer incorrectly resets the Jump Key Hold Time variable while not changing the Was Jumping variable.

  • Bug Fix: Log Gameplay Tags is now exposed.

  • Bug Fix: Disabled HLOD volume overlap events, and set to not load on client or server.

  • Bug Fix: Optimized client movement to avoid updating skeletal mesh bones on the client when teleporting back to combine a network move to the server. This can be avoided since the following Perform Movement call will move the mesh and cause the update there.

  • Bug Fix: Added stat for Force Position Update (when server ticks client that has timed out) so that it doesn't show up as Perform Movement.

  • Bug Fix: Redirectors or otherwise invalid .umap files are no longer considered sub levels for world composition.

  • Bug Fix: All Actor subclasses now correctly enforce not ticking when tick type is Viewports Only, even if they override TickActor. The Should Tick If Viewports Only function can override this by returning true.

  • Bug Fix: Added several transform related functions to the HIDE_ACTOR_TRANSFORM_FUNCTIONS macro and fixed the signatures on some that were already there.

  • New: Added a new plugin for performing data validation. Data validation can be run on individual assets, multiple assets or whole directories. It can also be run as a commandlet and included in your build process.

  • New: Added a function called Return To Main Menu to the Game Instance class. Games may call function to return to their main menu reliably, even in cases where a Player Controller isn't available to call Client Return To Main Menu With Text Reason.

  • New: Data Tables now support getting the value of each row for a specific column/property, excluding the title of the column.

  • New: Improved the editor UI for Primary Asset ID properties. It now uses the same one as Pins and better handles objects that aren't already loaded.

  • New: Added functions to Spring Arm Component to get relevant status of the collision test.

  • New: Added a To String to the Lex class for physics enums Collision Trace Flag, Physics Type, and Body Collision Response.

  • New: Added "p.NetForceClientServerMoveLossPercent" cvar to simulate loss of client-to-server movement RPCs (without hosing the rest of networking).

  • New: The Player Input function Massage Axis Input can now be overridden in subclasses.

  • New: A new variable, Should Manager Determine Type And Name, has been added to Asset Manager settings. It is disabled by default. If enabled, the Asset Manager will be able to load assets that do not have a native class that implements Get Primary Asset ID, in both the editor and a cooked game. This will behave similarly to Should Editor Guess Type And Name, but in exchange for some runtime performance it will work properly in a cooked build.

  • New: Primary Data Asset can now be directly blueprinted to enable blueprint-only Primary Assets, even if Should Manager Determine Type And Name is disabled. If you do this, the Primary Asset Type will be the blueprint below Primary Data Asset, which you can then inherit from to create your Primary Assets.

  • New: If overrides of Actor Component's Begin Play function are not routed up the hierarchy code, the engine will now use Ensure to warn that initialization steps were missed.

  • New: Alpha Blend struct is now marked as BlueprintType.

  • New: Gameplay Abilities now pass along their Source Object when creating the effect context for a new effect.

    • Consolidated all of the events on Active Gameplay Effect into a single struct.

  • New: Added an active effect event for when the inhibition of an effect changes, meaning that the effect is no longer relevant, but had not actually been removed.

  • New: Added functionality to cycle between targets with Page Up and Page Down for 'showdebug' commands. List of targets is contextual (For example 'showdebug animation' will consider all visible actors with an AnimGraph). Current debug Target is highlighted in a green bounding box.

  • New: Performance optimization: Added Network Skip Proxy Prediction On Net Update to the Character Movement Component. This skips immediate forward prediction for proxies on the frame they receive a network update, avoiding all forward prediction sweeps and floor checks on those updates. Intermediate frames will interpolate with prediction. This can also be disabled globally by setting the CVar "p.NetEnableSkipProxyPredictionOnNetUpdate" to 0.

  • New: Reduced overhead of evaluating streaming level volumes when all Player Controllers have Is Using Streaming Volumes set to false.

  • New: Significance Manager's Update function now takes viewpoints in as an Array View instead of a const Array reference.

  • New: When keys with unknown character code are received by the input system, a new Key struct will now be dynamically created to represent it rather than it being rejected as an invalid key.

  • New: Significance Managers' Post Significance Update functions can now specify to be executed sequentially on the game thread instead of only as concurrently in the parallel for.

  • New: Conditional Init Axis Properties is now protected instead of private, so it can be seen by child classes.

  • New: The Smooth Mouse function is virtual, so games can implement their own smoothing code.

  • New: Added Rand Point In Circle function. It returns a random point, uniformly distributed, within the specified radius.

  • New: Updated ensures to give more information when there is an invalid Ground Movement Mode.

  • New: Added a new trait called Post Script Construct. This enables users to perform initialization after blueprints have created a temporary object.

  • New: Hooked up gameplay tag containers to use Post Script Construct to populate parent tags.

Localization

  • Crash Fix: Fixed a crash if a break iterator outlives ICU during shutdown.

  • Crash Fix: Fixed a crash if a regex pattern or matcher outlive ICU during shutdown.

  • Bug Fix: Translation Editor now shows stale translations as "Untranslated".

  • Bug Fix: Fixed Roboto Light for certain Russian characters.

  • Bug Fix: Gather Text From Source no longer causes the commandlet to fail.

  • Bug Fix: Fixed some case-sensitivity issues with Text format argument names/pins. This change restores their original behavior.

  • Bug Fix: Fixed game preview language not updating from the native text when switching between preview languages.

  • Bug Fix: Fixed game preview language not updating in realtime while PIE was enabled.

  • Bug Fix: Fixed struct instances sometimes gathering text that was identical to a parent instance.

  • Bug Fix: Fixed culture being incorrect when added via the Localization Dashboard.

  • New: Support for culture correct parsing of decimal numbers has been added.

  • New: Implemented Always Sign number formatting option.

  • New: Added an improved Korean font to the editor.

  • New: Added an improved Japanese font to the editor.

  • New: Improved the ability to lockdown available game languages. In addition to the previous "DisabledCultures" array, you can now add an array of "EnabledCultures".

  • New: Added a warning for duplicate package localization IDs when gathering asset localization.

  • New: Added a way to display and reset the package localization ID via the Content Browser.

Networking

  • Crash Fix: Fixed a rare crash that could occur on servers where replicated, placed-in-map actors could be destroyed, and clients could send references to these actors in server function parameters.

  • Crash Fix: Fixed a crash caused by not clearing the send buffer after closing the connection when trying to send data before the handshake is completed.

  • Crash Fix: Fixed a client-side assert when trying to send RPCs while the connection is pending closure due to queued bunches.

  • Crash Fix: Fixed several errors and asserts that could occur when using network encryption.

  • Bug Fix: Removed an ensure that could fire inappropriately in some cases during playback of a replay.

  • Bug Fix: Made a change to TCP Listener to prevent it from polling while waiting for connections.

  • Bug Fix: Fixed an issue where the single process Play-In-Editor dedicated server could tick incorrect objects.

  • Bug Fix: Fixed a replication issue with network startup actors that are renamed on the server.

  • Crash Fix: Fixed a crash that could occur when replicating objects during a Play-In-Editor game.

  • Bug Fix: Steam voice now continues to work after seamless travel.

  • Bug Fix: Changed the adaptive network update frequency option to be disabled by default. This was causing annoying and difficult-to-debug replication artifacts if network update rates weren't managed carefully.

  • Bug Fix: Fixed a socket send bug that could cause large files to fail to transfer from the cook on the fly server.

  • Bug Fix: UDP Messaging serialization notification is now thread-safe.

  • Bug Fix: Fixed a replication checksum issue with Slate brushes.

  • Bug Fix: Added stats to Net Driver's Tick Flush function and analytic stat-gathering blocks within that function.

  • Bug Fix: When a client informs the server that it has loaded a streaming level, we now force a net update on all dormant actors that have, at any point, replicated data to relevant clients and ensure that the connection's destroyed startup/dormant actors list is properly populated.

  • Bug Fix: Fixed an issue that could cause character movement to look jittery in replay playback in some cases.

  • Bug Fix: Fixed a bug that could cause replicated actors that are destroyed while dormant to never be destroyed on clients.

  • Bug Fix: Fixed a server crash that could occur if a client sent a reference to an object who's outer object had already been garbage collected.

  • Bug Fix: GetGameLoginOptions to URL for split screen players was missing, it has now been added for consistency with first player login flow

  • Bug Fix: Fixed a rare server crash when actors in the process of being destroyed could erroneously be re-added to the network object list.

  • Bug Fix: Actors are now removed from all net drivers' object lists instead of just the one matching the net driver name stored on the actor.

  • Bug Fix: Fixed websocket not providing information when the peer closes the connection.

  • Bug Fix: Fixed a rare server crash that could occur if network encryption was in use.

  • Bug Fix: Fixed a rare crash due to a null game mode that could occur when joining a server.

  • New: Added a local file replay streamer that supports playback, recording, compression, and replay events.

  • New: Added a way to view a dedicated server's network stats on a client in realtime (useful for seeing server stats for cloud hosted servers).

    • Changed some server stats to be the total for the server instead of the stats for Connection Zero.

  • New: Added a console command ("net dumpdormancy") to view the dormancy status of Actors. Improved the names displayed when editing Net Dormancy properties.

  • New: Switched property type comparisons from Strings to Names for speed.

  • New: Optimized uint replication by removing unnecessary memory management.

  • New: Optimized updating level visibility state between client and servers. When possible, we now only send a single RPC to communicate which levels are visible or should be visible rather than separate RPCs for each level.

  • New: Added a new console variable net.Max Connections To Tick Per Server Frame, which can be set to limit the number of client connections a server processes every frame. When many clients are connected, this can help maintain the desired framerate on the server.

  • New: Added the ability to disable automatic ping replication to all clients in Player State. This can add up to a lot of CPU and bandwidth overhead with many clients connected, since player states are always network relevant. See the Should Update Replicated Ping variable in the Player State class.

  • New: Added new global network delegates callback Network Cheat Detected for responding when cheating is detected on a server.

  • New: Analytics have been added for oodle compression percentages.

  • New: We now use "-multihomehttp" instead of "-multihome" for routing HTTP sockets.

  • New: Support has been added to Oodle for iOS, Android, and Switch.

  • New: Network optimizations to reduce memory management churn have been implemented, saving about 10% of net tick time.

  • New: Improved handling for "pending connection lost" notification, which is triggered only if a connection is lost and there is no "owning actor" to deal with the connection loss.

    • Added Received Join and Cleaned Up states to connection to make sure that the pending connection lost delegate only fires at the appropriate time.

  • New: Games now receive a notification when the Player State integer unique ID is available.

  • New: The Player class can handle beacon connections calling Exec functions.

  • New: Added the "demo.Loop" console command which will restart playback from the beginning of a replay once the end has been reached.

  • New: Added some additional cycle counter stats in networking code to provide more insight when viewing stat profiles.

  • New: CurlHttp now logs send/response basics at normal Log level, providing a better intermediate log level between Warning and Verbose.

  • New: Added the command-line option "-ExitAfterReplay" to close the client when a replay reaches the end of playback.

  • New: Added verbose http logging to CurlHttp when a request is canceled.

  • New: The "net.UseEncryptionToken" console variable has been renamed to “net.AllowEncryption” and made more robust.

Online

  • Crash Fix: Fixed a crash in web browser module destruction related to the freeing of memory via default destructors after Cef Shutdown has been called.

  • Bug Fix: Dedicated servers will now respect the voice online subsystem override option. Bug Fix: Fixed a thread safety issue in the user cloud interface for Steam.

  • Bug Fix: Fixed LoginFlow module not being included in installed builds of the engine.

  • Bug Fix: Is Server Delegate For OSS can now use the play world during PIE even if no context was passed in.

  • Bug Fix: Failure to load TCP socket library (possibly due to lacking the protocol file) on Windows is now handled by defaulting to IPPROTO_TCP.

  • Bug Fix: The Net Connection variable, Player ID is now set up properly on clients and servers for both beacons and game net drivers.

  • Bug Fix: Improved the way HTTP requests handle timeouts.

  • New: Included a Rich Presence interface to the Steam Online Subsystem.

  • New: Created a test harness for testing an online subsystem's rich presence interface.

  • New: Added embedded browser cookie deletion for Google sign-in when Logout is called.

  • New: Added the ability to retry HTTP operations by VERB. This enables cloud-save PUT operations to retry automatically.

  • New: Removed the "Pragma: no-cache" header from libcurl requests.

  • New: You can now enable libcurl debug callbacks in shipping builds to get more information on libcurl errors.

  • New: Added the ability to update cacert.pem from Curl's website. (https://curl.haxx.se/docs/caextract.html)

Physics

  • Crash Fix: Fixed a crash that would delete max distance mask from a clothing data entry.

  • Crash Fix: Fixed a crash when adding empty materials to destructible meshes in the destructible mesh editor.

  • Crash Fix: Fixed a crash on destroying Physical Animation Component if the scene had gone away.

  • Crash Fix: No longer crashes when switching between clothing assets while painting with a gradient tool that has cached start/end indices.

  • Crash Fix: Opening a physics asset that uses a preview mesh with no skeleton no longer causes a crash.

  • Crash Fix: Fixed a crash that could happen due to outdated rendering data while editing destructible meshes.

  • Crash Fix: Pasting properties in the Physics Asset Editor no longer crashes.

  • Crash Fix: Fixed a crash with destructible components cleaning up physics bodies.

  • Bug Fix: Removed the deprecated Response To Channels property of Body Instance from non-Editor builds to save memory.

  • Bug Fix: Moved constraint and physical anim profile indicators to the top of the details panel.

  • Bug Fix: We now update cloth appropriately in the physics asset editor, so physics can interact in real time with cloth.

  • Bug Fix: Fixed hang when selecting all bodies or constraints in a physics asset.

  • Bug Fix: Copy/paste of physics properties when the skeleton tree has focus now works as expected.

  • Bug Fix: Fixed clothing sphere collision detection issue when clothing bounds are flat or almost flat.

  • Bug Fix: Welded bodies with negative scale now correctly use the mirrored convex hull.

  • Bug Fix: Fixed generation of adjacency buffers for older clothing data.

  • Bug Fix: Fixed 'NODEBUG' option for PVD CONNECT console command (PhysX Visual Debugger). It now (correctly) only sends profile data.

  • Bug Fix: Fixed calling Update Kinematic Bones in Skeletal Mesh Component if there are no physics bodies

  • New: Added "Anim Drive" to clothing assets and runtime interaction for simulations.

  • New: Added gravity override support for clothing simulations.

  • New: Exposed some PhysicsAsset functionality to be more extensible.

  • New: Improved information in Hit Result in case of initial overlap. The Impact Point member variable will now contain information from PhysX on the deepest overlap point.

  • New: Added the ability to profile scene query hitches. (See p.SQHitchDetection in code.)

  • New: Added 'Set Use CCD' function for changing Continuous Collision Detection option at run-time.

Clothing

  • Crash Fix: Fixed a crash in clothing actor creation when the clothing simulation mesh has no simulated vertices.

  • Crash Fix: Fixed a crash when setting a Poseable Mesh Component as the Master Pose Component for a Skeletal Mesh Component that was using clothing.

  • Bug Fix: Fixed non-working tethers in clothing.

  • Bug Fix: Clothing configuration now applies to active simulation after editing.

  • Bug Fix: Fixed and re-enabled accurate wind mode.

  • Bug Fix: Added a clamp to solver frequency to make it impossible to hang the editor with very high clothing solver frequencies.

  • New: Changed "bCompileNvCloth" compile option to use the same pattern as “bCompileAPEX” (on by default, disabled on some platforms). This allows game projects to disable it.

Collision Detection

  • New: Improved "Auto Convex" tool for generating simplified convex collision for meshes.

    • Now uses "Max Hulls" option instead of “Accuracy”.

    • Computation is now done asynchronously.

    • Now using V-HACD version 2.3.

Physics Asset Editor

  • Crash Fix: Fixed a crash undoing primitive regeneration when stopping an in-progress simulation.

  • Crash Fix: Deleting primitives in Physics Asset Editor no longer causes a crash during garbage collection.

  • Bug Fix: Constraint setup shortcuts and body-body collision are now undoable.

  • Bug Fix: Right-click now displays the context menu for constraints correctly.

  • Bug Fix: Fixed dangling lines, poor search focus, and graph not refreshing when making new constraints.

  • Bug Fix: Added warning to "Use Async Scene" property when shown in the physics asset editor if the project doesn't currently use an async scene.

  • Bug Fix: Tweaked physics asset editor viewport tooltip.

  • Bug Fix: Renamed "Create Joints" to "Create Constraints" in Physics Asset Editor.

  • Bug Fix: Fix that now allows edits to physics sim options to be undone/redone.

  • Bug Fix: Constraints are now displayed only once in the physics asset editor tree view.

  • Bug Fix: Fixed not being able to assign/unassign constraint and physical animation profiles from the context menu.

  • Bug Fix: Prevented undo/redo breaking when moving both a constraint and a body at the same time.

  • New: Added "Show Only Selected Constraints" to the physics asset editor.

  • New: Included a keyboard shortcut (Ctrl+T) to toggle between body and constraint selection.

  • New: Added the ability to rename shapes in the Physics Asset Editor.

  • New: Added back constraint shortcut to PhAT toolbar.

  • New: Added error-reporting to the physics profile name widgets.

Platforms

  • Crash Fix: Updated Intel SPC Tex Comp DLLs to address crashes with some processors on Windows during texture compression.

  • Bug Fix: Fixed an issue with vsnprintf on platforms that use the custom implementation found in Standard Platform String to ignore length modifier for certain types (floating point and pointer).

  • Bug Fix: Delete existing Source Config File before allocating a new one to prevent them leaking.

  • Bug Fix: Fixed compile issues in builds without Low Level Memory enabled.

  • Bug Fix: Fixed Update Texture 3D to support source pitch correctly.

  • New: Added missing executable icons for Lightmass and other programs.

  • New: Added a descriptive error message when using an Invalid iOS Mobile Provision.

All Mobile

  • Bug Fix: Fixed an issue for functional code checks being removed for shipping builds in media framework.

  • Bug Fix: Fixed an issue that prevented properly flushable logs from assertions and errors on renderthread for Android and iOS.

  • New: Disabled Niagara vertex factories for mobile targets.

  • New: Disabled manual vertex fetch on mobile.

Android

  • Crash Fix: Fixed crash if quickly clicking on "Configure Now" button in Android Project Settings multiple times.

  • Crash Fix: Fixed a crash in OpenGL Dynamic RHI with Create OpenGL Texture when launching on Mali Galaxy S III.

  • Crash Fix: Fixed a crash on application exit of SPRINGBOARD. The process-exit watchdog transgression found several issues if the game is forced closed when the startup movie is playing and the "Wait for movies to complete" is enabled/

  • Crash Fix: Addressed some crashes related to Experimental Android Virtual Keyboard.

    • Backspace on an empty line would crash.

    • Virtual keyboard text field isn't visible after rotating from landscape to portrait.

    • Chinese and Korean virtual keyboards don't allow native characters.

    • Number pad reverts back to normal keyboard

    • Gboard and Swift swipe entry are not supported.

    • Cursor and UMG do not match.

    • Text field doesn't appear if there was too much text.

  • Crash Fix: Samsung Galaxy S8 with Android 7.0 is not hiding suggestions and disabling predictive input. There are cases with this that can cause a crash. Global solution: On text change, downgrade to simple suggestions all the easy correction spans that are not a spell check span (remove android.text.style.SuggestionSpan.FLAG_EASY_CORRECT flags).

  • Bug Fix: Fixed an issue to properly detect need for rebuilds from the final NDK and SDK levels only in UEBuildSettings.txt.

  • Bug Fix: Fixed Android icon paths.

  • Bug Fix: Fixed polling code in Tcp Message Transport that was wasting CPU cycles when using Launch on an Android device.

  • Bug Fix: Fixed an issue related to Text Watcher On Text Change being called multiple times when typing or deleting the content of a native Android Edit Text control.

  • Bug Fix: Fixed an issue where Android startup movies not always playing.

  • Bug Fix: Fixed an issue with values for pinch input producing very different results for the same area on Android devices:

    • When the pinch goes beyond the viewport boundaries, the touch that goes off-screen is "released" and the zoom effect is over. This is solved by remembering the last pinch event values

    • The initial distance for the pinch/rotate are "hacked" by touching the screen and moving the finger to another position before using the second finger. This is solved by using the correct values when the pinch event starts.

  • Bug Fix: Fixed an issue with Android Web Browser 3D. The external texture was moved from Content Browser to the Web Browser plugin.

  • Bug Fix: Fixed access to Frame Update Info in MediaPlayer14.java and CameraPlayer14.java with Proguard.

  • Bug Fix: Fixed an issue with flag vertex and fragment shaders belonging to materials with external textures.

  • Bug Fix: Protected against asking for duration before prepare completed in movie player.

  • Bug Fix: Fixed support for GL_OES_standard_derivatives on Android.

  • Bug Fix: Fixed an issue so that the relative path to ResonanceAudio_API.xml is accurate.

  • Bug Fix: Fixed an issue with external texture shaders for some devices.

  • Bug Fix: Added missing SecureHash.h include needed for non-unity builds.

  • Bug Fix: Fixed some issues on Lenovo 939 when rendering a simple scene. The shader compiler complained about code lines before the #extension directectives. Added a placeholder ("// end extensions") in the shader code.

  • Bug Fix: Fixed DXT apps that failed on first launch when 'For Distribution' enabled with the error message: "Unsupported Texture Format".

  • Bug Fix: Corrected the code which rounded up the coordinates to the nearest even number.

  • New: Updated Android SDK license agreement for Gradle.

  • New: We now use UPL hash to invalidate build if any UPL files are changed.

  • New: Added a wait for the audio thread to pause audio when going to background.

  • New: Added a new packaging mode for Android:

    • ETC1a, which will compress files with alpha channel as ETC2 and files without alpha channel.

    • At runtime, detection will determine when ETC2 is not supported and will decompress those files.

    • This format will work on all Android devices while using one single compressed texture format, but devices without ETC2 support will have an impact on performance.

  • New: Added support for texture streaming to most Android devices with ES 3.1 support.

  • New: Added verification of support for cooked texture format(s) on device at runtime. (optional with Validate texture formats checkbox in Android project settings and skipped for cook on the fly)

  • New: Added new Android Project Settings to override the NDK and SDK may now be optionally used per-project. Leave them blank to use the global setting in Android SDK Project Settings.

  • New: Added LOD Proxy support.

HTML5

  • Bug Fix: Chrome renders transparent on OSX even though canvas has been set with alpha to false.

    • Note that if backbuffer is needed with alpha values, this will need to be rewritten.

  • Bug Fix: Fixed an issue for "Runtime Error: integer result unrepresentable" compiler error removed the following linker options:

    • -s OUTLINTING_LIMIT flags -s BINARYEN_TRAP_MODE='clamp'

  • Bug Fix: Disabled Support Screen Percentage to render the full screen otherwise. This was causing HTML5 screens to render only a portion of the screen and in black.

  • Bug Fix: Fixed an issue with 2D text rendering.

  • Bug Fix: Fixed an issue so that logs are redirected to the console window instead of "low window".

  • New: Added HTML5 Launch Helper to check to see if the port is already in use and gracefully exit with a message if already in use. .

  • New: Set controller axis and button max value in code instead of relying on emscripten Get Gamepad Status.

  • New: Updated HTML5 readme file with a lot of new and clearer information on files generated, what they are, and how to use the compressed versus uncompressed versions.

  • New: Resurrected vehicle games and removed "IsContentOnly" check during HTML file generation to allow code projects to work again. This corrected optimization suffix for PhysX 3 Vehicles.

iOS

  • Bug Fix: Fixed an issue while remote compiling Metal shaders to now check the connection before starting the compile process.

  • Bug Fix: While Remote Shader Compiling for Metal, the editor no longer spawns and closes a lot of minimized windows.

  • Bug Fix: Fixed an issue to modify the toolchain to insert the correct SDKRoot.

    • XCode address sanitizer feature did not work on iOS. The dylib loader depended on the default SDKROOT parameter.

  • Bug Fix: Fixed local WiFi multiplayer discovery on iOS.

  • Bug Fix: Fixed large Metal texture memory leak when opening card packs.

  • Bug Fix: Fixed a issue causing iOS remote building to fail when the remote mac user name contained a space character.

  • Bug Fix: When building on Mac if no valid provisioning profile and sign in certificate is set up, but the XCode has a correct development wildcard, it will use that wildcard to sign the build.

  • Bug Fix: tvOS now correctly package or launch-on.

  • New: Enabled Avf Media plugin for tvOS.

  • New: Disabled the validation layer in iOS App Store builds for shipping builds.

Linux

  • Crash Fix: Fixed a crash on a headless system.

  • Crash Fix: Fixed a crash when printing %c on Linux, Mac, HTML5 etc.

  • Crash Fix: Made RHI initialization not crash on Mesa drivers.

  • Crash Fix: Pop-up a message box when unable to launch ShaderCompileWorker instead of crashing.

  • Crash Fix: Disabled some unstable gdb visualizers that can crash the debugger.

  • Crash Fix: Fixed an edge-case initialization crash (will print a user-friendly message and exit).

  • Crash Fix: Fixed the Editor crashing on start if compiled with a recent (5.0+) clang.

  • Crash Fix: Fix an audio clean up crash when exiting PIE.

  • Bug Fix: Fixed the Setup.sh handling of special characters in PNG path.

  • Bug Fix: Fixed UBT to invoke newer (supported) clang versions.

  • Bug Fix: Fixed libelf breaking build if some third party libs are used.

  • Bug Fix: Remove unneeded dependency on CEF for base engine.

  • Bug Fix: Fixed mismatching "noperspective" qualifier.

  • Bug Fix: Fixed Linux thread/process priorities (requires system settings to allow raising them).

  • Bug Fix: Fix priority calculation when RLIMIT_NICE is not 0.

  • Bug Fix: Fixed the Output Device Std Output function to use printf() on Unix platforms. Mixing wprintf/printf is undefined behavior.

  • Bug Fix: Fixed the unnecessary test for popcnt presence.

  • Bug Fix: Fixed compilation with glibc 2.26+ (e.g. Ubuntu 17.10).

  • Bug Fix: Fixed Slate Dialogs to show image icon for *.tga.

  • Bug Fix: Fixed submenus of context menu not working.

  • Bug Fix: Fixed RHI settings being wrong when removed via project properties UI.

  • Bug Fix: Fixed the inability to click on some UI elements at the edges of the screen due to tooltip windows obscuring it.

  • Bug Fix: Made UBT use response files for the Linux compiler (avoids MAX_PATH issues when cross-compiling).

  • Bug Fix: Fixed symbol interposition problems with both AMD and NVidia drivers.

  • Bug Fix: Fixed ARB callback errors when hitting Build Lighting.

  • Bug Fix: Fix shadow compiler warnings around our includes.

  • Bug Fix: Do not assert on an unimplemented function, just log the function.

  • Bug Fix: Set sound to unfocused volume multiplier if not focused.

  • Bug Fix: Open project in the file explorer when finished creating it if the Null Source Code Access is the default source code editor

  • Bug Fix: Fixed inability to create C++ projects on Linux despite being able to compile the editor.

  • New: Updated Linux VHACD.

  • New: Added LTO support.

  • New: Enabled DPI on/off switch.

  • New: Changed BinnedAllocFromOS to place descriptor after allocated chunk instead of in front of it to save some memory.

  • New: Re-enabled index buffer optimization. It was disabled due to problems found in the live release.

  • New: Added build-id to all binaries to improve lldb startup times.

  • New: Vulkan RHI will default to SM5

  • New: Updated OpenAL to 1.18.1.

  • New: Use elementary OS versions to set the Ubuntu versions for dependencies.

  • New: Use Xft.dpi when calculating DPI on Linux.

  • New: Rebuild libcurl 7.57.

  • New: Added detection and messaging when building lighting is impossible due to local network interface problems.

  • New: Add better error handling when using new Toolchain for Linux on Windows.

  • New: Add Alembic (*.abc) support

  • New: Added fixes to make porting to gcc easier.

  • New: Included VSCode in the list of default project generators.

  • New: Implemented voice capture using SDL.

  • New: Recompiled the bundled SDL library with Wayland support.

  • New: UBT will use compiler response files when compiling for Linux.

  • New: Enabled pooling of memory allocations (only 64KB allocations) on servers.

  • New: Added LTO support to the Linux cross-builds (requires v11 and newer toolchain).

  • New: Enabled packaging for Android Vulkan.

  • New: Added a message about running out of inotify handles a warning instead of error so it doesn't break cooking.

  • New: Added better error messaging when running out of inotify watches.:

  • Removed: Removed the support for /-prefixed command line switches.

Mac

  • Crash Fix: Fixed a rare crash caused by a deferred call to Close Window function executing during Slate's PrepassWindowAndChildren call.

  • Crash Fix: Fix a crash when using VOIP on Mac.

  • Crash Fix: Fixed a crash in Avf Media Player related to reusing an Avf Media Player object.

  • Crash Fix: Fixed a crash on destroying certain menus in an animation persona window.

  • Bug Fix: Fixed a problem with Xcode project generator not handling quoted preprocessor definitions correctly.

  • Bug Fix: Fixed a problem with IME not working in context menu text edit fields.

  • Bug Fix: Disable Zoom button if project requests a resizable window without it.

  • Bug Fix: Fixed header search paths in XCode project for paths containing space character.

  • Bug Fix: Fixed an issue with creating an NSString for the Low Level Output Debug String. The string can just be printed out as a UTF-8 string.

  • Bug Fix: Fixed a C++ std in generated Xcode project to match rest of engine (C++14).

  • Bug Fix: Fixed an issue with some context menus opened right after closing other context menu disappearing right after being shown.

  • Bug Fix: Don't activate Mac Crash Reporter Client on launch when it's running in unattended mode.

  • Bug Fix: Fixed a small number of persistent memory leaks on the Mac build that slowly consume more and more memory as you use the Editor. Interacting with menu's was particularly egregious as each NSMenu would leak after you move away.

  • Bug Fix: Fixed a problem with Mac editor not exiting with error code returned from Guarded Main function.

  • Bug Fix: Better support for GPUs with 4GB or more of video memory.

  • New: Updated Xcode project generator to sort projects in the navigator by name (within folders) and also sort the list of schemes so that their order matches the order of projects in the navigator.

  • New: Changed XCode project to automatically build ShaderCompileWorker in addition to the selected target for non-program targets.

  • New: Added initial support for building and running Niagara.

  • New: Added support for changing monitor's display mode on Mac in fullscreen mode. This greatly improves performance on Retina screens when playing in resolutions lower than native.

Windows

  • Bug Fix: Switched Windows to use wprintf() consistently.

  • Bug Fix: Fixed an issue with Windows file save dialog not appending the correct extension when there were multiple options available.

  • Bug Fix: Fixed an issue with custom window positions in "windowed mode".

Programming

  • New: Minimized number of fractional digits you can have in a resultant string while using FString::SanitizeFloat, defaulting to 1. Setting this to 0 prevents adding '.0' to integers.

  • New: Added ‘.idea/misc.xml' file generation to speed up CLion indexing.

  • New: Added option to generate minimal set of targets for CMake files.

  • New: Added shader and config files to CMake file generation for searching in IDEs.

  • New: Added icon size override to FObjectEntryBox.

  • New: Added CMAKE_CXX_COMPILER and CMAKE_C_COMPILER settings to generated CMake files.

  • New: Removed deprecated version of RHISetStreamSource.

  • New: Optimized hlslcc to use hashes instead of lists with hash bucket sizes being prime.

  • New: When generating CMake files on Mac, added support for iOS and TVOS targets.

  • New: Merged CLion source code access Plugin support.

  • New: Reduced calls to malloc by using larger memory blocks for hlslcc Type allocation pools.

  • New: Optimized hlslcc memory allocation policy on Mac, resulting in 34% faster and 83% cheaper memory moves.

  • New: Added basic support for hotfixing live assets from .ini files.

Rendering

  • Crash Fix: Fixed a Metal shader standards iOS crash when users would try to load a project that tries to use an incompatible shader version.

  • Crash Fix: Disable the METAL_SM5_NOTESS shader platform again to workaround the Nvidia pipeline state compiler crash by changing the buffer address space from "constant" to "device".

  • Crash Fix: Fixed a crash on D3D12 when locking buffers for read access.

  • Crash Fix: Resolved an intermittent crash in the MetalRHI by retaining the bound Render Targets until we bind something else.

  • Crash Fix: Developed a workaround for a crash on fullscreen startup in packaged builds of Showdown for Mac.

  • CrashFix: Fixed a crash in Metal on one kind of draw call when tessellation is enabled.

  • Crash Fix: Fixed crash when building Texture Streaming in the resave package commantlet.

  • Crash Fix: Attempt to reduce the number of crashes on Nvidia Macs by retaining resources used in each command-buffer.

  • Crash Fix: Fixed a crash in the MetalRHI when using dithered LODs caused by one of the fragment shaders not declaring any explicit outputs.

  • Crash Fix: Fixed a crash in projects that used Distance Field Shadowing when Static Meshes were updated while not yet registered with the level.

  • Crash Fix: Doubled the size of the occlusion query buffer in D3D12, to 256KB of memory, to prevent crashes in larger levels.

  • Crash Fix: Fix for Intel HD 4000 crashing on Mac OS 10.12.6.

  • CrashFix: Fixed a crash when calling the "FreezeRendering" console command on non Editor builds.

  • Crash Fix: Fixed crash when scaling a Blueprint with a Planar Reflection component.

  • Crash Fix: Fixed issue where FOpenGLDynamicRHI RHISetRenderTargetsAndClear function would crash when the render target did not have a color binding.

  • Bug Fix: Fixed Alembic Geom Cache no longer rendering correctly.

  • Bug Fix: Fix the Intel vector-array-dereference workaround so that it doesn't cause the AMD compiler to explode instead.

  • Bug Fix: Fixed the way iOS version specific Metal features are enabled to avoid an overflow bug that meant some weren't being enabled.

  • Bug Fix: Removed support for Metal Shader Model 4 on Mac.

  • Bug Fix: Fix compilation on HLSLCC with integral values are not automatically converted into comparisons with zero.

  • Bug Fix: Fixed the normalization of Morph Tangents.

  • Bug Fix: Tweaked Metal GPU identification so that it works with eGPU boxes and prototype hardware.

  • Bug Fix: Implement Byte Address Buffer RWByte Address Buffer in HLSLCC in a similar manner to Structured Buffer RWStructured Buffer so that the backends don't need too much modification.

  • Bug Fix: Enabled the ability to use GPU morph targets on Mac.

  • Bug Fix: Fixed RHI thread and parallel execution in Mac -game mode.

  • Bug Fix: DX11 Texture formats are now supported on Mac Metal.

  • Bug Fix: Fixed long standing bug in OpenGL Vertex Declaration cache with hash collisions in the cache sometimes returning the wrong declaration.

  • Bug Fix: Fixed Material events not showing up in RenderDoc.

  • Bug Fix: Fixed Anisotropic Filtering not working on Vulkan.

  • Bug Fix: Memory is no longer reallocated on every Vulkan draw call.

  • Bug Fix: Stopped memory leak from MTL Textures missing autorelease pool blocks in Metal Texture functions.

  • Bug Fix: Fixed Metal compilation for PCSS shadows.

  • Bug Fix: Fixed comparison of Scene Color Format.

  • Bug Fix: Fixed incorrect handling of some float to uint shader loads in Metal.

  • Bug Fix: Reduce the number of Metal PCH shader compiler errors by using atomic file operations.

  • Bug Fix: Changed the Metal sampler filter translation to better match Direct3d.

  • Bug Fix: Shared Texture samplers are now refreshed when changing Max Anisotropy level.

  • Bug Fix: Fixed a bug where Static Meshes were being added to the scene twice when in Simple Forward rendering was enabled.

  • Bug Fix: Fixed the native shader libraries again & undo.

  • Bug Fix: Removed the single linear array for accumulated shader code.

  • Bug Fix: Uncompress the shader data for the native library system.

  • Big Fix: Fixed an errant change to the Metal compiler that was trying to force the fully compiled library into the single Metal library.

  • Bug Fix: Fixed up the internal validation layer in MetalRHI which can now be enabled from the OS command-line.

  • Bug Fix: Fixed condition controlling which features are enabled when iOS >= 10.3.

  • Bug Fix: Errors from failed attempts to compile global shaders are now reported correctly. This information enables us to identify the causes of these failures on non-Windows platforms.

  • Bug Fix: Fixed Texture resolution returning 0 when running Blueprint Construction scripts when cooking.

  • Bug Fix: We can now handle swizzle's in the HLSLCC FMA identification pass so that we reduce the number of instructions and the platform compiler can't break the instructions up.

  • Bug Fix: Developed a work around two different bugs with Metal shader compilation behavior that caused black flickering when a material used World Position Offset.

  • Bug Fix: Metal Shader Format will no longer fallback to text shaders when you ask it to compile to bytecode but the bytecode compiler is not available (either locally or remotely).

  • Bug Fix: Metal can now render patches as well as triangles when tessellation is enabled.

  • Bug Fix: Add the ability to emit more details when a pixel shader is found to have no outputs at all.

  • Bug Fix: Fixed image plates not showing up in high resolution screenshots.

  • Bug Fix: VIS_Max meta is now set to hidden.

  • Bug Fix: Fixed Distance Field Ambient Occlusion not working on Metal platforms.

  • Bug Fix: Changed Metal pipeline bindings warning to Verbose.

  • Bug Fix: Prevented an unnecessary red<->blue swap in FVulkan Dynamic RHI RHI Read Surface Data function when reading back a surface in VK_FORMAT_R16G16B16A16_SFLOAT format.

  • Bug Fix: Fixed non-deterministic locations of procedurally placed Landscape grass on different platforms and compilers.

  • Bug Fix: Fixed huge client hitch when applying changes to rendering scalability settings while in game.

  • Bug Fix: Stopped MetalRHI leaking vertex-descriptors and debug-group strings.

  • Bug Fix: applied a fix to runtime error with textures being loaded from bulk data when texture streaming is disabled.

  • Bug Fix: Removed faulty ensure in the texture streaming code.

  • Bug Fix: Fix on D3D12 for CPUs with more than 16 cores.

  • Bug Fix: Added support for Vulkan devices that don't support cached memory type.

  • Bug Fix: Fixes for UScene Capture Component Hidden Actors always staying gray out in World Editor.

  • Bug Fix: Fixed Recompute Tangents and Skin Cache on OpenGL 4.

  • Bug Fix: Fixed OpenGL sometimes overwriting resources if too many were bound on OpenGL 4.

  • Bug Fix: Fixed Metal support for Manual Vertex Fetch by making it a property of the shader platform.

  • Bug Fix: Fixed tessellation shader capability initialization in OpenGL renderer.

  • Bug Fix: Fixed instancing in Vulkan.

  • Bug Fix: Fixed Skeletal Mesh LODs inside editor.

  • Bug Fix: Fixed loading shaders from the cooked DDC.

  • Bug Fix: Planar Reflections now properly handle world origin rebasing.

  • Bug Fix: Fixed initialization of instancing random vertex stream.

  • Bug Fix: Using the -opengl command line argument will now default OpenGL to 4.3.

  • New: Added a recompute Tangents options for cloth assets.

  • New: Updated Nvidia Ansel to v1.4

  • New: Added a new console-variable to enable and disable Manual-Vertex-Fetch for Metal. MVF works on macOS, though testing did expose an error with Tessellation on Nvidia (true for MVF enabled & disabled).

  • New: Refactored the way we compile Buffer and RW Buffer types for Metal so that we can support the type-conversion semantics of HLSL/D3D.

  • New: Manual Vfetch for Static Meshes. Skeletal Meshes also use the new layout.

  • New: Added code to D3D11RHI (enabled with "-d3ddebug") to validate Draw Indexed Primitives isn't trying to draw off the end of the instanced vertex streams.

  • New: Added Get Section From Procedural Mesh utility function for the Procedural Mesh Component.

  • New: Added support for 2D IES asymmetrical light profiles that can be up to 256x256 in size.

  • New: Added support for linear HDR EXR output from Sequencer.

  • New: More Metal debugging commandline options "-metalfastmath" & "-metalnofastmath" to force fast-math on or off for all shaders, must be using runtime-compiled shaders (i.e. -metalshaderdebug or r.Shaders.Optimise=0) to take effect.

  • New: Added support for Nvidia Aftermath v1.3.

  • New: New cvar r.ForceStripAdjacencyDataDuringCooking that will strip adjacency data from all Skeletal and Static meshes during cooking.

  • New: ViewToClipNoAA added to uniform shader parameters. This allows "After Tonemapper" post process blendables that can be positioned in view space when using temporal AA.

  • New: Added Render Target Pool Stats. Use "stat render target pool" to view.

  • New: Added support for Speedtree 8.

  • New: Update to AGS v5.1.1 support.

  • New: Changed IES texture brightness to be the max candela value and set the texture multiplier to 1.

  • New: Made major changes on how Vulkan manages its descriptor pools.

  • New: Support for DX11 quad buffer stereo rendering.

  • New: Added unified present threshold console variables between all supported platforms.

  • New: Added RHI Command List Enqueue Lambda method which can be used to enqueue arbitrary tasks on the RHI thread from the render thread without having to write lots of boilerplate FRHI Command functor classes.

FX

  • Bug Fix: Fixed texture streaming with particle Subuv.

  • New: Implemented a fast particle pool memory which default is 2MB and automatically cleans up oldest used pool slots.

Lighting

  • Bug Fix: Fixed Lightmass correctness issues so that, Point, Spot, Directional and Skylights more closely match reference renderer.

  • Bug Fix: Removed legacy fudge factor on point / spot light photon energy * Spotlights no longer emit based on indirect photon paths.

  • Bug Fix: Added the ability to enable LPVs for Mac Metal.

  • Bug Fix: Integrated the LPV_STORE_INDEX_IN_HEAD_BUFFER related changes from Lionhead to make Light Propagation Volumes potentially viable on non-Microsoft platforms.

  • Bug Fix: Created Stat Map Build Data to track the memory size of lighting and reflection capture build outputs.

  • Bug Fix: Added support for Reflection Captures to support Lighting Scenarios without the need for recapturing.

  • Bug Fix: Reflection Captures are now part of the Map Build so modifying a Reflection Capture in Editor will display a preview, but game can only display built captures (black for unbuilt with screen message) *

  • Bug Fix: Moved Reflection Capture build data to the Build Data package so building lighting / Reflection Captures no longer dirties U Levels.

  • Bug Fix: Added the ability for Skylights which capture the scene to work correctly with Lighting Scenarios.

  • Bug Fix: Lighting Scenarios must now be loaded for each time they are made visible no switching back and forth while keeping both loaded.

  • Bug Fix: Exposed the Emissive Boost, since Lightmass supports Emissive areas on Static Meshes.

  • Bug Fix: Added the ability for Translucency lighting modes to work with Volumetric Lightmaps to give the lighting much more accuracy.

  • Bug Fix: Added A Volumetric Lightmap Density Volume which gives local control over Volumetric Lightmap density.

  • Bug Fix: Volumetric Lightmap no longer refines around static translucent geometry.

  • Bug Fix: Reworked brick culling by error mechanism which now compares error to interpolated parent lighting instead of the brick average.

  • Bug Fix: Added Lightmap Type to Primitive Component.

  • Bug Fix: Added new property, Force Volumetric which allows forcing Static Geometry to use Volumetric Lightmaps.

  • Bug Fix: Added Force Surface which replaces b Light As If Static Improvements to Volumetric Lightmap quality needed for static geometry.

  • Bug Fix: Fixed Stationary light shadowing so it is now dilated when inside geometry.

  • Bug Fix: Added refinement around geometry which uses an expanded cell bounds when the geometry is going to use Volumetric Lightmaps, since cross-resolution stitching causes leaking.

  • Bug FIx: Added a New World Settings Lightmass property, Volumetric LightmapSphericalHarmonic Smoothing, which controls the global amount of smoothing applied.

  • Bug Fix: Hidden levels now keep their last build data when using lighting scenarios. Fixed light build bug where hidden levels affected volumetric lightmaps.

  • Bug Fix: Prevent an assert from firing when LPV Intensity is saved to a value of 0.0.

  • Bug Fix: Fixed instanced static mesh lightmaps when using lighting scenarios.

  • New: Added a intensity units property, for Point and Spot lights, that can be set to Candelas, Lumens or Unitless (as before).

  • New: Added r.Capsule Direct Shadows and r.Capsule Indirect Shadows for more specific scalability control over capsule shadow features.

  • New: Added a Lighting Feature show flags for RTDF shadows and Capsule Shadows.

  • New: Capsules Shadows are now disabled on the lowest shadow scalability quality.

  • New: Added Forward shadowing of Directional light for Translucency Static shadowing and added CSM supported with minimal filtering (1 PCF) Deferred renderer. This affects Translucency using 'Surface Forward Shading' lighting mode while the Forward renderer affects all translucency.

  • New: Volumetric fog is now always interpolated in the Pixel shader, since per-vertex interpolation gives consistently poor results.

  • New: Added a checkpoint for Screen Shadow Mask Texture, allowing Vis Screen Shadow Mask Texture.

Materials

  • Bug Fix: Return error for external texture if not used in pixel shader

  • Bug Fix: Fixed vertex interpolator node when used with sprite and gpu particle materials.

  • Bug Fix: Fixed an issue where media textures that were referenced by a material and then later associated with a media player by a blueprint would fail to render media

  • Bug Fix: Fixed a bug where renaming a parameter in a material using functions would sometimes reset the value in child instances.

  • Bug Fix: Fixed texture streaming issue when the camera FOV is reduced by gameplay (like when using a weapon scopes)

  • New: Added a Channel Mask material parameter, changeable at runtime and returns the selected channel of it's input.

  • New: Material Layers experimental enable flag has moved to Rendering > Experimental > Support Material Layers.

Mobile Rendering

  • Bug Fix: Cancelled the applied exposure scale with planar reflections for non-hdr mobile

  • Bug Fix: Added half float -> float conversion for static vertex buffers when device does not support half float vertex attributes.

  • Bug Fix: Fixed ES2 issue reading from a render target in float format for BGRA8888 when the glReadPixels() call fails

  • Bug Fix: Provided an implementation of round() under GLES2 when the shader compiler does not provide it

  • New: Added GLES3.1 compatibility mode for mobile preview to the windows Open GLRHI.

  • New: Changed the way Manual Vertex Fetch is enabled on Metal platforms so that it is enabled when targeting Metal v1.2 and higher (macOS 10.12+/iOS 10+).

  • New: Pass project defined maximum CSM count to mobile CSM shaders.

  • New: Added CSM distance fading for mobile.

  • New: Add mobile CSM shader culling for movable directional lights.

Optimizations

  • Bug Fix: Vulkan descriptor pools are now allocated per PSO instead of globally to reduce peak mem consumption and fragmentation (enabled on Windows only).

  • Bug Fix: Reduced Vulkan saved pipeline cache file size by filtering duplicated shader SPIRV.

  • Bug Fix: Fixed Actors with HLOD parent primitives not having synchronized visibility with their parent.

  • Bug Fix: Improved consistency of HLOD transitions by using the distance to the closest point on the AABB instead of distance to the origin of their bounding sphere.

  • Bug Fix: Applications using OpenGL now properly discard copy of vertex and index buffers in memory once they are uploaded to GPU.

  • New: Added new command "stat Streaming Overview" giving high level metrics of Texture usage.

  • New: Added optional support for compressing saved Vulkan PSO cache with r.Vulkan.Pipeline Cache Compression.

  • New: Added Shader compiling memory optimizations to reduce memory and time it takes to re-compile Editor shaders.

  • New: Removed read / write locks from PipelineStateCache, Estimated half time on the main thread for PipelineStatecache operations. Introduces duplicate which are cleaned up at end of frame. Slightly higher memory overhead.

  • Optimized the texture streaming update loop when using a many small levels in big worlds.

  • New: Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero, which leaves the current behavior of auto-sizing up to configured maximum, as needed.) This can be used to avoid costly hitches when resizing the distance field in projects with large numbers of actors.

  • New: Added new "r.HLOD.DistanceOverride" CVar, which can be used to force all HLODs to transition at a specific distance, regardless of the individual cluster's settings. Defaults to zero (off).

  • New: Added new options to HLOD settings to strip adjacency and distance fields from generated meshes.

  • New: Added new CVar for adjusting view distance scale, which is not affected by scalability settings

  • Depreciation: Removed deprecated Lightmap UV Bias, Shadow Map UV Bias from Instanced Static Mesh Component.

Post Processing

  • Bug Fix: Fix the black ground scattering on Metal by ensuring that input into abs() is non-negative for atmosphere rendering.

  • New: Added color grading control Blue Correction to correct for artifacts with "electric" blues due to the ACEScg color space.

  • New: Added color grading control Expand Gamut which expands bright saturated colors outside the sRGB gamut to fake wide gamut rendering.

  • New: Implemented a SSR input Post Process Material location to compose linear color space backplate after TAA for next frame's SSR.

Tools

  • Crash Fix: Fixed a crash when attempting to move windows in VR Mode.

  • Bug Fix: Fixed an issue where the Selection Laser is detached from the controllers in VR Mode.

  • Bug Fix: ASTC texture versioning is now corrected.

  • Bug Fix: Fixed an issue reporting some files did not copy to the device while those files were not actually needed.

  • Bug Fix: Fixed an issue where SSH Key was failing to generate when the remote Mac user contained a space character.

  • Bug Fix: Fixed memory corruption that could occur when using the Open Level dialog.

  • New: Added Post Process preview in the Material Editor viewport.

  • New: Reduced memory requirements of many graph related classes by storing data as FName instead of FString.

  • New: Added support for Debug Symbols (.udebugsymbols) files generated for iOS builds to be used for memory debugging with the Memory Profiler 2 tool.

AutomationTool

  • Bug Fix: Fixed parallel executor getting the working directory from task element, not tool node.

  • Bug Fix: Fixed an issue to no longer produce access violations when creating an installed build of the Engine when running the Automation Tool directly, rather than using the Automation Tool Launcher.

  • Bug Fix: Fixed one CPU core spinning during compilation using Parallel Executor. This was due to Completed Event never being reset.

  • Bug Fix: Fixed the ability to distribute app-local dependencies with games packaged using the launcher UE4 distribution.

  • Bug Fix: App-local dependencies now work for C++ and Blueprint projects.

  • Bug Fix: Fixed a race condition where stdout/stderr write handles could be inherited by multiple processes, resulting in them not being closed (and the process exit being detected) until all processes that inherited them had been closed. This improves performance of Parallel Executor.

  • New: Added support for external projects with new parameter to "List Third Party Software". The parameter -ProjectPath specifies the path to the UProject file so that the build rules of the project are parsed and the folder is part of the search for Third Party Software files.

  • New: Lowered logging level for cached file notification during Cook from Warning to Verbose in order to reduce clutter in the logs.

  • Removed: Code that deletes cooked data on a failed cook has been removed because deleting the cooked data prevented post-mortem analysis. The Engine now writes out packages transactionally by writing to a temporary file and moving them into place.

  • Removed: Code that executes pre-built steps from UE4Build have been removed. These build steps should be executed before generating the action graph. So, they have to be done inside of Unreal Build Tool. Running them here causes them to execute twice.

BuildGraph

  • New: Added an example script for building the Editor and Game targets for a project, and submitting the binaries to source control.

  • New: Improved error reporting when compiling a C# project with an invalid reference.

  • New: Added an task for compiling MSBuild projects.

Network Profiler

  • New: The Network Profile is now 64 bit and the solution has been converted to VS2015 and are now about 6% smaller.

  • New: Added a checkbox above the connections list that will select or deselect all connections in the Network Profiler.

UnrealBuildTool

  • Bug Fix: Fixed an issue causing Unreal Build Tool on Mac to not use makefiles which made the time it needed to determine what needs to be compiled and linked longer than on other platforms.

  • Bug Fix: Fixed some errors encountered when cleaning a target now cause an error code to be returned.

  • Bug Fix: Fixed the command line arguments -monolithic and -modular to now be parsed correctly.

  • Bug Fix: Fixed the include paths ending with a backslash that were escaping the closing quote when passed on the command line.

  • Bug Fix: Fixed post-build steps for plugins not being executed.

  • Bug Fix: Output subfolders are no longer being appended twice when generating project files if set by a target. This was causing incorrect command lines when launching from Visual Studio.

  • Bug Fix: Fixed batch file paths not being quoted correctly when running through XGE.

  • Bug Fix: Fixed issues where Includes with backslashes were causing an unhandled exception on a background thread in UnrealBuildTool.

  • Bug Fix: Fixed Version and Module files not being included in the output manifest. This fixes missing version information when using precompiled binaries in UGS.

  • New: UnrealBuildTool now passes the "/d2cgsummary" flag to the Visual C++ compiler when running with the -Timing argument.

  • New: Added include and library-related fields to module JSON output.

  • New: VSWHERE is now used to find the location of MsBuild.exe if available.

  • New: Improved error handling while generating intellisense project files. It now includes the name of the target being compiled and allows project file generation to continue without it.

  • New: The Module Rules "Definitions" property has been renamed to "Public Definitions", to make its semantics clearer. A complementary "Private Definitions" property has also been added.

  • New: UnrealBuildTool now validates that targets don't modify properties that affect other targets. For example, modifying global definitions for an Editor target, where other Editor targets may use the same engine DLLs).

  • New: Added the build version to the Target Rules and Read Only Target Rules class, allowing it to be read from the target and module rules files.

    • Changed Launch.build.cs to set private defines for the build changelist in non-formal builds. This allows the version to be set correctly with executables copies to console.

    • Modular builds on desktop platforms still read the Version file from disk since it's quicker than compiling a value in. They need the build ID to prevent mismatched binaries.

  • New: Version files are only generated for non-promoted builds, and are included in the target receipt.

  • New: Added a proper error message if the user attempts to clean a target through hot-reload, rather than just failing to delete DLLs because they are locked.

  • New: Added a logging option to format output messages in a form that can be parsed by MSBuild. This prevents errors showing as "EXEC: Error:", and displays them correctly in the error list window.

  • New: Unreal Build Tool will now use the preferred source code accessor selected in the editor to compile with, if an explicit compiler is not specified in the Project Settings.

  • Deprecated: Unified command line arguments now use the -Name=Value syntax. The following are no longer supported:

    • -Module

    • -ModuleWithSuffix

    • -Plugin

    • -Receipt

  • Removed: UDN documentation source files are no longer included in the generated project files by default.

UnrealGameSync

  • Bug Fix: Fixed an issue so that the project filename is now included in the Editor build command. The project may not be in one of the .uprojectdirs paths.

  • Bug Fix: Fixed an issue where the "More Info..." button was not using P4 server override.

  • New: UProject and UPlugin files are now treated as code changes. This change was made since they can invalidate the Editor target.

  • New: Added an in-place error panel to show when a project fails to open. This enables the user to retry and have their tabs saved instead of creating a modal dialog.

UnrealVS

  • New: Added Log GenerateProjectFiles to file when using Unreal VS.

UI

  • Crash Fix: Fixed a line-ending inconsistency when retrieving rich-text that could cause Input Method crashes.

  • Bug Fix: Fixed some clipping issues that could occur with right-aligned text.

  • Bug Fix: No longer include trailing whitespace in the justification calculation for soft-wrapped lines.

  • Bug Fix: Fixed incorrect text selection when selecting via double-click beyond the bounds of the line.

  • Bug Fix: Special case zero-width space in the text shaper to avoid fonts rendering the fallback glyph.

  • New: Added support for displaying and editing numbers in a culture-correct way.

    • Numeric input boxes in Slate will now display and accept numbers using the culture correct decimal separators.

    • This is enabled by default, and can be disabled by setting Should Use Localized Numeric Input to False in the XEditorSettings.ini (for the editor), or XGameUserSettings.ini (for a game).

  • New: Added support for a catch-all fallback font within composite fonts.

    • This allows you to provide broad "font of last resort" behavior on a per-composite font basis, in a way that can also work with different font styles.

  • New: Added support for per-culture sub-fonts within a composite font.

    • This allows you to do things like create a Japanese specific Han sub-font to override the Han characters used in a CJK font.

  • New: Safe Area is no longer centered or symmetrical. The UI will use the Safe Area reported by the OS.

  • New: Added Editable Text functionality.

Slate

  • Crash Fix: Fixed a crash when trying to use the widget reflector in a client cooked build.

  • Bug Fix: Fix for accessing Slate window on render thread.

  • Bug Fix: Updated Scroll Descendant Into View to account for situations where there are widget(s) between the target widget and the scroll panel, causing the widget geometry position to be incorrect.

  • Bug Fix: Fix slate material box brushes not being keyed off image size.

  • Bug Fix: Added conditional to only unregister the active timer if it is still valid after execution.

  • New: Slate now supports a Custom Boundary Navigation type which allows a custom handler if the boundary is hit.

    • This provides the ability to have normal navigation while within the boundary and the custom function only on the boundary.

    • This differs from Custom, which is a full override of the navigation behavior.

UMG

  • Crash Fix: Fixed a crash on compile due to partial GC of a widget.

  • Crash Fix: Implemented a fix for a crash when playing in editor after changing, but not compiling, a Widget Blueprint.

  • Crash Fix: Calling Find All Ancestor Named Slot Host Widgets For Content with a null widget no longer crashes.

  • Crash Fix: When the widget passed to Scroll Widget Into View is null no longer crashes.

  • Bug Fix: Fixed an issue where instanced properties on User Widgets might not be properly serialized.

  • Bug Fix: Fixed paused state so that it doesn't return widgets to their original state.

  • Bug Fix: UMG objects returned from Create Widget and Create Drag Drop Operation are no longer marked as always being hard referenced by the blueprint.

    • This means that they will no longer leak if they are not in use.

    • If the widget or drag operation are on screen they will correctly stay in memory, but if you need them not to be freed for other reasons, you can assign them to a blueprint variable.

  • Bug Fix: Fixed Additive UI materials not being affected by the widget opacity.

  • Bug Fix: Common Activatable Panel does a better job of cleaning up when it is reset.

  • Bug Fix: Common Tree View Set Selection correctly updates list navigation and behaves similarly to Common List View Set Selected Item.

  • Bug Fix: Fixed Common Buttons sending OnClicked events while not interactable.

  • Bug Fix: UMG Designer now refreshes the widget preview even if the dragged widgets are dropped in an invalid location.

  • Bug Fix: Implemented a fix for large numbers of unused variables being added to the widget blueprint when the widget hierarchy was changed.

  • New: Exposed the virtual keyboard dismiss action to UMG.

  • New: Added Auto Wrap Blueprint-callable function to Text Block.

  • New: Now able to set escape keys and no key specified text on Input Key Selector.

VR

  • Crash Fix: Fixed a crash that could occur when increasing and then decreasing screen percentage in the editor's VR preview.

  • Crash Fix: Fixed a bug on Gear VR that could cause the app to crash or hang when invoking the system quit menu.

  • Crash Fix: Fixed a crash that could occur on Oculus when creating a layer surface likely from a bad graphics state.

  • Crash Fix: Fixed a crash that could occur on Gear VR when using more than four stereo layers.

  • Bug Fix: Prevented the Front Buffer surface on Gear VR from needlessly updating. This improves performance.

  • Bug Fix: Fixed a perf regression introduced in 4.17 on Oculus platforms, where operating on the HMD was slowed by a superfluous module check.

  • Bug Fix: Motion Controller Component cleanup should now be in Begin Destroy and not Destructor.

  • Bug Fix: Moved View Extension cleanup to Begin Destroy from the Destructor.

  • Bug Fix: Fixed Google Cardboard rendering upside down on some iOS devices.

  • Bug Fix: Fixed an issue with the Google VR controller model laser pointer portion wasn't rendering.

  • Bug Fix: Prevented the editor's camera from locking after playing in Google VR instant preview.

  • Bug Fix: Set the default value of CVar "vr.HiddenAreaMask" back to one, meaning that it is enabled by default.

  • Bug Fix: Fixed a bug causing world-locked stereo layer positions to be wrong on SteamVR when there was a camera component representing the HMD.

  • Bug Fix: Oculus Go touchpad event is now properly handled.

  • New: VR Screen Percentage Refactor to support new upsample and Dynamic Resolution rendering features.

  • New: Added new Visualization settings to Motion Controller components.

  • New: You can now input "bSupportsDash" under the [Oculus.Settings] heading in your engine config files to enable Oculus Dash support.

  • New: Added a render event name for the Oculus Rift's eye padding draw

  • New: New code path for deciding whether to add a post processing pass for HMD distortion has been simplified to happen only in a single place.

  • New: Allow VR plugins to have multiple viewports and rotated eye orientations.

  • New: Added a new Controller model for the Oculus Go controller.

  • New: Added several Oculus specific functions that can be accessed through Blueprint.

  • New: Enabled the debug canvas layer by default for the console command window on Gear VR and Google VR.

XR

  • Bug Fix: Fixed a bug with Oculus, that caused the tracking origin to be reset on startup.

  • Bug Fix: Fixed a visual bug that could produce a strobe effect with lighting when using the VR preview in editor.

  • Bug Fix: Fixed a soft assert that would trigger when exiting the editor's VR preview on Oculus.

  • Bug Fix: Disable Mobile Multi-View when running with Google cardboard.

  • New: Added a new Blueprint function that supplies a tracking-to-world space transform.

  • New: Added an option to Motion Controller components to display an optional model (see the Display Device Model option in the component's details). This can be set up to generically use the device model provided by the backing XR system (if the system has one).

  • New: Added new Blueprint functions to generically enumerate tracked devices, and another to request a model component from the backing XR system (NOTE: at the moment, not all systems support returning a model).

  • New: Added a "MotionDelayBuffer" service to the engine that hooks into Motion Controller components, and lets programmers render the components at a delayed rate (to simulate latency).

  • New: The XR Tracking System and Head Mounted Display interfaces have been updated to make handling of pose updates and late update more explicit.

  • New: Added a new function to convert poses from XR tracking space to Unreal world space.

  • New: Changed Motion Controller "Hand" property to a more generic “MotionSource” name field, and added a function to query for generic float parameters associated with the Motion Controller.

  • New: Added new Blueprint node for getting the current VR pixel density.

  • New: Refactored the Rift dynamic resolution implementation to use the new general Dynamic Resolution State interface.

  • Deprecated: XR Tracking System interface function Refresh Poses has been deprecated.

UPGRADE NOTES

Animation

Animation Blueprints

  • Bug Fix: We changed the order of how to get the material default value. Previous implementation was to get parent's default value first before itself, which was incorrect, so we fixed it by getting own default value if exists. However, if you were relying on the previous behavior, you're going to see the issue. Make sure you set correct default value for the material instance if it was incorrect.

  • Bug Fix: If this code executes (it will add a log warning if it does) it could cause problems with deterministic cooking / patch creation as new guids will be generated during cook. Nothing will break but patch sizes could be bigger than they need to be. Re-saving the problematic assets will correct the issue.

Skeletal Mesh

  • The function name of SkeletalMeshComponent::PostBlendPhysics() has changed to FinalizeAnimationUpdate() for clarification.

Blueprints

  • New: Step Into has been remapped to the F11 key. The Step Over command is now mapped to F10 instead.

  • User Defined Structure default values now correctly propagate to blueprints and other user structs the same way that native structs do, which may cause issues if your blueprints were depending on this not happening. If this is a problem you may need to modify your outer blueprint or struct and set some values back to empty or 0.

Core

  • VisitTupleElements has had its parameters swapped - the visitor is now the first parameter, followed by the tuple (now multiple tuples). Any existing calls will need to swap arguments.

  • FPlatformAtomics::AtomicRead64() has been deprecated - the int64* overload of FPlatformAtomics::AtomicRead() should be used instead.

  • The bWasReloaded flag was removed from FModuleManager::LoadModule(), FModuleManager::LoadModuleChecked() and FModuleManager::LoadModuleWithFailureReason() - any calls to it should also remove this flag.

  • TWeakObjectPtr's constructor was silently casting away const - this has now been fixed and any use of TWeakObjectPtr will now warn if it is not const-correct.

  • UE4 containers now expect move-aware allocators, which means they need to support the MoveToEmpty(SrcAllocator) member function to move all elements across from SrcAllocator, leaving it empty. Any custom allocators should be updated to add this support and specialize the TAllocatorTraits::SupportsMove trait to be true.

  • FArchive::Logf() and checkf() macros will now fail to compile if they are not passed a literal formatting string - these should be fixed to use a formatting string like TEXT("%s").

  • If you have any build scripts that were looking for DevelopmentAssetRegistry.bin or other metadata files you will need to change them to look inside the new Metadata directory.

  • Code using PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS or PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES should be replaced with the assumption they are always 1.

  • ENamedThreads::RenderThread and ENamedThreads::RenderThread_Local are no longer publicly accessible - they should be replaced with ENamedThreads::GetRenderThread() and ENamedThreads::GetRenderThread_Local() respectively.

  • TVariant::GetType() now returns an EVariantTypes enum class instead of an int32. Any use of this return value as an int32 will need to be changed to EVariantTypes.

  • Bug Fix: PPF_DeltaComparison has been removed - please remove any use of it from your projects.

  • Bug Fix: Calls to Align(), AlignDown(), AlignArbitrary() and IsAligned() will no longer compile if passed a non-integer/pointer type. This often fires when trying to align an enum value - it should be explicitly cast to an integer type of the right size.

  • Bug Fix: Calling FReferenceCollector::AddReferencedObjects() with a container will no longer compile if the container has pointers to forward declared types. You should ensure the types are included before calling this function.

Editor

  • The debug canvas for stats is always dpi scaled in editor and pie. Any existing tools that directly use viewport positions and size as positions for canvas elements will need to divide out dpi scale using 1/CanvasObject->GetDPIScale().

  • Bug Fix: Note: This only applies to perforce users NOT using ticket based perforce servers.

The perforce source control login flow will no longer make any calls to the perforce api which results in a password being stored on the local users machine by perforce. We have determined that the security level of this feature is not high enough to continue using it. Users can now expect to have to type in their perforce password each time they open the editor. To work around this users can call p4 passwd directly from a command window to save a password on their machine if they so choose.

Sequencer

  • 'Shared' templates are no longer supported in sequencer. Any previous usage should be easily converted to a shared execution token instead (FMovieSceneExecutionTokens::AddShared()). Such tokens are shared globally, rather than per sub-sequence which makes them more robust for shared responsibilities.

Gameplay Framework

  • Bug Fix: AActor subclasses that intended to be tick when the tick type is Viewports Only and did not set ShouldTickIfViewportsOnly to return true, but instead overrode TickActor and did not filter on Viewports Only will now need to correctly implement the ShouldTickIfViewportsOnly virtual to achieve this behavior.

Networking

  • UNetConnection::ClientWorldPackageName is now a private member and should accessed through the available Get/Set methods.

  • Bug Fix: The net.UseAdaptiveNetUpdateFrequency console variable is now disabled by default, since it was causing replication issues in many projects. If you want to keep using this feature, you may enable it in your project's configuration files.

Rendering

  • We changed the Vertexbuffer layout from AoS to SoA because after this change we can bind the Input Attributes via SRV and load them in the shader directly (also from compute). Before this change it was very difficult and involved manual interpretation of the Raw Data in the Shader. We recommend everyone to follow this route and change their Vertexbuffers as we probably will deprecate mixed AoS Vertexbuffers in the Future.

  • Tube shaped point lights will be automatically rotated to compensate for this change. Dynamically generated point lights with a source length will need to have a 90 degrees pitch added to their orientation.

  • Inside Sequencer->Render->CompositionGraphOptions Set Output Format to "Custom Render Passes" Set Include Render Passes to "Final Image" Set Capture Frames in HDR "On" Set Capture Gamut to "Linear"

UI

UMG

  • Bug Fix: If a game was depending on this functionality to keep things loaded, change your blueprint to set the return value into a variable, that will keep it hard referenced normally

XR

  • Deprecated the MotionController component's EControllerHand 'Hand' property and replaced it with a 'MotionSource' name. To support the same functionality, use names corresponding to the old enum values ("Left", "Right", etc.).

  • vr.oculus.PixelDensity.adaptive has been removed. Dynamic resolution needs to be enabled using the general engine system now.

PROGRAMMING UPGRADE NOTES

AI

  • Bug Fix: Fixed a bug in UAISense_Sight::UnregisterSource that resulted in sources being removed not getting removed from the ObservedTargets collection.

Debugging Tools

  • Redone how visual log is using categories. Now it's using FName rather than FLogCategoryBase to indicated log category. All UE_VLOG macros have been updated. This change made it possible to actually vislog things using blueprint functions.

  • Bug Fix: Fixed navmesh not loading properly in PIE when owning world has been duplicated-for-play

Animation

  • Bug Fix: Now when meshes are set to EMeshComponentUpdateFlag::AlwaysTickPose, we optionally kick of a task to perform parallel update only (no evaluation). Previously we needed to run this on the game thread as if we skipped evaluation we did not run a worker task.

Audio

  • New: The new Microphone Capture Component enables feeding audio directly into a game for use with the Audio Engine and for driving in-game parameters. Limitations:

    • Only implemented on PC.

    • Only for local client microphone capture, not connected to VoIP system.

    • Doesn't support recording microphone output to assets.

Automation

  • Added automated test per-platform blacklist, defined in the project DefaultEngine.ini or platform equivalent e.g. MacEngine.ini:

    [AutomationTestBlacklist] ;Use format +BlacklistTest=(Map=/Game/Tests/MapName, Test=TestName) +BlacklistTest=(Map=/Game/Tests/Physics/Stability, Test=StackCubes)

  • Automated test screenshots are now able to test against a hierarchical fallback platform and RHI. This is defined in DefaultEngine.ini, for example:

    [AutomationTestFallbackHierarchy] ;Use format +FallbackPlatform=(Child=/Platform/RHI, Parent=/Platform/RHI) +FallbackPlatform=(Child=/Windows/OpenGL_SM4, Parent=/Windows/D3D11_SM5) +FallbackPlatform=(Child=/Mac/SM5, Parent=/Windows/D3D11_SM5)

Core

  • Any usage of FStartupPackages in project code should be removed

  • "Native" (now called “FNativeFuncPtr”) is now a function pointer that takes a UObject* context, rather than a UObject member function pointer. Use “P_THIS” if you were previously using the “this” pointer in your native function.

  • FTickableBaseObject::GetTickableType can be overriden and returns an enum value of either Conditional (default), Always, or Never.

    • Tickable Never objects will not get added to the tickable array or ever evaluated.

    • Tickable Always objects do not call IsTickable and assume it will return true.

    • Tickable Conditional objects work as in the past with IsTickable called each frame to make the determination whether to call Tick or not.

  • FTickableObjectBase::IsTickable() is no longer a pure virtual.

  • To match the change in functionality EResourceSizeMode::Inclusive was changed to EstimatedTotal. If any of your code was using Inclusive, you need to decide whether you want to change to EstimatedTotal or Exclusive.

  • The ResourceSize asset registry tag has been removed as it was inaccurate. To get an accurate estimate, you must load the object and call GetResourceSize().

  • Bug Fix: Cleaned up delegate definitions in UObjectGlobals.h and moved several to be WITH_EDITOR. If you were using those definitions in a game you will need to wrap your use in WITH_EDITOR.

Editor

  • Being an early feature, some Editor UI buttons do not work during playback of demos.

  • The debug canvas for stats is always dpi scaled in editor and pie. Any existing tools that directly use viewport positions and size as positions for canvas elements will need to divide out DPI scale using 1/CanvasObject->GetDPIScale().

  • RenameAssetsWithDialog() is often recommended in places where RenameAssets() was being used.

  • The SizeMap and ReferenceViewer have been merged into the AssetManagerEditor plugin so they can share the data needed to show cooked sizes.

Gameplay Framework

  • C++ Header cleanups for Actor, Pawn, Character, Controller, and PlayerController. Marked several fields as private that were accidentally exposed in 4.17.

  • Projects using this plugin are strongly encouraged to add a project specific subclass of UDataValidationManager. Any objects that require validation should override IsDataValid.

  • Overriden versions of USignificanceManager::Update will need to change signature to receive a TArrayView instead of const TArray&.

Networking

  • Bug Fix: Programmers using HasPendingConnection() on a listening FScocket should consider using the new WaitForPendingConnection() function instead, which prevents wasting CPU cycles due to polling. This change supported a change to the behavior of the FTcpListener constructor's InSleepTime parameter which now specifies the maximum time to wait for a connection in its polling loop. It now defaults to 1 second, but using a value of 0 will restore the previous polling behavior.

Online

  • This Online Presence Test requires that the testing user to have friends and be connected to the platform. Usage is "online test presence [OPTIONAL ID]". The ID passed should be an arbitrary non-friend. If no ID is passed, the arbitrary lookup test is skipped. This test does wait for presence updates for about two minutes, after this time if no updates are received, the harness will mark the test as a failure.

Rendering

  • The STRONG_TYPE #define now seen in UE4 .usf/HLSL is actually hlslcc's "invariant" keyword applied as a type-qualifier to a Buffer<>/RWBuffer<> type - only valid when using Metal which exports this through ILanguageSpec and #define'd out for everyone else. When this is applied the MetalBackend will emit a "raw" buffer whose type must match the shader exactly, which avoids the overheads of Linear-Textures & Function-Constants.

  • Vertexbuffer Objects now bind their SRVs directly instead of filling out a StreamDescriptor. Care must be taken when the Vertexfactory is initialized before the VertexBuffer as the bound SRV will become invalid if the underlying vertexbuffer is re-created. We do not support late binding of the data anymore.

Mobile Rendering

  • Removed cvar "r.AllReceiveDynamicCSM" and primitive flag “FPrimitiveSceneProxy.bReceiveCombinedCSMAndStaticShadowsFromStationaryLights”. Added “FPrimitiveSceneProxy.bReceiveMobileCSMShadows”, which now applies to both stationary and movable lights and defaults to on.

Tools

  • UEdGraphPin::PinCategory, UEdGraphPin::PinSubcategory, and UEdGraphPin::PinName are now stored as FName instead of FString. UEdGraphPin::CreatePin has several simplified overrides so you can only specify Subcategory or SubcategoryObject or neither. UEdGraphPin::CreatePin also takes a parameter bundle for reference, const, container type, index, and value terminal type rather than a long list of default parameters. Material Expressions now store input and output names as FName instead of FString. FNiagaraParameterHandle now stores the parameter handle, namespace, and name as FName instead of FString. Most existing pin related functions using string have been deprecated.

UI

Slate

  • Renamed FTextBlockLayout to FSlateTextBlockLayout to reflect that it's a Slate specific type

XR

  • If you maintain a VR or AR plugin, you will have to remove your RefreshPoses() override and move any late update functionality to OnBeginRendering_RenderThread/GameThread(). Alternatively, if your plugin does not support late update, you can remove RefreshPoses() completely and override DoesSupportLateUpdate(), returning false.

    • Added two methods to the IXRTrackingSystem API - GetTrackingToWorldTransform() and UpdateTrackingToWorldTransform(). GetTrackingToWorldTransform() is expected to return an transform that will convert poses from GetCurrentPose() into world space. UpdateTrackingToWorldTransform() is meant for users to override the transform since the anchor between the two spaces is controlled by the project.

    • MotionControllerComponents' 'Hand' property is no longer available. Instead, switch to using the new 'MotionSource' field with text names matching the old enum values ("Left", "Right", etc.). For ease of use, "Left" and "Right" are predefined in FXRMotionControllerBase (as LeftHandSourceId & RightHandSourceId).

    • Replaced EControllerHand parameters in the IMotionController API with generic "source" name parameters. To handle backwards compatibility, use name values corresponding to the old enum ("Left", "Right", etc.).

    • Added two new functions to the IMotionController API - EnumerateSources() & GetCustomParameterValue(). Use EnumerateSources() to return a list of the supported devices (replaces the static EControllerHand enum). GetCustomParameterValue() can be used to expose float values associated with the motion device (such as FOV with cameras, etc.).

VR

  • The GetHMDDistortionEnabled method on IHeadMountedDisplay how takes a single argument of type EShaderPath. If you maintain a custom HMD plugin, you will need to update your method signature.

DEPRECATIONS

Automation

  • UFunctionalTestingManager::RunAllFunctionalTests has dropped an unused parameter. The original version is now deprecated.

Core

  • Removed the PLATFORM_HAS_64BIT_ATOMICS macro, as it is always 1.

  • Deprecated the VARARG macros and replaced them with variadic templates.

Editor and Tools

  • Deprecated Material Baking functionality inside of the MaterialUtilities module. Users should use the functionality provided by the Material Baking module instead.

Gameplay Framework

  • Add APlayerController::ClientReturnToMainMenuWithTextReason to support an FText reason parameter so that the message can be localized. Deprecated APlayerController::ClientReturnToMainMenu.

Rendering

  • The Editor is now only supported on Feature Level 5 platforms. Feature Level 4 platforms (D3D10, OpenGL3) are no longer supported.

Materials

  • Material Layer experimental support feature, Shared Input Collection and associated material graph nodes have been removed. See the forum feedback thread for more insight.

Tools

UnrealBuildTool

  • The bOutputToEngineBinaries flag has been removed from the target rules. The output directory for targets is always determined by the location of that target.

XR

  • The IHeadMountedDisplay::GetHMDDeviceType() method has been removed as it was not extensible enough. Code that needs know which XR plugin is currently active should use IXRTrackingSystem::GetSystemName() instead.

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼