언리얼 엔진 5 블루프린트 비주얼 스크립팅 3/e [블루프린트의 막강한 힘]
언리얼 엔진 5 블루프린트 비주얼 스크립팅 3/e [블루프린트의 막강한 힘]
원서명Blueprints Visual Scripting for Unreal Engine 5, 3rd Edition: Unleash the true power of Blueprints to create impressive games and applications in UE5 (ISBN 9781801811583)
지은이마르코스 로메로(Marcos Romero), 브렌든 스웰(Brenden Sewell)
옮긴이김제룡, 김승기
https://github.com/AcornPublishing/blueprintsue5
이 글은 블루프린트 의 가장 기본적인 용례와 흔히 사용되는 동작에 대해 다뤄보면서 빠르게 익숙해지도록 돕기 위한 글입니다.
블루프린트 관련 상세 정보는 블루프린트 비주얼 스크립팅 문서를 참고하세요.
언리얼 엔진 설치
언리얼 엔진을 사용하기 위해 우선 에픽게임즈 런처를 설치해야한다. 이후 언리얼엔진탭을 클릭하요 라이브러리탭에서 엔진버전을 골라 설치한다.
템플릿을 이용한 새 프로젝트 생성
언리얼엔진을 실행하면 언리얼 프로젝트 브라우저가 나타난다. 왼쪽위 최근 프로젝트및 게임카테고리의 템플릿중 삼인칭 템플릿을 선택하고 오른쪽 프로젝트 이름을 채우고 생성버튼을 클릭한다. 프로젝트가 로드되면서 언리얼 레벨에디터가 보인다.
레벨에디터
레벨에디터는 툴바, 뷰포트, 콘텐츠브라우저, 아웃라이터, 디테일 창으로 이루어져 있다. 유니티와 다른점은 유니티는 기본 에디터상에서 만든 게임오브젝트를 프리팹으로 만들수 있지만. 언리얼은 레벨에디터에서 전용 블루프린트에디터로 이동해야한다.
블루프린트 비주얼 스크립팅
블루프린트는 청사진이란 뜻이지만 언리얼엔진위한 비주얼 스크립팅 언어이며 언어로 생성된 새로운 타입의 게임오브젝트이다. 블루프린트는 레벨블루프린트와, 블루프린트클래스 두가지 기본타입이 있다. 각 레벨과 분리할수 없는 고유한 레벨블루프린트가 있다. 반면 블루프린트 클래스는 모든 레벨에서 재사용할 수 있다.
레벨블루프린트 만들기
레벨에디터 툴바 가운데 블루프린트 버튼을 누르면 드롭다운에서 레벨블루프린트 열기가 보일것이다.
레벨블루프린트에디터는 블루프린트클래스 에디터보다 간단하다. 내블루프린트 이벤트그래프, 디테일패널등의 인터페이스만 간단히 살펴보고 지금은 아무것도 안하고 다시 에디터를 닫고 레벨에디터로 돌아간다.
블루프린트 클래스 생성하기
블루프린트를 만드는 세가지 방법이 있다.
1. 툴바에서 레벨블루프린트를 여는데 사용한 같은 버튼을 누르고 드롭다운에서 새 빈 블루프린트 버튼을 클릭한다.
2. 레벨에디터 왼쪽 아래 콘텐츠 드로어 버튼을 클릭하여
콘텐츠 브라우저가 열리면 추가 버튼을 클릭하고 기본 에셋생성카테고리 아래의 블루프린트 클래스를 선택한다.
3. 콘테츠 브라우저의 빈공강에 아무곳이나 우클릭하고 나타난 메뉴에서 블루프린트 클래스를 선택한다.
위 세가지 방법으로 블루프린트클래스를 만들려고 하면 부모클래스를 선택해야한다. 여기서는 만들지 않을것이므로 취소 버튼을 눌러 돌아간다.
블루프린트 만들기
블루프린트를 만드는 방법은 여러가지 있습니다. 먼저 콘텐츠 브라우저 의 신규 추가 버튼을 통한 것입니다:
콘텐츠 브라우저에서
버튼을 누릅니다.
뜨는 메뉴의 기본 애셋 생성 섹션 아래에서 블루프린트 를 선택합니다.
고급 애셋 생성 아래 블루프린트 옵션에서 추가적인 블루프린트 유형 생성이 가능합니다.
블루프린트 의 부모 클래스 를 선택합니다.
클래스 선택 이후 콘텐츠 브라우저 에 새로운 블루프린트 애셋이 추가되며, 이름을 지을 수 있습니다.
애셋을 사용한 블루프린트 생성
블루프린트를 만드는 또다른 방법은, 콘텐츠 브라우저 에서 애셋에 우클릭 한 다음 애셋 액션 아래에서 다음을 사용하여 블루프린트 생성... 옵션을 선택하면 됩니다.
이 옵션은 스태틱 메시, 스켈레탈 메시, 파티클 이펙트, 사운드 큐, 사운드 웨이브 등 지원되는 애셋에만 사용 가능합니다. 선택된 애셋에 지원되지 않는 경우, 회색으로 비활성화되어 보입니다.
다음을 사용하여 블루프린트 생성... 옵션 선택 이후에는, 블루프린트를 어디에 저장할 것인지 묻는 창이 뜹니다. 저장 위치를 확인한 이후에는 자동으로 블루프린트 에디터에 열립니다.
레벨에 블루프린트 배치하기
레벨에 블루프린트를 배치하는 방법은...
콘텐츠 브라우저 에서 레벨에 드래그 앤 드롭 하거나,
콘텐츠 브라우저 에서 블루프린트를 선택한 채로, 레벨에 우클릭 한 다음 컨텍스트 메뉴에서 액터 배치 를 선택합니다.
블루프린트 노드 배치하기
그래프 모드 에서 노드를 배치하는 방법은 여러가지 있는데 (자세한 정보는 노드 배치하기 참고), 이 섹션에서는 그 중 가장 흔히 사용되는 배치 방법과 아울러 노드를 연결하는 방법도 알아보겠습니다.
노드 배치시 거의 항상 블루프린트 그래프 안에 우클릭 했을 때 나타나는 컨텍스트 메뉴를 사용하게 됩니다.
위 메뉴에서, 아무 카테고리(또는 서브 카테고리)나 펼쳐 그래프에 추가하고픈 노드를 선택하면 됩니다.
창 우상단 구석에 보면 컨텍스트에 따라 라는, 기본적으로 켜져있지만 끌 수 있는 옵션이 있는데, 현재 컨텍스트에서 사용할 수 있는 것들만 메뉴에 표시되도록 자동으로 필터를 적용해 주는 옵션입니다.
아래에서 보듯이 우클릭 후 컨텍스트에 따라 옵션을 켜고 Animation 을 검색하면, 필터가 적용된 목록이 나옵니다.
하지만 컨텍스트에 따라 옵션 체크를 해제하고 Animation 을 검색하면 애니메이션 관련된 것들이 모두 나타납니다.
그래프에 우클릭 을 했을 때 컨텍스트 메뉴가 나타나는 것처럼, 기존 노드를 끌어 놓을 때도 컨텍스트 메뉴를 접할 수 있습니다.
위에서 Character Movement 컴포넌트 레퍼런스가 있는데, 그 출력 핀을 끌어 놓으면 아래 예제에서 보듯이 컨텍스트에 맞거나 그 노드에 관련이 있는 노드만 추가할 수 있습니다.
위에서는 Set Max Walk 를 검색하여 메뉴에서 Set Max Walk Speed 를 선택한 것으로 캐릭터의 Max Walk Speed 를 설정할 수 있습니다.
블루프린트 노드 연결하기
노드를 연결하려면, 핀을 하나 잡아 끌어 같은 유형의 다른 핀에 놓으면 됩니다 (변환 노드가 생성되는 경우도 몇 가지 있습니다. 예를 들어 Float 출력을 Text 입력에 연결하면 두 노드 사이에 자동으로 변환 노드가 생성되어 연결됩니다).
입력/출력 핀의 유형이 같은 두 노드 사이의 기본적인 연결은 이렇습니다.
변환중인 예제는 이렇습니다.
- 부가적인 노드 기반 동작 및 단축키 정보: 블루프린트 에디터 단축키 일람
변수 생성
Variable (변수)는 월드에 있는 Object 나 Actor 에 대한 값이나 주소(reference)를 담는 프로퍼티입니다. 이 프로퍼티는 내부적으로는 그를 담고있는 Blueprint 에서 접근 가능하며, 외부적으로 접근 가능하게 하여 레벨에 놓은 Blueprint 인스턴스 작업을 하는 디자이너가 그 값을 변경하도록 할 수도 있습니다.
내 블루프린트 창에서 블루프린트에 쓸 변수를 만들 수 있는데, 변수 목록 제목의 추가 버튼 (+) 을 누르면 됩니다.
변수를 생성한 이후에는, 변수의 프로퍼티를 정의해 줘야 할 것입니다.
- 다양한 변수 유형에 대한 상세 정보 및 그 작업 방법에 대해서는 블루프린트 변수 문서를 참고하세요.
이벤트그래프
블루프린트의 EventGraph (이벤트 그래프)에는 이벤트와 펑션 콜을 사용해서 블루프린트와 연계된 게임플레이 이벤트에 반응한 어떤 동작을 수행하는 노드 그래프가 들어 있습니다. 이는 모든 블루프린트 인스턴스에 공통이 되는 기능을 추가하는 데 사용되며, 여기서 상호작용되는 부분과 동적으로 반응되는 부분이 구성됩니다. 예를 들어 라이트 블루프린트는 피해를 입으면 LightComponent 를 끄고 메시에 사용되는 머티리얼을 바꾸는 식으로 반응부를 구성합니다. 그러면 자동으로 모든 해당 라이트 블루프린트 인스턴스에 그러한 작동방식이 전파됩니다.
레벨 블루프린트 의 이벤트 그래프 에는 게임플레이 이벤트에 반응하여 어떠한 동작을 하기 위해 이벤트와 펑션 콜을 사용하는 노드 그래프가 들어 있습니다. 레벨 전체적인 이벤트 처리와 월드 내 액터 와 블루프린트 의 특정 인스턴스에 대한 함수성을 추가하기 위해 사용됩니다.
어느 경우든, 이벤트 그래프 는 입구 역할을 하는 이벤트 하나 이상을 추가한 다음 Function Call, Flow Control 노드와 변수 를 연결하여 원하는 동작을 하도록 하는 데 사용됩니다.
그래프 작업
그래프 패널에는 그래프에 들어있는 모든 노드가 그 연결상태를 포함해서 전부 표시되는, 노드의 특정 그래프에 대한 시각적 표현이 표시됩니다. 노드의 추가, 제거, 배치, 노드 사이의 링크 생성과 같은 편집 기능이 제공됩니다. 그래프 패널에 중단점을 설정하여 블루프린트 디버깅을 보조할 수도 있습니다.
이벤트 그래프 및 블루프린트 관련 기타 그래프 작업에 대한 상세 정보는 그래프 에디터 탭 문서를 참고하세요.
그래프
Graph (그래프)란 노드로 된 망으로써, 서로 연결하여 망의 실행 흐름을 정의할 수 있습니다. 그래프는 블루프린트에서 함수성 구현을 위한 기반이 됩니다. 각 블루프린트는 그 유형에 따라 하나 이상의 그래프를 포함할 수 있으며, 거기서는 블루프린트의 특정한 면에 대한 구현을 정의합니다. 블루프린트 내 각 그래프에는 서브그래프가 포함될 수도 있는데, 이는 본질적으로 일정한 노드 집합을 별도의 그래프 속에 접어 넣는 것이며, 주로 체계적인 관리를 위해서입니다. 고유한 프로퍼티를 갖는 특수 유형 그래프가 있으나, 변수 레퍼런스 추가, 노드의 추가 및 연결, 디버깅 등의 핵심 원리는 전반적으로 적용됩니다.
그래프 유형
이벤트 그래프
Event Graph (이벤트그래프)란 가장 일반적인 유형의 블루프린트 그래프입니다. 블루프린트 클래스가 새로 생성될 때마다 하나의 이벤트그래프 가 포함되며, 추가도 가능은 합니다. 이벤트그래프 의 추가를 통해 블루프린트 망의 체계적인 정리에 도움이 됩니다. 이벤트그래프 에는 보통 블루프린트의 게임플레이 행위를 정의하는 망이 포함되며, Event, CustomEvent, Input 노드를 통해 이벤트그래프 의 전반적인 실행 흐름이 결정됩니다.
이 섹션 관련 상세 정보는, 이벤트 그래프 문서를 참고하세요.
컨스트럭션 스크립트
Construction Script (컨스트럭션 스크립트)는 블루프린트 클래스 고유의 것으로, 각각의 블루프린트 클래스 마다 단 하나의 컨스트럭션 스크립트 만이 존재합니다. 컨스트럭션 스크립트 는 블루프린트 클래스 초기화에 좋은데, 블루프린트 클래스 에 대해 컴포넌트 리스트가 셋업된 직후 실행되기 때문입니다.
이 섹션 관련 상세 정보는, 컨스트럭션 스크립트 문서를 참고하세요.
함수
Function (함수)는 Blueprint 내 다른 그래프에서 실행 또는 호출 가능한 특정 Blueprint 에 속하는 노드 그래프입니다. 함수에는 하나의 입력부가 있는데, 실행 출력 핀이 하나 있는 함수 이름으로 된 노드로 표시됩니다. 이 함수가 다른 그래프에서 호출되면, 그 출력 실행 핀을 활성화시켜 연결된 네트워크가 실행되도록 합니다.
이 섹션 관련 상세 정보는, 함수 문서를 참고하세요.
매크로
Blueprint Macro (블루프린트 매크로) 또는 Macro (매크로)는 본질적으로 노드 그래프를 접은 것과 같습니다. 터널 노드로 지정되는 입구와 출구가 있습니다. 각 터널에는 다른 블루프린트와 그래프에서 사용될 때 매크로 노드에 보이는 실행 또는 데이터 핀이 몇 개든 있을 수 있습니다.
이 섹션 관련 상세 정보는, 매크로 문서를 참고하세요.
그래프 작업하기
그래프가 컨스트럭션 스크립트인지, 이벤트그래프인지, 함수인지, 매크로인지에 따라 에디터 의 그래프 모드에서 편집하게 됩니다. 기본적으로 모든 그룹_에는 와이어로 연결된 노드 망이 들어 있습니다.