소개
이 페이지에서는 언리얼 엔진의 주요 시스템과 워크플로를 Unity에서 일반적으로 사용되는 에디터와 툴, 에셋 타입과 비교하는 높은 수준의 개요를 제공합니다. 이 문서는 Unity 개발자가 언리얼 엔진에서 익숙한 워크플로를 수행하는 방법을 이해할 수 있도록 작성되었습니다. 각 섹션의 링크를 따라가면 각 기능에 대해 자세히 알아볼 수 있습니다.
이 페이지는 언리얼 엔진 5.5.4 및 Unity 6(6000.0.30f1) 버전을 기반으로 하는 툴과 기능을 참조합니다. 두 엔진의 다른 버전에서는 참조하는 기능이 다를 수 있습니다.
게임플레이
피직스
카오스 피직스와 함께 제공되는 기능에 대한 자세한 개요는 피직스 문서를 참조하세요.
피직스 엔진
언리얼 엔진에는 차세대 게임의 요구 사항을 충족하기 위해 처음부터 구축된 경량 피직스 시뮬레이션 솔루션인 카오스 피직스(Chaos Physics)가 포함되어 있습니다. 카오스 피직스에는 디스트럭션, 네트워크 피직스, 리지드 바디, 비히클 등 다양한 기능이 포함되어 있습니다.
Unity의 3D 게임용 디폴트 피직스 엔진은 카오스 피직스와 비슷한 기능을 다수 제공하는 NVIDIA PhysX입니다.
카오스 디스트럭션
카오스 디스트럭션(Chaos Destruction) 시스템은 시네마틱 퀄리티 레벨의 디스트럭션을 실시간으로 구현하기 위해 사용되는 언리얼 엔진 내 툴 컬렉션입니다. 이 시스템은 훌륭한 비주얼을 제공할 뿐 아니라 높은 퍼포먼스를 내도록 최적화되어 있으며, 아티스트와 디자이너가 콘텐츠 제작을 더 세밀하게 제어할 수 있게 해줍니다.
카오스 디스트럭션 시스템은 블루프린트에 중첩된 메시를 포함하여 하나 이상의 스태틱 메시로 빌드된 에셋 타입인 지오메트리 컬렉션(Geometry Collections)을 활용합니다. 이러한 지오메트리 컬렉션을 프랙처링하여 실시간으로 파괴할 수 있습니다.
이 시스템은 직관적인 비선형적 워크플로를 사용하여 프랙처링 프로세스를 전례 없이 세밀하게 제어할 수 있습니다. 사용자는 지오메트리 컬렉션의 일부에 선택적 프랙처링뿐만 아니라 여러 레벨의 프랙처링을 생성하여 예술적인 부분을 훨씬 세밀하게 제어할 수 있습니다. 또한, 사용자가 프랙처를 트리거할 대미지 한계치를 클러스터별로 정의할 수도 있습니다.
카오스 디스트럭션에 대한 자세한 내용은 카오스 디스트럭션 문서에서 확인할 수 있습니다.
네트워크 피직스
네트워킹, 즉 게임 내 리플리케이션은 인터넷 연결을 통해 다수의 머신 사이에서 게임플레이 정보를 커뮤니케이션하는 기능을 말합니다. 언리얼 엔진에는 개발자가 간편하게 멀티플레이어 게임을 제작할 수 있도록 도와주는 견고한 네트워킹 프레임워크가 탑재되어 있습니다.
네트워크 피직스는 네트워킹 프레임워크의 일부로, 멀티플레이어 환경에서 피직스 기반 시뮬레이션을 작동할 수 있게 합니다. 언리얼 엔진에서 피직스 리플리케이션은 리플리케이트된 이동으로 피직스를 시뮬레이션하는 액터를 말합니다. 이러한 시뮬레이션은 게임플레이 중에 로컬 클라이언트(플레이어의 머신)에서 실행됩니다.
네트워크 피직스에 대한 자세한 내용은 네트워크 피직스 문서에서 확인할 수 있습니다.
리지드 바디 다이내믹
카오스 피직스는 리지드 바디 다이내믹을 위한 다양한 기능을 제공합니다. 이러한 기능에는 콜리전 반응, 트레이싱, 피직스 컨스트레인트, 댐핑 및 프릭션이 포함됩니다.
콜리전
언리얼 엔진에서 피직스 엔진을 사용하는 대부분의 액터 컴포넌트에는 콜리전이 내장되어 있습니다. 액터의 콜리전 세팅은 디테일 패널의 콜리전 섹션에서 수정할 수 있습니다. 예를 들어, 시뮬레이션 중 히트 이벤트 생성(Simulation Generates Hit Events)을 활성화하면 블루프린트나 코드를 통해 액세스하여 콜리전을 탐지할 수 있는 히트(Hit) 이벤트를 오브젝트가 발동하도록 할 수 있습니다. 이는 C# 또는 비주얼 스크립팅(Visual Scripting)에서 OnCollisionEnter를 사용하여 콜리전을 처리하는 Unity의 방식과 비슷합니다.
액터에 대한 콜리전 구성에 대한 자세한 내용은 콜리전 문서를 참조하세요.
레이캐스트를 사용한 트레이스
카오스 피직스 시스템에는 다양한 트레이싱 메서드가 포함되어 있습니다. 트레이스는 액터에 외부 정보를 수집하는 메서드를 제공합니다. 이렇게 수집한 정보를 런타임에 사용하여 변화하는 게임플레이 조건에 대응할 수 있습니다.
트레이스를 실행할 때 다양한 옵션을 사용할 수 있습니다. 라인, 스피어, 박스 또는 캡슐 트레이스 등 다양한 트레이스 타입을 사용할 수 있습니다. 하나 또는 여러 히트를 트레이싱할 수 있는 것은 물론, 특정 오브젝트 타입이나 콜리전 채널을 트레이싱할 수도 있습니다.
언리얼의 트레이싱 시스템은 Unity의 레이캐스팅 시스템과 비슷합니다.
트레이싱에 대한 자세한 내용은 레이캐스트를 사용한 트레이스 문서를 참조하세요.
카오스 클로스
카오스 클로스(Chaos Cloth)는 게임과 실시간 경험을 위한, 정확하고 성능이 우수한 클로스 시뮬레이션을 제공합니다. 이 시스템에는 바람과 같은 피지컬 반응과 더불어 광범위한 사용자 컨트롤이 포함되어 있어 구체적인 예술적 비전을 달성할 수 있습니다. 또한, 카오스 클로스에는 부모 스켈레탈 메시의 애니메이션에 맞춰 클로스 메시를 변형하는 강력한 애니메이션 드라이브(Animation Drive) 시스템도 포함되어 있습니다.
카오스 클로스는 머신 러닝 클로스 시뮬레이션도 제공합니다. 이 시스템은 학습된 데이터 세트를 사용함으로써 과거에는 오프라인 시뮬레이션으로만 달성할 수 있었던 결과를 실시간으로 생성하여, 기존의 피직스 기반 모델보다 더 높은 퀄리티의 시뮬레이션 결과를 제공합니다.
카오스 클로스에 대한 자세한 내용은 카오스 클로스 문서를 참조하세요.
ChaosVehicles
카오스 비히클(Chaos Vehicles)은 비히클 피직스 시뮬레이션에 사용되는 언리얼 엔진의 경량 시스템입니다. 이 시스템은 비히클당 원하는 수의 휠을 시뮬레이션하여 사용자에게 더 많은 유연성을 제공합니다. 또한, 전진 및 후진 기어를 원하는 수만큼 환경설정하여 추가로 커스터마이징할 수도 있습니다.
카오스 비히클은 복잡한 비히클 시뮬레이션에 맞춰 환경설정할 수 있습니다. 차대의 특정 위치에 다운포스나 업리프트를 제공하는 에어로포일 표면을 몇 개든 추가할 수도 있습니다. 여기에 비히클 스포일러, 심지어 항공기 날개나 방향타까지 시뮬레이션할 수 있습니다. 이러한 각 컨트롤 표면은 롤, 피치, 요를 통해 조작할 수 있습니다.
카오스 비히클에 대한 자세한 내용은 카오스 비히클 문서를 참조하세요.
플루이드 시뮬레이션
언리얼 엔진에는 실시간으로 2D 및 3D 플루이드 이펙트를 시뮬레이션하는 내장 툴세트가 포함되어 있습니다. 이러한 시스템은 물리 기반 시뮬레이션 방법을 사용하여 불, 연기, 구름, 강, 잔물결, 해변에 들이치는 파도 등에 대한 사실적인 이펙트를 만듭니다.
툴세트는 시뮬레이션 스테이지, 재사용 가능한 모듈 및 강력한 데이터 인터페이스를 활용하는 실험용 오픈 플랫폼으로 디자인되었습니다.
플루이드 시뮬레이션에 대한 자세한 내용은 플루이드 시뮬레이션 문서를 참조하세요.
인공 지능
언리얼 엔진에는 게임플레이 중 AI 에이전트(NPC)를 생성하고 관리할 수 있는 다양한 시스템이 포함되어 있습니다.
대규모 AI 에이전트 시뮬레이션하기
매스 엔티티(MassEntity)는 높은 퍼포먼스와 데이터 지향적 시뮬레이션을 위한 게임플레이 중심 프레임워크입니다. 매스 엔티티는 화면에서 대량의 엔티티를 효율적으로 관리하고 렌더링하는 데 사용할 수 있습니다.
자세한 내용은 매스 엔티티 문서를 참조하세요.
AI 에이전트 행동 시뮬레이션하기
언리얼 엔진에는 퍼셉션 및 자극, 의사결정, 월드 내비게이션, 그리고 환경 상호작용 카테고리의 AI 에이전트 기능이 포함되어 있습니다. 각 카테고리에는 원하는 결과를 달성하는 데 도움이 되는 시스템이 하나 이상 있습니다.
퍼셉션 및 자극
퍼셉션 및 자극 영역에서 언리얼 엔진은 폰 감지(Pawn Sensing), 폰 노이즈 이미터(Pawn Noise Emitter) 및 AI 퍼셉션(AI Perception) AI 컴포넌트를 제공합니다.
AI 퍼셉션은 AI 에이전트가 액세스할 수 있는 감각을 정의하고 처리하는 데 사용할 수 있습니다. AI 퍼셉션 컴포넌트는 컴포넌트(Component) 창에서 폰의 AIController 블루프린트에 추가할 수 있는 컴포넌트의 타입 중 하나로, 리스닝할 감각, 해당 감각의 파라미터, 감각이 탐지됐을 때의 반응 방식 등을 정의하는 데 사용됩니다.
또한 다양한 함수를 사용하여 무엇을 감각으로 탐지했는지, 어떤 액터가 감각을 느꼈는지에 대한 정보를 얻거나 특정 감각 타입을 토글할 수도 있습니다.
자세한 내용은 AI 퍼셉션 문서를 참조하세요.
의사결정
의사결정 영역에서 언리얼 엔진은 비헤이비어 트리(Behavior Trees)와 스테이트 트리(State Trees)를 제공합니다. 이러한 에셋에는 게임플레이 중에 AI 에이전트가 의사 결정을 하는 데 사용하는 로직이 담겨 있습니다.
비헤이비어 트리 에셋에는 다양한 노드로 구성된 의사결정 그래프가 포함되어 있으며, 이러한 노드에는 AI 에이전트가 실행할 수 있는 로직이 포함되어 있습니다. 트리는 루트에서 시작하여 블랙보드(Blackboard) 에셋에 저장된 데이터 또는 에이전트 자체에서 가져온 기타 데이터를 기반으로 특정 노드를 실행합니다. 비헤이비어 트리는 AI 에이전트의 결정 방식을 직관적으로 시각화할 방법을 제공하며, 재사용 가능하고 유연하게 환경설정할 수 있습니다.
자세한 내용은 비헤이비어 트리 문서를 참조하세요.
스테이트 트리는 범용적인 계층형 스테이트 머신으로, 비헤이비어 트리의 선택 툴과 스테이트 머신의 스테이트 및 트랜지션을 결합하여 만들어졌습니다. 스테이트 트리를 통해 안정적이고 체계화된 고성능 로직을 만들 수 있습니다.
자세한 내용은 스테이트 트리 문서를 참조하세요.
월드 내비게이션
월드 내비게이션 영역에서 언리얼 엔진은 AI 에이전트를 위한 모든 기능을 갖춘 내비게이션 시스템을 제공합니다.
내비게이션 시스템(Navigation System)은 프로젝트의 AI 에이전트에 효율적인 경로 찾기 기능을 제공합니다. 레벨에 내비게이션 메시 액터(Navigation Mesh Actor)를 생성하여 에이전트를 위한 내비게이션을 빌드하고 매핑할 수 있습니다. 또한, 내비게이션 메시 모디파이어(Navigation Mesh Modifiers) 및 커스텀 내비게이션 영역(Custom Navigation Areas)을 사용하여 특정 영역을 통과하는 데 드는 비용에도 영향을 줄 수 있습니다. 이렇게 하면 AI 에이전트가 타깃에 대한 최적의 내비게이션 경로를 선택하는 방식에 적극적으로 영향을 미칩니다.
여기에 더해 내비게이션 시스템에는 역수 속도 장애물(Reciprocal Velocity Obstacles) 및 크라우드 우회 매니저(Detour Crowd Manager)라는 두 가지 회피 시스템이 포함되어 있어 AI 에이전트가 주변 환경과 서로의 다이내믹 엘리먼트를 피할 수 있도록 지원합니다.
자세한 내용은 내비게이션 시스템 문서를 참조하세요.
환경 상호작용
환경 상호작용 영역에서 언리얼 엔진은 스마트 오브젝트를 제공합니다.
스마트 오브젝트(Smart Objects)는 AI 에이전트와 플레이어가 상호작용할 수 있는, 레벨 내에 배치되는 오브젝트입니다. 스마트 오브젝트는 상호작용에 필요한 모든 정보를 포함합니다. 스마트 오브젝트는 글로벌 데이터베이스의 일부이며, 공간 파티셔닝 구조를 사용합니다. 따라서 게임플레이 태그 및 에이전트 주변 검색 영역 같은 필터를 사용하여 런타임에서 스마트 오브젝트를 쿼리할 수 있습니다.
자세한 내용은 스마트 오브젝트 문서를 참조하세요.
Machine Learning
언리얼 엔진에서는 AI 에이전트가 학습하고 적응할 수 있는 더 복잡한 AI 솔루션을 제작할 수 있도록 강화 학습(Reinforcement Learning) 같은 알고리즘을 사용하여 AI 에이전트를 훈련하는 데 사용할 수 있는 학습 에이전트(Learning Agents) 플러그인을 제공합니다. 이 플러그인은 언리얼 엔진에서 Unity의 MLAgents 패키지에 해당합니다.
자세한 내용은 학습 에이전트 문서를 참조하세요.
캐릭터 및 오브젝트 애니메이션
애니메이션 블루프린트(Animation Blueprints)는 언리얼 엔진에서 Unity의 Animator Controllers에 해당합니다. 애니메이션 블루프린트에는 애니메이션 그래프와 표준 블루프린트 이벤트 그래프가 포함되어 있어 단일 엔트리 포인트에서 파라미터를 정의하고 복잡한 애니메이션 행동과 로직을 스크립팅할 수 있는 수단을 제공합니다.
자세한 내용은 애니메이션 블루프린트 문서를 참조하세요. 문서를 참고하세요.
스테이트 머신으로 애니메이션을 정리하는 것을 선호한다면, 애니메이션 그래프에 State Machine 노드를 생성한 다음 그 노드를 더블클릭하여 해당 노드의 전용 서브 그래프를 엽니다. 그런 다음, 새 스테이트, 컨듀잇 및 스테이트 에일리어스를 생성하고 이들 간에 연결을 생성하면 됩니다. 각 스테이트에는 스테이트의 출력을 제어하는 자체 애니메이션 그래프가 포함되어 있으며, 연결은 스테이트 간의 트랜지션을 제어합니다.
자세한 내용은 스테이트 머신 문서를 참조하세요.
블렌드 스페이스(Blend Spaces)는 파라미터에 따라 블렌딩되는 애니메이션 그래프를 정의합니다. 예를 들어, 2D 블렌드 스페이스는 캐릭터의 속도와 방향에 따라 앞, 뒤, 왼쪽, 오른쪽 걷기 애니메이션을 블렌딩할 수 있습니다.
자세한 내용은 블렌드 스페이스 문서를 참조하세요.
Unity는 Timeline 툴을 사용하여 시네마틱 시퀀스를 애니메이팅합니다. 언리얼 엔진의 시퀀서 에디터(Sequencer Editor)는 Unity의 Timeline에 해당하며, 애니메이션, 이펙트와 카메라 무브먼트를 조율하기 위한 비선형 에디터와 비슷한 인터페이스를 제공합니다. 시퀀서를 사용하여 시네마틱 또는 캐릭터와 오브젝트의 독립형 애니메이션을 나타내는 레벨 시퀀스를 정의할 수 있습니다.
시퀀스 작성에 대한 자세한 내용은 시퀀서 에디터 문서를 참조하세요.
언리얼 엔진에는 에디터에서 직접 애니메이션용 스켈레탈 메시를 리깅하는 데 사용할 수 있는 컨트롤 릭 시스템(Control Rig System)도 포함되어 있습니다. 이 컨트롤 릭으로는 캐릭터에 대한 커스텀 컨트롤을 생성하고 리깅할 수 있고, 시퀀서에서 이러한 것들을 애니메이팅할 수 있으며, 애니메이팅 프로세스에 유용한 여러 기타 애니메이션 툴을 사용할 수 있습니다.
언리얼 엔진의 리깅에 대한 자세한 내용은 컨트롤 릭 문서를 참조하세요.
언리얼 에디터에서 이미지 및 비디오 시퀀스를 캡처하고 익스포트하려면 무비 렌더 큐(Movie Render Queue)를 사용하면 됩니다. 무비 렌더 큐는 Unity Recorder 툴에 해당합니다. 무비 렌더 큐를 사용하여 프레임별 시퀀스, 게임 내 이미지 또는 비디오 녹화물을 퀄리티 손상 없이 렌더링하고 익스포트할 수 있습니다.
무비 렌더 큐에 대한 자세한 내용은 무비 렌더 큐로 고퀄리티 프레임 렌더링하기 문서를 참조하세요.
게임플레이 프레임워크
언리얼 엔진의 게임플레이 프레임워크(Gameplay Framework)는 클래스 컬렉션으로, 게임 모드와 플레이어 스테이트, 컨트롤러, 폰, 카메라 같은 게임플레이 경험을 빌드할 수 있는 모듈형 기반을 제공합니다.
Unity에서는 GameObjects에 어태치된 CharacterController 및 MonoBehaviour 스크립트와 같은 컴포넌트가 비슷한 구조를 처리하여 행동을 정의합니다.
게임플레이 프레임워크 활용에 대한 자세한 내용은 게임플레이 프레임워크 문서를 참조하세요.
입력
향상된 입력(Enhanced Input) 시스템은 키보드, 게임패드, 터치스크린 등 여러 디바이스 전반의 플레이어의 입력을 처리하도록 설계되었습니다.
점프나 사격 같은 액션에 대한 입력 액션(Input Actions)과 무브먼트나 카메라 회전 같은 연속 입력에 대한 입력 축(Input Axes)을 정의할 수 있습니다. 이러한 액션과 축은 특정 키나 버튼, 심지어 터치 제스처에도 바인딩할 수 있어 높은 수준의 커스터마이징이 가능합니다.
향상된 입력 시스템을 시작하려면 콘텐츠 브라우저에서 + 추가(+ Add) 버튼을 누르고 입력(Input)을 선택하여 향상된 입력 에셋을 생성하면 됩니다. 이러한 에셋을 환경설정하여 게임의 키 바인딩과 입력을 정의할 수 있습니다.
게임 로직에서 이러한 액션과 축을 플레이어 입력 이벤트에 바인딩할 수 있습니다. 향상된 입력 시스템을 사용하여 키보드와 게임패드 같은 다양한 입력 방식을 관리하고, 복잡한 컨트롤 방식을 정의할 방법을 제공할 수 있습니다.
Unity 개발자는 언리얼 엔진의 향상된 입력 시스템과 기능이 비슷한 Unity Input System에 익숙할 것입니다. 언리얼 엔진에서 향상된 입력은 복잡한 입력 처리 또는 런타임 컨트롤 리재매핑에 대한 표준입니다.
프로젝트에서 입력을 정의하는 방법에 대한 자세한 내용은 향상된 입력 문서를 참조하세요.
월드 제작 및 디자인
언리얼 엔진에서 월드를 빌드하는 기능은 레벨 뷰포트(Level Viewport)의 다양한 에디터 모드로 나뉩니다.
모델링 및 레벨 프로토타이핑
모델링(Modeling) 모드는 모델링 프로그램에서 사용하는 것과 비슷한 광범위한 버텍스, 에지, 페이스 및 UV 편집 툴을 지녀 Unity의 ProBuilder 익스텐션과 비슷한 기능을 제공합니다.
뷰포트에서 모드 드롭다운 메뉴를 클릭하고 모델링을 선택하여 모델링 모드를 활성화할 수 있습니다.
언리얼 엔진의 모델링에 대한 자세한 내용은 모델링 모드 개요 문서를 참조하세요.
터레인/랜드스케이프 생성하기
랜드스케이프(Landscape) 모드는 Unity의 Terrain 시스템과 비슷한 기능을 제공합니다. 랜드스케이프 모드에서는 터레인을 높이고 낮추거나 평평하게 하는 등, Unity의 Terrain 시스템과 비슷한 툴세트를 사용하여 랜드스케이프와 셰이프를 생성할 수 있습니다.
뷰포트에서 모드 드롭다운 메뉴를 클릭하고 랜드스케이프(Landscape)를 선택하여 랜드스케이프 모드를 활성화할 수 있습니다.
자세한 내용은 랜드스케이프 퀵스타트 가이드 문서를 참조하세요. 또한, 랜드스케이프 야외 문서에서는 넓고 개방된 야외 환경을 위한 터레인 생성에 대해 알아볼 수 있습니다.
폴리지
폴리지(Foliage) 모드는 폴리지를 추가하고 관리하는 Unity의 Terrain 시스템과 비슷합니다. 폴리지 모드에서는 나무와 풀, 기타 식생을 레벨에 페인팅하고 각각의 밀도와 높이, 회전 같은 프로퍼티를 조정할 수 있습니다.
Unity Terrain 시스템과의 가장 큰 차이점이라면 언리얼 엔진에서는 폴리지 모드를 사용하여 랜드스케이프뿐만 아니라 모든 오브젝트에 폴리지를 페인팅할 수 있다는 점입니다. 이 모드는 자연적인 엘리먼트로 월드를 채우는 직관적인 방법을 제공하는 동시에 레벨의 랜드스케이프나 원하는 표면에 표시되는 방식도 제어할 수 있습니다.
뷰포트에서 모드 드롭다운 메뉴를 클릭하고 폴리지(Foliage)를 선택하여 폴리지 모드를 활성화할 수 있습니다.
자세한 내용은 폴리지 모드 문서를 참조하세요. 또한, 오픈 월드 툴 문서에서는 대규모 공간을 스태틱 메시 에셋으로 프로시저럴하게 채워서 자연스럽고 생생한 느낌의 야외 공간을 생성하는 방법에 대해 알아볼 수 있습니다.
프로시저럴 콘텐츠 제너레이션(PCG)
프로시저럴 콘텐츠 제너레이션(Procedural Content Generation, PCG) 프레임워크는 언리얼 엔진 내에서 프로시저럴 콘텐츠를 생성하기 위한 툴세트입니다. 아티스트와 디자이너는 PCG를 사용하여 건물이나 바이옴 생성부터 전체 월드에 이르기까지 다양한 에셋 유틸리티를 아우르는 빠른 반복작업 툴 및 콘텐츠를 빌드할 수 있습니다.
PCG는 확장성과 인터랙션성을 향상하기 위해 디자인되었으며, 기존 월드 제작 파이프라인에 손쉽게 통합되어 프로시저럴 워크플로와 기존 워크플로 간의 경계를 효과적으로 허뭅니다.
언리얼 엔진에서 프로시저럴 콘텐츠 제작에 대한 자세한 내용은 프로시저럴 콘텐츠 제너레이션 프레임워크 문서를 참조하세요.
물 시스템
워터 시스템(Water System)을 사용하면 스플라인 기반 워크플로를 사용하여 랜드스케이프 터레인과 상호작용하고 함께 작동하는 강, 호수, 바다를 생성할 수 있습니다.
Unity 개발자는 HDRP를 사용하는 프로젝트에 사용할 수 있는 워터 시스템에 익숙할 것입니다. 언리얼 엔진의 워터 시스템은 모든 규모의 프로젝트에 맞게 확장할 수 있으며 모든 플랫폼을 지원합니다.
레벨에서 워터를 활성화하는 방법에 대한 자세한 내용은 워터 시스템 문서를 참조하세요.
비주얼 및 렌더링
Unity는 Scriptable Render Pipeline(SRP) 시스템을 사용하며, High Definition Render Pipeline(HDRP)과 같은 템플릿을 제공합니다. 언리얼 엔진에는 통합되었으며, 강력하고 고도의 커스터마이징이 가능한 렌더 파이프라인이 있습니다. 즉, 디바이스 지원, 함수 기능 및 기능 세트가 여러 템플릿으로 분할되어 있지 않습니다.
언리얼 엔진에서는 엔진 퀄리티(Scalability) 세팅을 사용하여 게임의 시각적 충실도를 변경할 수 있습니다. 자세한 내용은 엔진 퀄리티 레퍼런스 문서를 참조하세요.
라이트 소스
언리얼 엔진의 라이팅 워크플로는 Unity의 해당 워크플로와 비슷합니다. 레벨에 라이트를 추가하거나 제거할 수 있으며, 디렉셔널 라이트나 포인트 라이트, 스포트 라이트 같은 다양한 타입의 라이트 소스를 사용할 수 있습니다.
생성(Create) > 라이트(Light)로 이동하여 레벨에 추가할 라이트 소스 모양을 선택할 수 있습니다. 그러면 새 오브젝트가 생성됩니다. 라이트 타입과 사용 방법에 대한 자세한 내용은 라이트 유형 및 모빌리티 문서를 참조하세요.
스카이 라이트
스카이 라이트(Sky Light)는 레벨의 먼 부분을 캡처하여 씬에 라이트로 적용합니다. 즉, 하늘의 모습과 그 라이팅/리플렉션이 서로 일치하게 됩니다. 하늘이 애트머스피어에서 오든 스카이박스 상단의 겹겹의 구름에서 오든 멀리 있는 산에서 오든 상관없이 일치합니다.
기본적으로 언리얼 엔진의 새 레벨은 아웃라이너(Outliner) 패널에 Lighting 폴더를 보유하고 있습니다. 이 폴더에는 DirectionalLight, ExperimentalHeightFog, SkyLight와 같은 디폴트 라이팅 오브젝트 세트가 포함되어 있습니다. 자세한 내용은 스카이 라이트 문서를 참조하세요.
루멘 글로벌 일루미네이션 및 리플렉션
루멘은 차세대 디바이스를 위해 설계된 언리얼 엔진의 완전 다이내믹 글로벌 일루미네이션 및 리플렉션 시스템이자, 디폴트 글로벌 일루미네이션 및 리플렉션 시스템입니다. 즉, 라이트 바운스와 표면과의 상호작용을 통해 미리 계산된 워크플로를 사용하여 라이팅을 굽지 않고도 자연스럽게 보이는 라이팅을 즉시 생성할 수 있다는 뜻입니다.
프로젝트에서 다이내믹 글로벌 일루미네이션 및 리플렉션을 사용하는 방법에 대한 자세한 내용은 루멘 글로벌 일루미네이션 및 리플렉션 문서를 참조하세요.
Post-Processing
Unity에서는 Volumes를 통해 포스트 프로세싱을 처리합니다. Volume 컴포넌트로 GameObject를 생성한 다음, 포스트 프로세싱 프로파일을 할당하고 글로벌이나 로컬로 설정할 수 있습니다.
언리얼 엔진에서 포스트 프로세싱은 주로 배치된 볼륨을 사용하여 처리합니다. 그러나 다음과 같은 다른 방법으로도 적용할 수 있습니다. 전반적으로 포스트 프로세싱은 디폴트 값을 오버라이드할 수 있는 것과 비슷한 방식으로 작동합니다.
| 포스트 프로세싱 적용 방법 | Description |
|---|---|
프로젝트 세팅 | 기본적으로 언리얼 엔진은 엔진 퀄리티 세팅에 따라 게임에 포스트 프로세싱 이펙트 세트를 적용합니다. 이러한 세팅은 오버라이드하지 않는 한 프로젝트 전체에 적용됩니다. 프로젝트 세팅(Project Settings) > 엔진(Engine) > 렌더링(Rendering)으로 이동하여 프로젝트에 글로벌로 적용되는 디폴트 포스트 프로세싱 이펙트를 변경할 수 있습니다. |
카메라 컴포넌트 | 각 카메라 컴포넌트에는 오버라이드 가능한 자체 포스트 프로세싱 세팅의 세트가 있습니다. 이러한 세팅 세트는 카메라별로 작동합니다. 즉 어떤 세팅도 오버라이드하지 않은 카메라에는 프로젝트 세팅에 정의된 디폴트 이펙트가 적용되거나, 배치된 볼륨에 적용된 값을 사용합니다. |
포스트 프로세스 볼륨 | 추가(Add) > 볼륨(Volume)으로 이동하여 포스트 프로세스 볼륨(Post Process Volume)을 레벨에 추가할 수 있습니다. 이렇게 하면 Unity의 Volume 컴포넌트처럼 디폴트 포스트 프로세싱 세팅을 오버라이드하는 새로운 레벨 액터가 생성됩니다. 이러한 볼륨은 플레이어 카메라가 볼륨 내에 있을 때 포스트 프로세싱을 적용할 수도 있고, 무한 규모(언바운드)(Infinite Extent (Unbound)) 세팅이 활성화된 경우 전체 레벨에 글로벌로 오버라이드를 적용할 수도 있습니다. 이는 Unity Volume 프레임워크의 Global Mode 옵션과 비슷한 방식으로 작동합니다. |
Materials
Unity는 Shader Graph를 사용하여 새로운 셰이더를 정의합니다. 언리얼 엔진에서는 머티리얼 시스템(Material system)이 이에 해당합니다. 언리얼 엔진의 셰이더와 머티리얼은 다음과 같은 방식으로 서로 구분됩니다.
셰이더는 라이팅포함(Lit), 라이팅제외(Unlit), 클리어 코트(Clear Coat) 또는 헤어(Hair) 같은 베이스 셰이딩 모델을 정의하는 C++의 로우 레벨 구성 요소입니다. 이는 메탈릭(Metallic)이나 반투명(Translucent) 같은 셰이더에 대한 입력과, 각 입력이 라이트에 반응하는 방식을 결정합니다.
머티리얼은 셰이더에 공급되는 텍스처 입력, 공식 및 인스트럭션의 논리적 그래프로서, 단일 오브젝트의 표면 퀄리티와 해당 셰이더의 특정 표현을 나타냅니다.
머티리얼을 생성하려면 콘텐츠 브라우저에서 아무 곳이나 우클릭하고 기본 에셋 생성(Create Basic Asset) > 머티리얼(Materials)을 클릭합니다. 머티리얼 에디터에 Main Material 노드가 있는 빈 그래프가 표시됩니다.
Main Material 노드를 클릭하면 디테일(Details) 패널에 해당 프로퍼티가 표시됩니다. 셰이딩 모델(Shading Model) 세팅을 사용하여 다양한 셰이더를 선택할 수 있습니다.
두 개 이상의 메시에 고유한 머티리얼을 적용하려는 경우에는 머티리얼 인스턴스(Material Instances)를 사용하는 것이 좋습니다. 머티리얼 인스턴스는 파라미터화된 버전의 머티리얼로, 추가 비용 없이 다양성과 독창성을 표현하는 데 사용할 수 있습니다.
각 머티리얼 인스턴스는 머티리얼 또는 다른 머티리얼 인스턴스를 부모(즉 '마스터' 머티리얼)로 사용하여 편집을 수행합니다. 마스터 머티리얼에서 파라미터화된 모든 노드는 인스턴스드 머티리얼 에디터(Instanced Material Editor)에서 액세스할 수 있습니다. 이러한 노출된 파라미터를 사용하여 단일 소스 머티리얼에 색 베리에이션을 생성하거나, 다양한 텍스처를 적용하거나, 디테일을 늘이거나 줄이는 등 무한한 베리에이션을 생성할 수 있습니다.
마스터 머티리얼과 그 자손 머티리얼을 사용하여 베리에이션을 유도할 때는 머티리얼 인스턴스를 사용하는 것이 더 효율적입니다.
머티리얼 인스턴스를 생성하려면 콘텐츠 브라우저에서 머티리얼을 우클릭한 다음, 머티리얼 인스턴스 생성(Create Material Instance)을 클릭합니다.
머티리얼 및 머티리얼 인스턴스에 대한 자세한 내용은 머티리얼 문서와 머티리얼 인스턴스 생성 및 사용 문서를 참조하세요. 또한, 머티리얼 에디터에 대한 자세한 내용은 머티리얼 에디터 가이드 문서를 참조하세요.
나나이트
나나이트는 언리얼 엔진의 가상화 지오메트리 시스템으로, 내부 메시 포맷과 렌더링 기술을 사용하여 픽셀 스케일의 디테일과 방대한 양의 오브젝트를 렌더링합니다. 나나이트는 인식할 수 있는 디테일에만 초점을 맞추며, 그 외의 디테일에는 작동하지 않습니다.
나나이트를 사용하면 지오메트리 복잡도가 대폭 증가하여 실시간으로 구현할 수 있는 트라이앵글과 오브젝트 수가 늘어나는 등, 프로젝트에 다양한 이점을 제공합니다. 프레임 예산이 더 이상 폴리곤 수, 드로 콜, 메시 메모리 사용에 의해 제한되지 않는 것입니다.
나나이트와 프로젝트에서 나나이트를 활용하는 방법에 대한 자세한 내용은 나나이트 가상화된 지오메트리 문서를 참조하세요.
오디오
Unity는 게임 월드의 각 오디오 소스에 하나의 음성을 연결하는 오디오 소스 프레임워크를 사용합니다. Unity는 Mixers를 사용하여 이러한 소스에 오디오 채널 세팅을 적용합니다.
언리얼 엔진의 메타사운드(MetaSounds) 플러그인은 블루프린트와 비슷한 비주얼 스크립팅 환경 내에서 디지털 신호 처리(Digital Signal Processing, DSP) 그래프를 완벽하게 제어하는 데 사용할 수 있는 오디오 생성 시스템입니다.
자세한 내용은 메타사운드 문서를 참조하세요.
오디오를 믹싱하려면 오디오 모듈레이션(Audio Modulation) 플러그인을 사용하는 것이 좋습니다. 이 플러그인은 언리얼 엔진의 블루프린트 또는 컴포넌트 시스템에서 볼륨이나 피치 같은 오디오 파라미터에 대한 다이내믹 컨트롤을 제공합니다.
자세한 내용은 오디오 모듈레이션 개요 문서를 참조하세요.
사운드 큐(Sound Cues)는 노드 그래프에서 복잡한 사운드 디자인 작업을 캡슐화하는 오디오 오브젝트입니다. 사운드 큐를 사용하면 사운드 노드를 배열하고 수정하여 사운드 이펙트 디자인의 일부를 동적으로 변경함으로써 복잡한 오디오 출력을 생성할 수 있습니다.
사운드 큐에 대한 자세한 내용은 사운드 큐 레퍼런스 문서를 참조하세요.
언리얼 엔진의 오디오 시스템에 대한 자세한 개요는 오디오 활용 페이지를 참조하세요.
Visual Effects
나이아가라 파티클 시스템(Niagara Particle Systems)은 언리얼 엔진에서 Unity의 Particle Systems 및 the VFX Graph에 해당합니다. 나이아가라 이미터(Niagara Emitters)를 생성하여 단일 파티클 이미터를 빌드하거나, 나이아가라 시스템을 생성하여 여러 개의 이미터를 더 복잡한 시각적 이펙트로 합성할 수 있습니다. 새 시스템 또는 이미터 에셋을 생성할 때 기존 나이아가라 이미터를 템플릿으로 사용할 수 있습니다.
나이아가라 에디터의 시스템 개요(System Overview) 그래프는 Unity의 파티클 시스템 에디터와 비슷한 파티클 편집 인터페이스를 제공합니다. 나이아가라 이미터와 시스템은 다양한 행동이나 이벤트를 처리할 수 있는 모듈형 컴포넌트로 구성되어 있습니다. 모듈을 추가할 때마다 파티클 시스템이 더 복잡해지며, 추가로 새로운 파라미터를 환경설정해야 합니다.
자세한 내용은 비주얼 이펙트 생성 문서를 참조하세요.
나이아가라 유체(Niagara Fluids) 플러그인을 사용하면 연기나 불, 폭발, 물, 물보라 등, 물리적으로 더욱 사실감 있는 이펙트를 프로젝트에 추가할 수 있습니다.
자세한 내용은 나이아가라 유체 문서를 참조하세요.
유저 인터페이스
언리얼 모션 그래픽스(Unreal Motion Graphics) 에디터, 즉 UMG는 언리얼 엔진에서 Unity의 UI Toolkit 및 UI 컴포넌트 라이브러리에 해당합니다. UMG는 버튼, 텍스트 엘리먼트, 수많은 컨테이너와 그리드를 포함한 다양한 위젯으로 UI를 빌드할 수 있는 위지위그(WYSIWYG) 에디터를 제공합니다.
새 UI를 생성하려면 콘텐츠 브라우저에서 새 위젯 블루프린트(Widget Blueprint)를 생성합니다. 위젯 블루프린트를 열면 UMG 에디터가 열리고, 왼쪽에 위젯의 팔레트(Palette) 패널, 오른쪽에 디테일 패널이 있는 빈 그리드가 표시됩니다. 오른쪽 상단에 있는 버튼으로 디자이너(Designer) 뷰와 그래프(Graph) 뷰 간에 전환할 수 있습니다.
디자이너 뷰에서는 위젯 블루프린트 내에 위젯을 배치할 수 있습니다. 팔레트 패널에서 위젯을 클릭하여 그래프로 드래그하고 계층구조(Hierarchy)를 사용하여 그리기 순서를 변경합니다. 목록에서 아래쪽에 있는 위젯이 상단에 표시됩니다. 위젯의 디테일 패널에서 변수 여부(Is Variable) 체크박스를 활성화하여 UI의 스크립트에 위젯을 노출합니다.
이름에서 알 수 있듯이, 생성한 모든 위젯 블루프린트는 다른 위젯 블루프린트 안에서 위젯으로 사용할 수 있습니다. 이러한 위젯은 팔레트에서 사용자 생성(User Created) 카테고리 아래에 표시됩니다. 그런 다음, 위젯 블루프린트를 전체 메뉴와 HUD는 물론 버튼이나 프로그레스 바 같은 재사용할 수 있는 컴포넌트에 사용할 수 있습니다.
자세한 내용은 UMG UI 디자이너 퀵스타트 가이드 문서를 참조하세요. 또한, UI 빌드 및 표시에 대한 자세한 내용은 유저 인터페이스 만들기 문서를 참조하세요.
저장 및 로딩
대부분의 최신 게임에서는 플레이어가 게임을 종료했다가 중단한 부분부터 다시 시작할 수 있는 기능이 등장합니다. 제작하는 게임의 타입에 따라 플레이어가 도달한 마지막 체크포인트 같은 몇 가지 기본적인 정보만 필요할 수도 있고, 더 자세한 정보가 필요할 수도 있습니다.
Unity 개발자는 게임 세션 간에 플레이어 환경설정을 저장하는 데 사용할 수 있는 PlayerPref나, 저장 및 로딩 기능을 제공하는 다양한 Asset Store 패키지에 대해 잘 알고 있을 것입니다. 언리얼 엔진에는 이러한 기능이 내장되어 있습니다.
언리얼 엔진에서 게임 세션을 저장하고 로드하는 기능을 추가하는 방법에 대한 자세한 내용은 게임 저장 및 로드 문서를 참조하세요.
엔진 간 상위 수준 기능 비교
이 섹션에서는 Unity와 언리얼 엔진의 일부 기능과 툴의 이름 및 용도를 전반적으로 간략하게 살펴봅니다.
| 용도 | 언리얼 엔진 | Unity |
|---|---|---|
| 유저 인터페이스(UI) | ||
UI 생성 | 언리얼 모션 그래픽(UMG) | UI Toolkit |
| 월드 빌딩 | ||
모든 형태의 랜드스케이프 생성 | 랜드스케이프 모드 | Terrain 시스템 |
랜드스케이프에 폴리지 추가 | 폴리지 모드 | Terrain 시스템의 폴리지 |
건물 레벨 블록아웃 | 모델링 모드 | ProBuilder |
수면 및 수중 이펙트 생성 | 물 시스템 | 물 시스템 |
프로시저럴하게 월드 및 툴 생성 | 프로시저럴 콘텐츠 제너레이션(PCG) | 서드 파티 툴 |
| 최적화 | ||
퍼포먼스 문제를 파악하기 위한 프로파일링 툴세트 | 트레이싱 | 프로파일러 |
| 게임플레이 | ||
플레이어 입력 처리 | 향상된 입력 시스템 | Input System |
비주얼 스크립팅 | Blueprint Editor(블루프린트 에디터) | 비주얼 스크립팅(이전에는 Bolt로 알려짐) |
스크립팅 및 프로그래밍 언어 지원 | C++(프로그래밍) | C#(스크립팅) |
피직스 엔진 | 카오스 피직스 | NVIDIA PhysX |
게임 데이터 저장 및 로딩 | SaveGame 오브젝트 | PlayerPrefs/커스텀 솔루션 |
| 인공 지능 | ||
AI 스테이트 제작을 위한 스테이트 머신 | 스테이트 트리 | 서드 파티 툴 |
AI가 내비게이션할 수 있는 영역 생성하기 | 내비게이션 시스템 | 내비메시 |
| Animation | ||
애니메이션 데이터 처리 | 애니메이션 블루프린트 | Animator Controller |
애니메이션 시퀀스 생성 | 시퀀서 에디터 | Timeline |
3D 캐릭터 리깅 | 컨트롤 릭 | 서드 파티 툴 |