언리얼 엔진 4.21 출시
2018년 11월 7일

언리얼 엔진 4.21 출시

저자: Jeff Wilson

새 소식

언리얼 엔진 4.21 은 모든 플랫폼에서 모든 프로젝트의 효율, 퍼포먼스, 안정성을 지속적으로 추구해 왔습니다. 사용은 쉽게, 작업은 똑똑하게, 제작은 빠르게 해주는 툴로 상상의 나래를 마음껏 펼칠 수 있습니다. 개발자의 높은 기준을 충족시킬 때까지 모든 플랫폼에서 철저한 테스트를 거친 엔진이므로, 프로젝트를 대중에 공개할 때면 반짝반짝 빛날 것입니다.

개발자가 의미있고 재미있고 매력있는 경험을 만드는 데만 집중할 수 있도록, 항상 일상적인 작업의 효율을 높일 수 있는 방법을 찾고 있습니다. 업계를 선도하는 나이아가라 이펙트 툴셋이 더욱 강력하고 사용하기 쉬워져 차세대 실시간 비주얼 이펙트를 꿈꿉니다. 이제 리플리케이션 그래프 기능을 실제 제작에 사용하여 전에는 불가능했던 스케일의 멀티플레이어 환경을 구축 할 수 있습니다. 콘텐츠 쿠킹 속도가 최대 60% 향상 되는 최적화 덕에 반복작업이 빨라지고, 새로운 Gauntlet 자동화 프레임워크로 테스트를 자동화하여 문제를 찾아내고, 애니메이션 시스템, 블루프린트 비주얼 스크립트, 시퀀서 등 여러가지 사용 편의성이 개선되어 일상적인 작업의 효율이 높아집니다.

언제 어디서 누가 무엇으로 접하든, 여러분 작품의 의도를 그대로 전할 수 있도록 노력합니다. 이전 출시 버전을 기반으로 포트나이트 Android 및 iOS 버전 개발에 사용된 최적화를 한층 더 최적화 하여 모바일 디바이스용 앱 개발 프로세스를 더욱 향상시켰습니다. 베타로 사용할 수 있는 픽셀 스트리밍 기능은 렌더링 퀄리티 타협도 진입 장벽도 없이 웹 브라우저에 앱을 디플로이 하는 새 지평을 엽니다. Linux 는 물론 증강/가상/혼합 현실 디바이스에 대한 지원도 개선했습니다.

에픽의 모든 업데이트 외에도 이번 출시 버전에는 GitHub 의 엄청난 언리얼 엔진 개발자 커뮤니티가 제출한 개선 사항이 121 종 포함되어 있습니다! 언리얼 엔진 4.21 에 기여해주신 모든 분들께 감사드립니다.

Aaron Franke (aaronfranke), Adam Rehn (adamrehn), Adrian Courrèges (acourreges), aladenberger, Alan Liu (PicaroonX), Cengiz Terzibas (yaakuro), Cerwi, Chris Conway (Koderz), cmp-, Damianno19, Deep Silver Dambuster Studios (DSDambuster), Dorgon Chang (dorgonman), DSCriErr, Dzuelu, Eliot (BillEliot), Erik Dubbelboer (erikdubbelboer), fieldsJacksonG, Franco Pulido (francoap), Frank Stähr (phisigma), George Erfesoglou (nonlin), Hao Wang (haowang1013), Henri Hyyryläinen (hhyyrylainen), Homer D Xing (homerhsing), IlinAleksey, Jacob Nelson (JacobNelsonGames), Jerry Richards (r2d2Proton), Jesse Fish (erebuswolf), Josef Gluyas (Josef-CL), Joshua Harrington (thejhnz), Kalle Hämäläinen (kallehamalainen), KelbyG, Layla (aylaylay), LizardThief, Lucas Wall (lucaswall), Mai Lavelle (maiself), malavon, Marat Radchenko (slonopotamus), Marat Yakupov (moadib), Marco Antonio Alvarez (surakin), Markus Breyer (pluranium), marshal-it, Martin Gerhardy (mgerhardy), Mathias Hübscher (user37337), Michael Kösel (TheCodez), Morva Kristóf (KristofMorva), Muhammad A. Moniem (mamoniem), Nick Edwards (nedwardsnae), nrd2001, Oliver (oliverzx), phoenxin, projectgheist, Rene Rivera (grafikrobot), Rick Yorgason (Skrapion), Riley Labrecque (rlabrecque), Sahil Dhanju (Vatyx), Sam Bonifacio (Acren), scahp, Sébastien Rombauts (SRombauts), Tom Kneiphof (tomix1024), Troy Tavis (ttavis), Truthkey, UristMcRainmaker, Wiktor Lawski (wlawski), yhase7, Zeno Ahn (zenoengine)

주요 기능

나이아가라 플랫폼 지원 및 사용 편의성 개선

업계 최고의 이펙트 툴을 제공하려는 지속적인 노력의 일환으로, 나이아가라에 확장된 피처 세트와 개발자를 위한 편의 기능뿐 아니라, 이제 Nitendo Switch 에도 나이아가라 이펙트가 지원됩니다!

 

나이아가라의 GPU 전용 텍스처 샘플링

이제 파티클 스크립트에서 2D 텍스처 또는 모의 볼륨(pseudo-volume) 2D 텍스처를 샘플링 할 수 있습니다! 씬 캡처 액터를 사용하여 씬의 깊이, 색, 노멀 정보 렌더링과 같은 놀라운 이펙트를 만들고, 그 정보를 사용하여 나이아가라 파티클 시스템에서 환경을 재구성하여 파티클의 위치 및 운동 에너지를 이미시브 라이트로 시각화할 수 있습니다.

콘텐츠 예제 프로젝트의 Niagara 레벨에서 이 기능 작동 방법을 살펴보세요!

