이번 출시에는 GitHub 의 언리얼 엔진 개발자 커뮤니티가 제공한 145 종의 개선사항을 포함해서, 수백종의 언리얼 엔진 4 업데이트가 포함되어 있습니다. 언리얼 엔진 4.13 에 기여해 주신 모든 분들께 감사드립니다:
alk3ovation, Allegorithmic (Allegorithmic), Alwin Tom (alwintom), Andreas Axelsson (judgeaxl), Andrew Scheidecker (AndrewScheidecker), Andrian Nord (NightNord), ArnoB (ABeekhub), Artem (umerov1999), Artem V. Navrotskiy (bozaro), Bła?ej Szczygieł (zaps166), Brent Scriver (FineRedMist), Cedric Neukirchen (eXifreXi), Céleste (CelPlays), Chris Conway (Koderz), Chris528, Christoph Becher (chbecher), Christopher P. Yarger (cpyarger), DanielDylan, DaveC79, Derek van Vliet (derekvanvliet), DevVancouver, Eric-Ketchum, Eugene (grisevg), Franco Salas (SupremeNinjaMaster), gameDNA (gameDNAstudio), ghost, Joel McGinnis (joelmcginnis), Jonathan Johansson (DualCoder), Jørgen P. Tjernø (jorgenpt), Joshua Kaiser (JoshuaKaiser), korkuveren, Kory Postma (korypostma), Krish Munot (KrishMunot), Kuts Alexey (krunt), Lars Jørgen Solberg (larsjsol), Lectem, Lee Reilly (leereilly), Lukasz Baran (iniside), madsystem, Manny (Manny-MADE), Marat Radchenko (slonopotamus), Markus Breyer (pluranium), Martin Gerhardy (mgerhardy), Marvin Pohl (pampersrocker), massanoori, Mateusz Polewaczyk (matii1509), Matthias Huerbe (MatzeOGH), Matthijs Lavrijsen (Mattiwatti), MaximDC, mfortin-bhvr, Michael Allar (Allar), Michael Schoell (MichaelSchoell), mik14a, Miłosz Kosobucki (MiKom), mkirzinger, Moritz Wundke (moritz-wundke), Nachtmahr (NachtMahr87), Narendra Umate (ardneran), NaturalMotionTechnology, Oleksandr Kuznietsov (Teivaz), OWIAdmin, Patryk St?pniewski (kodomastro), Paul Evans (paulevans), pfranz, Piotr B?k (Pierdek), PistonMiner, projectgheist, Rama (EverNewJoy), Ricardo Maes (kukiric), Rick Deist (dreckard), Robert Segal (robertfsegal), RobertTroughton, Rohan Liston (rohanliston), Saffron (SaffronCR), Sajid (sajidfarooq), salamanderrake, Samuel Maddock (samuelmaddock), Sébastien Rombauts (SRombauts), Tanner Mickelson (DarthCoder117), Thomas Mayer (tommybear), tmiv, Tyler Thompson (Bogustus), Victor Polevoy (vityafx), Webster Sheets (Web-eWorks), Wesley Hearn (wshearn), yehaike, Yohann Martel (ymartel06), Yong-Quan Chen (wingedrobin), Yu He (yuhe00), Zachary Burke (error454)
새로운 소식
언리얼 엔진 4.13 버전이 출시되었습니다! 이번 버전은 다양한 분야에 걸친 여러가지 기능이 개선되었습니다.
렌더링 기능이 다수 추가되었습니다. 이제 메시 데칼, 블루프린트로 렌더 타겟에 그리기, GPU 모프 타겟, 굴절 효과 향상, 고품질 최적화된 노이즈 함수를 머티리얼에 사용할 수 있습니다. 섀도 맵 캐시를 통해 한 씬에 그림자를 드리우는 다이내믹 라이트를 전보다 많이 둘 수 있게 되었습니다!
새로운 비선형 시네마틱 에디터인 시퀀서에, 고사양 영화 촬영 기법에 사용되는 여러가지 신기능이 업데이트되었습니다. 게임플레이에서의 라이브 녹화 기능이 크게 향상되었습니다. 또 이제 샷과 애니메이션을 외부 어플리케이션과 자유롭게 공유할 수 있습니다. 이 기능은 시그라프 실시간 라이브! 2016 데모 영상에서 참고하실 수 있습니다.
Alembic(얼렘빅) 지원을 통해 재미있고 복잡한 버텍스 애니메이션도 임포트할 수 있습니다. 그리고 새로운 피지컬 애니메이션 컴포넌트를 통해서는 캐릭터의 스켈레탈 애니메이션을 모터를 통해 구동시킴으로써 물리적 힘에 사실적으로 반응하도록 만들 수 있습니다.
모바일 개발자를 위한 희소식, 다이내믹 섀도우가 최적화되고, 최대 정밀도의 머티리얼이 지원되며, 커스텀 포스트 프로세싱이 가능해졌습니다. 이제 안드로이드에서 OpenGL ES 3.1 을 사용할 수 있으며, 바이너리 셰이더 캐시로 반복처리 시간이 빨라질 것입니다.
VR 게임에서 이제 캡슐 그림자를 사용할 수 있으며, 스테레오 인스턴싱 기능이 최적화되었습니다. 새로운 VR 템플릿 프로젝트도 확인해 보세요! 모션 컨트롤러를 사용하여 VR 게임에서 조작과 이동하는 법을 확인하기에 좋은 예제입니다.
가상현실 레벨 제작은 가상현실에서? 언리얼의 VR 에디터에 메시와 폴리지 페인팅이 지원되고, 새로운 트랜스폼 기즈모와 VR 색 선택기가 업데이트되었습니다. 마지막으로, VR 에서 바로 게임을 즉시 플레이해 볼 수도 있습니다! 에디터 개인설정에서 실험단계 기능 부분의 'Enable VR Editing' (VR 편집 활성화) 옵션을 켜면 됩니다.
주요 기능
시퀀서 라이브 녹화
시퀀서의 라이브 녹화 기능이 향상되었습니다. 시그라프 실시간 라이브! 2016 영상을 확인해 보세요.
시퀀서 녹화기에서는 모든 애니메이션, 오디오, 이펙트 전부가 포함된 라이브 게임플레이를 독립형 애셋에 캡처하여, 시퀀서에서 바로 편집할 수 있습니다. 이번 버전에 새로 추가된 기능은 다음과 같습니다:
-
선택된 액터를 빠르게 녹화하고 카메라가 녹화된 경우 자동으로 카메라 컷 트랙을 생성합니다.
-
녹화할 컴포넌트와 프로퍼티를 임의로 지정할 수 있습니다.
-
옵션으로 레벨에 빙의된 액터에 데이터를 녹화합니다.
-
액터가 붙어는 있으나 녹화되지는 않은 경우 월드 스페이스의 트랜스폼을 녹화합니다.
무버블 라이트용 섀도우 맵 캐시
포인트 또는 스포트 라이트가 움직이지 않으면, 그 라이트에 대한 섀도 맵을 저장한 뒤 다음 프레임에 재사용할 수 있습니다. 이 기능은 이제 자동으로 이루어져 배경이 잘 움직이지 않는 게임에서는 그림자를 드리우는 무버블 포인트 / 스포트 라이트 비용 부담이 크게 줄어듭니다.
위 그림은 다이내믹 섀도를 드리우는 포인트 라이트가 33 개나 되는데, 부하가 매우 적게 걸리고 있습니다:
970 GTX 에서 1920x1200 해상도로 돌렸을 때 나오는 퍼포먼스는 다음과 같습니다:
-
그림자를 드리우는 포인트 라이트 33 개를 섀도 뎁스에 렌더링할 때, 캐시가 없을 때: 14.89ms.
-
섀도 맵 캐시가 있을 때: .9ms (약 16 배 향상!)
-
참고로 33 개의 포인트 라이트가 기여하는 바를 렌더링하는 데 여전히 2ms 가 드는데, 이는 다른 방식으로 최적화시킬 수는 있지만, 이 변경사항에 영향을 받지는 않습니다.
-
캐시에 사용되는 메모리는 "Stat ShadowRendering" 하에서 볼 수 있으며, 이 씬에서는 25.6Mb 였습니다.
-
캐시에 사용되는 최대 메모리는 "r.Shadow.WholeSceneShadowCacheMb" 옵션으로 제어할 수 있습니다.
한계
-
기본적으로, 캐시가 벌어지는 상황은 다음과 같습니다:
-
프리미티브의 모빌리티가 스태틱 또는 스테이셔너리 로 설정되어 있고
-
사용된 머티리얼이 월드 포지션 오프셋을 사용하지 않으며
-
라이트가 포인트 또는 스포트이고, 그림자를 드리우고, 모빌리티가 무버블로 설정되었으나 현재 움직이지는 않는 경우
-
-
애니메이션이 있는 테셀레이션이나 픽셀 뎁스 오프셋을 사용하는 머티리얼의 경우, 섀도 뎁스가 캐시되므로 부작용이 생길 수 있습니다.
보로노이 노이즈 머티리얼
Noise 머티리얼 노드에 사용할 수 있는 Voronoi (보로노이) 노이즈 옵션을 추가했습니다. 보로노이 노이즈는 Worley (월리) 또는 Cellular (셀룰러) 노이즈라고도 하는데, 머티리얼 자동 생성에 유용할 수 있습니다.
보로노이 노이즈는 아래 석상에서 보이는 것처럼 대리석과 같은 친숙한 피지컬 머티리얼의 패턴을 생성하는 데 사용할 수 있습니다.
이 예제는 보로노이 노이즈에 "그레디언트 매핑" 이라는 기법을 같이 써서 대리석 모양을 낸 것입니다.
왼쪽에서 오른쪽으로:
1) 표준 보로노이 노이즈, 1 옥타브
2) 보로노이 노이즈에 '그레디언트' 노이즈를 추가하여 위치 입력은 0.05 로 설정
3) 그레디언트 노이즈에 0.3 을 곱한 뒤 보로노이 입력 위치에 추가
4) 위 3) 의 결과를 랜덤 타일 텍스처의 텍스처 좌표로 사용
보로노이 노이즈는 퀄리티가 4 레벨로 되어 있으며, 레벨이 높아질 수록 셰이딩 시간이 크게 늘어나는 대신 그리드 부작용이 줄어듭니다.
또한, 여러가지 노이즈 머티리얼 노드의 퍼포먼스가 향상되었으며, 함수 선택 툴팁에서 보다 자세한 퍼포먼스 증감 내용을 확인할 수 있습니다. 대부분 실행시간에 사용하기는 느릴 수 있으니, 결과를 텍스처에 구워 넣는 것이 좋습니다.
블루프린트로 렌더 타겟에 그리기
이제 블루프린트 함수를 사용하여 머티리얼을 렌더 타겟에 그릴 수 있습니다. 이를 통해 소스 코드 수정 없이도 엄청나게 다양한 게임 전용 렌더링 이펙트들을 구현할 수 있습니다.
블루프린트와 머티리얼 그래프만 가지고 구현한 유체 표면 시뮬레이션입니다. 캐릭터와 프로젝타일이 유체를 밀어내고 있습니다!
위는 블루프린트로만 만든 간단한 하이트필드 페인터인데, 발사체에 맞은 곳의 높이 값을 누적시킵니다.
새로운 블루프린트 함수 Draw Material to Render Target (렌더 타겟에 머티리얼 그리기)는 대상 렌터 타겟을 머티리얼의 이미시브 컬러 입력 색으로 채워 쿼드를 그립니다.
게임을 시작하면, Begin Play 가 호출되어 렌더 타겟을 파랑으로 채웁니다. 그런 다음 렌더 타겟에 우클릭한 후 스태틱 텍스처로 저장하여 압축할 수 있습니다.
렌더 타겟에 그리기 고급 기능은, Begin Draw Canvas to Render Target 과 End Draw Canvas to Render Target (렌더 타겟에 캔버스 그리기 시작/끝)입니다. 이를 통해 다수의 드로를 렌더 타겟의 부분집합에 효율적으로 그려넣을 수 있을 뿐만 아니라, 캔버스 오브젝트를 통한 폰트 그리기 메소드도 가능합니다.
블루프린트에서 화면 밖 부분을 렌더링할 수 있다는 것은, 엄청나게 많은 렌더링 기능들을 그래픽 프로그래머 없이도 빠르게 구현할 수 있다는 뜻입니다. 여러 패스로 이루어진 다수의 픽셀 셰이더 작업을 커다란 렌더 타겟에 해냄으로써 GPU 를 확보하기도 매우 쉽습니다. 이러한 드로 콜은 디버그 콘솔에 'ProfileGPU' 를 치면 (WorldTick 이벤트 아래에) 나타납니다.
한계
-
지정한 머티리얼에 의해 텍스처로 샘플링되고 있는 렌더 타겟에는 그릴 수 없습니다. 알파 블렌딩을 사용하여 그 렌더 타겟을 변경하거나, 두 개의 다른 렌더 타겟을 왔다갔다 하거나 해야 합니다.
-
렌더 타겟에 그리기는 머티리얼의 이미시브 컬러와 오파시티 출력만 사용 가능합니다. 라이팅은 지원되지 않으며, WorldPosition 같은 노드는 예상치 못한 결과를 낼 수 있습니다.
-
이미시브 컬러는 기본적으로 양수 범위로 제한되나, "AllowNegativeEmissiveColor" 머티리얼 프로퍼티를 켜는 것으로 음수 값을 출력할 수 있습니다.
실전 예제는 ContentExamples 프로젝트의 BlueprintRenderToTarget 맵을 참고해 주세요!
버텍스 애니메이션용 얼렘빅 임포터 (실험단계)
이제 Alembic (얼렘빅) 애니메이션 임포트 기능이 지원됩니다! 얼렘빅으로 복잡한 애니메이션을 오프라인에서 만든 다음, UE4 안에서 실시간으로 렌더링할 수 있습니다. 이 기능은 아직 실험단계 기능으로, 시험해 보시고 피드백을 부탁드립니다.
지원되는 얼렘빅 캐시 임포트 방식은 여러가지입니다:
-
스태틱 메시. 얼렘빅 애니메이션의 한 프레임을 스태틱 메시 애셋으로 (애니메이션 없이) 임포트합니다.
-
지오메트리 캐시. 버텍스가 변하는 시퀀스 재생을 가능하게 해주는 새로운 유형의 애니메이션 애셋입니다. 임포트된 얼렘빅 애니메이션은 프레임의 플립북처럼 재생됩니다. 퍼포먼스는 메시의 복잡도에 비례하며, 항상 최적의 퍼포먼스를 내지는 못할 수 있습니다.
-
스켈레탈 메시. 얼렘빅 애니메이션을 재생하기에 가장 효율적인 방식으로, 버텍스 수가 변하지 않을 경우 특히 그렇습니다. 임포트 도중, 애니메이션 시퀀스는 PCA 스키마를 사용하여 압축되며, 공통 포즈(베이스)를 추출하고 웨이팅을 입혀 재생 시간 도중 원본 애니메이션을 합성합니다. 임포트 도중 사용되는 베이스의 백분율 또는 고정 수치를 설정하여 압축 수준을 조정할 수 있습니다.
메시 프리뷰 씬
스태틱 / 스켈레탈 메시를 미리보는 데 사용되는 씬을 구성할 수 있는 기능이 새로 추가되었습니다.
스태틱 메시와 스켈레탈 메시 에디터에 프리뷰 씬 세팅 패널이 새로 추가되었습니다. 여기서 메시를 미리보는 데 사용되는 프로파일(씬)을 여럿 구성할 수 있으며, 프로파일에서는 다음과 같은 변경이 가능합니다:
-
디렉셔널 라이트 (색, 강도, 회전)
-
스카이 라이트 (HDRI 환경 맵, 강도, 회전)
-
포스트 프로세싱 세팅 (포스트 프로세스 볼륨과 동일)
쇼케이스 함수성도 몇 가지 추가했습니다:
-
수동으로 배경 (K 키) 및 디렉셔널 라이트 (L 키) 회전
-
라이팅 릭 (디렉셔널 라이트와 배경) 자동 회전
-
쉬운 바닥 (O 키) 및 배경 (I 키) 숨김
메시 데칼
새로운 메시 데칼 기능을 통해 스태틱 메시 위에 머티리얼을 효율적으로 바를 수 있어, 한 머티리얼 위에 다른 머티리얼을 부드럽게 겹쳐놓을 수 있습니다. 바탕이 되는 지오메트리의 프로파일 위에 별도의 형태적 특징과 머티리얼을 지닌 이차 메시를 얹어 놓는 것이라 생각하면 됩니다.
위의 기둥은 각각 바탕 메시에 깨진 메시 디테일을 하나씩 겹쳐놓은 것으로, 아래 와이어프레임에서 확인할 수 있습니다. 왼쪽 기둥은 메시 데칼을 사용하여 컬러, 노멀, 러프니스를 부드럽게 블렌딩한 것입니다. 가장 오른쪽의 기둥은 비교용 마스크드 머티리얼입니다.
디퍼드 데칼과 달리 프로젝션이 포함되어 있지 않아서, 바탕이 되는 표면에 강 결합되어 있는 전형적인 데칼 메시는 머티리얼에서 표면 오프셋을 포함시켜줘야 할 것입니다. 또한 LOD 가 있는 경우 메시 데칼 지오메트리가 LOD 메시와 상호 관통될 수 있으니 주의하시기 바랍니다.
위젯 인터랙션 컴포넌트
Widget Interaction Component (위젯 인터랙션 컴포넌트)를 사용하면, 월드의 위젯 컴포넌트로 하드웨이 입력 이벤트를 시뮬레이션할 수 있습니다.
레이저 포인터처럼 붙여서 월드에 있는 아무 오브젝트나 지시하여 위젯으로 상호작용하도록 할 수 있습니다. 조금 더 독특한 동작을 하도록 할 수 있는 옵션도 몇 가지 있습니다. 플레이어 컨트롤러에서 표준 입력을 받을 때, 인터랙션 컴포넌트더러 특정 하드웨어 입력을 시뮬레이션하도록 할 수 있습니다. 이를테면 당시에 지시하고 있던 위젯이 무엇이든 거기에 왼쪽 마우스 버튼 클릭을 하도록 말이지요.
기존에 마우스로 월드의 위젯 컴포넌트를 직접 클릭하던 방식은 더이상 지원하지 않습니다. 플레이어에게 (마우스 모드에서) 인터랙션 컴포넌트를 붙인 다음, 플레이어가 입력을 받으면 인터랙션 컴포넌트에 전송하도록 해야 합니다.
VR 프로젝트 템플릿
데스크탑과 콘솔에서의 가상 현실용으로 디자인된 프로젝트 템플릿을 새로 추가했습니다.
열어보려면, 새 프로젝트 템플릿 선택 창에서 새로 생긴 VR 옵션을 선택해 주기만 하면 됩니다.
이 블루프린트 프로젝트는 VR 에서 초당 최대 90 프레임의 속도로 실행되게끔 세팅이 최적화되어 있습니다. 여러가지 유형의 컨트롤러를 지원하기 위해 이 템플릿에는 두 가지 보행 방식이 포함되어 있는데, 두 개의 별도 폰 블루프린트로 나뉘어 있습니다. 첫 번째 것은 게임패드용으로 디자인되어 있고, 두 번째 것은 모션 컨트롤러를 지원합니다. 모션 컨트롤러를 사용하면, 다른 위치로 순간이동하거나 사물을 잡아 던질 수 있습니다. 이 템플릿의 C++ 버전은 나중에 추가될 예정입니다. 또한 모바일 VR 템플릿 역시도 준비중입니다.
모바일용 커스텀 포스트 프로세스
이제 모바일에서 커스텀 포스트 프로세스 머티리얼을 사용할 수 있습니다! 모바일 렌더러를 사용하여 출력한 'TV Static' 이펙트입니다.
-
이 기능을 사용하려면 프로젝트 세팅에서 'Mobile HDR' (모바일 HDR) 옵션을 켜야 합니다.
-
블렌더블 위치를 "Before Tonemapping" (톤매핑 전) 및 "After Tonemapping" (톤매핑 후)로 하는 PostProcessInput0 (SceneColor) 에서의 펫치를 지원합니다.
-
이 기능은 현재 HDR 렌더링에 "모자이크" 모드를 요하는 구형 안드로이드 디바이스에서는 작동하지 않습니다.
-
픽셀 깊이 정보는 아직 지원되지 않습니다.
모바일에서의 라이팅 채널
이제 모바일 렌더러에서 라이팅 채널이 작동합니다. 이를 통해 특정 라이트가 영향을 끼치는 오브젝트를 선택할 수 있습니다. 고급 라이팅 릭을 사용하는 시네마틱에 좋습니다.
-
다중 채널에 복수의 디렉셔널 라이트가 지원됩니다.
-
하나의 프리미티브는 하나의 디렉셔널 라이트에만 영향받을 수 있습니다. 프리미티브에 설정된 첫 번째 라이팅 채널이 영향받을 디렉셔널 라이트를 결정합니다.
-
스테이셔너리 또는 무버블 디렉셔널 라이트에서의 CSM 그림자는 일치하는 라이팅 채널의 프리미트브에만 드리워집니다.
-
다이내믹 포인트 라이트는 라이팅 채널을 완벽 지원합니다.
맥용 셰이더 모델 5 렌더링
이제 맥 메탈에 기본적으로 셰이더 모델 5 가 지원됩니다. 언리얼 엔진 4 에 적용되는 Mac OS X 10.11.6 에서 쓸 수 있는 메탈 기능이 전부 노출됩니다.
-
RHI 스레드 & 병렬 트랜지션을 구현하여 렌더 커맨드 디스패치를 병렬 처리합니다.
-
메탈 컴퓨트 셰이더 지원이 노출됩니다.
-
AMD GPU 에서는 비동기 계산 기능 지원이 노출됩니다.
-
맥에서 새롭게 가능해진 고사양 렌더링 기능은 다음과 같습니다:
-
고품질 동적 노출 (소위 눈 순응 효과).
-
컴퓨트 셰이더 리플렉션 인바이언먼트 - 4.13 별개의 GPU 에서만 가능.
-
디스턴스 필드 앰비언트 오클루전 - 4.13 별개의 GPU 에서만 가능.
-
디스턴스 필드 섀도잉 - 4.13 별개의 GPU 에서만 가능.
-
피지컬 애니메이션 컴포넌트 (실험단계)
피지컬 애니메이션 컴포넌트를 추가했습니다. 피지컬 모터를 통해 스켈레탈 메시 애니메이션 구동을 쉽게 처리해 줍니다!
이 컴포넌트는 모터 세기를 직접 설정할 수 있을 뿐만 아니라, PhAT 에서 만들고 편집할 수 있는 사전 설정 피지컬 애니메이션 프로파일을 사용할 수도 있습니다. PhAT 의 새로운 'Physical Animation Profiles' (피지컬 애니메이션 프로파일) 기능은 다양한 게임 맥락 속에 특화된 캐릭터 물리 법칙과 특수 애니메이션용 미세 조정을 할 수 있는 강력한 수단을 제공해 줍니다.
PhAT 툴에서 다양한 프로파일을 만들고 편집한 뒤 실행시간에 쉽게 교체할 수 있습니다. 블루프린트에 새로 생긴 'Apply Physical Animation Profile' (피지컬 애니메이션 프로파일 적용) 및 "Apply Physical Animation Settings" (피지컬 애니메이션 세팅 적용) 함수로, 물리 애니메이션 작동방식을 동적으로 변경할 수 있습니다.
프로시저럴 메시 가르기
Procedural Mesh Component (프로시저럴 메시 컴포넌트)에 새로 생긴 도구를 통해 실행시간에 프로시저럴 메시를 면으로 "slice" 가를 수 있습니다.
가른 뒤에는, 지오메트리에 "capping" (뚜껑덮기)를 하거나, 필요에 따라 이차 프로시저럴 메시 컴포넌트로 다른 반쪽을 만들 수도 있습니다.
또 이제 프로시저럴 메시에 단순 콜리전이 지원되어, 물리 시뮬레이션 적용이 가능합니다! 마지막으로 스태틱 메시에서 프로시저럴 메시로 데이터를 복사하는 유틸리티를 추가했습니다 (쿠킹 빌드에서 이 기능의 정상 작동을 위해서는 스태틱 메시에서 "Allow CPU Access" (CPU 접근 허용) 옵션을 설정해야 합니다).
VR 메시 페인팅
이제 VR 에디터를 사용해서 텍스처와 메시 버텍스 페인팅이 가능합니다.
이를 통해 모션 컨트롤러를 사용하여 VR 몰입 상태에서 스태틱 메시에 칠을 할 수 있습니다. 이 기능을 사용하려면, VR 에서 '모드' 창을 연 상태로 "메시 페인트" 탭을 클릭하면 됩니다. 이제 단순히 월드의 오브젝트를 선택한 뒤, 조준하고 트리거를 당기기만 하면 칠이 됩니다! 컨트롤러의 트리거 압력 감지도 지원이 되며, "Modifier" (다른 동작) 버튼을 누른 상태에서는 칠을 벗겨낼 수도 있습니다.
VR 폴리지 페인팅
이번 버전에서는, 모션 컨트롤러를 사용하여 VR 상태에서 폴리지 인스턴스 스프레이를 뿌릴 수 있습니다.
폴리지 유형을 선택하고, 레이저를 조준한 뒤 트리거를 당기면 폴리지를 칠합니다! 다른 동작 버튼을 쥔 상태에서는 폴리지를 벗겨냅니다. 트리거 압력 감지도 지원됩니다. 추가적으로 VR 상태의 폴리지 에디터에서 아직 올가미나 선택 툴과 같은 것은 안되지만, 보다 많은 기능을 사용할 수 있게 되었습니다.
VR 모드 색 선택기
이제 VR 모드에서 색 선택기 창을 사용할 수 있어, 라이트의 컬러 프로퍼티나 레벨의 다른 액터를 변경할 수 있습니다. 색 선택기를 사용해서 VR 모드 버텍스 페인팅이나 텍스처 페인팅 색을 선택할 수도 있습니다.
VR 에디터에서 플레이
프로젝트 프로토타입 작업을 수월하게 하기 위해, 이제 VR 에디터 안에서 VR 게임 플레이가 가능해졌습니다. 퀵 메뉴의 '플레이' 버튼을 누르면 VR 모드에서 플레이가 시작됩니다! VR 에디터에 바로 돌아가려면, 양쪽 컨트롤러의 그립 버튼을 쥔 상태에서 양쪽 트리거 버튼을 쥐면 됩니다.
향상된 VR 트랜스폼 기즈모
VR 에디터의 트랜스폼 기즈모에 신기능이 추가되고 보다 사용하기 쉽도록 개선되었습니다!
오브젝트 이동과 회전 느낌이 훨씬 자연스러워졌으며, 이제 VR 안에서 한 2D 면을 기준으로 한 오브젝트 균등 스케일 및 이동 작업이 가능합니다. 계속해서 VR 기즈모를 발전시켜 나가도록 할 것입니다.
VR 에디터 손전등
이제 퀵 메뉴를 사용하여 컨트롤러에 손전등을 달아 씬의 어두운 구석을 밝히거나 다양한 머티리얼이 빛에 어떻게 반응하는지를 확인할 수 있습니다.
VR 에디터에서 스크린샷
이제 VR 에서 바로 스크린샷을 찍을 수 있습니다!
VR 편집 모드 자동 전환
이제 VR 에디터가 활성화되어 있으면 VR 버튼을 누르거나 수동으로 탈출할 필요 없이 VR 편집 모드로 들어가고 나올 수 있습니다! 에디터가 포어그라운드 실행된 상태에서 헤드셋을 착용하면, VR 편집 모드에 자동으로 들어가고, 헤드셋을 벗으면 나오게 됩니다.
에디터 세팅 실험단계 부분의 VR 아래 VR 모드 자동 전환을 선택할 수 있는 세팅이 있습니다.
시퀀서 임포트/익스포트
이제 시퀀서에서 비선형 동영상 편집 프로그램 공용 파일인 CMS EDL 파일을 임포트/익스포트할 수 있습니다.
위의 샷은 시퀀스를 Adobe Premiere Pro 에 익스포트한 것입니다. 시퀀스 내 각 샷은 별도의 무비 파일로 작성되고, 이것을 EDL 파일이 레퍼런싱합니다. Premiere 에서 시퀀스에 가한 변경사항을 다시 UE4 시퀀서에 임포트해 올 수 있습니다!
시퀀서에서 OpenEXR 파일로 HDR 데이터를 익스포트하는 기능을 확장시켜 HDR 데이터 인코딩에 사용되는 색 공간을 선택할 수 있도록 했습니다.
마지막으로, 이제 시퀀서에 오브젝트나 트랙으로 FBX 애니메이션을 바로 익스포트하는 기능이 지원됩니다. 애니메이션 트랙을 FBX 로 익스포트할 수도 있습니다!
렌더시 시퀀서 번 인
무비 시퀀스를 렌더링할 때, 익스포트된 이미지에 대한 '번 인' 환경설정이 가능합니다. 샷 식별이나 기록을 유지하는 일상 작업에 매우 유용합니다.
미디어 프레임워크 개조
미디어 프레임워크 API 가 완전히 개조되고, 새로운 기능이 다수 추가되었습니다. 미디어 프레임워크는 라이브 비디오 오디오를 프로젝트에 삽입할 수 있는 API 로, 여러가지 강력한 기능이 추가되어 있습니다.
-
재생목록 애셋으로 다수의 미디어 소스 연속 재생
-
오디오 재생 지원
-
미디어 파일 임포트 작업방식 개선
-
블루프린트 통합 부분 개선
-
다중 플랫폼 퍼포먼스 향상
-
GPU 상에서의 픽셀 포맷 변환
-
일부 플랫폼 비디오 크기 동적 변경 지원
안드로이드
-
다중 오디오 트랙 지원
-
디바이스에서 가능한 경우 HTTP 라이브 스트리밍 (HLS) 지원 (m3u8)
Playstation 4
-
HTTP 라이브 스트리밍 (HLS)
-
재생 조작 방식 개선 (일시정지, 속도설정 등)
-
미디어 파일 메모리에 사전 캐시 가능
-
FArchive 에서 미디어 열기
-
동시에 여러 비디오 재생 가능 (메모리 풀 세팅을 증가시켜야 할 수도 있습니다)
윈도우
-
H.264 지원
-
HTTP(S) 및 RTSP 스트림 지원 안전성 향상
-
오류 처리 및 로그 기록 향상
-
안전성 및 사용 편의성 개선
-
비표준 & 미지원 코덱 지원 개선
주
-
초기 실험단계 macOS/iOS 지원 (AvfMedia 플러그인)
-
실험단계 리눅스 지원 (GitHub 의 VlcMedia 플러그인 필요)
-
실험단계 Video-Over-IP 지원 (GitHub 의 NdiMedia 플러그인 필요)
-
XboxOne (MfMedia) 및 HTML5 는 아직 미지원
-
시퀀서/비디오 녹화 기능과의 통합은 4.14 예정
-
PlatformMediaSource 애셋 아직 미구현
플랫폼 SDK 업데이트
새로운 버전이 나올 때마다 플랫폼 파트너의 최신 SDK 출시 버전을 지원하도록 엔진을 업데이트하고 있습니다. 또 이번 출시 버전에서는, UE4 바이너리 버전의 윈도우에서 iOS/tvOS 프로젝트를 원격 컴파일할 수 있습니다!
-
iOs/tvOS: 이제 언리얼 엔진 런처로 실행되는 UE4 바이너리 버전의 윈도우 버전에서 코드 프로젝트가 지원됩니다 (원격 컴파일할 맥이 필요합니다).
-
macOS: 이제 Xcode8 과 macOS 10.13 Sierra 를 지원합니다.
-
iOS/tvOS: 이제 iOS10/tvOS10 을 지원합니다.
-
XboxOne: August 2016 XDK 로 업그레이드했습니다.
-
Playstation 4: PS4 SDK 3.508.201 로 업그레이드했습니다.
-
Oculus Rift: Oculus 1.6 Runtime 으로 업그레이드했습니다.
-
SteamVR: OpenVR 1.0.2 로 업그레이드했습니다.
-
Google VR: iOS 용 Google VR (Cardboard) 가 지원됩니다.
-
OSVR: v0.6-1194-g0c54f5e 로 업데이트했습니다.
-
안드로이드: Google Play Games 네이티브 C++ SDK 가 2.1 로 업데이트됐습니다.
-
안드로이드: Google Play Services 가 9.2.0 로 업데이트됐습니다.
-
안드로이드: Nougat, 소위 안드로이드 7.0 에서의 실행을 지원합니다.
-
Vulkan API: SDK 를 1.0.17.0 버전으로 업데이트했습니다 (안드로이드 및 윈도우 용).
랜드스케이프 테셀레이션 개선
랜드스케이프의 하드웨어 테셀레이션이 훨씬 빨라졌습니다! 랜드스케이프는 이제 최상위 레벨 오브 디테일(LOD) 에서만 하드웨어 테셀레이션을 렌더링하며, 랜드스케이프가 두 번째 LOD 로 접어들면서 페이드 아웃 됩니다. 그 이후의 LOD 에는 더이상 테셀레이션이 활성화되지 않습니다. 이를 통해 카메라에 매우 가까운 경우 디스플레이스먼트나 디테일 추가를 위해 테셀레이션을 켜는 경우의 퍼포먼스가 크게 향상됩니다.
위 시각화에서, 최상위 LOD (흰색)은 테셀레이션을 켜고 렌더링한 반면, 다른 LOD (유색)은 테셀레이션 없이 렌더링되었습니다.
애니메이션 포즈 애셋
포즈 애셋이라는 새로운 유형의 애니메이션 애셋을 추가했습니다. 여기에는 네임드 본 포즈 세트가 들어있어, 애디티브 방식으로 블렌딩할 수 있으며, 버텍스용 셰이프 블렌딩을 할 때와 비슷한 식입니다.
한 가지 사용 예라면, FACS (Facial Action Codding System, 얼굴 동작 코딩 시스템)이나 비짐(viseme) 커브로 포즈 구동이 가능한 얼굴 애니메이션을 지원할 때 사용할 수 있습니다. 하지만 이 시스템은 여러 포즈를 블렌딩하여 새로운 애니메이션을 만들 때도 사용할 수 있습니다.
현재 콘텐츠 브라우저의 맥락 메뉴나 페르소나의 애셋 생성 메뉴를 통해 애님 시퀀스에서 포즈 애셋을 만들 수 있습니다. 포즈 애셋을 만들 때, 포즈 이름은 자동 생성됩니다. 그 후 각 포즈의 이름 변경은 일일이 해주거나, 클립보드 붙여넣기를 통해 한꺼번에 할 수도 있습니다.
포즈는 일반 애니메이션 커브로 구동됩니다. 애니메이션에 존재하는 한 커브를 확인할 수 있습니다. 페르소나에서 커브로 구동되는 포즈를 미리보려면, 현재 프리뷰 포즈 애셋을 설정해야 합니다.
애님 그래프에서 Pose Blender (또는 Pose By Name) 노드를 사용하여 들어오는 커브에 따른 포즈를 출력할 수 있습니다.
이 시스템을 지원하기 위해 애디티브 블렌딩 관련 스케일 처리 방식을 개선시켰습니다. 앞으로 (사운드 웨이브와 같은) 다른 애셋의 커브도 지원하여 포즈 애셋과 모프 타겟을 구동시키는 데도 쓸 수 있도록 할 것입니다.
포즈 드라이버 애니메이션 노드 (실험단계)
Pose Driver 노드를 새로 추가, 본의 이동에 따라 (모프 타겟 웨이트와 같은) 커브 값을 구동시킬 수 있습니다.
이는 RBF (Radial Basis Function, 레이디얼 기저함수)를 사용하여 대상 본의 오리엔테이션에 따라 구동되는 값을 보간시킵니다. 포즈 애셋을 사용하여 본에 대한 타겟 포즈와, 각 포즈에서 원하는 커브 값을 정의합니다. 이 노드는 Pose Space Deformer (포즈 스페이스 디포머)로 사용하여, 본의 오리엔테이션에 따라 교정형 블렌드 셰이프를 구동시킬 수 있습니다.
애니메이션 노드 포즈 감시
이제 애님 그래프 노드를 페르소나에서 '감시'할 수 있습니다.
이를 통해 애님 그래프의 특정 시점에서 생성되는 포즈의 표상을 동적으로 확인할 수 있습니다. 다수의 감시값을 한꺼번에 활성화시켜 각기 다른 지점에서의 포즈를 비교해 보면서 정확히 어느 지점에서 현재 포즈에 오차가 생기는지 찾아낼 수 있습니다. 이는 복잡한 애니메이션 블루프린트를 디버깅할 때 매우 유용하게 쓰이며, 더이상 보고자 하는 노드를 루트 노드에 바로 연결해서 블루프린트를 다시 컴파일하지 않아도 됩니다.
씬 캡처 개선
씬 캡처가 새로운 Blueprint Drawing to Render Targets (블루프린트로 렌더 타겟에 그리기) 기능으로 유용해 졌습니다!
-
이제 정투영도법이 지원됩니다.
-
블루프린트가 Capture Scene 함수를 통해 씬 캡처를 업데이트하면, 즉시 수행하여 이후의 이미지 처리는 Draw Material to Render Target 으로 할 수 있도록 합니다.
-
오파시티가 이제 알파에 캡처되어, 씬 캡처의 일부분의 렌더링을 나중에 다른 씬과 합성할 수 있습니다.
-
이제 뎁스를 포함한 다양한 GBuffer 특성도 캡처할 수 있습니다.
-
Hidden Actors (숨겨진 액터)와 Show Only Actors (액터만 표시) 배열을 추가, 씬 캡처에다 무엇을 렌더링할지 쉽게 제어할 수 있습니다.
전장의 안개같은 게임 전용 이펙트도 메시를 정투영 씬 캡처에다 보이는 셰이프로 렌더링한 뒤, Draw Material To Render Target 를 통해 이미지 처리를 하는 것으로 쉽게 구현할 수 있습니다.
굴절 셰이더 개선
Pixel Normal Offset (픽셀 노멀 오프셋) 이라는 새로운 굴절 모드가 생겼습니다. 버텍스 노멀을 기준으로 사용하여, 버텍스 노멀과 픽셀별 노멀의 차이를 통해 굴절 오프셋을 계산합니다. 이는 물리가 아니지만, 평평한 수면에 굴절 효과를 적용시킬 수 있습니다.
왼쪽: 굴절 없는 단순한 씬
가운데: 수면에 적합치 않은 상수 오프셋이 나오는 기본 굴절 메소드
오른쪽: 노멀맵 차를 기반으로 왜곡시키는 픽셀 노멀 오프셋 굴절 메소드
라인 트레이스에서의 텍스처 좌표
라인 트레이스로부터 텍스처 좌표(UV)를 얻어낼 수 있는 프로젝트 세팅을 추가했습니다.
이 옵션은 프로젝트 세팅 - 피직스 - 최적화 아래에 있습니다. 켜면 Find Collision UV 함수를 사용하여 Hit Result 를 취한 뒤 충격 지점에서의 UV 채널에 대한 UV 정보를 알아낼 수 있습니다. 이 기능에는 메모리 비용이 추가로 들지 않는데, UV 정보 사본은 CPU 메모리에 저장되어 있기 때문입니다.
스플라인 편집 개선
블루프린트 에디터에서 스플라인 컴포넌트 기본값 편집
이제 블루프린트 에디터에서 표준 스플라인 비주얼라이저 편집 기능을 사용하여 스플라인 컴포넌트 점을 설정할 수 있습니다. 이 기본값으로 블루프린트의 새 인스턴스가 생성되나, 배치되고나면 이 역시도 인스턴스 단위로 덮어쓸 수 있습니다.
스플라인 비주얼라이저의 맥락 메뉴 중 Reset to Default (기본값으로 리셋) 으로 인스턴스를 블루프린트 기본으로 다시 설정합니다. 블루프린트 기본값을 변경하면 추후 스플라인 지점을 따로 편집하지 않은 모든 인스턴스에 전파됩니다.
디테일 패널에서 스플라인 점을 수치로 편집
예전에는 스플라인 점을 정확히 배치하거나 거기에 스케일, 롤, 탄젠트를 적용할 수 있는 방법이 없었습니다. 이제 그 프로퍼티가 스플라인 점을 선택한 경우 디테일 패널에 노출됩니다:
새로운 스플라인 점 프로퍼티
스플라인 점에 대한 정의를 이제 도착/출발 탄젠트와 임의의 입력 키로 할 수 있습니다. 전자는 불연속 스플라인이 가능한 반면, 후자는 두 점 사이의 보간 속도에 대한 미세 조정이 가능합니다. 이를 통해 스플라인 경로 디자인 자유도가 높아졌습니다.
스플라인 비주얼라이저의 스플라인 컴포넌트 디테일에 보면, 맥락 메뉴에 도착/출발 탄젠트를 고정시키지 않고 별도로 편집할 수 있는 옵션이 있습니다.
점마다 임의의 입력 키를 설정할 수 있게 됨에 따라, 닫힌 스플라인의 경우 루프 위치 입력 키를 지정할 수 있는 방법도 생겼습니다:
입력 키 또는 루프 위치가 지정되지 않은 경우, 기본값은 전과 같이 0.0 에서 시작하여 점마다 1.0 씩 증가합니다.
블루프린트에서 디퍼드 방식 스플라인 업데이트
가끔 블루프린트 컨스트럭션 스크립트에서 스플라인을 순차 방식으로 만들면 좋을 때가 있습니다. 기존에 스플라인 점에 어떤 작업을 할 때마다 스플라인이 다시 빌드되었으나, 이제 최적화의 한 방편으로, 스플라인 점 작업을 한 뒤 스플라인을 다시 빌드할지를 지정할 수가 있게 되었습니다. 명시적으로 Update Spline 노드를 통해 업데이트시킬 수도 있습니다.
컨스트럭션 스크립트에 스플라인 점 입력
가끔 스플라인 비주얼라이저로 스플라인을 수동 편집한 뒤, 블루프린트 컨스트럭션 스크립트로 정돈해 둘 수 있으면 좋을 때가 있습니다. 예로 편집된 모든 점을 구체의 표면에 고정시키는 블루프린트를 들 수 있습니다:
'Input Spline Points to Construction Script' 프로퍼티만 체크하면 이런 효과를 낼 수 있습니다:
서브 애니메이션 블루프린트
이제 애니메이션 블루프린트 안에서 Sub Anim Instance 노드를 사용하여 다른 서브 애니메이션 블루프린트를 레퍼런싱하는 것으로 애니메이션 로직을 공유할 수 있습니다. 또한 이를 통해 큰 애니메이션 블루프린트를 별개의 애셋들로, 예를 들면 '보행'과 '물리' 부분으로 나눌 수 있습니다.
서브 블루프린트의 멤버 변수는 노드의 입력 핀으로 노출시킬 수 있습니다. 서브 애니메이션 블루프린트는 반드시 같은 스켈레톤을 아우터 애니메이션 블루프린트로 사용해야 합니다.
애니메이션 커브 뷰어
페르소나에서 스켈레톤 커브 탭을 제거하고, 그 기능을 개선된 애니메이션 커브 탭으로 옮겼습니다. 이제 여기서 커브 이름변경이나 삭제는 물론, 커브 데이터를 미리보는 것도 가능합니다.
현재 스켈레톤에 속하는 모든 커브 또는 프리뷰 애셋에서 현재 활성화된 커브를 확인할 수 있습니다. 또 활성화된 커브만 보고자 하는 경우 특정 유형 커브만 필터링할 수도 있습니다. 참고로 기본 커브 이름은 Attribute (특성)이니, 어떤 애니메이션 커브도 기본으로 특성 커브가 될 것입니다.
커브 값을 변경하고자 하는 경우, Auto (자동) 옵션을 끄거나, 그냥 값을 입력해도 됩니다.
UMG 위젯의 스프라이트
이제 Paper2D 스프라이트를 UMG 나 슬레이트 위젯의 브러시 입력으로 사용할 수 있습니다. 스프라이트 시트로 개발되었을 수도 있는 UI 아트를 레퍼런싱 가능한 것은 물론, 드로 콜 수 예산이 빡빡한 플랫폼에서 위젯 렌더링 효율을 높이는 데도 도움이 됩니다. 같은 텍스처 아틀라스의 일부인 스프라이트는, 렌더링되었을 때 모두 같은 레이어를 공유하기만 한다면 슬레이트에서 같이 일괄 처리시킬 수 있습니다.
VR 용 인스턴스드 스테레오 렌더링 최적화
인스턴스드 스테레오 렌더링이 여러모로 개선되었는데, 그 중에는 벨로시티 패스를 인스턴스드 스테레오 렌더링을 사용하도록 이동시킨 것도 포함됩니다. PS4 에서의 멀티 뷰 지원도 활성화되어, ISR 경로 사용시 퍼포먼스가 크게 향상되었습니다.
GPU 모프 타겟
이제 셰이더 모델 5 수준 하드웨어에서 모프 타겟 계산을 GPU 에서 하도록 하는 기능을 프로젝트 단에서 설정하여, 그만큼 CPU 부하를 줄일 수 있게 되었습니다:
랜드스케이프 셰이더 메모리 최적화
이제 랜드스케이프가 랜드스케이프 머티리얼에 대한 셰이더 조합을 극히 적은 수만 컴파일하여, 첫 로드시 셰이더 컴파일 시간이 단축되고, 에디터 반복처리 시간이 빨라지며, 메모리 사용량과 셰이더 캐시 크기가 줄어들었습니다.
모바일용 그림자 최적화
4.12 버전에 Combined Static and CSM (스태틱과 CSM 결합) 섀도 모드가 최적화가 추가되었었습니다. 이 모드에서는 스테이셔너리 디렉셔널 라이트가 스태틱 오브젝트에서는 스태틱 섀도를 드리우고, 다이내믹 오브젝트에서는 CSM 섀도를 드리웁니다. 4.13 버전에서는, CSM 섀도를 드리우는 다이내믹 오브젝트의 바운드에 따라 적합한 셰이더가 자동 선택되며, 스태틱과 CSM 결합 섀도를 받게 될 프리미티브마다 일일이 태그 설정해 줄 필요가 없게 되었습니다.
랜드스케이프 임포트 플러그인
랜드스케이프 파일 포맷에 새로운 플러그인 API 가 추가되어, 랜드스케이프에 각기 다른 하이트맵과 웨이트맵 파일 포맷을 지원하는 플러그인을 개발할 수 있게 되었습니다. 기존의 raw 및 png 지원 부분이 새로운 API 로 변환되었습니다. 특히 png 지원 부분을 보면 새로운 랜드스케이프 파일 포맷 플러그인 구현을 위한 좋은 참고가 될 것입니다.
안드로이드용 자동화 테스팅
이제 프로젝트 런처로 자신의 프로젝트를 여러 대의 안드로이드 디바이스에 동시 실행시킬 수 있습니다. 각 디바이스에서 실행되는 앱은 USB 케이블로 연결된 호스트 PC 와 상호 통신하여 세션 프론트엔드 창에 나타날 것입니다.
그 후 모든 디바이스에서 자동화 테스트를 실행시키고 세션 프론트엔드에서 결과를 확인할 수 있습니다.
안드로이드에 OpenGL ES 3.1 지원
UE4 가 안드로에드에 다수의 OpenGL ES 2.0 과 3.1 기능을 지원한지도 오래 되었지만, 이제 안드로이드에서 ES 3.1 을 전용 타겟으로 삼을 수 있습니다. 이로써 고사양 안드로이드 디바이스가 메탈이나 불칸과 기능적으로 호환되게 되었으며, 사용할 수 있는 텍스처 샘플러 갯수도 16 개로 늘어날 뿐만 아니라 유니폼 버퍼를 사용하여 퍼포먼스도 향상됩니다.
프로젝트를 패키징할 때 ES 2.0 과 ES 3.1 셰이더를 모두 패키징해 두고, 디바이스 성능에 따라 최적의 셰이더 플랫폼을 선택하도록 할 수도 있습니다.
모바일 패키지 마법사
콘텐츠 없이 최소 앱만 앱 스토어에 올리고 나머지 콘텐츠는 클라우드에서 내려받도록 하는 모바일용 패키징을 지원하는 모바일 패키지 마법사를 추가했습니다.
-
주기적인 DLC 업데이트가 있는 대규모 게임에서는 흔한 패키징 방식입니다.
-
텍스처나 셰이더 포맷등 사용자 디바이스에 맞는 콘텐츠만 내려받도록 할 수도 있습니다.
-
프로젝트 런처 창에서 새 프로파일 생성 옵션으로 마법사를 열 수 있습니다.
모바일에서 최대 정밀도 머티리얼
모바일 디바이스에서 사용되는 픽셀 셰이더에 (기본값은 중간 정밀도이지만) 최대 정밀도를 사용하도록 하는 옵션이 머티리얼에 생겼습니다. 머티리얼에서 월드 좌표를 계산하는 경우 도움이 됩니다.
안드로이드용 바이너리 셰이더 캐시
컴파일된 셰이더를 첫 사용시 디스크에 저장해 두고, 다시 실행할 때 저장된 셰이더를 재사용합니다.
-
GL_OES_get_program_binary 익스텐션이 필요합니다.
-
기본적으로 꺼져있지만, 안드로이드 디바이스에서만 켤 수 있습니다. (r.UseProgramBinaryCache=1)
현지화 텍스트 포맷 개선
번역 정확도 향상을 위해 현지화 텍스트 포맷을 개선시켰습니다.
한글 조사 변환:
-
hpp(Hangul Post-Positions)는 한국어에서 선행하는 낱말 끝 글자의 종성 유무에 따라 바뀌는 조사를 자동으로 처리해 줍니다.
-
문법: {변수}|hpp(은,는) - {변수}가 종성으로 끝나면 조사는 "은", 아니면 "는" 이 됩니다. 지원되는 조사 목록은 다음과 같습니다: (은,는) (이,가) (을,를) (과,와) (아,야) (이어,여) (이에,예) (이었,였) (으로,로)
-
포맷 예제: "{Arg}|hpp(은,는)"
{Arg}="사람" 이면 결과는 "사람은"
{Arg}="사자" 면 결과는 "사자는"
복수에 따른 변환:
-
복수(plural)는 텍스트 포맷에 주어진 수에 따라 다른 텍스트를 선택합니다. 복수는 "There is 1 cat" 이나 "There are 4 cats" 처럼 기수가 될 수도, "You came 1st!" 나 "You came 2nd!" 처럼 서수(ordinal)가 될 수도 있습니다.
-
복수는 키-값 짝 형태로 지정하며, 뒤따르는 키워드는 다음과 같습니다 (CLDR 데이터를 기준으로 한 문화권 정의에 따릅니다): zero, one, two, few, many, other. 값은 따옴표로 포맷 마커를 포함할 수도 있습니다.
-
기수 포맷 예제: "There {NumCats}|plural(one=is,other=are) {NumCats} {NumCats}|plural(one=cat,other=cats)"
-
서수 포맷 예제: "You came {Place}{Place}|ordinal(one=st,two=nd,few=rd,other=th)!"
성별에 따른 변환
-
성별(gender)은 텍스트 포맷에 주어진 ETextGender 값에 따라 다른 텍스트를 사용합니다. 예: "Le guerrier est fort", "La guerrière est forte".
-
성별은 masculine (남성), feminine (여성), neuter (중성) 순서의 값 목록으로 지정합니다 (중성은 옵션입니다). 값은 따옴표로 포맷 마커를 포함할 수도 있습니다.
-
포맷 예제: "{Gender}|gender(Le,La) {Gender}|gender(guerrier,guerrière) est {Gender}|gender(fort,forte)"
복수/성별 포맷 지원에 필요한 수치/성별 값 전달을 위해, FText::Format(...) 함수군 모두 이제 FText 가 아닌 FFormatArgumentValue 를 값으로 받습니다. 이는 어떠한 수치 유형이나 ETextGender 또는 FText 에서도 묵시적 생성이 가능합니다.
블루프린트에서 이러한 값 유형을 설정하는 방법은 Format Text 노드에 와일드카드 핀으로 노출시키는 것입니다:
FText::Format(...) 를 여러번 호출하기 위해 재사용할 때는 포맷 패턴을 미리 컴파일해둘 수도 있습니다. FTextFormat 인스턴스를 만들어 저장한 다음 FText::Format(...) 에 패턴으로 전달해 주기만 하면 됩니다.
멀티스레드 오디오 (실험단계)
에디터 외부에서, 사운드 큐 평가와 활성 웨이브 인스턴스 결정 작업이 이제 게임 스레드와 독립적으로 가능해졌습니다. 게임의 활성 사운드 큐 양이나 복잡도에 따라 볼 수 있는 이득은 달라지지만, 평균적으로 초기 테스팅에서 프레임당 게임 스레드에서 대략 1 ms 가 오디오 스레드로 전환되는 것을 볼 수 있었습니다.
이 기능은 4.13 에서는 기본적으로 꺼져있으나, BaseEngine.ini 의 [Audio] 섹션에서 UseAudioThread 를 true 설정하면 사용할 수 있습니다.
네트워크 리플레이 하위 호환성
리플레이 녹화 기능이 이제 하위 호환됩니다. 즉 빌드에 변경을 가하거나, 심지어 리플리케이트되는 프로퍼티를 추가 또는 제거한 뒤에도 구버전에서 녹화한 리플레이를 신버전에서 로드할 수 있습니다.
이 기능을 테스트해 보려면, 단순히 특정 빌드로 녹화를 한 뒤, 리플리케이트되는 프로퍼티를 변경하고서, 새 빌드로 같은 리플레이를 로드해 보면 됩니다!
대부분의 작업은 각각의 리플리케이트되는 프로퍼티에 대한 로우 레벨 반영 정보에 의해 처리됩니다. 커스텀 시리얼라이즈된 (UObject::NetSerialize) 네트워크 데이터의 경우, 이제 새로 추가된 두 개의 FArchive 함수 (FArchive::EngineNetVer() 와 FArchive::GameNetVer()) 를 사용하여 스트림의 현재 네트워크 버전을 구하여 구버전 데이터를 수동 처리할 수 있습니다.
빌드 그래프 스크립트 (실험단계)
BuildGraph (빌드 그래프) 스크립트를 통해 UE4 빌드 명령 커스텀 시퀀스를 만들어 빌드를 자동화시킬 수 있습니다. 그래프는 MSBuild 나 ANT 나 NAnt 와 비슷한 문법을 사용하는 XML 스크립트를 사용하여 선언하며, '태스크'로 이루어진 종속 '노드' 망으로 구성됩니다.
Engine/Build/Graph/Examples/… 에서 몇 가지 BuildGraph 스크립트 예제를 확인하실 수 있습니다.
설치 빌드 제작용 스크립트
설치 UE4 배포판용 빌드 프로세스를 BuildGraph 스크립트 언어로 재작성했습니다. 프로세스를 단순화시키고 엔진을 커스터마이징하여 사용하는 다른 개발팀과의 투명성 제고를 위함입니다. 이 스크립트는 Engine/Build/InstalledEngineBuild.xml 에서 찾을 수 있으며, 다음 명령줄로 자동화 툴을 호출하여 실행시킬 수 있습니다:
윈도우:
BuildGraph -target='Make Installed Build Win64" -script=Engine/Build/InstalledEngineBuild.xml -clean
맥:
BuildGraph -target='Make Installed Build Mac" -script=Engine/Build/InstalledEngineBuild.xml -clean
빌드 프로세스 커스터마이징에 쓸 수 있는 옵션 목록을 확인하려면 -listonly 를 붙이면 됩니다.
TSet 의 언리얼 프로퍼티화
이제 TSet 를 UPROPERTY 로 사용하여 자동 시리얼라이즈, 가비지 콜렉션, ini 세팅, 디테일 패널을 통한 (입력은 "(1,2,3)" 식의 스트링으로 제한된) 편집에 사용할 수 있습니다. TMap 과 비슷하게 TSet 프로퍼티의 경우 아직은 리플리케이트되는 멤버나 블루프린트에서 사용할 수 없습니다.
나머지 자세한 출시 노트 전문은 언리얼 엔진 문서를 참고하시기 바랍니다.