(스크랩) [언리얼 엔진4] 6. 블루프린트의 기초

게임기획 관련 이야기 2018. 5. 5. 23:55

우리는 언리얼 엔진의 블루프린트를 사용해서 게임을 만들 것이므로 먼저 블루프린트이 기본적인 사항을 알아 둘 필요가 있습니다. 다음 내용은 제가 쓴 책 [동영상과 함께하는 언리얼엔진4 블루프린트 게임만들기]에서 발췌한 내용이므로 저작권은 저에게 있습니다.

 

1. 블루프린트의 개요

블루프린트는 코딩을 하지 않는다는 것만 다를 뿐 스크립트를 만드는 논리는 프로그래밍 언어로 작성하는 것과 똑같습니다언리얼 엔진에서 블루프린트를 사용하는 목적은 사람이 다가가면 자동으로 열리는 문’ 등과 같이액터(Game Object)에 소스 코드를 연결하는 과정을 편하게 하기 위해서이지쉬운 코딩을 하기 위한 수단은 아닙니다따라서 개발자는 C/C++이나 Java 등의 프로그래밍 언어에 대한 최소한의 기본 문법 정도는 알고 있어야 합니다.


블루프린트는 순서도처럼 노드를 연결해서 프로그램의 논리를 표현합니다. 따라서 전체적인 흐름이 이해하기 쉬운 장점이 있지만, 논리가 복잡해지면 아주 커다란 그래프를 만들어야 하므로 오히려 이해하기 어려운 프로그램이 될 수 있습니다. 


프로그래밍 언어로 작성된 소스나 스크립트 등은 강좌의 소스를 긁어다 붙이는 Cut & Paste를 할 수 있지만, 블루프린트는 그게 안되므로 게으른 개발자들에게는 쥐약(?)입니다. 당연히 앞으로 진행되는 강좌의 모든 블루프린트는 붙여넣기가 안되므로 여러분이 직접 작성하셔야 합니다.

 

2. 블루프린트의 작성 규칙

블루프린트는 다음과 같은 규칙으로 작성합니다.

 

① 블루프린트의 기본 단위는 노드이다.

② 노드와 노드 사이는 제어(명령)와 데이터가 전송되며제어와 데이터의 흐름은 (Wire)으로 연결한다.

③ 제어는 ’ 핀을 사용하고 데이터는 ’ 핀을 사용한다.

④ 제어와 데이터는 왼쪽에서 오른쪽으로 진행된다.

⑤ 입력 및 출력이 있는 노드는 입력핀이 왼쪽에 출력핀은 오른쪽에 있다.

⑥ 제어의 흐름선은 흰색으로 표시되고데이터의 흐름선은 자료의 형(Type)에 정의된 색으로 표시된다

   아래 그림의 데이터 흐름선은 실수(float)형 자료이다.


 


 

3. 블루프린트 노드의 종류

블루프린트의 노드는 다음과 같은 것들이 있습니다.

 

(1) 이벤트

이벤트(Event)는 특정한 사건이 발생했음을 알리는 신호입니다이벤트가 발생하면 그 이벤트를 처리하는 일련의 절차가 필요합니다예를 들어 적이 총에 맞았을 때 적과 총알이 충돌하는 것은 이벤트이고적이 쓰러지고 득점이 표시되는 것은 이벤트의 처리입니다블루프린트는 대부분 이벤트로부터 시작하며이벤트 노드는 빨간색으로 표시됩니다다음은 이벤트 노드와 이벤트 발생 조건의 예입니다.


 

 

(2) 변수

사용자가 임의로 만들어 사용하며 특정한 값을 저장합니다다음과 같은 종류(Type)의 변수가 있습니다.

 

Type

값의 범위

설명

bool

byte

int

float

name

string

text

Vector

Rotator

Transform

struct

object

interface

class

Enum

/아니오

0~255

대략 ±21억 이내의 정수

정밀도 7자리 이내의 실수

액터의 이름

문자열

문자열

(x, y, z) 또는 RGB

3D 공간의 회전량

위치회전스케일 정보

구조체

액터 등의 오브젝트

인터페이스 포인터

클래스 포인터

열거형

True 또는 False 값을 갖는 유형

1바이트로 표현할 수 있는 값

-214,7483,648 ~ 214,7483,647

-3.4×10-38 ~ 3.4×1038

 

영숫자한글특수문자로 된 문자열

현지화가 가능한 텍스트

3개의 실수(float)로 이루어진 자료

Pitch, Yaw, Roll 성분을 갖는 구조체

액터의 위치회전스케일 비율

복합된 자료(Rotator도 구조체이다)

카메라라이트스태틱 메시 등

 

 

순서적인 값을 갖는 자료

 

 

다음은 변수의 종류와 변수에 할당된 컬러의 예입니다변수의 유형(Type)은 언리얼 엔진의 버전에 따라 한글이나 영문으로 표시됩니다.

 

 


 

(3) 연산자

사칙 연산이나 값을 비교하기 위한 노드입니다연산자는 피연산자를 입력받는 핀과 연산 결과를 반환하는 핀으로 구성되어 있으며자료의 유형(Type)에 따라 사용하는 연산자가 다릅니다연산자의 자료 유형은 핀의 색으로 구분됩니다다음은 수식에 사용하는 연산자의 예입니다.


 

 