나이아가라 스켈레탈 메시 데이터 인터페이스 개선

스켈레탈 메시 데이터 인터페이스에 새로 생긴 함수를 통해 스켈레탈 메시의 버텍스 데이터 샘플링은 물론 스켈레탈 메시의 본이나 소켓에도 직접 액세스할 수 있습니다.

리본 파티클 퍼포먼스 향상

리본은 이제 CPU 가 아닌 GPU 에 리본 지오메트리를 생성하여, 전반적인 퍼포먼스가 향상됩니다.

나이아가라에 GPU 시뮬레이션 지원

이제 나이아가라 이펙트의 GPU 시뮬레이션이 모바일 이외 모든 플랫폼에 지원됩니다.

시스템 및 이미터 생성 단순화

나아이가라에 친근한 대화창이 추가되어 시스템 및 이미터 생성이 쉬워졌습니다! 엄선된 템플릿 세트에서 이미터와 시스템을 새로 생성하여 팀 전체의 개발 속도 향상과 모범 사례를 구축 할 수 있습니다.

 

 

 

 

 

진자 컨스트레인트

진자(Pendulum) 컨스트레인트는 물리적인 힘, 옵션으로 스프링 구동력, 위치 에너지 계산을 포함한 솔버입니다. 이제 에너지가 지정한 한계치를 넘어가면 상속된 속도로 파티클을 스폰하는 것과 같은 흥미롭고 역동적인 이펙트를 만들 수 있습니다.

모듈 추가 및 개선

  • 데스 이벤트를 생성하고 받습니다.
  • 질량을 여러 모듈로 분해하는 중입니다.
  • 개선된 스켈레탈 메시 데이터 인터페이스 보완을 위해 SampleSkeletalMeshSkeleton, SampleSkeletalMeshSurface, SkeletalMeshSkeletonLocation, SkeletalMeshSurfaceLocation (스켈레탈 메시 스켈레톤/표면 샘플링, 스켈레탈 메시 스켈레톤/표면 위치) 모듈을 추가했습니다.
  • AddVelocityInCone (원뿔형 속도 추가) 모듈을 추가했습니다.
  • Force (힘) 모듈을 추가했습니다. FindKineticAndPotentialEnergy (운동 위치 에너지 찾기), GravityForce (중력), SpringForce (스프링력)과 함께 다른 힘에도 여러가지 사용 편의를 위한 조정 옵션을 추가했습니다.
  • KillParticlesInVolume (볼륨의 파티클 킬) 모듈을 추가했습니다.
  • SpriteRotatationRate (스프라이트 회전 속도) 모듈을 추가했습니다.
  • RecreateCameraProjection (카메라 투영 재생성) 모듈을 추가했습니다. 렌더 타깃과 카메라 트랜스폼을 사용하여 씬 캡처를 디폼 가능 파티클 시스템으로 변환합니다.
  • 텍스처 샘플링 모듈을 추가했습니다. SamplePseudoVolumeTexture (모의 볼륨 텍스처 샘플링), SampleTexture (텍스처 샘플링), SubUV_TextureSample (SubUV_텍스처 샘플), WorldAlignedTextureSample (월드 평행 텍스처 샘플) 입니다.
  • 임시 보간 및 프레임 카운터용 유틸리티 모듈을 추가했습니다.
  • 동적 입력 및 함수를 여럿 추가했습니다.

리플리케이션 그래프

Replication Graph (리플리케이션 그래프) 플러그인으로 대규모 멀티플레이어 게임 제작을 위한 네트워크 리플리케이션을 사용자 정의 할 수 있습니다. 기존의 리플리케이션 전략으로는 불가능했던 일입니다. 예로 에픽게임즈의 포트나이트 배틀 로얄은 매치마다 플레이어 100 명으로 시작하며 리플리케이트되는 액터 수는 약 5만 개입니다. 리플리케이트되는 액터 각각이 연결된 클라이언트 전체에서 업데이트 여부를 결정해야 한다면, 서버 CPU 퍼포먼스에 끼치는 영향은 어마어마할 것입니다.

리플리케이션 그래프 플러그인은 대규모 멀티플레이어 게임에 특화된 대안 전략으로 이 문제를 해결합니다. Replication (리플리케이션) 노드에 액터를 할당하면, 여기에 미리 계산한 정보를 저장하고 업데이트가 필요한 액터 목록을 구할 때 사용하는 식으로 매 프레임 여러 클라이언트에 같은 데이터를 재계산하는 CPU 비용을 절약합니다. 엔진 출시에 포함된 표준 노드에 추가로, 개발자는 별도의 노드를 작성하여 게임 내 액터의 요구를 맞출 수 있습니다.

모바일 플랫폼 출시용 최적화

포트나이트를 Android 에 처음 출시하기 위해 개발한 모바일 최적화는 물론 iOS 도 지속적으로 업데이트한 덕분에 모바일 개발 프로세스가 훨씬 편해졌습니다!

Android 에서 Vulkan 지원 개선

삼성의 도움으로 언리얼 엔진 4.21 에는 포트나이트를 삼성 갤럭시 노트 9 에 출시하기 위해 이루어진 모든 Vulkan 엔지니어링 및 최적화 작업이 포함되어 있으며, OpenGL ES 3.1 피처와 100% 호환됩니다. 프로젝트에 Vulkan 을 활용하면 OpenGL ES 를 사용했을 때보다 실행 속도가 최대 20% 빨라집니다.

Android 구성 규칙 시스템

Android Config Rules (구성 규칙) 시스템은 프로젝트 시작 프로세스의 이슈를 초기에 잡을 수 있는 툴입니다. 디바이스 지원 사항을 빠르게 검사하여, 구버전 드라이버 또는 지원하지 않는 GPU 와 같은 이슈를 발견하면 사용자에게 경고 또는 오류 대화창으로 알려줍니다. 설정된 변수에 대한 쿼리도 나중에 C++ FAndroidMisc::GetConfigRulesVariable(TEXT("variablename")) 로 할 수 있습니다.

