2014년 8월 14일

언리얼 엔진 4.4 출시!

저자: * Brandon Sieprawski

언리얼 엔진 4.4 에는 저희의 새로운 UI 디자인 및 스크립팅 툴세트인 언리얼 모션 그래픽의 그 첫 모습이 공개됩니다. 또한 저희 AI 로직 툴인 이번 버전의 비헤이비어 트리 에디터가 기본적으로 활성화되어 모두가 사용할 수 있도록 되었습니다! 페르소나 애니메이션 에디터와 페이퍼 2D 에도 여러가지 개선된 내용을 확인할 수 있습니다. 안드로이드와 iOS 플랫폼에 대한 지원도 한층 개선되었으며, C++ 컴파일도 빨라졌습니다. 여러가지 새로운 마켓플레이스 발매 사항이 4.4 에 준비되어 있습니다! 랜드스케이프 산악 샘플이 발매됩니다. 마티네 격투 씬, Mixamo 애니메이션 팩, 페이퍼 2D 및 네트워킹 관련 콘텐츠 예제 맵도 새로 추가되었습니다. 꼭 마켓플레이스에 들러 새로운 샘플을 만나보세요. 멤버쉽 회원들에게는 무료입니다.

이번 4.4 발매에 코드 기여를 해 주신 멋진 개발자분들 모두에게 감사의 말씀을 전하고자 합니다.

Alex Silkin (alexSilkin), Allegorithmic, Joe Riedel (joeriedel), Joel Riendeau (joelriendeau), Kevin Rushin (Malfate), Marc Kamradt (MarcKamradt), Martin Palko (MartinPalko), Michael Delva (Zoubi), Pablo Zurita (pzurita), Rama (EverNewJoy), Robbie Newman (Ehamloptiran), Robert Khalikov (nbjk667), Robert Wallis (robert-wallis), Roy (Shammah), Scott Michaud (ScottMichaud), Sebastien Rombauts (Srombauts), Stephen Whittle (stephenwhittle), Steve Anichini (solid-angle), thk123, Wesley Hearn (wshearn).

주요 신기능

신규: 언리얼 모션 그래픽 (UI 에디터 프리뷰)

언리얼 모션 그래픽(Unreal Motion Graphics, UMG) 는 저희가 실험적으로 새롭게 준비중인 상호작용형 UI 디자인 및 스크립팅 툴입니다!

Editor Screenshot

새로운 위젯 에디터 툴에서는 상호작용형 캔버스 위에서 UI 배치 작업을 하면서 애니메이션을 실시간으로 만들고 미리볼 수 있습니다. UMG 는 블루프린트와 깊이 통합되어 있어, 이벤트를 통한 게임플레이 변화를 쉽게 이끌어낼 수 있습니다. UMG 는 슬레이트 UI 시스템을 기반으로 제작되어 다양한 UI 위젯과 풍부한 기능을 그대로 이어받고 있습니다.

언리얼 모션 그래픽은 현재 4.4 버전부로 'Experimental', 실험단계 기능입니다. 아직 완전한 제품 출시 단계는 아니라, 하위 호환성이 유지되지 않을 수 있습니다만, 여러분의 직접적인 확인을 통한 피드백이 있었으면 합니다! UMG 에 접근하기 위해서는, 에디터 개인설정의 '실험단계' 부분에서 켜 주시면 됩니다.

자세한 정보는 저희 UMG 문서 및 데모 비디오 를 참고해 주시기 바랍니다.

무료 마켓플레이스 콘텐츠

Landscape Mountains (랜드스케이프 산악) - World Machine 으로 만들고 UE4 의 폴리지 & 머티리얼 시스템으로 장식한 이 쇼케이스에서 행글라이더를 타고 광활한 산악 지형을 활강해 봅니다. UE4 와 랜드스케이프 산악을 사용하면 아름다운 산악 지형을 배경으로 한 고사양 실사 지형을 얼마나 쉽게 만들 수 있는지 확인해 보세요!

Wilderness

Matinee Fight Scene (마티네 격투 씬) - 마티네로 제작된 격투씬을 파고들어가 보면서, 입이 딱 벌어지는 프로급 시네마틱을 제작하는 법을 배워봅시다. 캐릭터 애니메이션에서 VFX 까지, 그 모든 것을 에디터 안에서 어떻게 제어했는가 손쉽게 확인할 수 있습니다. 튜토리얼 이나 몇가지 간단한 마티네 비법 으로 시작해 보세요.

Fight Scene

Mixamo Animation Pack (Mixamo 애니메이션 팩) - Mixamo 에서 여러분의 프로젝트에 무료로 사용할 수 있는 캐릭터와 애니메이션 팩을 준비했습니다. 애니메이션이 포함된 캐릭터가 15 개 들어있어, 게임 프로토타입 작업이 전에 없이 쉬워질 것입니다!

Mixamo Character pack

신규 페이퍼 2D 콘텐츠 예제 맵 - 2D 게임 제작 관련 여러가지 주제를 다룹니다. 스프라이트 에디터를 통한 스프라이트 생성 및 편집, 스프라이트와 키프레임을 사용하여 2D 애니메이션 애셋 제작이 가능한 플립북, 블루프린트로 플립북 제어, 2D 애셋에 피직스 추가, 스프라이트에 고전 저해상도 픽셀 느낌 내는 법 등이 포함되어 있습니다. 자세한 정보는 페이퍼 2D 문서 를 참고하세요!

New Paper 2D Content Example

신규 네트워킹 기능 콘텐츠 예제 맵 - 블루프린트만으로 네트워크 함수성을 구현하는 법을 보여줍니다. 이 예제의 Replication 섹션에서는 서버와 클라이언트 사이에 정보를 올바르게 통신하는 방법은 물론 여러가지 기법의 활용 시점도 확인할 수 있습니다. Relevancy 섹션의 예제에서는 플레이어가 진행중인 게임에 참가했을 경우처럼 액터가 연관성이 생기는 경우를 어떻게 처리하는지 확인할 수 있습니다. 자세한 내용은 문서와 함께 하세요!

New Network Features

비헤이비어 트리 에디터

신규: 이제 비헤이비어 트리를 사용할 수 있습니다!

Behavior Tree

비헤이비어 트리 에디터는 AI 상태 로직을 편집할 수 있는 상호작용형 그래프 에디터입니다. 지금까지 수 개월에 걸쳐 꾸준히 개선된 이 툴은 이제 누구나 게임에서 사용해도 될 것 같습니다!

AI 실행 순서

비헤이비어 트리 노드에 그 부모 영역 내에서 실행되는 순서를 나타내는 표식이 생겼습니다. 그 위에 커서를 올리면 트리 내 같은 레벨에 있는 표식도 같이 강조됩니다:

AI Execution ORder

디버깅할 때는, 표식에 트리 내 전체적인 순서가 표시됩니다:

AI 2

서술형 노드 툴팁

모든 내장 노드에 자신의 기능을 설명하는 툴팁이 생겼습니다. 노드에 커서를 올려보면 어떤 역할을 하는지 알 수 있습니다.

ai 3

렌더링

신규: 클리어 코팅 셰이딩 모델

Clear Coat (클리어 코팅) 셰이딩 모델은 반투명 코팅이 덮여있는 재질을 더욱 쉽게 디자인할 수 있습니다.

Clear Coat

(주: 얼룩 부분은 머티리얼 에디터에서 추가한 부분이며, 셰이딩 모델의 일부는 아닙니다.)

이 모델은 금속이든 비금속이든 표준 머티리얼 표면 위에 반투명 필름막이 있는 복층 재질을 표현하는 데 사용 가능합니다. 구체적으로 이 무색 금속 위에 부드럽게 색을 입힌 필름 이종 모델링을 위해 디자인되었습니다.

예로는 아크릴이나 락카 투명 코팅, 소다 캔이나 차량 도색처럼 금속 위에 입힌 색 필름을 들 수 있습니다.

새로 노출된 파라미터는 두 가지입니다:

Clear Coat (투명 코팅)은 투명 코팅 막의 양으로, 0 은 표준 셰이딩 모델처럼, 1 은 최대 투명 코팅 모델처럼 작동합니다. 마스킹에 좋습니다.

Clear Coat Roughness (투명 코팅 러프니스)는. 투명 코팅 막에 대한 러프니스입니다. 작은 값에는 정확한 모방이 나옵니다. 매우 거친 투명막도 지원은 됩니다만, 현실에서 볼 수 있는 것에 비하면 아주 정확하게 모방되지는 않을 것입니다.

신규: 라이트매스에서 형광등

라이트매스 레이트레이서가 이제 캡슐 모양 포인트 라이트를 지원합니다. 이 변경사항에 영감을 준 커뮤니티 제출 내용에 감사드립니다!

TubeLight.png

페이퍼 2D

페이퍼 2D 스프라이트 깍둑썰기(Dice)

페이퍼 2D 스프라이트의 깍뚝썰기(Dice)가 가능합니다! 반투명/마스크드 구역을 불투명 구역과 분리시켜, GPU 렌더링 비용을 절감시켜 줍니다.

이 기능을 사용하려면 Render Geometry Type 을 Diced 로 설정하고 애셋의 대체(Alternate) 머티리얼을 불투명 머티리얼로 설정해 줘야 합니다.

2D Sprite Dicing

페르소나

애니메이션 편집 작업방식 개선!

효율적인 페르소나 UI. 페르소나의 모든 모드에 대해 레이아웃을 개선시키고 단순화시켰습니다.

Improve Animation Editing Workflow

신규 툴바! 페르소나의 각 모드에 자주 사용되는 기능이 포함된 툴바가 생겼습니다.

Anim Editing 2

New Toolbars

애니메이션 썸네일. 이제 콘텐츠 브라우저에 애니메이션이 예쁜 썸네일로 표시됩니다.

Thumbnail Animations

자동화 자동 미리보기. 이제 애셋 브라우저의 애니메이션 시퀸스 애셋에 커서를 올리면 자동 미리보기가 가능합니다.

Animate Auto Preview

모든 애니메이션 저장. 페르소나의 파일 메뉴에 '모든 애니메이션 애셋 저장' 기능을 추가했습니다.

Save

숨겨진 본 선택. 이제 뷰포트에서 숨겨진 본을 선택할 수 있습니다 (메시에 피직스 애셋이 있어야 합니다).

Hidden Bones

인라인 도움말 삽입. 이제 오른편에 새로 생긴 도움말 링크를 통해 각 애니메이션 에디터 유형에 대한 문서로 쉽게 점프할 수 있습니다.

Inline Help Links

메시 LOD 뷰. 메시 디테일 뷰에 이제 LOD 세팅, 각 LOD 에 대한 머티리얼까지 함께 표시됩니다.

Mesh Load View

애니메이션 임포트 도움말. FBX 파일에서 애니메이션을 임포트하는 도중 발생하는 오류는 이제 메시지 로그에 자세한 도움말 설명이 붙습니다.

Animateion Import Help

스켈레톤 트리에서 Shift+클릭 으로 계층구조를 접고/펼칠 수 있습니다.

페르소나 뷰포트의 디스플레이 정보가 필수 정보만 표시하도록 간소화되었습니다.

몽타주 슬롯에 잘못된 이름이 사용되면 유용한 오류 메시지가 표시됩니다.

애니메이션 '리타게팅' 옵션이 스켈레톤 트리 탭에만 표시됩니다.

애니메이션 에디터의 줌 기능이 이제 현재 마우스 위치를 기준으로 합니다.

마지막으로 애셋을 레퍼런싱하는 모든 애님 그래프 노드는 이제 애셋에 더블클릭 하여 편집용으로 열 수 있습니다.