연산은 왼쪽에서 오른쪽으로 진행되며왼쪽 연산이 완전히 끝난 후 오른쪽 연산을 하므로 연산자의 우선순위는 적용되지 않습니다예를 들어 5+3÷2는 수학의 경우 ‘÷’가 ‘+’보다 우선순위가 높으므로 5+(3÷2)로 계산되지만블루프린트의 연산은 왼쪽의 연산자가 오른쪽 연산자보다 우선순위가 높으므로 (5+3)÷2로 계산됩니다.


 

 

(4) 함수

데이터를 입력받아 정해진 절차를 수행한 후 결과를 반환하는 노드입니다대부분의 함수는 하나 이상의 값을 입력받아 하나 이상의 값을 반환하므로 입력과 출력핀이 각각 있습니다언리얼 엔진에는 매우 다양한 함수가 내장되어 있으며특정한 처리를 하는 함수를 사용자가 직접 만들 수도 있습니다다음은 블루프린트에서 사용하는 함수의 예입니다.


 

 

(5) 제어 노드

조건에 따라 다른 처리를 하거나(if) 특정한 부분을 반복(for), 또는 각각의 값에 따른 선택(switch) 등 제어의 흐름을 바꾸는 노드입니다다음은 제어 노드의 예입니다.



 

(6) 시간 관련 노드

시간의 흐름에 따라 특정한 처리를 하기 위한 노드입니다다음은 시간 관련 노드의 예입니다.


 

 

(7) 형변환(Type Casting) 노드

자료의 (Type)을 강제로 바꾸기 위한 노드로대부분 자동으로 추가됩니다예를 들어 실수형 변수에 정수를 대입하면 정수가 실수형으로 형변환(Type Casting)되어 대입됩니다모든 경우에 자료의 형이 바뀌는 것은 아니고작은 값이 큰 값으로 변환되는 것만 가능합니다예를 들어 실수형 자료는 정수형으로 형변환하는 것이 불가능하므로 Floor(절삭), Round(반올림등의 함수를 이용해서 정수로 변환한 후 사용합니다다음은 형변환 노드의 예입니다.


 


4. 변수의 Get과 Set

변수 노드는 Get과 Set이 있습니다. Get은 변수의 값을 읽는 동작이고 Set은 변수에 값을 저장합니다.




Get은 이지만 Set은 명령입니다따라서 Set 노드의 왼쪽 ’ 핀에 명령(또는 이벤트)을 연결하지 않으면 동작하지 않습니다그러므로 위의 그래프는 실제로는 작동하지 않을 것입니다Set 노드의 출력핀은 언리얼 엔진 4.7에 추가된 기능이므로 4.6.1 버전은 Set 노드에 출력핀이 없습니다.


 

5. 블루프린트의 종류

블루프린트는 다음과 같은 종류가 있습니다.

 

① 레벨 블루프린트

게임의 모든 레벨()에 하나씩 할당되어 있는 블루프린트이다레벨에 설치된 각종 액터와 상호 작용을 통해 게임을 진행해 간다레벨의 메인 프로그램에 해당하며레벨 블루프린트는 다른 레벨의 내용은 참조할 수 없다.

 

② 게임 모드 블루프린트

게임의 모드와 게임의 설정 등을 위해 사용한다개발자가 게임 모드 블루프린트를 만들지 않으면 언리얼 엔진에 마련되어 있는 GameMode 블루프린트가 사용된다.

 

③ 클래스 블루프린트

씬에 설치할 각종 액터사운드카메라파티클 등에서 발생하는 이벤트움직이는 액터의 동작 등을 처리하기 위해 사용한다클래스 블루프린트는 액터에 하나씩 할당할 수 있다블루프린트가 할당된 액터를 블루프린트 액터라고 하며블루프린트 액터를 씬에 설치하면 블루프린트에 설정한 절차대로 동작한다예를 들어 사람이 접근하면 자동으로 켜지는 전등스위치를 누르면 작동하는 엘리베이터 등을 블루프린트 액터로 만들면 전체적인 구성이 간단해질 것이다게임 제작에 필요한 블루프린트의 거의 대부분이 클래스 블루프린트이며우리가 앞에서 만든 B_Sky도 클래스 블루프린트이다.

 

④ 블루프린트 인터페이스

다른 블루프린트와 데이터를 공유하고이벤트를 발생하기 위해 작성한 블루프린트로함수 이름만 모아둔 것이다.

 

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

매크로는 반복되는 일련의 절차를 별로의 그래프로 만들어 둔 것으로매크로 라이브러리는 블루프린트 매크로를 모아둔 것이다매크로 라이브러리에 수록된 매크로는 각각의 블루프린트에 추가할 수 있다.

 

⑥ 위젯 블루프린트

게임의 UI를 만들기 위한 블루프린트이다.



이것으로 블루프린트에 대한 설명을 마칩니다. 블루프린트 노드는 프로그래밍 언어의 명령과 함수많큼 종류가 많고 사용법도 다양하지만, 여기에서는 앞으로 만들 게임 제작에 필요한 가장 기본적인 사항만 설명했습니다. 여기에서 설명하지 못한 것들은 실제로 게임을 만들어가면서 필요에 따라 설명하기로 하겠습니다.


이 강좌를 보는 모든 분들이 언리얼엔진과 유니티의 최고수가 될 수 있기를...