이 시스템 사용 방법은, configrules.txt 규칙 파일을 프로젝트의 Build/Android 디렉터리에 선택적으로 배치하면, UPL (언리얼 플러그인 언어)를 사용하여 Gradle 태스크를 추가하고, 이 태스크는 구성 규칙 툴을 사용하여 APK 패키징 도중 압축 및 선택적으로 암호화합니다. 자세한 내용은 문서를 참고하세요.

Android 용 프로그램 바이너리 캐시

Program Binary (프로그램 바이너리) 캐시를 사용하면 셰이더 로드 퍼포먼스 향상은 물론 Android 디바이스에서 셰이더 로드로 인한 멈춤 현상도 줄일 수 있습니다. 프로그램 바이너리 캐시 작동 방식은 디바이스에 셰이더 프로그램의 최적화된 바이너리 표현을 생성해 두고 실행 도중 셰이더를 로드할 때 사용합니다. 최적화된 바이너리에서 셰이더 프로그램을 로드하면 셰이더 로드 시간을 크게 줄일 수도 있습니다. 프로그램 바이너리 캐시는 Shader Pipeline (셰이더 파이프라인) 캐시 툴과 같이 사용해야 하는데, 앱 첫 실행 도중 프로그램 바이너리 캐시를 생성을 위해서입니다. 프로젝트에 프로그램 바이너리 캐시를 활성화하려면, AndroidEngine.ini 또는 디바이스 프로파일에 다음 줄을 추가합니다.

  • r.ProgramBinaryCache.Enable=1

참고: 필수 프로그램 바이너리 익스텐션을 지원하지 않는 디바이스에서는 예전 방식으로 대체됩니다.

Android 의 에뮬레이티드 유니폼 버퍼

이제 OpenGL ES3.1 피처 레벨 대상 프로젝트에 Emulated Uniform Buffers (에뮬레이티드 유니폼 버퍼)를 사용하면, 앱 복잡도에 따라 엄청난 메모리 사용량 감소와 렌더링 퍼포먼스 향상 이 가능합니다. 에뮬레이티드 유니폼 버퍼는 프로젝트 패키지를 만들 때 GPU 로 전송할 데이터 크기를 줄이는 최적화도 되어있습니다. OpenGL ES3.1 피처 레벨을 사용할 때 에뮬레이티드 유니폼 버퍼를 활성화하려면, 프로젝트의 DefaultEngine.ini 에 다음과 같이 추가합니다.

[/Script/Engine.RendererSettings]
OpenGL.UseEmulatedUBs=1

Android 에서 스레드 선호도 제어

구성 규칙 시스템은 제공된 리틀 코어 선호도(affinity) 마스크 사용 여부를 등록할 수 있습니다. 활성화하면, 다음 스레드는 리틀 코어를 사용하여 퍼포먼스는 고르게 만들고 배터리 수명은 길어집니다. 빅/리틀 코어 전환을 하지 않아 렌더, 풀, 태스크그래프, 통계, 태스크그래프 백그라운드, 비동기 로드 도중 발생할 수 있는 멈춤 현상을 방지합니다. 셋업 방법 관련 자세한 내용은 구성 규칙 문서를 참고하세요.

모바일에서 GPU 파티클 시뮬레이션 퍼포먼스 향상

파티클 시뮬레이션에 GPU 를 활용하는 모바일 파티클 이펙트가 크게 개선되었습니다. 이제 시뮬레이션에 사용할 수 있는 파티클 최대 개수를 제한하여 GPU 파티클 시뮬레이션에 드는 메모리를 줄이는 옵션이 생겼습니다. 기본적으로 동시 시뮬레이션 가능한 GPU 파티클 최대 개수는 약 백만 개로 설정되어 있으며, 사용하는 메모리는 32 MB 정도입니다. 프로젝트의 DefaultEngine.ini 에 다음 줄을 추가하면 사용할 파티클 최대 개수를 조정할 수 있습니다.

[/Script/Engine.RendererSettings]
fx.GPUSimulationTextureSizeX=512
fx.GPUSimulationTextureSizeY=512
  • 512 에서 256 로 낮추면 메모리 사용량은 8 MB 정도로 줍니다.
  • 위의 SimulationTextureSize (시뮬레이션 텍스처 크기)는 2의 거듭제곱이어야 합니다.
  • 이 개선 사항은 ARM Mali GPU 를 사용하는 디바이스에서 특히 두드러집니다.

디더링된 LOD 전환

이제 Dithered LOD (디더링된 LOD) 전환이 모바일 플랫폼에 지원됩니다. 활성화하면, 머티리얼에 Dithered LOD transitions (디더링된 LOD 전환) 옵션이 활성화된 머티리얼을 가진 오브젝트는 거의 끊어짐 없이 한 레벨 오브 디테일(LOD)에서 다른 LOD 로 부드럽게 전환합니다. 디더링된 LOD 전환 기능은 모바일 플랫폼에 기본 지원되지 않습니다. 활성화하려면 프로젝트 세팅 > 렌더링> Mobile 에서 Allow Dithered LOD Transitions (디더링된 LOD 전환 허용) 옵션을 체크합니다.

참고: 디더링된 LOD 전환 옵션이 활성화된 머티리얼은 Masked (마스크드) 머티리얼로 렌더링합니다. 모바일 플랫폼에서 퍼포먼스에 안좋을 수 있습니다. 마스크드 머티리얼에만 활성화할 것을 권장합니다.

신규: 쿠커 퍼포먼스

