개발일지

언리얼 엔진 블루프린트 기초 2장: 블루프린트의 기초

반건조수달 2024. 8. 8. 21:16

2024.08.08 - [개발일지] - 언리얼 엔진 블루프린트 기초 1장: 블루프린트 소개

 

언리얼 엔진 블루프린트 기초 1장: 블루프린트 소개

- 서문 나는 블루프린트를 잘 모른다. 코딩하고 관련 없는 사람이다. 설명이 정확하지 않고 틀릴 수 있다. 빠진 내용이 있을 수 있다. 언리얼 엔진을 써보려고 블루프린트를 공부하고 있고 공부

semidriedotter.tistory.com

- 컨트롤 플로우

 컨트롤 플로우라는 단어 먼저 정리하고 가겠다. 한글 말 그대로 옮겨 보면 흐름 제어다. 여기서 흐름은 왼쪽에서 오른쪽으로 흘러가는 글을 읽는 흐름과 같이 블루프린트가 동작하는 흐름을 말한다. 블루프린트도 글과 마찬가지로 왼쪽에서 오른쪽으로 흐른다. 왼쪽에서부터 오른쪽으로 해석하면 된다. 제어는 흐름의 제어를 말한다. 다시 뒤로 돌아가게 만들고 다른 길로 가게 만들 수 있다.

 멀쩡히 한 방향으로 흘러가는 블루프린트 흐름을 제어하는 방법은 여러 가지 있지만 브랜치와 루프에 관해서만 말하겠다. 브랜치는 분기이다. 하나의 흐름이 두 가지로 나뉘는 것이다. 보통 참 거짓에 따라 분기가 나뉜다. 루프는 반복이다. 특정 횟수만큼 블루프린트 내 로직을 반복한다. 이 둘은 블루프린트의 '흐름'을 '제어'하는 역할을 한다.

" 다음과 같이 흐름을 나타내는 그림을 '컨트롤 플로우'라고 한다."

 

 한 줄기로 이어지는 단순한 모양의 블루프린트가 이런 다양한 모양으로 바뀔 수 있는 것 모두 다 이 때문이다. 블루프린트가 복잡해지는 이유도 바로 이 컨트롤 플로우 때문이고 컨트롤 플로우를 명확히 이해하고 잘 따라갈 수만 있다면 복잡한 블루프린트도 잘 이해할 수 있다. 그리고 내가 원하는 목표에 가기 위해서도 컨트롤 플로우를 잘 짜서 효율적인 길을 만들어낼 수 있어야 한다. 컨트롤 플로우를 먼저 설명한 이유가 이 때문이다. 블루프린트는 컨트롤 플로우가 가장 중요하다.

 

"컨트롤 플로우를 이해하면 블루프린트를 읽을 수 있다."

- 블루프린트란?

 아직 블루프린트가 무엇인지 말 안 했다. 블루프린트는 이름 그대로 청사진이다. 설계도이다. 무언가를 만드는 설계도이다. 무엇이 무엇이냐는 정말 다양하다. 게임에서 캐릭터가 어떻게 움직이는지 정하는 데 사용되기도 하고, 이펙트, 매테리얼 등 거의 모든 것에 관한 설계도이다. 따라서 블루프린트를 만드는 규칙을 알면 게임 세상이 동작하는 모든 원리를 알 수 있고 만들 수 있다. 현실 세상이 이루어지는 규칙을 설명하는게 물리학이라면 언리얼 게임 세상을 설명하는 규칙은 블루프린트다. 다시 한번 말하자면, 블루프린트는 설계도이다. 블루프린트를 생성해 보자.

"블루프린트를 만들고 print string 노드를 추가한 모습"

 블루프린트를 열면 볼 수 있는 화면이다. 박스 두 개가 보인다. 박스를 노드라고 부른다.

 

