언리얼 엔진은 프로젝트의 기능을 스크립팅할 수 있는 다양한 방법을 제공합니다. 그중에는 런타임에서의 게임플레이에 적합한 방법도 있고 에디터 내 툴을 빌드하는 데만 유용한 방법도 있습니다.
Python 스크립팅
특히 Python 스크립팅은 미디어 및 엔터테인먼트 산업의 3D 애플리케이션 간 프로덕션 파이프라인과 상호운용성에 이상적입니다. Python은 언리얼 에디터 내 워크플로 자동화에 적합하며, 런타임 스크립팅에는 사용할 수 없습니다. Python은 언리얼 엔진에서 사용할 수 있는 다양한 기능과 워크플로에 통합되어 있습니다.
언리얼 에디터에서 Python 스크립팅을 사용하면 다음과 같은 작업을 수행할 수 있습니다.
기존에 사용하던 다른 3D 애플리케이션과 언리얼 에디터를 연결하는 대규모 에셋 관리 파이프라인 또는 워크플로를 구축합니다.
스태틱 메시의 레벨 오브 디테일(Level of Detail, LOD) 메시를 생성하는 것처럼 많은 시간이 소요되는 에디터 내 에셋 관리 작업을 자동화합니다.
레벨에 콘텐츠를 프로시저럴 방식으로 배치합니다.
Python에서 직접 생성한 유저 인터페이스를 통해 에디터를 제어할 수 있습니다.
Python 스크립팅은 플러그인으로, Python 에디터 스크립트 플러그인 및 에디터 스크립팅 유틸리티를 활성화한 경우 메인 메뉴의 편집(Edit) > 플러그인(Plugins) 브라우저에서 활성화할 수 있습니다.
언리얼 엔진에서 Python을 활용해보기 시작하려면 Python을 사용한 언리얼 에디터 스크립팅을 참고하세요.
Maya 사용자를 위해 설명하자면 Python 워크플로는 애니메이션, 컨트롤 릭, IK 릭의 핵심 영역에 통합되어 있습니다. 이 워크플로에서 Python을 사용하는 것에 대한 자세한 내용은 다음 링크를 참고하세요.
블루프린트 비주얼 스크립팅(Blueprint Visual Scripting)
언리얼 엔진에는 비주얼 스크립팅 언어인 블루프린트도 포함되어 있습니다. 블루프린트는 노드 기반 인터페이스를 통해 에디터 내 툴과 워크플로, 캐릭터와 오브젝트의 게임플레이 엘리먼트, 애니메이션과 사운드 트리거 등을 생성할 수 있는 완벽한 스크립팅 시스템입니다. 이 시스템은 매우 유연하고 강력해서, 보통은 프로그래머가 없으면 힘들었던 개념 구현이나 툴 작업을 거의 모두 디자이너 스스로 해낼 수 있게 해줍니다.
블루프린트는 코딩 경험이 없지만 직접 기능을 빌드해 보려는 디자이너와 아티스트에게 이상적입니다. 블루프린트는 빠른 프로토타입과 비주얼 로직을 개발하는 데 유용하며, 언리얼 엔진의 다른 시스템과 원활하게 통합됩니다.
다음은 에디터나 런타임에서 블루프린트를 사용할 수 있는 몇 가지 사례입니다.
게임플레이를 위한 캐릭터 무브먼트 및 비헤이비어 구성
애니메이션 및 사운드 재생 트리거
UMG로 유저 인터페이스 생성
에디터 유틸리티 위젯으로 에디터 내 툴 생성
문 열기와 같은 오브젝트와의 인터랙션
적 스폰이나 기타 게임플레이 이벤트
레벨에 이동하는 발판 같은 로직 추가
그리고 더 많은 기능이 있습니다!
이 모든 것을 고려하면 블루프린트는 다양할 수밖에 없습니다. 정보와 로직을 다르게 처리하는 타입도 몇 가지 있습니다. 이러한 타입은 다음과 같습니다.
이 타입의 블루프린트에는 뷰포트와 노드 그래프가 포함됩니다. 플레이어 캐릭터, 적, 무기 줍기 등 로직이 적용된 액터를 추가하려는 크리에이터에게 가장 유용합니다.
이것은 블루프린트 클래스와 비슷하지만 노드 그래프만 있습니다. 여기에는 부모로부터 상속된 변수와 컴포넌트가 포함됩니다. 이 블루프린트는 상속된 프로퍼티만 수정할 수 있으므로, 부모 클래스의 베리에이션을 만드는 데 이상적입니다. 머티리얼과 머티리얼 인스턴스 간의 관계와 비슷하다고 생각하면 됩니다.
여기에는 사용자가 생성한 함수들이 포함되며, 이를 통해 해당 함수들을 사용하는 블루프린트 간에 데이터를 공유하고 전송할 수 있습니다. 콘텐츠 브라우저에서 생성하고 레퍼런스할 수 있는 에셋입니다.
로드된 레벨에만 존재하는 특수한 타입의 블루프린트입니다. 레벨 시퀀스 재생 같은 액터나 기타 이벤트를 트리거하는 등 레벨 전체의 글로벌 이벤트 그래프 역할을 할 수 있습니다.
이는 애니메이션 모드 에디터에 내장된 특수 블루프린트입니다. 시뮬레이션 또는 게임플레이 동안 스켈레탈 메시의 애니메이션을 제어하는 용도로 사용됩니다. 이 블루프린트의 노드 그래프가 갖는 차이점은 애니메이션 블렌딩, 스켈레톤 본 제어, 프레임별로 사용할 최종 포즈의 정의 로직을 생성하도록 구성되어 있다는 점입니다.
프로젝트에서 블루프린트를 사용하는 것에 대한 자세한 내용은 다음 주제를 참고하세요.
애니메이션 블루프린트
애니메이션 블루프린트는 애니메이션 모드 에디터의 일부입니다. 스켈레탈 메시의 애니메이션 제어 및 관리에 사용되는 특수 타입 블루프린트입니다. 주로 게임플레이 용도의 캐릭터에 사용되며, 블루프린트의 노드 기반 스크립팅을 사용하여 복잡한 애니메이션 동작을 정의할 수 있습니다. 애니메이션 블루프린트는 일반적으로 리얼타임 게임플레이에 사용되지만 리얼타임 피직스, 클로스 시뮬레이션 또는 메시 디포메이션과 같은 리얼타임 애니메이션 이펙트를 구현하는 데 사용할 수도 있습니다.
애니메이션 블루프린트에 대한 자세한 내용은 이 가이드의 프로젝트에서 애니메이션 사용하기 섹션이나 애니메이션 블루프린트를 참고하세요.
에디터 유틸리티 위젯
에디터 유틸리티 위젯을 사용하면 블루프린트 비주얼 스크립팅으로 에디터 내 툴, 평면 및 인터페이스를 직접 빌드하여 워크플로를 간소화할 수 있습니다. 이러한 유틸리티 위젯은 액터, 에셋, 레벨 등의 에디터 데이터를 액세스하고 조작할 수 있습니다. 직접 빌드한 유틸리티 위젯도 언리얼 에디터의 다른 패널과 마찬가지로 도킹할 수 있습니다.
에디터 유틸리티 위젯은 워크플로를 간소화하고, 반복작업을 자동화하며, 에셋을 관리하고, 레벨에서 직접 콘텐츠를 조작하는 데 이상적입니다.
이에 대한 자세한 내용 및 사용 방법은 다음을 참고하세요.
스크립터블 툴 시스템
스크립터블 툴 시스템은 커스텀 인터랙티브 툴을 빌드할 수 있는 함수와 에디터 모드를 제공하며, C++ 프로그래머가 아닌 사용자도 에디터에서 인터랙티브 툴을 빌드할 수 있도록 하는 것을 목표로 합니다. 이 플러그인은 블루프린트에 인터랙티브 툴 프레임워크를 노출시켜 크리에이터와 테크니컬 아티스트가 모델링 모드에서 볼 수 있는 것과 유사하게 작동하는 툴을 디자인할 수 있게 해줍니다.
이러한 툴은 에디터 유틸리티 위젯과 유사해 보일 수 있지만 커스텀 빌드된 유저 인터페이스를 포함하는 비모달 대화창을 사용하여 다양한 종류의 에디터 스크립팅을 수행할 수 있습니다. 그 자체로도 강력하고 유용하지만 비모달 대화창이라는 한계로 인해 수행할 수 있는 작업이 제한됩니다. 스크립터블 툴은 모달이므로 이를 사용하고 있는 경우에는 다른 툴을 활성화할 수 없습니다. 또한 이는 에디터의 상태가 보다 엄격하게 관리된다는 것을 의미하기도 합니다. 스크립터블 툴은 마우스를 더 효율적으로 캡처할 수 있고, 유저 인터페이스는 유틸리티 위젯보다 더 구조화되어 있으며, 런타임에서 생성한 툴 사용할 수 있습니다.
스크립터블 툴의 몇 가지 사용 사례는 다음과 같습니다.
선과 점 같은 기본적인 3D 지오메트리를 그립니다.
블루프린트를 통해 툴에 프로퍼티 세트를 추가하고 사용자가 볼 수 있는 툴 세팅으로 작동하도록 합니다.
하나 이상의 3D 기즈모를 생성하고 해당 위치를 제어하고 트랜스폼 변경사항에 반응합니다.
스크립터블 툴과 프로시저럴 콘텐츠 제너레이션(Procedural Content Generation, PCG)이나 모션 디자인 등 엔진의 다른 기능을 함께 페어링할 수 있습니다.
자세한 내용은 스크립터블 툴 시스템을 참고하세요.
다음 페이지
Maya 사용자를 위한 언리얼 엔진에서의 월드 디자인 및 빌드
Maya 사용자를 위해 언리얼 엔진의 씬 빌드 디자인 툴에 대해 살펴봅니다.