쿠킹 프로세스가 최적화되어 쿠킹 시간이 최대 60% 단축 되었습니다! 이제 로우 레벨 코드가 불필요한 파일 시스템 작업을 피할 수 있어, 쿠커 시간 효율이 좋아졌습니다. 애셋 종속성 관련해서 요청이 없는 애셋 처리 역시 리팩터링을 통해 유연성이 높아졌습니다. 이러한 변화는 규모가 큰 (애셋 수가 10 만이 넘는) 프로젝트에서 가장 현저히 나타납니다.

신규: 픽셀 스트리밍 (베타)

언리얼 엔진 앱 패키지를 클라우드의 데스크톱 PC 에서 실행하고, 모든 플랫폼의 최신 웹 브라우저에서 뷰포트를 바로 스트리밍 할 수 있습니다! 가벼운 앱에서, 심지어 모바일 디바이스에서, 다운로드도 설치도 없이 최고 퀄리티 렌더링을 얻을 수 있습니다.

언리얼 엔진이 렌더링한 뷰포트를 웹 UI 안에 삽입했습니다. 이미지 및 모델 제공: McLaren.

단순히 링크 하나 공유로 한 게임 세션을 여러 뷰어에 방송할 수도, 접속 중인 각 사용자에게 별도의 개별 게임 세션을 전송할 수도 있습니다.

엔진 뷰포트를 호스팅하는 웹 페이지는 자동으로 키보드, 마우스, 터치 이벤트를 다시 엔진으로 전송합니다. 자체 HTML5 UI 로 페이지를 사용자 정의할 수도 있는데, 커스텀 JavaScript 이벤트를 사용하여 선에 연결된 게임플레이 이벤트를 트리거 및 반응 설정할 수 있습니다.

자세한 내용은 픽셀 스트리밍 문서를 참고하세요.

신규: 애니메이션 시스템 최적화 및 개선

애니메이션 시스템은 새로운 워크플로 개선, 더 나은 정보 표면화, 새로운 툴 등 동급 최강의 기능을 계속해서 구축해 나가고 있습니다!

애니메이션 압축 업데이트

애니메이션 압축 시간이 크게 단축되었습니다. 최적 코덱 화이트리스트를 통해 선택 확률이 낮은 순열 사용을 피하여 압축 시도에 사용하는 코덱 수를 크게 줄이는 식입니다. 멀티코어 시스템에서 이제 대부분의 코덱은 자동 압축 도중 병렬 평가하여, 애니메이션 시퀀스 압축에 걸리는 시간을 더욱 줄입니다.

애니메이션 압축 통계 대화창 업데이트 내용은 다음과 같습니다.

  • 대화창에 잘못된 결과를 표시하게 만들던 버그를 수정했습니다.
  • 압축 시간 통계를 추가했습니다.
  • 압축된 애니메이션 수를 추가했습니다.
  • 평균 오차가 가장 큰 애니메이션 추적 기능을 추가했습니다.
  • 그냥 나쁜 경우가 아닌 최악의 10 가지 항목만 추적하는 기능을 추가했습니다.
  • 대화창의 라벨 표시를 개선했습니다.
  • FBoneData 배열을 재계산하는 대신 그냥 전달합니다.

자세한 정보는 애니메이션 시퀀스 문서의 압축 섹션을 참고하세요.

애니메이션 노티파이 개선

클로스 시뮬레이션 및 다이내믹스 상태를 관리할 수 있는 애니메이션 노티파이를 추가했습니다. 또 노티파이 추가/대체 메뉴가 클래스 선택 툴을 사용하도록 변경하여 BP 및 네이티브 노티파이 검색이 개선되었습니다. 노티파이를 추가하려면, 노티파이 트랙에 우클릭하고 노티파이 추가 아래 추가하고자 하는 유형을 선택합니다.

자세한 정보는 애니메이션 노티파이 문서를 참고하세요.

루트 모션의 원래 스케일 유지

Use Normalized Root Motion Scale (정규화된 루트 모션 스케일 사용) 옵션을 추가하여 루트 모션의 원래 스케일을 유지할 수 있습니다. 이 옵션은 이전부터 존재하던 기능인데 이번 버전부터 기본 활성화됩니다. 비활성화하면 최종 블렌딩된 애니메이션을 대신 사용합니다.

자세한 정보는 루트 모션 활성화 문서를 참고하세요.

"싱크 마커" 이름에 캐시 및 자동완성 기능 추가

Sync Marker (싱크 마커)를 만들 때 이제 Existing Sync Markers (기존 싱크 마커) 메뉴 옵션에서 스켈레톤에 할당된 싱크 마커에 액세스할 수 있습니다. 검색창에 텍스트를 입력하여 싱크 마커에 필터를 적용할 수도 있습니다.

애니메이션 시퀀스 프레임 속도

이제 애니메이션 시퀀스의 프레임 속도가 애니메이션 툴 뷰포트 및 콘텐츠 브라우저 툴팁에 표시됩니다.

애님 몽타주에 자동 블렌드 아웃 활성화

이제 애님 몽타주에 Auto Blend Out (자동 블렌드 아웃)을 켜고 끄는 옵션이 생겼습니다. 이 옵션은 기본 활성화되어 있지만, 비활성화하면 몽타주가 자동 블렌드 아웃 없이 마지막 포즈를 유지합니다.

자세한 정보는 애니메이션 몽타주 에디터 문서의 몽타주 프로퍼티 섹션을 참고하세요.

CCDIK 스켈레탈 컨트롤 노드

어깨에서 손가락까지 비교적 짧은 IK 체인의 실시간 계산에 적합한 경량 IK 알고리즘이 필요하다면, 새로운 CCDIK (Cyclic Coordinate Descent Inverse Kinematics, 순환 좌표 하강 역운동학) 스켈레탈 컨트롤 노드를 사용하세요.

