블루프린트 개요

Blueprint, 블루프린트란 무엇인가, 그리고 다양한 블루프린트 유형에 대한 분석입니다.

Choose your operating system:

Windows

macOS

Linux

언리얼 엔진의 비주얼 스크립팅 시스템인 Blueprint (블루프린트)는 언리얼 에디터 안에서 노드 기반 인터페이스를 사용하여 게임플레이 요소를 만드는 개념을 토대로 한 비주얼 스크립팅 시스템입니다. 일반적인 스크립팅 언어와 마찬가지로, 엔진 내 객체 지향형(OO) 클래스 또는 오브젝트를 정의하는 데 사용됩니다. UE4 를 사용하다 보면, 블루프린트를 사용하여 정의된 오브젝트를 그냥 일상적으로 "블루프린트" 라 하는 경우가 많습니다.

이 시스템은 매우 유연하고 강력해서, 보통은 프로그래머가 없으면 힘들었던 개념 구현이나 툴 작업 거의 전부를 디자이너 스스로 해낼 수 있게 되었습니다. 게다가, 언리얼 엔진의 C++ 구현에서 가능한 블루프린트 전용 마크업을 통해 프로그래머가 어떤 기반 시스템을 제작하면, 디자이너가 그것을 확장하는 것도 가능합니다.

Blueprint (블루프린트)가 UnrealScript (언리얼스크립트)를 대체한다는 뜻일까요? 그렇기도 하고 아니기도 합니다. 게임플레이 프로그래밍과 이전에 언리얼스크립트를 사용했던 모든 것은 여전히 C++ 를 사용해서 코드로 처리할 수 있습니다. 동시에 블루프린트가 언리얼스크립트를 대체하고자 한 것은 아니지만, 언리얼스크립트가 처리했던 많은 부분을 대신해 주고 있기는 합니다. 이를테면:

  • 클래스 확장

  • 디폴트 프로퍼티 저장 및 변경

  • 클래스에 대한 (컴포넌트 등의) 서브오브젝트 인스턴싱 관리

블루프린트로 기대하는 바는, 게임플레이 프로그래머가 유용한 함수와 프로퍼티 세트를 노출시킨 베이스 클래스를 구성해 두면, 그 베이스 클래스로 만든 블루프린트 가 그 함수와 프로퍼티를 활용하고 확장해 쓰는 것입니다.

아래는 여러가지 부분이 (언리얼 엔진 3의) 언리얼스크립트, C++, 블루프린트에서 각각 어떻게 처리되는지를 나타내는 표로, 기존 버전의 엔진에서 넘어온 분들과 네이티브 코드 / 블루프린트 의 차이점에 대한 이해를 돕기 위함입니다.

언리얼스크립트 (UE3)

블루프린트 (UE4)

C++ (UE4)

.uc 파일

블루프린트 애셋

.h/.cpp 파일

UClass

UBlueprintGeneratedClass

UClass

extends [클래스명]

ParentClass

: [클래스명]

변수

변수

UProperty()

함수

그래프/이벤트

UFunction()

defaultproperties{}

클래스 디폴트

네이티브 생성자

디폴트 컴포넌트

컴포넌트 리스트

네이티브 생성자

블루프린트 유형

블루프린트 는 레벨 이벤트 스크립트 작성을 위한 유형을 새로 만드는 것에서부터 다른 블루프린트 에서 사용할 인터페이스나 매크로를 정의하는 것까지, 여러가지 용도의 유형 중 하나가 될 수 있습니다.

블루프린트 클래스

Blueprint Class (블루프린트 클래스), 종종 그냥 Blueprint (블루프린트)는 콘텐츠 제작자가 기존의 클래스 위에 다른 함수성을 쉽게 추가할 수 있도록 해 주는 애셋입니다. 블루프린트 는 언리얼 에디터 안에서 코드 작성 방식이 아닌 시각적인 방식으로 생성되며, 콘텐츠 패키지에 애셋으로 저장됩니다. 이는 본질적으로 새로운 클래스 또는 액터 유형을 정의하는 것으로, 나중에 이 블루프린트를 맵에 인스턴스로 배치하면 다른 액터 유형처럼 작동합니다.

데이터 전용 블루프린트