블루프린트

신규 블루프린트 노드: Set Members in Structure

이 노드는 사용자 정의 구조체 내 변수에 값을 쉽게 할당할 수 있게 해 줍니다. 노드의 디테일 창을 통해 표시할 구조체 변수를 선택할 수 있습니다.

Blueprints Node: Set Members in Structure

신규 블루프린트 노드: Set Timer Delegate

이 노드는 원하는 간격마다 커스텀 이벤트를 쉽게 실행시킬 수 있습니다. 선택적으로 'Looping' 체크 박스를 사용하여 이벤트 반복 호출이 가능합니다.

Blueprints Node: Set Timer Delegate

플랫폼 개선

디바이스 Provision 관련 에디터내 튜토리얼 을 포함해서 모바일 작업방식에 엄청난 수의 개선사항이 있습니다. 모바일에서 인스턴싱된 폴리지와 같은 새로운 그래픽 기능을 사용할 수 있습니다. 언리얼 에디터의 맥 버전 반응속도와 메뉴 사용감이 개선되었으며, 여러가지 변경사항이 포함되어 있습니다. 안드로이드는 지원되는 디바이스가 추가되었으며, 블루프린트 스크립트에서 앱 내부 구매 기능을 접근할 수 있게 되었습니다!

관심 플랫폼 관련 자세한 개선사항 목록은 아래 내역을 확인해 주세요!

에디터

신규: 표면에 액터 스냅!

트랜스폼 툴바에 새로 생긴 버튼을 통해 액터를 드래그함에 따라 월드에 액터가 투사되는 기능이 생겼습니다. 복잡한 지형에 오브젝트를 배치할 때 정말 유용하게 쓰일 수 있습니다.

Snap Actors

스내핑 작동방식은 (제한된 평면으로 드래그하는 경우) 드래그 평면을 통해 투사시키거나, (세 축 모드로 드래그할 때) 스크린 스페이스 내 월드에 액터를 투사시키거나, 둘 중 하나입니다.

SnapEditorExample

피직스

신규: 단순 2D 피직스 컨스트레인트

3D 피직스 오브젝트를 2D 평면 속에 쉽게 제약시킬 수 있는 기능이 엔진에 지원됩니다. 3D 횡 스크롤 게임에 유용할 것입니다.

Physics 2D Contraints

이 세팅은 오브젝트 단위로 적용할 수도 있고, 프로젝트 피직스 세팅을 변경하여 프로젝트 단위로 적용할 수도 있습니다.

래그돌은 기본적으로 루트 바디만 제약시킵니다. 이로써 래그돌 전체 애셋은 2D 평면에 유지시킨 채 그 사지만 3D 공간에서 움직입니다.

신규: 커스텀 마찰 모드

피지컬 머티리얼에 다양한 마찰 모드가 지원됩니다!

Custom Friction Modes

기본적으로 두 본이 만나면 평균 마찰 계수를 받습니다. 하지만 평균을 0 으로 맞추기 위해 음수와 양수 계수가 필요한 얼음같은 경우는 문제가 될 수 있습니다.

여러가지 효과 유형에는 여러가지 모드가 유용합니다. 얼음의 경우 얼음 머티리얼의 마찰력을 0 으로 설정해 두고서 Multiply (곱하기) 또는 Min (최소치)를 구하면 될 것입니다.

마찰 모드는 프로젝트 전반적으로 설정할 수도, 피지컬 머티리얼 단위로 덮어쓸 수도 있습니다.

학습 자료

  • 신규 퀵스타트 디렉토리 - 시작하기 문서나 에디터에서 모든 퀵스타트 가이드로 바로 점프할 수 있습니다!
  • 마티네 격투 씬 튜토리얼
  • 마티네 비법 3-8
  • 페이퍼 2D & 스플라인 컴포넌트 관련 콘텐츠 예제 디렉토리
  • 렌더 투 텍스처
  • AI 퀵 스타트
  • FBX 오류 메시지 개선
  • Mixamo 임포트 가이드
  • iOS 퀵 스타트
    • Mac 에서 iOS 로
    • 윈도우에서 iOS 로, 블루프린트 전용
  • iOS 셋업 & 디플로이 관련 에디터내 튜토리얼
  • 프로파일러 개요
  • UMG – 초기 문서
  • 비헤이비어 트리 개요 & 참고서
  • 델리게이트 - AddStatic/BindStatic 관련 추가 정보
  • 스팀 문서 업데이트
  • 에디터내 페르소나 툴팁 & 튜토리얼 업데이트

신규 추가사항

에디터와 툴

  • 내비게이션 경로가 이제 자체적으로 재계산됩니다!
  • 레벨 브라우저에서 이제 드래그 앤 드롭으로 레벨 순서를 빠르게 변경할 수 있습니다.
  • 메인 에디터 영역에 도킹된 애셋 에디터의 위치를 기억, 다음 번 다시 열 때 그 위치에서 열립니다.
  • 캐스케이드용 머티리얼 작업방식이 새로 추가되었습니다. 이제 네임드 머티리얼을 각 이미터에서 레퍼런싱할 수 있는 시스템에 추가시킬 수 있습니다. 이 머티리얼은 그 이름을 통해 블루프린트나 코드에서 외부적으로 접근 가능하며, 덮어쓸 수도 있습니다.
  • 에디터 곳곳에 리치 툴팁 문서 링크를 제공하는 기능을 추가했습니다.
  • 머티리얼 에디터의 라이브 프리뷰 버튼은 모든 편집에 대한 프리뷰 머티리얼 컴파일을 토글시킵니다. 끄면 머티리얼은 '적용'을 눌렀을 때만 컴파일됩니다.
  • 프로젝트 세팅에서 비동기 로딩 시간 제한 및 작동방식을 맞춤 설정할 수 있습니다.
  • 콘텐츠 브라우저에 애셋 동기화시 이제 콘텐츠 브라우저 검색 필터가 리셋됩니다.
  • 액터들을 폴더속으로 이동시 적합한 경우 그 부모/자손 계층구조가 유지됩니다.
  • 디테일 패널에 선택된 BSP 표면에 대한 표면 수와 머티리얼 이름이 추가되었습니다.
  • 커스텀 이벤트에 CallInEditor 플래그를 다는 기능을 추가하고, 메인 에디터 액터 디테일 뷰를 확장시켰습니다.
  • 액터를 배경에 배치하면 이제 기본적으로 Z 가 위쪽으로 정렬됩니다.
  • 이제 Texture Tiles 프로퍼티는 물론 Tiling Distance 를 통해서도 타일링 조절이 가능합니다.
  • 월드 컴포지션 맥락 메뉴가 서로 다른 뷰에서도 더욱 일관성을 유지합니다.
  • 레벨 창에 레벨 컬러가 다시 한 번 표시됩니다.
  • 메시 병합 툴 개선사항:
    • 이제 사용가능한 모든 UV 채널을 병합합니다.
    • 이제 라이트맵 아틀라스 크기에 대한 하드 리밋을 지정하는 기능이 생겼습니다.
    • 페인팅된 버텍스 컬러를 병합하는 기능이 지원됩니다.
  • 캐스케이드나 마티네같은 서브에디터도 이제 분석적 진단 분석 보고를 하여, 툴 개선에 도움이 될 것입니다.
  • 라이브 에디터: 액터가 새로 스폰(되거나 리스폰)되면 현재 세션에서 지난 번 LiveEdited (라이브 편집된) 값으로 즉시 초기화됩니다.
  • 많은 양의 액터를 선택하면 에디터가 오랫동안 얼어있던 문제를 고쳤습니다.
  • 레벨 스트리밍은 점증적 컴포넌트 등록을 사용하며, 현재 반복처리당 10 개의 컴포넌트까지 지원되며, 그 수치는 프로젝트 세팅에서 변경 가능합니다.
  • 기존 스태틱 메시 임포트 옵션을 변경하면 사용자 리임포트 버튼이 활성화됩니다.
  • 클래스 뷰어에서 찾기 결과가 0 이 나와도 더이상 크래시가 나지 않습니다.
  • FMatrix 와 FTransform 에 대한 구조체 커스터마이제이션이 컴포넌트 트랜스폼 디테일 커스터마이제이션과 같은 식으로 작동하도록 변경했습니다.
  • 자동저장 도중 피드백 대화창에 취소 버튼이 나타니다.
  • 스태틱 내비메시 버전이 오래되었을 때 HUD 에 내비메시 오류 메시지를 복원시켰습니다.
  • 인스턴싱된 메시 파티클과 스키닝된 메시에 대한 탄젠트 계산시 LocalToWorld 스케일링을 제거했습니다. 메시 스케일 조절시의 부작용이 방지됩니다.
  • 노멀맵 임포트시의 되돌리기/다시하기 트랜잭션을 제거했습니다.
  • 지오메트리 배치시 잘못된 '브러시 설정' 트랜잭션을 제거했습니다.
  • 레벨 표시여부 토글시 더이상 레이어 표시여부가 강제되지 않습니다.
  • (실행시간 리빌드 없이) 스태틱 내비메시에 대한 커스텀 내비링크 ID 할당을 수정했습니다.
  • 서브레벨 지오메트리에서의 일관되지 않은 내비메시 생성을 고쳤습니다.
  • 내비게이션 연관성 업데이트가 자손 컴포넌트에서 전파되지 않던 것을 고쳤습니다.
  • 리본에서 다른 파티클을 소스로 하여 스폰되는 것이 깨지던 버그를 고쳤습니다.
  • 콘텐츠 브라우저에서 루트 폴더 드래그시의 크래시를 고쳤습니다.
  • 새 프로젝트 생성시 프로젝트 이름에 '/' 와 '\\' 가 허용되던 문제를 고쳤습니다.
  • 콘텐츠 브라우저: 모든 부모 폴더를 자손 폴더로 이동하는 것이 이제 허용되지 않습니다.
  • 에디터 개인설정의 사용자 기본 배열 시리얼라이제이션 관련 문제가 UI 에서 중복된 값을 유발하던 문제를 고쳤습니다.
  • 에디터 개인설정의 Selection Color (또는 다른 프로퍼티)를 기본값으로 리셋시키면 에디터 재시작 전까지 UI 또는 뷰포트가 업데이트되지 않던 문제를 고쳤습니다.
  • 비저빌리티 툴에 비저빌리티 레이어가 타겟으로 표시되지 않던 것을 고쳤습니다.
랜드스케이프
  • 씬 아웃라이너에 랜드스케이프 액터 아이콘을 추가했습니다.
  • 랜드스케이프 에디터 알파 브러시에 수동 로테이션 옵션을 추가했습니다.
  • 구멍이 있는 터레인을 FBX 메시로 익스포트하는 기능이 지원됩니다.
  • ALandscapeProxy::DataLayer 가 VisibilityLayer 로 이름변경되었습니다.
  • FLandscapeToolSet 가 제거되었습니다.
  • 리토폴로자이즈 툴을 사용하여 XYOffset 을 가진 다른 컴퓨넌트 근처에 컴포넌트를 추가할 때의 문제점을 고쳤습니다.
  • 컴포넌트 삭제/추가시, 삭제된 컴포넌트 또는 그 이웃에 LODBias/ForcedLOD 케이스가 있던 문제를 고쳤습니다.
  • 랜드스케이프 스플라인 콘트롤 포인트 메시 모빌리티를 스태틱으로 수정했습니다.
  • 스플라인 메시에서의 폴리지 '채우기' 툴을 수정했습니다.
  • 랜드스케이프 스플라인 되돌리기/다시하기 크래시를 (다시) 고쳤습니다.
  • 제공된 텍스처의 +X/+Y 에지를 읽어버릴 수 있었던 알파 브러시의 버그를 잡았습니다.
  • 레이어 이름이 'none' 으로 설정되어 있을 때 랜드스케이프 레이어에 폴리지 재적용 툴을 사용했을 때의 크래시를 고쳤습니다.
  • LOD Bias 가 적용된 컴포넌트에 대한 라이트매스 라이트맵 빌드를 고쳤습니다.