자세한 정보는 CCDIK 문서를 참고하세요.

마스터 포즈 컴포넌트 설정의 강제 업데이트

Set Master Pose Component (마스터 포즈 컴포넌트 설정) 함수에 두 번째 입력 핀 Force Update (강제 업데이트)를 추가했습니다. 런타임 정보가 마스터 컴포넌트와 같으면 모든 런타임 정보 업데이트를 생략하고, 아니면 런타임 정보를 강제 업데이트할 수 있습니다. 이 기능은 등록(register) 프로세스에만 적용되는데, 직렬화(serialize)되면 모든 런타임 데이터를 새로고쳐야 하기 때문입니다.

자세한 정보는 모듈식 캐릭터 작업 문서의 마스터 포즈 컴포넌트 섹션을 참고하세요.

기타 개선 및 업데이트

  • 라이브 애니메이션 블루프린트 리컴파일 기능 실험단계 탈피
  • 애니메이션 에디터의 기본 좌표계가 로컬 스페이스로 변경되었습니다.
  • 이제 최소 LOD 적용 중이면 애니메이션 툴 뷰포트에 알림이 표시됩니다.

신규: Gauntlet 자동화 프레임워크 (베타)

신규 베타 Gauntlet 자동화 프레임워크 를 통해 빌드를 디바이스에 디플로이하는 프로세스를 자동화시켜, 하나 이상의 클라이언트 및/또는 서버를 실행하고 결과를 처리할 수 있습니다.

Gauntlet 스크립트로 관심 지점 자동 프로파일링, 게임플레이 로직 유효성 검사, 백엔드 API 에서 반환값 확인 등이 가능합니다! Gauntlet 은 포트나이트 최적화 프로세스에서 몇 달 동안 철저한 테스트를 거쳤으며, 포트나이트가 모든 플랫폼에서 원활하게 실행되도록 만든 핵심 요소입니다.

Gauntlet 에 제공되는 새로운 프로파일링 헬퍼로 시간 상의 두 지점 사이 중요 퍼포먼스 값을 기록하여 Vsync 누락, 멈춤 현상, CPU 시간, GPU 시간, RHI 시간, 드로 콜 등을 추적합니다. 추가로 제공하는 헬퍼 함수를 통해 로그에서 그 정보를 수집하여 경고를 생성하거나 데이터베이스에 저장하거나 추세선을 만들 수도 있습니다. 테스트 도중 캡처한 모든 정보는 원하는 형태의 리포트로 출력할 수 있습니다.

아래는 단순한 리포트 예제입니다.

Gauntlet 테스트 각각은 C# 스크립트로 단순한 구성을 나타냅니다. 예를 들면 클라이언트 수, 서버 수, 전달할 파라미터입니다. Gauntlet 은 풀에서 머신 할당, 빌드 디플로이 및 실행, 크래시나 어서트나 타임아웃같은 일반적인 오류 확인, 로그 파일이나 기타 부작용 현상 수집을 처리합니다.

신규: 서브믹스 엔벨로프 팔로워

이제 새로운 언리얼 오디오 엔진 사용자는 Submix (서브믹스)에 Envelope Follower (엔벨로프 팔로워) 델리게이트를 사용하여 그 서브믹스의 개별 채널에 대한 진폭을 분석할 수 있습니다. 서브믹스를 적용한 오디오의 진폭 특성으로 블루프린트 이벤트와 시각화를 구동할 수 있습니다.

신규: 필터 사운드 서브믹스 이펙트

이제 새로운 언리얼 오디오 엔진 사용자는 서브믹스에 멀티 모드 필터를 추가하여 단일 서브믹스에 동적 필터 이펙트를 부여할 수 있습니다.

신규: 사운드 서브믹스 이펙트 리버브 드라이 레벨

이제 새로운 언리얼 오디오 엔진의 Submix Effect Reverb (서브믹스 이펙트 리버브)에 Parallel Wet and Dry Level (병렬 웻/드라이 레벨)을 지원합니다. 사용자는 웻/드라이 비율을 조정하여 이펙트를 인서트 스타일로도 센드 스타일로도 사용할 수 있습니다.

신규: 소스 이펙트 API 최적화

이제 새로운 언리얼 오디오 엔진의 Source Effect API (소스 이펙트 API)가 최적화되어 오디오를 프레임 단위가 아닌 전체 버퍼를 처리할 수 있습니다. 전보다 소스 이펙트를 효율적으로 처리할 수 있습니다.

신규: Linux 기본 렌더러 Vulkan

Linux 에서 가능한 경우 Vulkan 을 기본 렌더러로 사용합니다. API 초기화를 할 수 없는 경우, 엔진은 알림 없이 OpenGL 로 대체합니다.

프로젝트 세팅에서 Target RHIs (타깃 RHI) 를 통해 특정 RHI 를 추가 또는 비활성화하거나 명령줄에 -vulkan-opengl4 스위치를 붙여 대체 옵션을 비활성화할 수 있습니다.

신규: 리눅스 미디어 플레이어

이제 WebMMedia 번들 플러그인을 사용하여 Linux 플랫폼에서 .webm VPX8/9 비디오를 재생할 수 있습니다.

신규: Linux 크래시 리포트 클라이언트 GUI

Linux 의 Crash Reporter (크래시 리포터)에 GUI 를 추가하여 Linux 플랫폼 지원을 강화했습니다. 리포트가 발생하면 반복인 경우라도 제출해 주세요! 저희 엔지니어가 크래시 발생 빈도와 원인을 파악하는 데 도움이 됩니다.

신규: 전문가급 비디오 I/O 개선 (베타)