- 블루프린트의 구성요소

 노드가 무엇인가. 노드는 특정한 기능을 수행하는 단위이다. 노드가 와이어로 연결되어 컨트롤 플로우 흐름을 만든다. 비유를 활용해 이야기해 보겠다. 블루프린트를 요리책이라고 해보자. 요리책 안에는 필요한 재료가 적혀있고 재료를 어디에 써야 하는지, 얼마큼 가열해야 하는지, 어떤 모양으로 잘라야 하는지에 관한 정보가 적혀있다. 적혀있는 순서대로 잘 따라 하면 요리가 만들어진다. 블루프린트도 마찬가지다. 요한 재료(변수, 컴포넌트), 조리방법(함수)이 적혀있는 요리책(블루프린트)이다. 노드요리의 한 과정이다. 양파를 잘게 써세요. 물이 끓으면 면을 넣으세요. 등 조리를 위해 쓰여 있는 명령이다. 온갖 종류의 명령을 내리는 역할을 노드라고 부른다.

 노드에는 이 있다. 하얀색 핀순서를 결정하는 핀이다. 컨트롤 플로우의 흐름은 왼쪽에서 오른쪽으로 흐른다고 했다. 왼쪽에서 오른쪽으로 읽으면 된다. 물을 끓이세요 라는 노드와 양파를 써세요 라는 노드가 있다고 가정해 보자. 물을 끓이세요가 왼쪽에 있고 오른쪽에 양파를 써세요가 있다면 물을 끓인 후에 양파를 써는 레시피다. 반대로 왼쪽에 양파를 써세요가 있고 오른쪽에 물을 끓이세요가 있다면 양파를 썬 후 물을 끓여야 한다.

 하얀 핀 밑에 흰색 말고 다른 색 핀이 있다. 이는 조리과정에 쓰일 도구와 재료를 정하는 핀이다. 노드는 함수의 개념을 지닌다. x를 넣으면 y가 나온다. "간장을 넣으세요"를 더 자세히 표현해 보겠다. x1(재료)를 x2(도구)를 사용해서 써세요 = y이다. 이때 재료와 도구를 지정해줘야 한다. x1에 간장을 연결하고 x2에 숟가락을 연결한다. 각 핀별로 들어갈 수 있는 종류는 제한되어 있다. 재료칸에 숟가락을 넣을 수 없고 도구 칸에 간장을 넣지 못한다. 함수의 종류에 따라서 다양한 핀이 생긴다. 양파를 썰 때 필요한 핀과 고기를 볶을 때 필요한 핀은 다를 것이다. 이 외에도 기능이 복잡할수록 아예 다른 조리법을 가져오는 핀이 있을 수도 있고 요리책을 가져와야 하는 경우도 있다. 핀은 변수 이외에도 클래스와 컴포넌트를 요구하기도 한다. 

 

 컴포넌트큰 재료들이다. 변수가 소금과 후추 같은 세밀한 계량을 필요로 하는 재료라면 컴포넌트는 요리의 핵심이 되는 고기와 야채 같은 큼지막한 재료다.

"블루프린트의 구성 요소와 비유"


블루프린트 = 요리책

노드 = 요리의 한 과정

흰색 핀 = 조리 순서

다른 색 핀 = 필요한 재료와 도구

컴포넌트 = 메인 재료 


- 마무리

 이번 시간에는 블루프린트의 구성요소역할에 따라 나누어서 이해해 보는 시간을 가졌다. 블루프린트가 어떻게 움직이는지 감이 잡힌다. 문법에는 문장 성분과 품사가 있다. '나'라는 단어는 명사라는 품사를 지닌다. 문장에 위치한 자리에 따라서 주어가 되기도 한다. 이처럼 한 단어는 성분과 품사를 가진다. 블루프린트의 요소도 마찬가지다. 노드는 블루프린트 그래프라는 맥락 안에서 하나의 성분으로 이해되지만 근본적으로 함수와 이벤트라는 기능과 형태 즉, 품사를 가진다. 다음 시간에는 요소들의 기능에 집중해서 블루프린트의 품사에 대해서 알아보겠다.

2024.08.08 - [분류 전체보기] - 언리얼 엔진 블루프린트 기초 3장: 함수와 변수