비헤이비어 트리
  • 블랙보드 키 삭제 및 이름변경이 다시 우클릭 메뉴를 통해 정상 작동합니다.
  • 비헤이비어 트리 블랙보드 데코레이터가 관찰중인 키의 값이 변할 때 실행을 요청할 수 있습니다.
  • 비헤이비어 트리에서 더블 클릭해도 포커스가 정상적으로 잡힙니다.
  • 비헤이비어 트리 창이 입력 포커스를 받는 데 관련된 문제를 고쳤습니다.
  • 비헤이비어 트리 루프 데코레이터가 재시작에 영향을 끼치던 문제를 고쳤습니다.
  • ReceiveExecute 또는 ReceiveTick 이벤트 구현시 비헤이비어 트리 태스크의 기본값이 InProgress 로 바뀝니다.

블루프린트

  • UObject 에서 직접 상속되는 유형에 대해 블루프린트 변수를 만들 수 있습니다.
  • 스플라인 메시 컴포넌트 값에 대한 블루프린트 호출가능 접근자를 추가했습니다.
  • 블루프린트에서 SetSortOrder 를 통해 데칼 소트 순서를 설정할 수 있습니다.
  • 오래된 블루프린트와 맵 사이의 문제점을 보다 쉽게 찾아낼 수 있도록 맵 로드 도중 이주된 블루프린트에 대한 블루프린트 로그 경고를 추가했습니다. 블루프린트가 이주된 이후 맵은 저장되었지만 블루프린트는 저장되지 않은 경우 발생할 수 있던 이주 문제 해결의 일환으로, 이주된 블루프린트에 더티 마킹을 하는 에디터 옵션을 메인 에디터 저장/로드 개인설정 아래에도 추가했습니다.
  • 블루프린트 프로퍼티를 사용하여 블루프린트를 폐시기킬 수 있게 되었습니다.
  • 클래스 선택기 대화창에서 동적인 클래스 로딩이 가능해 졌습니다.
  • 다이내믹 로드 발생시 대화창의 항목 펼침 상태가 보존되지 않던 문제를 패치했습니다.
  • 함수와 매크로가 내 블루프린트 패널에 그 카테고리가 표시됩니다.
  • 블루프린트 에디터 내 컴포넌트 모드에서 루트 컴포넌트의 스케일을 편집하여 액터 기반 블루프린트의 기본 스케일을 설정하는 것이 가능해 졌습니다.
  • 블루프린트 노드 클래스에 대한 BlueprintDescription 텍스트와 C++ 노드 클래스의 툴팁 메타데이터를 사용하는 새로운 툴팁 텍스트를 추가했습니다.
  • 그래프 패널에 새로운 위젯 오버레이 시스템이 추가되어, 현재 브러시 전용 구현보다 뛰어난 유연성을 확보할 수 있게 되었습니다.
  • 커브/타임라인 복제시 이름 충돌 감지 코드가 더욱 엄격해져 이름 중복 및 어서트 발생을 방지할 수 있게 되었습니다.
  • 오래된 위젝 블루프린트가 4.4 에 로드는 되지만, 여러가지 프로퍼티가 기본값으로 리셋될 수 있습니다.
  • 이번 릴리스에는 블루프린트 커스텀 이벤트를 에디터 내 액터에서 호출할 수 있는 유틸리티 함수로 마킹하는 기능이 도입되었습니다.
    • 액터에서 관리/주변 작업을 수행할 수 있는 블루프린트 유연성은 물론 심지어 블루프린트 함수성을 에디터 내에서 미리볼 수 있는 형태로 제공한다는 개념이기도 합니다.
    • 커스텀 이벤트 함수는 블루프린트 디테일 패널에서 Call In Editor 옵션을 체크하여 이 기능을 사용할 수 있는 것으로 마킹 가능합니다. 함수 호출을 위한 UI 는 블류틸리티 섹션의 메인 디테일 패널에 위치해 있으며, 현재 선택된 액터 블루프린트에서 채워집니다.
  • 미사용 변수 삭제에 대한 되돌리기/다시하기가 지원됩니다.
  • 블루프린트 오버랩 질의가 비동기 씬도 검사합니다.
    • 블루프린트 씬 질의는 이미 동기 씬과 비동기 씬 모두 검사합니다. 블루프린트에 대한 오버랩 질의는 그렇게 하지 않는 것으로 밝혀졌습니다. 이 부분을 수정하기는 했지만, 오래된 일관성 없는 작동방식에 의존하는 경우 일부 작동방식은 깨질 가능성이 있습니다.
  • 커스텀 이벤트의 리플리케이션 세팅이 바뀔 때 블루프린트 디테일 패널이 블루프린트를 더티 마킹하도록 변경했습니다.
  • 블루프린트 에디터에서 노드 선택 이후 단축키를 사용할 수 없게 되던 퇴보를 다시 손봤습니다.
  • 형 강제(coercion)은 call array function 노드 내 Target Array 핀만이 아닌 모든 와일드카드 핀에서도 작동합니다.
  • 에디터내 호출 이벤트 대한 플레이스홀더 아이콘을 최종 버전으로 대체했습니다.
  • 블루프린트 에디터의 변수 유형 드롭다운에서 매크로 라이브러리를 제거했습니다.
  • 모든 블루프린트 생성 함수에서 FUNC_Exec 플래그를 제거했습니다. 일부 함수가 콘솔에서 이름만 입력해도 호출되던 것이 방지됩니다. 콘솔에서 이벤트를 직접 호출하고자 하는 경우, ke * MyEvent 와 같은 문법을 사용하거나, * 부분을 이벤트를 호출하고자 하는 인스턴스 이름으로 대체하면 됩니다.
  • 블루프린트 코드의 무한 루프가 계속해서 경고창 스팸을 유발하던 것을 고쳤습니다.
  • enum 노드 리로드 이후 선택이 해제되던 로드 문제를 고쳤습니다.
  • 블루프린트 원형 종속 (한 블루프린트가 원래 블루프린트를 참조하는 다른 블루프린트에 의존하는) 문제를 고쳤습니다.
  • 블루프린트 컨스트럭션 스크립트를 재실행하면 레벨 로드시 어태치먼트가 깨지던 순서 관련 문제를 고쳤습니다.
  • SpawnActorFromClass 와 AddComponent 노드의 입력을 상수로 픽스하여, 이제 블루프린트에 변수를 만들지 않고도 할당할 수 있게 되었습니다.
  • 함수나 다른 접힌 그래프를 포함하고 있는 노드를 접은 다음 다시 펼쳤을 때 발생할 수 있던 크래시를 고쳤습니다.
  • 부드러운 원형 종속 문제가 있던 블루프린트 로드시 발생할 수 있던 크래시를 고쳤습니다.

렌더링

  • 병렬 렌더러 작업이 크게 진척되었습니다 ("r.RHICmdBypass 0" 콘솔 명령으로 미리볼 수 있습니다).
  • 머티리얼 노드에 리치 툴팁이 추가되었습니다!
  • 디스턴스 필드 폰드에 대한 압축 및 샘플러 유형이 추가되었습니다.
  • 레벨 착색과 같은 디버그 시각화 모드 사용시 텍스트를 수정되지 않은 채 렌더링할 수 있는 옵션을 TextRenderActor 에 추가했습니다. 이 체크박스는 디테일 패널의 Rendering 카테고리 아래 Always Render As Text 입니다.
  • 여러 텍스처 클래스에 익스포트를 추가하여 다양한 모듈에서의 서브클래싱이 가능하도록 했습니다.
  • 최대 해상도 제한 변경을 위한 텍스처 프로퍼티를 추가했습니다 (고급 뷰, Compression 섹션의 MaxTextureSize). 512 로 (퍼포먼스상의 이유로 하드코딩) 제한된 HDR 큐브맵에 특히나 유용합니다.
  • SpawnDecalAtLocation 의 기본 로테이션이 아래를 향하도록 변경했습니다.
  • 스카이라이트의 LightColor 와 Intensity 를 이제 마티네에서 애니메이션 가능합니다.
  • 캐스케이드 메시 이미터가 개선되었습니다.
    • PSA_Velocity 또는 PSA_AwayFromCenter 를 사용하지 않는 메시 이미터는 회전 속도가 서서히 상승하여 수 초 후에는 제어가 불가능할 정도로 스핀을 하게 됩니다.
    • 파티클의 오리엔테이션과 스케일링 사이의 연산도 예상대로 이루어지지 않았습니다. 이 업데이트로 이러한 문제가 해결됩니다.
    • 추가적으로 MediumDetailSpawnRateScale 가 폐기되어 QualityLevelSpawnRateScale 로 대체되었습니다. 이 새 값은 엔진 퀄리티(scalability) 세팅의 이펙트 퀄리티 레벨에 묶여 있으며, '에픽' 이펙트 퀄리티 레벨에서 한 단계 감소될 때마다 스폰 속도에 QualityLevelSpawnRateScale 을 곱하게 되고 있었습니다. 예를 들어 이미터의 스폰 속도가 100 으로 제작되어 있고 그 QualityLevelSpawnRateScale 이 0.5 인 경우, 이펙트 퀄리티를 '높음'으로 낮추면 스폰 속도가 50 이 되고, '중간' 이 되면 25 가 됩니다. QualityLevelSpawnRateScale 을 1.0 으로 설정하면 이펙트 퀄리티 레벨이 바뀌어도 아무런 변화가 없습니다.
  • 파티클 이펙트 메시가 이제 뷰 모드를 제대로 지킵니다.
  • 빔은 이제 빔 길이에 걸쳐 U 방향으로 0 에서 1 까지 커버하는 두 번째 UV 세트를 전달합니다. UV 세트 0 은 이제 타입데이터 모듈의 타일링 파라미터에 따라 타일링합니다.
  • 메인 뷰포트에서 GBuffer Hint 를 켜면 에디터에 크래시가 나는 문제를 고쳤습니다.
  • Extensibility: UMaterialBillboardComponent 클래스가 이제 ENGINE_API 를 통해 노출됩니다.
  • 라인 뱃처를 플러싱하면 뱃치된 메시가 클리어됩니다.
  • MID 의 블렌드 모드를 마스크드로 변경하는 작업이 정상 작동합니다.
  • blend separate ARB 함수를 옵션으로 이동했습니다. GL_ARB_draw_buffers_blend 스트링에 대한 익스텐션 체크를 추가했습니다.
  • 베이스 패스의 스카이라이트 계산에서 음수 컬러를 수정했습니다.
  • 월드 스페이스 노멀 및 굴절을 사용하는 머티리얼에 대한 컴파일 오류를 고쳤습니다.
  • 랜드스케이프에 테셀레이션 머티리얼을 추가할 때 크게 버벅(spike)이던 문제를 고쳤습니다.
  • 카메라 포함 디스턴스 필드 AO 에 종횡비가 제한되던 것을 고쳤습니다.