전문가급 퀄리티 SDI 비디오 카드를 통해 언리얼 에디터에 비디오 피드를 쉽게 입출력할 수 있도록 지속적으로 노력하고 있습니다. 이제 하드웨어 구성이 다른 여러 대의 컴퓨터에서 프로젝트 구성 세팅을 바꿀 필요 없이 똑같은 언리얼 엔진 프로젝트 작업을 할 수 있습니다.

각 머신에서 MediaProfile (미디어 프로파일)을 만든 뒤, 그 컴퓨터에서 사용하려는 비디오 카드와 포맷을 처리할 수 있도록 설정합니다. 같은 패널에서 프로젝트의 타임코드와 젠록 소스를 오버라이드할 수도 있습니다.

미디어 프로파일을 새로운 Proxy Media Source (프록시 미디어 소스) 및 Proxy Media Output (프록시 미디어 아웃풋) 애셋 유형과 합칠 때, 프로젝트의 미디어 콘텐츠와 미디어 프로파일의 세팅 사이 입/출력 채널을 자동으로 리디렉션할 수 있습니다. 다른 미디어 파일로 전환할 때, 예를 들어 다른 컴퓨터에서 미디어 카드가 다르거나 선 설정이 다른 경우, 그 머신 하드웨어의 입/출력 채널은 프록시를 자동 경유하므로 프로젝트에서 콘텐츠를 변경하지 않아도 됩니다.

자세한 내용은 미디어 프로파일 및 프록시 사용법 문서를 참고하세요.

이번 버전에 추가된 사항은 다음과 같습니다.

  • 도킹가능 타임코드 프로바이더 패널에 (창 > 개발자 툴 > 타임코드 프로바이더) 언리얼 엔진의 현재 타임코드와 그 소스를 표시합니다.
  • 10 비트 입력, 오디오 I/O, 인터레이스드/PsF 입력을 지원합니다.
  • 새로운 Blackmagic Media Player 플러그인으로 Blackmagic Design 의 SDI 카드를 지원합니다. 자세한 내용은 블랙매직 비디오 I/O 퀵 스타트 문서를 참고하세요.

참고: AJA Media Player 및 Blackmagic Media Player 플러그인은 이제 에픽게임즈 런처의 마켓플레이스 탭을 통해 받을 수 있으며, 언리얼 엔진과 함께 자동 설치되지 않습니다. 그 소스는 GitHub 에서 무료로 사용할 수 있으며, 엔진의 Media Core API 기반 비디오 I/O 플러그인을 개발하는 방법의 모델이 됩니다.

신규: 지리적으로 정확한 태양 위치 (베타)

현실에서 하늘의 태양 위치는 관찰자의 위도와 경도, 날짜, 시간에 따라 다릅니다. 이제 똑같은 수학 방정식을 사용하여 언리얼 엔진 레벨의 태양 위치를 제어할 수 있습니다.

특히 주요 건축 또는 건설 프로젝트에서, 실제 지구 특정 장소의 라이팅 조건에 대한 시뮬레이션이 필요할 때 효과적입니다. 물론 지구상의 위치와 시간에 따라 실제 태양 움직임과 위치를 보여주려는 레벨에도 유용할 수 있습니다.

자세한 내용은 지리적으로 정확한 태양 위치 문서를 참고하세요.

신규: 스태틱 메시 처리

언리얼 에디터 안에 새로운 스태틱 메시 처리 옵션을 여럿 추가했습니다. 이제 스태틱 메시에서 불필요한 UV 매핑을 제거하여 메모리를 절약할 수 있습니다.

추가로 언리얼 에디터에서 Python 및 블루프린트 스크립트를 사용하면 다음과 같은 일이 가능합니다.

신규: 블루프린트 사용성 개선

이제 블루프린트 그래프 에디터는 기존 북마크 기능을 강화한 "Quick Jump" (퀵 점프) 이동 기능을 지원하여, 사용자가 블루프린트 에디터에서 CTRL + [0-9] 키로 현재 위치와 줌 레벨을 저장할 수 있습니다. 그런 다음 블루프린트 창을 열 때마다 SHIFT + [0-9] 키를 누르면 다른 블루프린트 애셋을 작업하는 중이었더라도 저장했던 그래프 그 위치와 줌 레벨로 빠르게 돌아갈 수 있습니다. "Quick Jump" (퀵 점프) 북마크는 다른 에디터 세션에도 유지되며, 사용자/머신 로컬에 저장됩니다.

이제 사용자는 Sequence (시퀀스) 노드의 타깃 핀 전후에 컨텍스트 메뉴를 통해 다른 핀을 삽입할 수 있습니다. 기존에는 끝에만 추가할 수 있었습니다.

이제 네이티브화된 블루프린트 클래스 C++ 코드에서 모놀리식 엔진 헤더 파일 제외를 프로젝트 세팅에서 할 수 있습니다. 코드 크기가 이슈인 경우, 모놀리식 게임 EXE 파일의 전반적인 코드 크기를 줄이는 데 도움이 됩니다. 이 옵션은 프로젝트 세팅 -> 패키징 아래 "고급" 섹션에서 "Blueprint Nativization Method" (블루프린트 네이티브화 메서드)에서 찾을 수 있습니다. 이 옵션은 기존 오브젝트와의 호환성 유지를 위해 기본으로 비활성화됩니다.

신규: HTML5 템플릿 개선

이제 HTML5 프로젝트는 기존 모놀리식 템플릿 파일을 대체하여 별도의 HTML, JavaScript, CSS 템플릿을 사용합니다! 사용자 정의 템플릿 파일 역시 프로젝트별로 지원합니다.

다음 파일을

.../Engine/Build/HTML5/GameX.*.template

다음으로 복사합니다.

[project]/Build/HTML5/.

빌드 프로세스가 프로젝트의 경로를 자동 선택하며, 없으면 영문 버전으로 대체합니다.

GitHub PR#4780 기반입니다.

신규: HTML5 README 파일 업데이트