Data-Only Blueprint (데이터 전용 블루프린트)는 그 부모 에서 상속받은 코드, 변수, (노드 그래프 형태의) 코드 만 들어있는 블루프린트 클래스 입니다. 이를 통해 상속받은 프로퍼티를 조정하거나 변경할 수는 있어도, 요소를 새로 추가할 수는 없습니다. 이는 본질적으로 아키타입을 대체하는 것이며, 이를 통해 디자이너는 프로퍼티를 조정하거나 항목 다변화가 가능합니다.

데이터 전용 블루프린트 의 편집은 간결한 프로퍼티 에디터를 통해 가능하며, 간단히 코드 , 변수, 컴포넌트를 추가해서 풀 블루프린트 로 변환시켜 블루프린트 에디터 에서 편집할 수도 있습니다.

레벨 블루프린트

Level Blueprint (레벨 블루프린트)란 레벨 단위 글로벌 이벤트 그래프 역할을 하는 특수한 형태의 블루프린트 입니다. 프로젝트 내 각 레벨에는 기본적으로 자체적인 레벨 블루프린트가 있어 언리얼 에디터 안에서 편집할 수 있으나, 에디터 인터페이스를 통해 새로운 레벨 블루프린트를 생성할 수는 없습니다.

레벨 전체적으로 관련된 이벤트 또는 레벨 내 특정 액터 인스턴스가 함수 호출이나 흐름 제어 연산 형태로 일련의 동작을 발동시키는 데 사용됩니다. 언리얼 엔진 3 에 익숙하신 분들이라면 그 키즈멧 작동 방식과 매우 유사한 이런 개념에 금방 익숙해 지실 수 있을 것입니다.

레벨 블루프린트는 레벨 스트리밍과 시퀀서 를 제어할 수도 있으며, 레벨에 놓인 액터에 이벤트를 바인딩할 수도 있습니다.

블루프린트 인터페이스

Blueprint Interface (블루프린트 인터페이스)는 이름만 있고 구현은 없는 함수 하나 이상으로 된 집합으로, 이를 다른 블루프린트에 추가할 수 있습니다. 블루프린트에 인터페이스를 추가하면 그 블루프린트는 그 안에 들어있는 함수를 갖게 됩니다. 인터페이스의 함수에는 그것을 추가한 각각의 블루프린트에 함수성을 줄 수 있습니다. 이는 본질상 일반 프로그래밍의 인터페이스 개념과 비슷한데, 각기 다른 다수의 오브젝트가 모두 공통의 인터페이스를 통해 접근할 수 있게 되는 것입니다. 간단히 말해서, 블루프린트 인터페이스를 통해 다양한 블루프린트는 서로간에 데이터를 공유하고 전송할 수 있습니다.

블루프린트 인터페이스는 콘텐츠 제작자가 에디터에서 다른 블루프린트와 비슷한 방식으로 만들 수 있습니다만, 다음과 같은 작업이 불가능하다는 점에서 차이가 있습니다:

  • 새 변수 추가

  • 그래프 편집

  • 컴포넌트 추가

블루프린트 매크로 라이브러리

Blueprint Macro Library (블루프린트 매크로 라이브러리)란 다른 블루프린트 에 넣어 사용할 수 있는 매크로 또는 독립된 그래프 모음을 담는 그릇입니다. 자주 사용되는 노드 시퀀스를 실행과 데이터 전송을 위한 입력과 출력까지 그대로 포함시켜 저장할 수 있으니, 시간을 절약할 수 있습니다.

매크로 는 자신을 참조하는 모든 그래프에 공유되지만, 컴파일 도중에는 마치 접혀있던 노드인양 원래 그래프로 자동 펼쳐집니다. 즉 블루프린트 매크로 라이브러리 는 컴파일할 필요가 없지만, 매크로 에 가한 변경내용은 그 그래프를 포함하는 블루프린트 가 리컴파일될 때 해당 매크로 를 참조하는 그래프에만 반영됩니다.

블루프린트 유틸리티

블루프린트 유틸리티 (줄여서 Blutility (블류틸리티))는 에디터의 기능을 실행하거나 확장하는 데 사용됩니다. 이들은 이벤트 를 파라미터 없이 UI 에 버튼으로 노출시킬 수 있으며, 블루프린트 에 노출된 함수를 실행시켜 뷰포트에 현재 선택된 액터 세트에 작용하도록 하는 기능이 있습니다.

블루프린트 해부도