게임플레이 및 프레임워크

  • 단순한 메뉴를 빠르게 생성할 수 있는 GameMenuBuilder 모듈을 추가했습니다.
  • 실행시간 도중 마우스가 연결되었는지 감지하는 함수를 추가했습니다.
  • 텍스트 디버깅을 위한 섀도 옵션을 추가하고 HUD 의 DrawText 함수를 정리했습니다.
  • InstancedStaticMeshComponent 에 GetInstanceTransform, UpdateInstanceTransform, GetInstanceCount, RemoveInstance, SetCullDistances 함수를 추가했습니다. 블루프린트에서도 호출 가능합니다.
  • 게임 이벤트에 따라 포스 피드백을 동적으로 조작할 수 있는 잠복성 블루프린트 노드를 추가했습니다.
  • 비주얼 로거에 막대 그래프같은 데이터 로그 가능성을 추가하고, 그 데이터를 화면상에 2D 그래프로 표시하도록 LogVisualizer 툴을 확장했습니다.
  • 튜토리얼에서 주어진 줄에 IDE 를 여는 기능이 지원됩니다.
  • 튜토리얼에 애셋을 열거나 강조하는 기능이 지원됩니다.
  • 애셋 선택기에서 필터 생성 이후 변경하는 기능이 지원됩니다.
  • PropertyHandles 를 통해 FAssetData 로 오브젝트 프로퍼티를 설정하는 기능이 지원됩니다.
    • CameraActor 'AutoActivateForPlayer' 옵션을 추가, 레벨에 배치된 카메라가 PlayerController 에 자동으로 링크되도록 할 수 있습니다.
    • 액터가 PlayerController 의 뷰타겟이 되기 시작하고 끝날 때를 위한 블루프린트를 추가했습니다 (OnBecomeViewTarget / OnEndViewTarget).
    • 그에 대한 네이티브 C++ 이벤트 (BecomeViewTarget / EndViewTarget) 는 이미 존재하며, 이제 블루프린트 이벤트를 트리거합니다.
    • PlayerCameraManager 에서 EndViewTarget / BecomeViewTarget 로의 호출 순서를 변경, 예전 타겟에는 End 이벤트가 먼저 발생한 다음 새로운 것에 Begin 이벤트가 발생하도록 했습니다 (예전에는 반대였습니다).
  • 월드에 완전히 추가되지 않은 레벨에 대한 RerunConstructionScripts 도중 스태틱 컴포넌트의 이동이 가능해 졌으며, 불필요한 컴포넌트 위치 업데이트 방지용 위치/회전 동일성 검사를 위한 한계치를 추가했습니다.
  • '네이티브가 아닌' (즉 C++ 에서 생성되지 않은) 루트 컴포넌트에 설정된 기존 스케일 값 중 (1,1,1) 이 아닌 것은 로드시 자동으로 (1,1,1) 로 회귀됩니다.
    • 기존에는 네이티브가 아닌 루트 컴포넌트에 대한 기본 스케일 값은 생성 시간에 무시되고 있었습니다.
    • 그 결과, 기존 / 새로운 인스턴스 모두 업데이트 전과 같은 스케일로 보일 수 있도록 하기 위해 로드시 그 값을 묵시적으로 복원하고 있습니다.
  • 값을 구하는 함수를 사용할 목적으로 축 바인딩을 가능하게 하는 델리게이트를 받지 않는 InputComponent 에 Axis, AxisKey, VectorAxis 에 대한 바인드 함수를 추가했습니다.
  • 블루프린트 기반 일인칭 템플릿에 대한 튜토리얼을 만들었습니다.
  • 코드 기반 굴리기(Rolling) 템플릿을 만들었습니다.
  • 스켈레탈 메시 컴포넌트를 걷는 캐릭터는 서 있는 본을 기준으로 한 위치와 회전을 유지하여, 메시 원점을 기준으로 제자리에 머물러있기 보다는 애니메이팅되는 본 위에서 움직입니다.
  • 다이내믹 파라미터는 이제 기존 다이내믹 파라미터에서 자신의 파라미터 이름을 복사해 옵니다.
  • 블루프린트 에디터 내 '컴포넌트' 모드에서 트랜스폼 디폴트를 편집하는 작업이 약간 바뀌었습니다.
    • 기존에는 위치, 회전, 스케일 모두 노출되었으나, 기본 루트 씬 루트와 아울러 '컴포넌트' 모드에서 만든 루트 컴포넌트만이었습니다.
    • 업데이트 이후 위치와 회전은 숨겨지고, 스케일은 '네이티브' (C++ 에서 생성된 것이)든 아니든 양쪽 루트 컴포넌트에 노출됩니다.
  • 이제 포스 피드백이 PC 에서도 XInput 디바이스에 대해 지원됩니다.
  • 이제 PlayerController 를 통해 포스 피드백을 끌 수 있습니다.
  • 최대 크기의 스크린샷이 이제 크기조절 가능한 창에 표시됩니다.
  • Get Display Name 이 이제 클래스 변수에 대해 블루프린트에서 사용 가능합니다.
  • 인스턴싱된 스태틱 메시 컴포넌트는 이제 콜리전 이벤트에 걸린 인스턴스와 인덱스로 FHitResult.Item 프로퍼티를 설정합니다. 여기에 위의 함수와 함께 사용하여 특정 인스턴스를 제거하고 실제 스태틱 메시 컴포넌트로 대체하여 폴리지 또는 다른 작동방식에서의 상호작용성을 제공합니다.
  • 블루프린트용 UNavigationPath 도입 - 아직 기능이 많지 않습니다.
  • 이제 인스티게이터를 Spawn Actor Blueprint 노드의 일부로 설정할 수 있습니다. 인스티게이터가 핀에 연결된 와이어를 통해 명시적으로 설정되지 않은 경우, 그 인스티게이터는 자동으로 호출 맥락에 따르게 됩니다. Pawn 맥락에서 Spawn Actor 가 호출된 경우, 그 Pawn 이 인스티게이터가 됩니다. 액터 맥락에서 Spawn Actor 가 호출된 경우, 액터의 인스티게이터는 Instigator 가 됩니다.
  • AIModule 에 PawnActions 가 도입되었습니다. 현재 베타 단계입니다.
  • 커브 테이블 에디터가 이제 데이터를 그리드 위젯으로 표시합니다.
  • (터치 오버 이벤트가 아닌) Touch 이벤트는 이제 PlayerController 에 기본으로 켜집니다.
  • VisLog 파일명을 게임 전용 코드에서 커스터마이징 가능합니다.
  • VisualLog 는 포인터라기 보다는 레퍼런스 개념으로 받아들여집니다.
  • 퍼시스턴트 레벨 로드 이후 서브레벨을 로드할 때 더이상 레벨의 트랜스폼이 유지되지 않습니다.
  • 이제 커스텀 스플래시 화면이 정상 표시됩니다.
  • AActor::GetPawn() 와의 혼동을 피하기 위해 AActor::GetControlledPawn() 를 폐기시켰습니다.
  • 버전비교된 애셋은 더이상 애셋 선택기에 나타나지 않습니다.
  • DestroyApplication 가상 함수는 FApplication. 에 대해 제대로 호출됩니다.
  • 모든 클래스 메타데이터 태그를 문서화했습니다.
  • 패키지 메타데이터를 사용하려 할 때 로그되도록 합니다.
  • 레벨 삭제시 렌더링 리소스가 해제되도록 했습니다.
  • FSlateApplication::SetJoystickCaptorToGameViewport 는 이제 모든 조이스틱을 캡처합니다.
  • FNavigationPath 의 프로퍼티를 public 액세스에서 숨깁니다.
  • ICU 초기화에서 실패시 더 나은 진단 보고서를 제공합니다.
  • LogVisualizer 툴 개선 및 픽스: 로그 항목 더블클릭 반응이 월드의 위치 표시, 로그 항목 및 2D 그래프에 대한 필터, 퍼포먼스 최적화.
  • 블루프린트 노드의 핀 옆 편집 상자 표시(또는 안함)가 개선되었습니다.
  • 소스 파일 정보를 추출된 코멘트 및 레퍼런스 코멘트로 추가하여 OneSky 현지화 서비스에 대한 지원이 개선되었습니다.
  • 문화 불변 텍스트를 수집하지 않도록 현지화 수집 방식을 개선시켰습니다.
  • 문화 불변 텍스트가 포함된 아카이브 또는 패키지를 현지화가 필요한 것으로 플래그 설정하지 않도록 현지화 수집 방식을 개선시켰습니다.
  • 수집되지 않는 텍스트에 대해 경고와 오류가 보고되지 않도록 현지화 수집 방식이 개선되었습니다.
  • 텍스트 콘텐츠에 따라 현지화 수집에 대한 패키지/아키이브 플래그 설정시의 공백 검사가 개선되었습니다.
  • 내비메시 프로젝션 정밀도가 향상되었습니다.
  • UNavigationComponent 의 경로 계산이 이제 경로 자체적으로 처리되도록 만들었습니다.
  • PawnMovementComponent 없는 Pawn 은 여전히 AddMovementInput() 를 사용하여 결과를 읽을 수 있습니다.
    • ControlInputVector 를 PawnMovementComponent 에서 Pawn 으로 옮겼습니다. 컴포넌트에서 거기에 접근하는 데 사용할 수 있는 '내부' 메소드가 Pawn 에 있습니다.
    • Pawn 에 무브먼트 입력 접근자를 추가했습니다: GetMovementInputVector(), ConsumeMovementInputVector(), IsMoveInputIgnored().
    • PawnMovementComponent::IsMoveInputIgnored() 를 블루프린트에 노출시켰습니다.
  • Shooter Game 샘플을 PIE 에서 실행시 부적합한 메뉴 옵션을 제거했습니다.
  • 경로 베리에이션 기능을 제거했습니다 (미사용, 깨짐).
  • Shooter Game 샘플의 텍스트 채팅을 개정했습니다. 표시여부 플래그를 개선하고 클라이언트에서 포커스가 바뀌지 않도록 했습니다.
  • 2D 횡스크롤 C++ 템플릿을 개정하고, 블루프린트 종속성을 줄였습니다.
  • Platformer 게임 메뉴가 새로운 GameMenuBuilder 를 사용하도록 개정했습니다.
  • Vehicle 샘플 게임이 멀티플레이어 지원을 위한 여러가지 개정사항이 있습니다.
  • (1차) 툴팁 폭을 넓혀 클래스 코멘트 줄바꿈이 이상하게 나오지 않도록 했습니다.
  • EQS (Environmental Query System, 배경 질의 시스템) 의 시간 분할이 잘못되어 있던 것을 고쳤습니다.
    • 현재 스텝 실행에 걸린 시간에 따라 나머지 시간을 빼기 보다는 각 스텝 이후 모든 이전 스텝에 대한 나머지 시간을 빼는 업데이트였습니다.
  • Shooter Game 샘플의 크래시를 고쳤습니다.
  • GetMousePosition() 에서 Player 가 null 인 경우의 크래시를 고쳤습니다.
  • 내비게이션 링크의 방향이 RightToLeft 문제이던 것을 고쳤습니다.
  • 주어진 FBox 와 겹치는 경우의 내비게이션 경로 검사를 수정했습니다.
  • 게임 모드에서의 Functional Testing 크래시를 고쳤습니다.
  • 프로젝트 콜리전 세팅(커스텀 프로파일/채널/오브젝트 유형)이 DefaultEngine.ini 에 저장되지 않던 것을 고쳤습니다.
  • 블루프린트를 컴파일하지 않고 열린 상태로 PIE 시작시 발생할 수 있었던 크래시를 고쳤습니다.
  • RerunConstructionScript 도중의 블루프린트 컴포넌트 관련 어태치먼트 문제를 고쳤습니다.
  • 루트 컴포넌트가 없는 소수의 고유 블루프린트 애셋 로드 도중 반복적으로 발생할 수 있는 크래시를재적으로 고쳤습니다.
  • SplitPin 기능에 여러가지 픽스가 있습니다.