HTML5 README 파일은 카테고리에 따라 여러 개로 나뉩니다.

  • UE4 HTML5 빌드
    • 소스 파일 받기
    • 지원 프로그램 컴파일
    • UE4 에디터 컴파일
    • UE4 에디터 실행
    • HTML5 용 프로젝트 패키징
    • HTML5 패키지 프로젝트 테스트
  • UE4 HTML5 디버깅
    • 스택 덤프 및 Cpp 에서 Print 방법
    • GLSL 버그 잡기
  • Emscripten 및 UE4
    • EMSDK
    • Emscripten 툴체인 및 타사 라이브러리
    • UE4 C# 스크립트
    • 테스트 빌드, 체크 인, CIS

신규: IPv6 지원 개선

IPv4 및 IPv6 지원을 하나의 소켓 서브시스템으로 병합하여, 기존 각 프로토콜 지원을 별도의 서브시스템으로 독립시켰습니다. BSD 서브시스템 중 하나를 사용하던 플랫폼이 IPv4 및 IPv6 둘 다 동시에 지원할 수 있으며, 코드 호출에 투명하게 이루어질 수 있습니다.

신규: DDoS 탐지 및 완화

DDoS (분산 서비스 거부) 공격은 보통 게임 서버에 엄청 많은 패킷을 전송하여, 서버는 모든 패킷을 처리하지 못하고 빗장을 잠그면서 다른 플레이어의 패킷을 놓치게 되고, 결국 플레이어는 타임아웃 또는 패킷 손실로 이어져 게임플레이에 지장을 줍니다.

보통 이 공격은 소스 IP 를 확인할 수 없는 위장(spoof) UDP 패킷을 사용합니다. 이 선택적 DDoS 탐지는 특히 이 상황에 초점을 맞추고, 기존의 알려진 클라이언트 접속에서 전송되지 않은 위장 UDP 패킷으 한계치 설정에 따라 DDoS 공격을 탐지/완화합니다. 모든 공격에서 서버의 안전성을 보장하지는 못하는데, 공격이 심하면 서버를 실행하는 하드웨어나 OS 가 압도될 가능성도 여전히 있기 때문입니다.

신규: 피직스 인터페이스 업데이트

피직스 인터페이스를 리팩터링하여 하이 레벨에서 피직스 오브젝트의 오너십 지원을 강화했습니다. 이 변경 결과 Apex Destruction 에만 사용을 추천하던 Async Scene (비동기 씬) 기능을 폐기했습니다. 여전히 Sync Scene (동기 씬)을 사용하면 똑같은 시각적 결과를 얻을 수 있습니다.

이로 인해 피직스 관련 C++ 코드 API 가 많이 변경되었습니다. 기능적으로 API 는 동일하므로 현재 사용하는 방식과 매우 유사하게 사용할 수 있을 것입니다. 피직스 인터페이스를 변경한 목표는 두 가지입니다. 1) 종속성을 한 곳에 모아 제어할 수 있도록 하고, 2) 언리얼과 상호작용할 때 물리 상호작용을 위한 공통 모델을 만드는 것입니다.

자세한 정보는 4.21 피직스 테크니컬 노트 문서를 참고하세요.

신규: 파이프라인 스테이트 오브젝트 (PSO) 캐시

이제 Pipeline State Object (PSO) 캐시를 Metal (iOS/Mac), DX12, Vulkan 플랫폼에서 지원합니다. PSO 캐시는 프로젝트에서 머티리얼에 새로운 셰이더 컴파일이 필요할 때 생길 수 있는 멈춤 현상을 줄이는 데 도움이 됩니다. PSO 캐시는 머티리얼에 필요한 모든 셰이더 목록을 미리 만들어 두고, 프로젝트에 그 셰이더가 처음 필요할 때 발생하는 컴파일 프로세스 속도를 높이는 데 사용합니다. PSO 캐시는 프로젝트 세팅 > 패키징 섹션에서 활성화할 수 있습니다.

UE4 프로젝트에서 PSO 캐시를 구성하고 사용하는 방법 관련 자세한 정보는 PSO 캐시 문서를 참고하세요.

신규: 물리적 라이팅 단위 업데이트

커뮤니티 의견에 따라 물리적 라이팅 단위의 워크플로와 활용도를 개선했습니다. 이 업데이트에 따른 변경사항은 다음과 같습니다.

  • 이제 모든 라이트 유형의 Intensity (강도) 값 옆에 단위가 표시됩니다.
  • 이제 디렉셔널 라이트는 LUX 단위로 표시되며, 강도의 범위가 늘어났습니다.
  • 스카이 라이트 강도는 이제 cd/m2 단위로 표시되며, 강도의 범위가 늘어났습니다.
  • 포스트 프로세스 자동 노출 세팅으로 씬 휘도 확장 범위를 EV-100 으로 표현할 수 있습니다. 프로젝트 세팅에서 활성화할 수 있습니다.
  • 이제 픽셀 조사 툴이 Scene Color (씬 컬러)의 사전 노출을 표시할 수 있습니다. 프로젝트 세팅을 통해 활성화할 수 있습니다.
  • HDR (시각 순응) 시각화를 다음과 같은 방식으로 리팩터링했습니다.
    • 화면 속 화면 HDR 분석 표시를 현재 씬 화면 위에 표시하여 즉각적인 피드백에 따라 조정할 수 있습니다.
    • 이제 시각화를 EV100 으로 표현합니다.
    • 픽셀 조사 툴같은 피드백을 제거했습니다.

자세한 정보는 물리적 라이팅 단위 문서를 참고하세요.

신규: 시퀀서 이벤트 트랙