블루프린트 의 함수성 정의는 여러가지 요소를 사용하여 이루어지는데, 일부는 기본적으로 존재하는 것이고, 일부는 필요에 따라 추가시키는 것입니다. 이러한 것들이 컴포넌트 정의, 초기화 및 구성 작업 수행, 이벤트 반응, 연산 정리 및 모듈화, 프로퍼티 정의 등과 같은 기능을 하게 됩니다.

컴포넌트 창

컴포넌트에 대해 이해해 두면, 블루프린트 에디터 안의 컴포넌트 창을 통해 블루프린트 에 컴포넌트를 추가시킬 수 있습니다. 이는 CapsuleComponents , BoxComponents , SphereComponents 를 통해 콜리전 지오메트리를 추가하거나, StaticMeshComponents , SkeletalMeshComponents 형태의 렌더링되는 지오메트리를 추가하거나, MovementComponents 를 사용해서 운동을 제어할 수 있는 수단이 됩니다. 컴포넌트 리스트에 추가된 컴포넌트는 인스턴스 변수에 할당시켜 이 블루프린트 나 다른 블루프린트 에서 접근하도록 할 수도 있습니다.

컨스트럭션 스크립트

Construction Script (컨스트럭션 스크립트)는 블루프린트 클래스의 인스턴스 생성시 컴포넌트 리스트 다음에 실행되는 부분입니다. 여기에는 노드 그래프가 들어있어 블루프린트 클래스 인스턴스에서 초기화 작업을 할 수 있습니다. 이는 월드로의 트레이스, 메시와 머티리얼 설정 등의 작업을 컨텍스트에 따라 이루어지도록 구성할 수 있는 매우 강력한 기능입니다. 예를 들어 라이트 블루프린트는 어떤 종류의 바닥에 놓이는가에 따라 지정된 메시 중에서 올바른 메시를 선택하도록 할 수도 있고, 펜스 블루프린트의 경우 각 방향으로 트레이스 작업을 하여 펜스 길이를 얼마나 길게 할 것인지를 결정할 수도 있습니다.

이벤트 그래프

블루프린트의 EventGraph (이벤트 그래프)에는 이벤트와 펑션 콜을 사용해서 블루프린트와 연계된 게임플레이 이벤트에 반응한 어떤 동작을 수행하는 노드 그래프가 들어 있습니다. 이는 모든 블루프린트 인스턴스에 공통이 되는 기능을 추가하는 데 사용되며, 여기서 상호작용되는 부분과 동적으로 반응되는 부분이 구성됩니다. 예를 들어 라이트 블루프린트는 피해를 입으면 LightComponent 를 끄고 메시에 사용되는 머티리얼을 바꾸는 식으로 반응부를 구성합니다. 그러면 자동으로 모든 해당 라이트 블루프린트 인스턴스에 그러한 작동방식이 전파됩니다.

함수

Function (함수)는 Blueprint 내 다른 그래프에서 실행 또는 호출 가능한 특정 Blueprint 에 속하는 노드 그래프입니다. 함수에는 하나의 입력부가 있는데, 실행 출력 핀이 하나 있는 함수 이름으로 된 노드로 표시됩니다. 이 함수가 다른 그래프에서 호출되면, 그 출력 실행 핀을 활성화시켜 연결된 네트워크가 실행되도록 합니다.

변수

Variable (변수)는 월드에 있는 Object 나 Actor 에 대한 값이나 주소(reference)를 담는 프로퍼티입니다. 이 프로퍼티는 내부적으로는 그를 담고있는 Blueprint 에서 접근 가능하며, 외부적으로 접근 가능하게 하여 레벨에 놓은 Blueprint 인스턴스 작업을 하는 디자이너가 그 값을 변경하도록 할 수도 있습니다.

블루프린트 모드

블루프린트의 모드는 창에 어떤 것이 보이는지를 결정합니다. 레벨 블루프린트에는 그래프 모드 하나 뿐이지만, 블루프린트 클래스에는 세 가지 모드가 있습니다:

  • 디폴트 모드 - 블루프린트에 대한 디폴트를 설정하는 곳입니다.

  • 컴포넌트 모드 - 블루프린트를 이루는 컴포넌트를 추가, 제거, 변경하는 곳입니다.

자세한 정보는 블루프린트 에디터 모드 문서를 참고하세요.

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
취소