CharacterMovementComponent
  • 캐릭터가 낙하 도중 노멀이 보행불가한 지오메트리와 충돌한 경우, 유효한 착지 지점을 검사하여 가능하면 착지합니다.
    • 턱에서의 달리기나 점프가 더욱 유연해 졌습니다. 기존에 캐릭터는 착지 약간 전 '떠다니는' 상태가 되어 속도를 잃었었습니다.
    • 커스텀 작동방식을 위한 virtual ShouldCheckForValidLandingSpot() 를 추가했습니다. 베이스 버전은 지오미트리의 에지가 캡슐의 아래 부분에 닿을 때 true 를 반환합니다.
  • 회전하는 표면에서의 캐릭터 무브먼트, 특히 네트워킹용에 대한 버그 픽스가 있습니다.
    • 몇몇 MovementBaseUtility 함수가 엔진 규칙에 맞도록 변경되었습니다 ('position' 보다는 'location').
    • AActor::PostNetReceiveLocation() 가 로테이션도 포함하도록 변경했습니다 (이제 PostNetReceiveLocationAndRotation 라 부릅니다).
    • UpdateBasedMovement() 에 잘못된 로테이션 델타 계산을 고쳤습니다.
    • 리플리케이트된 로테이션이 캐릭터의 상대 로테이션을 덮어쓰는 것을 고쳤습니다.
    • 속도가 0 에 도달할 때 시뮬레이티드 프록시가 서버 위치와 일치하지 않던 것을 고쳤습니다. 그런 경우 프록시를 한 프레임 더 진행시킵니다.
    • 시뮬레이티드 클라이언트에 대해 bIgnoreBaseRotation 가 무시되던 것을 고쳤습니다. 이 경우 절대 로테이션이 대신 전송됩니다.
  • 타임스텝이 한계치를 넘었을 때 ApplyVelocityBraking 에 변화가 잘못 누적되던 (특히나 프레임 속도가 낮을 때의) 문제를 고쳤습니다.
  • 낙하 도중 캡슐의 아래 부분이 무언가에 충돌했을 때 경사면이 올라오던 것을 방지합니다.
    • 플레이어 콜리전 느낌이 보다 자연스러워져 캡슐같은 느낌이 줄었습니다.
    • 이런 작동방식을 입맛대로 손쉽게 맞출 수 있도록 하기 위해 HandleSlopeBoosting() 을 추가했습니다.
게임 인스턴스 오브젝트 (지속형 게임플레이 데이터)
  • Game Instance 는 레벨 전환 사이에 존재할 수 있을 만큼의 수명을 갖는 트랜션트(휘발성) 오브젝트입니다.
  • C++ 로드 블루프린트 클래스로도 (프로젝트 세팅의 맵과 모드 섹션에서 설정하여) 게임 확장 가능합니다.
  • 레벨을 넘나드는 데이터 저장, 게임의 어플리케이션 상태 관리, 게임 셔센의 수명 내도록 존재했으면 하는 오브젝트의 오너 역할을 하는 데도 사용할 수 있습니다.
  • Game Instance 는 클라이언트와 서버 양쪽에 존재하지만, UObject 이기 때문에 인스턴스간의 데이터 리플리케이션은 현재 없습니다.

페이퍼 2D

  • 스프라이트 렌더 지오메트리 다이싱 기능이 지원, 반투명/마스크드 쿼드를 불투명 쿼드에서 분리해 냅니다 (작업중).
    • 이제 스프라이트에 생긴 대체 머티리얼로 이차 렌더 섹션을 정의할 수 있게 되었습니다 (현재는 다이싱된 지오메트리에만 사용되며, 그 경우 대체 머티리얼은 불투명한 것이어야 한다는 규칙이 있습니다).
    • ESpritePolygonMode::Diced 값을 새로 추가, 렌더 지오메트리에만 유효합니다 (콜리전용 SourceBoundingBox 처럼 취급됩니다).
    • 소스 폴리곤이 여럿 있을 때 렌더 지오메트리와 콜리전 둘 다에 대해 기회성 트라이앵글 병합 기능을 추가했습니다.
  • 스프라이트의 3D 그림자 드리우기가 지원됩니다 (FPaperRenderSceneProxy 는 이제 소스 컴포넌트에서의 CastShadow 를 따릅니다).
  • 플립북에 드래그 앤 드롭을 통한 키프레임 순서변경이 지원됩니다.
  • UPaperFlipbookComponent 에 OnFinishedPlaying 델리게이트를 추가, 비반복 플립북의 재생이 완료(재생 방향에 따라 끝 또는 처음에 도달)될 때마다 호출됩니다.
  • 피벗에 대해 픽셀 그리드 옵션으로 스냅 옵션을 추가 (새 콘텐츠에는 기본으로 켜짐), 소스 사각형에는 픽셀 그리드에 스냅을 강제로 (항상) 켭니다.
  • Content Examples 에 페이퍼 2D 데모 레벨을 추가했습니다.
  • 플립북 컴포넌트의 상태 리플리케이션이 지원됩니다.
  • Tiled 0.90 에서 JSON 으로 익스포트된 타일 맵과 타일 세트를 임포트하는 기능이 지원됩니다.
  • UPaperSpriteComponent 와 APaperCharacter 에 DLL 익스포트가 추가되었습니다.
  • Texture Packer 3.5 UE4 익스포트 옵션이 지원됩니다.
  • UPaperSpriteComponent 와의 쌍을 이루도록 FPaperSpriteSceneProxy 추가하여, FPaperRenderSceneProxy 공통 부모에서 코드를 약간 제거했습니다.
  • 타일 맵 지원이 크게 개선되었습니다 (아직 실험단계 기능이라, 페이퍼 2D 프로젝트 세팅에서 켜 줘야 합니다).
    • 타일 맵에서의 다양한 프로젝션 모드가 제한적으로 지원됩니다 (직교, 등방, 시차 등방. 에디터내 편집에서는 직교만 작동합니다).
    • 타일 세트에 조정가능한 Spacing (공백) 및 Margin (여백) 값을 추가했습니다 (Spacing, 공백은 텍스처 내 타일 사이의 간격이고 Margin, 여백은 가장자리 주변의 간격입니다).
    • X 와 Y 는 물론 레이어 별로도 조정가능한 Z 오프셋을 추가, 겹치는 등방 타일 사용시의 Z 파이팅 교정이 가능합니다.
    • 타일 세트 드래그 앤 드롭으로 새로운 타일 맵 액터를 만드는 기능을 추가했습니다 (타일 폭과 타일 높이를 적당한 기본값으로 설정할 뿐, 별다른 것은 없습니다).
    • 대체용 독립형 타일 맵 에디터를 추가했습니다 (아직 편집 기능이 많지 않습니다).
    • 타일 맵 컴포넌트를 블루프린트에서 사용할 수 있도록 해주는 컴포넌트 애셋 브로커를 추가했습니다.
    • 타일 맵 에디터에 타일 맵 렌더 바운드용 디스플레이 텍스트를 추가했습니다.
    • 타일 맵 애셋을 에디터 뷰포트에 끌어놓아 타일 맵 액터를 만드는 기능이 지원됩니다.
    • 이제 타일 세트와 타일 맵을 편집하면 배치된 타일 맵을 새로 고칩니다.
    • 레이어 측면의 타일세트 포인터 폐기 작업을 마무리, 여러가지 위조 용도를 제거했습니다.
    • 타일 세트 뷰어/에디터가 반투명/마스크드 텍스처를 투명하게 그리도록 만들었습니다.
    • 지오메트리 생성 부분을 게임 스레드상의 일회성 스텝으로 옮겼습니다. 프레임마다 하지 않습니다. (작업중)
  • 여러가지 유형과 메소드의 코멘트를 개선했습니다.
  • Texture Packer Json 임포터를 개선시켜 로테이션, 트리밍, 피벗 포인트 옵션을 제대로 처리합니다.
  • 소스 구역 편집 퍼포먼스가 향상되었습니다.
  • UPaperSpriteComponent 가 UMeshComponent 에서 파생되는 것으로 변환했습니다.
  • 불투명 스프라이트 섹션의 와이어프레임 색을 초록(GPU 행복색)으로 강제했습니다.
  • UPaperSprite 에 대한 디테일 패널을 입맛대로 맞추기 위한 UX 개선이 있었습니다.
  • 페이퍼 2D 텍스처 사용 및 Editor Style 상의 종속성을 제거했습니다.
  • 스프라이트에 콜리전이 없는 경우 콜리전 지오메트리 디버그 텍스트 표시를 제거했습니다.
  • 텍스처 맥락 메뉴 명령 'Configure For Sprites' 이름을 'Configure For Retro Sprites' 로 바꿔 수행하는 기능의 이름을 더욱 잘 반영합니다.
  • 블루프린트 에디터에서 UPaperSpriteComponent 에 bSimulatePhysics 를 설정할 수 없었던 버그를 고쳤습니다.
  • PixelsPerUnrealUnit 이 1.0 이 아닐 때 소스 뷰에서 더블클릭시 불안정안 작동방식을 고쳤습니다.
  • 페이퍼 2D 콘텐츠 쿠킹시 어서트가 날 수 있었던 것을 고쳤습니다 (연관된 텍스처에 대한 ConditionalPostLoad 호출을 추가하여 오래된 스프라이트를 열 때 로드시간 순서 문제를 피할 수 있습니다).
  • 기본 플러그인 머티리얼을 사용하는 배치된 애셋에 뜨는 외부 콘텐츠 레퍼런스 경고를 고쳤습니다.
  • FPaperRenderSceneProxy 의 잘못된 탄젠트 계산때문에 라이팅된 스프라이트에 라이팅이 잘못 나오던 것을 고쳤습니다.

플랫폼