Sequencer Event (시퀀서 이벤트) 트랙을 완전 리팩터링하여 이제 이벤트를 블루프린트 그래프에 보다 밀접하게 결합할 수 있어 사용자 경험이 훨씬 안정적이고 편안해 집니다. 블루프린트와 인터페이스를 활용함으로써 구조체 페이로드와 익명 이벤트를 사용하던 기존 구현에 비해 더 나은 안정성의 제어가 가능합니다.

자세한 내용은 이벤트 트랙 개요, 시퀀서를 통한 이벤트 호출 문서를 참고하세요.

신규: 지오메트리 캐시 트랙 (실험단계)

새로운 (실험단계) Geometry Cache Track (지오메트리 캐시 트랙)을 통해 지오메트리 캐시를 스크러빙 이동하고 높은 프레임 정확도로 렌더링할 수 있습니다.

자세한 정보는 지오메트리 캐시 트랙 사용법 문서를 참고하세요.

신규: 시퀀서 오디오 굽기 (베타)

이제 Render Movie Settings (렌더 무비 세팅) 창에서 Master Audio Submix (마스터 오디오 서브믹스) 속으로 오디오를 구워 넣을 수 (bake down) 있습니다. 이 오디오 굽기 프로세스는 별도의 렌더 패스에서 이루어지며, 무비를 렌더링할 때 시퀀스의 오디오를 단일 파일로 익스포트합니다.

자세한 정보는 렌더 무비 세팅 문서를 참고하세요.

신규: 시퀀서 가이드 마크

이제 타임라인에 세로 가이드 마크를 놓아 타임라인의 키 포인트의 스냅 또는 식별에 사용할 수 있습니다.

자세한 정보는 시퀀서의 프레임 마커 사용법 문서를 참고하세요.

신규: WMR 지원

이제 언리얼 엔진 4 는 Windows Mixed Reality (WMR) 플랫폼과 HP Mixed Reality 및 삼성 HMD Odyssey 헤드셋을 자체 지원합니다. WMR 자체 지원은 Windows 10 2018년 4월 이후 업데이트와 지원하는 헤드셋이 필요합니다. 시작 및 실행 방법 관련 자세한 정보는 WMR 개발 문서를 참고하세요.

 

 

이미지 제공: HP

신규: Magic Leap 인증 개발자 출시 지원

이제 언리얼 엔진 4 는 Magic Leap 의 Lumin 기반 디바이스의 완성 앱 개발에 필요한 모든 기능을 지원합니다. 렌더링, 컨트롤러 지원, 제스처 인식, 오디오 입/출력, 미디어 등을 지원합니다. 개발자 등록 관련 자세한 정보는 https://www.magicleap.com/ 페이지를 참고하세요.

신규: Oculus Avatar

Oculus Avatar SDK 에는 Rift 및 터치 컨트롤러에서 일인칭 손 표현 구현을 위한 개발자 지원용 언리얼 패키지가 포함됩니다. 이 패키지에는 소셜 앱 다른 사용자들이 볼 수 있는 아바타 손과 바디 애셋이 들어있습니다. Avatar SDK 에 지원되는 일인칭 손 모델과 삼인칭 손/바디 모델은 사용자가 Oculus Home 에서 선택한 아바타 구성을 자동으로 끌어와 사용자에게 여러 앱 사이 일관된 정체성을 부여합니다. 자세한 정보는 Avatar SDK 개발자 가이드(영문) 문서를 참고하세요.

신규: 라운드 로빈 오클루전

이제 언리얼 엔진 4 는 Round Robin Occlusion (라운드 로빈 오클루전)을 지원합니다. 새로 추가된 vr.RoundRobinOcclusion 옵션을 활성화하면, 입체 프레임은 한 쪽 눈에 대한 프레임별 오클루전 쿼리를 할 때 (홀수 프레임에는 왼쪽 눈의 쿼리만, 짝수 프레임에는 오른쪽 눈의 쿼리만 발동하는) 교대 방식을 사용합니다. 이 접근법은 프레임당 오클루전 드로 콜 수를 절반으로 줄입니다. 경우에 따라 퍼포먼스가 크게 향상됩니다.

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

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

 

 

  • 빌드 팜의 컴파일 대상 IDE 버전
    • Visual Studio: Visual Studio 2017 v15.6.3 툴체인 (14.13.26128) 및 Windows 10 SDK (10.0.12699.0)
      • 최소 지원 버전
        • Visual Studio 2017 v15.6
        • Visual Studio 2015 Update 3
    • Xcode: Xcode 9.4
  • Android:
    • Android NDK r14b (Windows 와 Mac 의 에서는 CodeWorks for Android 1r7u1 인스톨러 새 버전이 기존 CodeWorks 버전을 대체하고, Linux 에서는 1r6u1 에 수정사항을 더한 것을 사용합니다.)
  • HTML5: Emscripten 1.37.19
  • Linux "SDK" (크로스 툴체인):
    • v12_clang-6.0.1-centos7
  • Lumin: 0.16.0
  • Steam: 1.39
  • SteamVR: 1.39
  • Oculus Runtime: 1.28
  • Switch:
    • SDK 5.3.0 + 옵션 NEX 4.4.2 (펌웨어 5.0.0-4.0)
    • SDK 6.4.0 + 옵션 NEX 4.6.2 (펌웨어 6.0.0-5.0)
    • 지원 IDE: Visual Studio 2017, Visual Studio 2015
  • PS4:
    • 6.008.001
    • 펌웨어 버전 6.008.021
    • 지원 IDE: Visual Studio 2017, Visual Studio 2015
  • Xbox One:
    • XDK: June 2018 QFE-4
    • 펌웨어 버전: June 2018 (버전10.0.17134.4056)
    • 지원 IDE: Visual Studio 2017
  • macOS: SDK 10.14
  • iOS: SDK 12
  • tvOS: SDK 12
출시 노트 전문은 언리얼 엔진 4.21 출시 노트 문서를 참고하세요.