윈도우
  • Win64/Win32 에서 연결된 마우스를 감지하는 함수를 추가했습니다.
  • 이제 게임/에디터가 실행중인 동안에는 윈도우 접근성 기능이 꺼집니다.
  • 다른 빌드 옵션과 마찬가지로 WinXP 지원 역시도 BuildConfiguration.xml 파일에서 켤 수 있습니다.
  • 실행(Launch On:), 파일|패키지 / 파일|쿠킹 에 대한 에디터 분석에 오류 코드를 추가하여, 해당 프로세스 도중 어떤 오류가 나고 있는지 추적할 수도 있고, 저희가 사용자 작업방식 개선을 위한 방향을 잡기도 수월해 집니다.
  • 에디터 시작시 설치된 SDK 를 검사합니다. 특정 에디터 빌드에 대해 지원하는 플랫폼 전부가 메뉴에 표시되도록 할 수 있습니다. 지원은 되지만 적합한 SDK 가 설치되지 않은 플랫폼의 경우, 그에 해당하는 메뉴 항목이 선택되면 SDK 설치 안내 튜토리얼이 실행됩니다.
  • 없는 OpenGL 익스텐션에 대한 버그 픽스 및 윈도우에서 OpenGL 3.x 에 대한 엔트리 포인트입니다.
  • 모바일 Provision 이 업데이트되면 Provision 라이브러리에 제대로 복사되도록 IPP 관련 문제를 고쳤습니다.
  • 빌드, 쿠킹, 패키징, 디플로이, 게임 실행이 가능하도록 모든 것이 준비/설치되었는지 감지할 수 있도록 플랫폼에 새로운 API 가 추가되었습니다.
  • 자체 독립적인 맥 앱 번들의 Binaries/ThirdParty 에 있는 라이브러리를 사용하는 기능이 지원됩니다.
  • 맥 메뉴 바의 창 항목에 닫기 항목이 추가되었습니다 (Cmd+W)
  • 맥의 Ctrl 키와 Cmd 키는 더이상 같은 키로 간주되지 않으며, 별도의 단축키로 등록 가능합니다.
  • 화면밖 1x1 툴팁 창 업데이트를 유예시켜 맥 에디터 반응성을 향상시켰습니다.
  • 진행상황이 표시되는 느린 작업에 대해서 맥 OS X 내장 피드백 창을 구현, 옵션을 통해 로그와 작업 취소 기능이 제공됩니다.
  • 디스트럭터블 메시 에디터의 메시 프랙처 기능이 맥에서 작동합니다.
  • 창마다의 커스텀 메뉴 대신 맥 메뉴 바를 사용할 수 있도록 메뉴 코드를 리팩터링했습니다.
    • 메인 메뉴가 이제 다른 맥 앱처럼 현재 포커스가 잡힌 창을 반영합니다.
    • 메뉴바에 있는 레벨 에디터 위젯을 창의 제목줄로 이동시켰습니다.
  • 에디터가 (iOS 용 프로젝트 세팅에서 찾은) 프로젝트 plist 를 Game/Build/Info.plist 에 저장합니다. Game/Build/Game-Info.plist 에 저장했던 기존 버전과는 다릅니다. 지금 당장은 에디터와 툴이 Game-Info.plist 를 계속해서 찾아 봅니다만, 나중에 폐기될 것입니다.
  • SSL 접속 지원이 가능하도록 맥을 p4api-2014.1 로 업데이트했습니다.
  • 맥 OS X 버전이 10.9.4 보다 오래된 경우 경고를 띄우도록 업데이트하고, 10.10 이 10.9.1 보다 오래된 것으로 오인하지 않도록 고쳤습니다.
  • 맥에서의 트랙패드 감지시 최소 두 손가락 터치중인 경우에만 트랙패드 보고하도록 변경했습니다. 마우스 + WASD 를 사용하면서 트랙패드를 실수로 건드리는 사람들의 문제를 줄이기 위함입니다.
  • MTGL 사용시 glMapBuffer 사용을 끄지 않습니다. 그러한 경우 렌더링 오류가 발생하는 OpenGL 버그가 있습니다.
  • GPU 의 VRAM 양을 OS X 의 OpenGLRHI 에 노출시켰습니다.
  • UE4EditorServices 에 설치된 엔진 버전을 나열하는 코드가 미완 또는 삭제된 버전을 포함하지 않도록 개선시켰습니다.
  • SNodePanel 에서 매직 마우스 및 트랙패드용 우클릭 처리가 개선되었습니다.
  • 맥 IME 지원이 개선되었습니다:
  • 편집중인 범위를 팝업 글리프 선택 창으로 표시합니다.
  • 추가적인 입력 및 클릭이 예상대로 작동하도록 IME 종료시 마킹 및 작성된 범위를 제대로 소거시킵니다.
  • 작성된 범위 편집시 탈자 위치가 제대로 업데이트되도록 했습니다.
  • OS X 에서는 저희 자체 GUID 생성 구현보다는 uuid_generate 를 사용하세요.
  • 맥에서의 UBT 를 최적화시켰습니다. 타겟이 철지난 상태인지 결정하는 데 걸리는 시간히 훨씬 짧아졌습니다.
  • glTexStorage 호출 이후에는 필요할 때만 flush 하도록 하면 영향받지 않는 GPU 의 맥 퍼포먼스가 억제되는 것을 피할 수 있습니다.
  • OS X 용 GL_TEXTURE_BUFFER 우회법을 제거했습니다. OpenGL 드라이버 픽스는 10.9.4 에 들어있습니다.
    • 2013 맥 프로를 제외하고 10.9.3 에서 실행되는 모든 것은 정상 작동하므로 모든 맥은 GL_TEXTURE_BUFFER 경로를 사용할 것입니다.
  • Cocoa 의 자손 창 메커니즘이 원하는 방향과 맞지 않아 사용을 중지했습니다.
    • 테어-아웃 또는 패널 스타일의 창이 정상 창 위로 올라옵니다.
    • 모든 창은 Expose/Spaces/Mission Control 에 나타나며, 시스템 창 순환의 일부입니다.
    • 모달 창은 마지막 표시된 모달 창이 계속해서 맨 위에 열린 상태로 있도록 하기 위해 약간 특별 취급되며, 포커스를 변경하려 해도 시각적 표식 없이 실패합니다.
  • 공유 DDC 폴더가 맥에 마운트되지 않은 경우 /Volumes/UE4DDC 폴더 생성시의 에디터 관련 문제를 고쳤습니다.
  • 매직 마우스로 블루프린트 / 머티리얼 에디터 뷰포트에서의 줌 관련 문제를 고쳤습니다.
  • 여러가지 자잘한 픽스가 있습니다.
모바일
  • iTunes 및 Mobile Provision 설치를 위한 에디터내 튜토리얼을 추가했습니다. 이 튜토리얼은 디바이스에서 실행 또는 앱 패키징을 할 때 자동으로 나타납니다.
  • 모바일 디바이스에 폴리지 인스턴싱된 메시가 지원됩니다.
  • 여러 iOS 디플로이 및 패키징 오류에 대한 에디터내 도움말 및 확장 오류 검사 추가는 물론, 안드로이드 디바이스 호환성이 지속적으로 향상되고 있습니다.
  • 모바일 머티리얼에 PerInstanceFadeAmount 가 지원됩니다.
  • BlackBody 머티리얼 표현식이 이제 ES2 에 지원됩니다.
  • 에디터가 이제 프로젝트 plist 를
  • 에디터가 (iOS 용 프로젝트 세팅에서 찾은) 프로젝트 plist 를 Game/Build/Info.plist 에 저장합니다. Game/Build/Game-Info.plist 에 저장했던 기존 버전과는 다릅니다. 지금 당장은 에디터와 툴이 Game-Info.plist 를 계속해서 찾아 봅니다만, 나중에 폐기될 것입니다.
iOS
  • 블루프린트에 기본적인 iOS 앱 내 구매가 지원됩니다.
    • 주어진 제품 id 에 제품 정보 질의를 위한 것 하나.
    • id 로 지정된 제품의 구매를 위한 것 하나.
  • Metal 지원이 개선되었습니다 (베타 4/5 까지)
  • iOS 에서 점프 거리 링 오류 방지를 위해 유니티 파일 크기를 늘렸습니다.
  • 모듈의 Build.cs 파일 내 PublicAdditionalFrameworks 에 지정된 iOS 프레임워크는 이제 자신의 헤더 디렉토리가 헤더 검색 경로에 제대로 추가됩니다.
  • Strategy Game 및 Platformer Game 에 대해 맥에서 iOS 로 디플로이할 때 디바이스를 찾지 못하는 데 관련된 문제를 고쳤습니다.
안드로이드
  • 콘솔 히스토리를 추가했습니다. 텍스트 입력창에 왼쪽 또는 오른쪽 스와이프로 기존 콘솔 입력을 선택합니다.
  • 가상 키보드 슬레이트 위젯이 지원됩니다 (SVirtualKeyboardEntry)
  • 게임 실행 전 화면 잠금해제를 위한 입력을 전송하는 adb 로의 호출을 추가했습니다.
  • Android Back 입력에 대한 별명을 Special Left 로 해서 추가하여 명료하게 했습니다.
  • 에디터에서 잠긴 디바이스에 실행 명령을 내리면 이제 게임 실행 전 화면잠금부터 풀립니다.
  • 절반 플로트 텍스처가 지원되지 않는 경우, FloatRGBA 큐브맵을 값이 0.0 에서 1.0 으로 제한된 RGBA 변환할 수 있도록 했습니다.
  • 에디터로 패키징 도중 콘솔 로그의 여분 공백줄을 제거했습니다.
  • 태피 치킨
    • 안드로이드의 뒤로 특수 뒤로 버튼 지원을 위해 'Android Back' 을 추가했습니다.
  • 안드로이드 호환 디바이스 목록
    • LG G2 (LG-LS980)
    • Samsung Galaxy Note 3 (SM-N900)
    • Samsung Galaxy Note 3 (SM-N900P)
    • Samsung Galaxy S 2 Intn'l (GT-I9100)
    • Samsung Galaxy S 4 mini (GT-i9190)
    • Samsung Galaxy S 5 (SM-G900H)
    • Samsung Galaxy Tab 3 10.1 (GT-P5200)
    • NVIDIA Shield
    • 자세한 정보는 Android Device compatibility wiki page 를 참고하세요.
Xbox One
  • New: Improved handling and cleanup of orphaned Xbox Live sessions.
  • New: The initial version of an Xbox Live Compute online subsystem server module was added.
  • New: The engine is set to use the July 2014 QFE1 XDK by default.
  • Optimized cache flushing in HandleSpecialUnlock.
  • Packaging of content only projects giving an error about an empty file group has been fixed.
  • Slightly optimized texture cooking time.
  • Fixed several texture tiling corruption bugs.
  • Fixed a crash in Xbox Live session management
  • Fixed an issue that was preventing the FOnSessionInviteAcceptedDelegate from firing if the game wasn't already running when the user accepted an Xbox Live game invite.
PlayStation 4
  • New: Morpheus DVT 1.1 support!
  • New: Improved Morpheus Support, including many fixes from Sony for DVT hardware support, shaders, and tracking
  • New: ICU support!
  • New: Game control over which bluray layer PlayGo chunks are written to.
  • New: Game specific coredump handling.
  • New: Runtime conversion of callstack addresses to function names.
    • Failed asserts now dump decoded callstack function names to the PS4 console output when not connected to a debugger.
  • Better handling of GPU Timeouts - Fixes invalid timeout detection when debugging and handles timeouts due to CPU/GPU Razor captures
  • Buffer clear fixes - Fixed potential double clearing of MRT targets if the first doesn't have a CMask. Flush CMask cache before clearing the CMask buffer.
  • FUniqueNetIDPS4 uses asynchronous NPID lookups.
  • HTTP Requests handle all 200 range response codes properly.
  • Morpheus rendering fix to allow Game/Render threads to run in parallel again.
  • Ribbon particle optimization.
  • Various packaging fixes for PlayGo and non-PlayGo packaging.
  • Fixed shader SDB output folder path (now dumped to \Saved\ShaderDebugInfo\SF_PS4\sdb)
  • Fixed GPU Particles using stale uniform buffers causing various artifacts.
  • Fixed Development builds crashing on Testkits from the debug keyboard.
  • Fixed incorrect cast in FGnmDynamicRHI::RHIUpdateTexture2D.
HTML5
  • HTML5 는 이제 Emscripten SDK 1.21 를 필요로 합니다. http://kripken.github.io/emscripten-site/docs/getting_started/downloads.html 에서 설치할 수 있습니다. 주: Emscripten SDK 의 새로운 위치입니다.

템플릿

  • TP_2DSideScrollerBP 가 멀티플레이어 환경에서 더욱 잘 작동하도록 변경했습니다.
  • 로컬 로테이션이 아닌 콘트롤러 로테이션을 구동시킵니다.
  • 스프라이트 플립북 컴포넌트에서 리플리케이션이 가능합니다 (서버->클라이언트 는 작동하지만 클라이언트->서버는 여전히 RPC 가 필요합니다).

슬레이트

  • 슬레이트 위젯은 이제 누군가 그 밖에 클릭했을 때 노티파이를 받도록 등록/해제 가능합니다.
  • 슬레이드 브러시는 이제 미러링 이미지를 지원합니다.
    • FSlateBrush 의 새로운 "Mirroring" 변수로 설정할 수 있습니다.
  • SAssignNew 는 이제 TSharedRef 에 할당 가능합니다.
  • SWidget::OnPaint() 와 SWidget::Paint() 에 대한 시그너처가 FPaintArgs 유형의 추가 파라미터를 포함하도록 변경되었습니다.
    • Super::OnPaint() 에 대한 호출은 단순히 FPaintArgs 파라미터를 통과합니다.
    • 자손 위젯을 칠할 때 Args.WithNewParent(this) 를 ChildWidget->Paint() 에 전달합니다.
  • 위젯 리플렉터가 Esc 키를 눌러 포커스를 고정시킬 때 그 키를 소모해 버리던 (플레이가 종료되게 만들던) 버그를 고쳤습니다.
  • 커스텀 슬레이드 드로 엘리먼트 사용시의 경쟁 조건을 고쳤습니다.

피직스

  • 새로운 컨스트레인트 시각화가 추가되었습니다.이제 빨녹파 세 가지 팬 모양을 사용하므로 PhAT 에서의 작업이 훨씬 쉬워질 것입니다.
  • 방사형 대미지에 대한 대미지 방지 채널이 추가되었습니다.
  • 블루프린트에 컨스트레인트 피직스 콜리전 끄기를 노출시켰습니다.
  • PhysX 에서 조인트 JPI 를 추가 노출시켰습니다.
  • 컨스트레인트 각형 레퍼런스 프레임 오프셋을 노출시켰습니다.
    • 블루프린트 에디터의 경우 레퍼런스의 컨스트레인트 프레임을 변경하는 것이 불가능했었습니다. 이 새로운 값으로 수동 설정할 수 있습니다.
  • 좀 더 천천히 리졸브되어 겹치는 시뮬레이티드 오브젝트에 대한 최대 역관통(depenetration) 속도를 노출시켰습니다.
  • 콜리전 없는 오브젝트에 대한 드래그/드롭 작업에 대해 콜리전을 켜던 것을 제거했습니다. 이제 콜리전 없음은 표시여부 트레이스에 반응하지 않을 것입니다.
  • 내비게이션 클러스터 그래프가 빠른 '경로 존재' 검사로만 작동하도록 단순화시켰습니다.
  • MovementComponent 에서 이동을 중지하면 경로 따라가기가 중단됩니다.
  • APEX 의 RT 디스트럭션을 다시 활성화시켰습니다. 아직도 이 기능은 직접 지원되는 것은 아니지만, APEX 라이브러리는 이 플래그를 다시 켜도록 할 것입니다.
  • 오버랩 체크 퍼포먼스: 블루프린트 오버랩 질의가 이제 비동기 씬을 검사합니다.
  • PhAT 안에서의 되돌리기 작동방식이 개선되었습니다.
  • PhAT 컨스트레인트 복사/붙여넣기 작동방식이 개선되었습니다.
  • bSimulatePhysics 편집 확장성이 개선되었습니다.
    • UPrimitiveComponent::CanEditSimulatePhysics 를 추가, 주어진 피직스 셋업 하에서 개별 컴포넌트의 시뮬레이션이 가능한지 판단할 수 있습니다.
    • 디테일 패널 커스터마이제이션에 if-else 캐스트 트리를 대체했습니다.
    • 바디 인스턴스 보다는 *컴포넌트* 에 유효한 바디 셋업이 있는 경우 편집이 가능하도록 베이스 UPrimitiveComponent 의 작동방식을 변경했습니다.
  • 스플라인 메시에 대한 'UseConvexAsSimple' 콜리전을 수정했습니다.
  • 소프트 버텍스로 다중 컨벡스 헐 생성시위 PhAT 크래시를 고쳤습니다.
    • 실제로 이 기능이 지원되는 것은 아니며, 에디터에서는 크래시 대신 경고가 날 것입니다.
  • 바디 인스턴스에 최대 각속도를 잘못 전달하던 것을 고쳤습니다.
  • PhAT 에서 새 바디를 추가할 때 잎 바디가 아닌 것에 조인트를 만들지 않던 것을 고쳤습니다.
  • PhAT 에서 조인트가 자동으로 수정되도록 잎 바디가 아닌 것을 삭제하도록 고쳤습니다.
2D 피직스 컨스트레인트
  • 3D 피직스 바디를 (바디 또는 프로젝트별) 2D 평면으로 쉽게 제약시킬 수 있습니다.

오디오

  • Opus 파일 포맷에 멀티 채널이 지원됩니다.
  • Opus 파일 포맷에 다양한 샘플 레이트가 지원됩니다.
  • 윈도우에서의 오디오 스트리밍이 초기 실험단계로 추가되었습니다. 앞으로의 릴리스에서 개선될 것입니다.
  • AudioDecompress.cpp/h 에서 Opus 와 Vorbis 클래스를 분리해 냈습니다.
  • UE3 뮤직 시스템의 남아있는 부분을 제거했습니다.
  • 콘텐츠 브라우저에서 사운드 클래스 에디터를 열 때, 편집되는 사운드 클래스가 선택되어 그 값이 표시되지만, 사운드 클래스 계층구조상 사운드 클래스 루트의 값은 아닙니다.
  • 스트리밍 사운드에서는 전체 오디오 데이터가 쿠킹/로딩되지 않도록 했습니다.
  • 애니메이션 미리보기 버튼이 재생위치에서 바로 로 설정되어 있을 때 사운드나 기타 노티파이가 재생되지 않도록 합니다.

라이브 스트리밍 플러그인 지원

  • 게임 및 에디터용 Live Streaming 플러그인 API 가 추가되었습니다!
    • 라이브 스트리밍 네트워크를 통한 비디오/오디고 생방송 구현입니다.
    • 에디터와 게임내에서의 웹캠 표시를 지원합니다.
  • 언리얼 에디터에서의 생방송 스트리밍이 실험단계로 지원됩니다 (아직 사용할 만 하지는 않습니다)
  • Twitch 방송 지원이 실험단계 기능입니다 (아직 사용할 만 하지는 앖습니다).
    • 이 부분을 확인하려면 Twitch SDK 를 받은 다음 엔진을 직접 컴파일해야 합니다.
    • Twitch 에 비디오/오디오 생방송을 구현합니다.
    • 에디터와 게임에서의 웹캠 표시를 지원합니다.
    • Twitch 에 로그인하는 데 브라우저 기반 인증을 사용합니다.
    • 주: 법적인 문제로 인해 Twitch SDK 를 배포할 수는 없습니다. 자세한 정보는 /Engine/Source/ThirdParty/Twitch/InstallingTwitchSDK.txt문서를 확인해 보세요.

애니메이션

  • 페르소나에 루트 모션을 미리보는 기능이 지원됩니다.
  • 페르소나 활용도 개선사항:
    • 페르소나 애니메이션 스크럽 메뉴와 툴팁을 보다 사용자 친화적 이름으로 변경했습니다.
    • '애님 노티파이' 가 모든 '애님 시퀸스 베이스'를 지원하도록 변경했습니다.
    • 페르소나 기본 레아아웃이 탭별로 변합니다. 스켈레톤/메시 탭에 대해서는 주로 단순화되어 있습니다.
    • 커스텀 소켓을 메시 소켓으로 변경합니다.
    • 애셋 선택기에 썸네일 크기가 지원되어 페르소나 용으로 조정했습니다.
    • 탭 애셋 선택기의 기본 뷰는 목록 뷰 입니다.
    • 각 탭에 대해 툴바를 추가했습니다 - 임포트/리임포트/애셋 생성.
    • 애디티브 세팅을 조정, 더 나은 경고로 더욱 잘 작동합니다.
    • 페르소나가 여럿 열려있는 경우 메뉴 항목이 여러 번 표시되던 것을 고쳤습니다.
  • 애니메이션 애셋(AnimSequence, BlendSpace, AnimComposite, AnimMontage, AnimBlueprint)에 대한 썸네일을 추가했습니다.
  • 애니메이션 블루프린트에 대해 본 주도형 콘트롤러 스켈레탈 콘트롤 노드를 추가했습니다.
  • 페르소나의 애셋 브라우저에서 애니메이션 애셋에 커서를 올렸을 때 떠다니는 미리보기 창을 추가했습니다.
  • 페르소나의 뷰포트에 기본, 상세, 없음과 같은 디스플레이 정보 옵션을 추가했습니다. 기본 옵션은 스태틱 메시 에디터처럼 단순합니다.
  • 페르소나에 '애니메이션 애셋 저장' 메뉴를 추가했습니다.
  • 각 애니메이션 에디터 유형별로 문서 앵커를 추가했습니다.
  • 슬롯 이름이 비어있는 경우 유효한 슬롯 이름을 제공하도록 하는 오류 메시지가 애님 몽타주 슬롯 이름에 표시됩니다.
  • 스켈레탈 소켓을 추가해도 더이상 스켈레탈 메시가 더티 마킹되지 않습니다.
  • 블루프린트와 네이티브 노티파이는 이제 노티파이 패널에서 새로운 네이티브 이벤트를 사용하여 이름을 커스터마이징할 수 있습니다.
  • 페르소나의 본은 메시에 피직스 애셋이 셋업되어있는 한 숨겨진 상태에서도 선택 가능합니다.
  • 애니메이션 그래프 플레이어 노드에 더블클릭하면 해당 애셋에 연관된 에디터가 열립니다.
  • 페르소나 트랙의 줌 인이 중앙보다는 마우스 위치를 따르도록 변경했습니다.
  • 커스텀 그래프 태스크를 생성하여 병렬 애니메이션 이밸류에이션에 대한 부하가 감소되었습니다.
  • Shift-클릭 재귀적 펼치기/접기가 페르소나 스켈레톤 트리에서도 작동합니다.
  • 모든 페르소나 모드의 바 스켈레톤에서 리타게팅 UI 를 제거했습니다.
  • 페르소나 툴팁 및 상호작용형 튜토리얼이 개선되었습니다.
  • 떠다니는 미리보기로 인해 애니메이션 한 번 클릭 미리보기가 제거되었습니다.
  • 페르소나의 애니메이션 모드에서 뷰포트 스크럽 바를 제거했습니다.
  • 노티파이 패널 삭제 후크를 페르소나에서 패널로 이동, 페르소나가 모든 삭제 명령을 소모하지 않도록 했습니다.
  • AnimSequence.bLoopingInterpolation 플래그가 제거되었습니다. 막 프레임에서 첫 프레임으로의 보간을 추가하려면, 페르소나의 메뉴를 사용해 주세요 (Add Looping Interpolation).
  • 엔진 레벨 블루프린트 노티파이가 새로운 커스텀 작명 규칙을 활용하도록 업데이트했습니다.
  • '스태틱 메시 UVs' 테스트 실행시의 크래시를 고쳤습니다.
  • 썸네일 코드가 가끔 잘못된 썸네일을 사용하던 것을 고쳤습니다.
  • 새로운 애니메이션 설정시 시간이 리셋되지 않던 문제를 고쳤습니다.
  • 블렌드 스페이스 파라미터가 파라미터 변경시 제대로 업데이트되지 않던 것을 고쳤습니다.
  • 벡터화된 FTransform 에서 일치되지 않는 이름을 고쳤습니다.
  • 빈 애니메이션 애셋이 앞으로의 떠다니는 미리보기를 얼려버리던 것을 고쳤습니다.
  • 외부 포스와 싸우는 루트 모션이 루트 모션 몽타지 재생시에만 적용되도록 변경했습니다.
  • 트레이스 함수가 벡터에 대한 리터럴 값을 받습니다.
  • 애님 블루프린트가 이제 이벤트 그래프의 기본 오너 노드/업데이트 노드를 생성합니다.
  • 같은 간 위치의 애님 노티파이는 이제 그 트랙 인덱스 순서대로 저장됩니다.
FBX
  • 모든 FBX 오류와 경고에는 이제 문서 페이지 링크와 설명이 되는 툴팁이 생겼습니다.
  • 본 영향이 없는 버텍스 임포트시 날 수 있었던 크래시를 고쳤습니다.

온라인

  • VoIP 델리게이트 처리가 '대화 시작/중지' 를 항상 캡처하도록 변경했습니다. 몇몇 크래시가 예방됩니다.
  • Xbox LIVE 구현의 크래시 버그를 잡았습니다.

네트워킹

  • 네트워크 프로파일러에 다양한 UI 개선사항이 있습니다.
  • Stat Net 이 정상 작동하며, 더이상 '명령을 찾을 수 없습니다' 라고 보고하지 않습니다.
  • 비동기 네트워크 오브젝트 로딩 코드에 여러가지 픽스가 있습니다.
  • BSD IPv6 SetIp 함수가 포트 번호를 제대로 해석하도록 업데이트되었습니다.
    • 언리얼 프론트엔드에서 명령줄로 포트 번호를 전송했을 때 네트워크 파일 시스템이 연결되지 않는 문제가 해결됩니다.
  • 클라이언트가 서버와 똑같은 패키지를 갖고 있는지, 애셋을 로드하기 전 확인합니다.
  • 많은 ULocalPlayer 관리 정리작업이 있었습니다 (오프라인/온라인 플레이에 대한 분할화면 플레이어 관리가 쉬워집니다).
  • Shooter Game 메뉴 관리 정리, 대화상자 지원 통합 등의 작업이 있습니다.
  • Shooter Game 대화창에 다양한 실패 경우, 진행중인 작업 등에 대한 메시지가 표시되어 Shooter Game 을 보다 콘솔 친화적으로 만들고, OSS API 기대대로 작동하게 되었습니다.

Core

  • New: Added a PostEngineInit load phase for modules, which allows modules to be registered after GEngine/GEditor have been created.
  • New: Ability to override config options on the commandline. Use the following format:
    • ini:IniName:[Section1]:Key1=Value1,[Section2]:Key2=Value2
  • New: Added file system block alignment option in Unreal pak. Prevents small files crossing a file system block boundary which can incur a performance hit on some platforms. This option help reduce that cost. Use –blocksize=X[KB|MB] to enable.
  • Added ENGINE_API to FComponentInstanceDataBase so it could be used in other modules.
  • Added ISourceControlLabel::Sync() overload that takes multiple files.
  • New: Added a proper error message if a file cannot be deleted during project upgrade, and added functionality to checkout the project file if necessary.
  • AActor::OwnedComponents will no longer be exposed as UPROPERTY as it was causing serialization issues.
  • New: FScopedDurationTimerLogger class which logs the lifetime of the object.
  • New: FReferenceCollector has a new helper member function: AddReferencedObjects which overloads accept TArrays, TMaps and TSets.
  • New: FBlackboardKeySelector::AddRotatorFilter now uses CreateNamedObject.
  • New: Made UPrimitiveComponent::GetUsedTextures virtual.
  • New: Plugin directories will now also be searched for project templates.
  • New: PCIP.SetDefaultSubobjectClass and PCIP.DoNotCreateOptionalDefaultSubobject can no longer be used outside of class initializer list.
  • New: Stable sort algorithm for TArray. It's slower than classic sort, but it's keeping the input order of equal elements.*
  • New: ScriptPlugin now supports script-generated blueprint classes with the ability to set any blueprintable class as the base class.
  • New: TLinkedList and TDoubleLinkedList now support C++11's ranged-for syntax.
  • New: TUniqueObj constructor now supports 0-4 arguments when variadic templates are not available.
  • New: TArray::Emplace now supports arbitrary numbers of arguments when variadic templates are available and 0-4 arguments when not.
  • New: Variadic template supported enabled in VS2013 builds.
  • Changed FGameplayDebuggerExec::Exec(...) to use a TActorIterator rather than FActorIterator.
  • Cleaned up StringClassReference. The class is now a subclass of StringAssetReference and should work analogically.
  • In-editor renames now support StringAssetReferences as well
  • Improvements to UMeshComponent as a base class.
    • Updated UMeshComponent::PrestreamTextures and UMeshComponent::SetTextureForceResidentFlag to work off of GetUsedTextures and made them virtual.
    • Fixed an array bounds assert if trying to expand the materials array via UMeshComponent::SetMaterial
  • New: The ParticleSystemAudit commandlet has been revived from UE3. It uses the Asset Registry instead of a database.
  • Made FGameplayDebuggerExec::Exec clear the replicator (and so fail to create/enable the tool) if the only Player Controllers it finds are NOT the first local Player Controller.  (That should never happen, but previously wasn't protected against properly.)
  • Unreal Engine Launcher no longer loads while debugging in Visual Studio or Xcode.
    • Added new '-ForceLauncher' command-line argument that can override this.
  • Updated texture streaming code to treat all UMeshComponent derived classes equally, generalizing the special treatment for USkeletalMeshComponent or UStaticMeshComponent.
  • Updated some places using a hardcoded search in FEditorStyle to use FClassIconFinder instead (to allow you to specify class icons in your own modules).
  • Removed ScriptAsset, ScriptFunction and ScriptActor classes from ScriptPlugin
  • Removed DLLEXPORT specification from a few templates in CoreUObject module that could cause failure if inline expansion is turned off.
  • If a tooltip does not exist for a UField, use the name of the field instead.
  • Fixed 'stat unitgraph' not appearing in console autocomplete.
  • Fixed copying files under source control not maintaining branch history.
  • Fixed an issue with not displaying self/otherchildren when using 'stat dumpframe'.
  • Fixed a bug that cause low-frequency GC to happen at inappropriate times.
  • Fixed crash when project module fails to load.
  • Fixed compiler errors when brute forcing STAT to be true in Shipping builds.
  • Fixed for multithreaded crash in ValidateHeap() & dumpAllocatorStats() in FMallocBinned.
  • Fixed not being able to toggle fullscreen mode when launched with –windowed on the command line.
  • Fixed compile-on-startup when plugin modules don't already exist on startup.
  • Fixed compiling from the editor where the target does not match the game name.
  • Fixed scraping of UnrealBuildTool environment variables in non-US locales.
  • Fixed branching creating multiple files.
  • Fixed FTransform details customization not dirtying packages correctly.
  • Fixed FString::InsertAt inserting null characters in the middle of a string
  • Fixed an IMM based IME crash due to starting a composition with no active context (eg, if you typed while the editor viewport had focus)
  • Fixed ULinkerLoad will no longer try to recreate an import if it has already been created by VerifyImport through redirects.
  • Fixed When no target platform is explicitly specified in the command line, BuildCookRun automation command will pick the currently running platform instead of always Win64. This fixes Mac problems when using BuildCookRun.
  • Fixed Unknown script packages in the import list of another streaming package will now be gracefully handled instead of crashing.
GameplayDebugger module changes:
  • Added functionality (accessible through the module interface) for creating the debugging actor given a particular player controller.
  • Changed GameplayDebugger NOT to automatically create the debugging actor when a player controller is added.
  • The message it was using only happens in-editor, so it didn't work in-game.  Also, in-game, we don't necessarily want every player controller creating a debug actor.  So, it's now up to each user to determine which controllers should create their own debuggers.
  • One correct way to create the debugger for a player controller is to have that player controller implement PostInitializeComponents(), where (after calling to the Super implementation), it can call code like this:
  • CodeSnippet
Faster C++ Compile Times
  • 268 headers in Engine module had superfluous include statements, fixed 205 of them according to include-what-you-use principle.
  • Removed 17 unnecessary include statements from Engine module private precompiled header.
  • As a result of an on-going effort to improve compile times, some of the includes have been removed from public headers. The list of removed files is below. You may need to add these headers into your project source code in case it does not compile.
    • RenderUtils.h
    • Debug/DebugDrawService.h
    • KeyState.h
    • SceneManagement.h
    • ShaderParameters.h
    • ShaderCore.h
    • ShaderCompiler.h
    • ShaderParameters.h
    • MaterialShared.h
    • PrimitiveUniformShaderParameters.h
Unreal Build Tool Improvements
  • New: Changed UBT to compile a flag for running in the DebugGame configuration into monolithic games (no need to specify -debug any more).
  • New: Added better verbose debug output to detect problems with shared PCH headers.
  • New: Faster startup time (reduced time spent scanning includes for UObjects).
  • New: UBT now adds /FS flag in VCToolChain for VS2013 to ensure parallel builds that use PDB work properly.
  • New: UBT is now detecting redistribution dependency violations. Modules can be marked as redistributable or not -- depends mostly on location, Editor and Development folder modules are non-redistributable, but it can be overridden if needed. In non-Debug and non-Editor builds UBT is checking if game being built is depending on some non-redistributable module. Programs are also not verified.
  • UBT will no longer use ini files to get the list of plugins to compile for programs. Program target rules file should specify the plugins to compile for it.
  • UnrealBuildTool performance: Disabled verbose output in Release builds.
    • TRACE is no longer defined by default in Release builds.
    • If you want bPrintDebugInfo to work, use a Debug build or define TRACE to 1.
  • Fixed modules that supply shared PCHs not generating and using their own unique PCH in monolithic builds.
  • Fixed monolithic builds not detecting that a unique PCH was needed for modules that supply shared PCHs when header file names were different.
  • Fixed UnrealBuildTool not relinking targets after plugin static libraries are modified. Dependencies were ignored because their producing action was marked as creating an import library.
UnrealHeaderTool
  • Removed 'ScriptPlugins' ini setting. Plugins will be discovered by their "Category" specified in uplugin file (for UHT it should be prefixed with "UnrealHeaderTool.Code Generator.")

알려진 문제점

  • 명확한 어플리케이션 id(예를 들어 com.yourcompany.* 식이 아닌 com.yourcompany.gamename)로 mobile provision 을 임포트하려 하면 임포트된 mobile provision 을 제대로 찾지 못하게 되는 IPP 관련 문제점이 보고되어 있습니다. 그에 대한 우회법은 이렇습니다:
  1. 와일드 카드 mobile provision 을 만듭니다. 아마도 가장 쉬운 우회법으로, 개발중인 어떠한 게임에 대해서도 통하는 방법입니다.
  2. Game/Build/IOS 디렉토리에 Info.plist 를 만듭니다. Engine/Build/IOS/UE4Game-Info.plist 의 템플릿을 사용해도 되며, 에디터의 프로젝트 세팅을 (Project Settings / IOS Settings) 편집하여 Info.plist 를 생성해도 됩니다. CFBundleIdentifier 키가 보통 com.yourcompany.gamename 식인 mobile provision 식별자와 일치하는지 확인하세요. 그 작업이 완료되면 IPP 를 실행하여 provision 과 certificate 의 임포트가 잘 될 것입니다.

코멘트나 질문 환영합니다. forum 또는 네이버 카페에 들러 피드백 남겨주세요! (역주: 일부 국내 사정과 무관한 부분 및 전문적인 프로그래머 관련 부분은 번역 제공하지 않았습니다.)