- 서문
나는 블루프린트를 잘 모른다. 코딩하고 관련 없는 사람이다. 설명이 정확하지 않고 틀릴 수 있다. 빠진 내용이 있을 수 있다. 언리얼 엔진을 써보려고 블루프린트를 공부하고 있고 공부한 내용들을 정리하려고 글을 쓰고 있다. 이 글은 블루프린트 전반에 대한 이해를 위한 글이다.
언어를 잘하기 위해서는 단어를 많이 알고 많이 써보면 된다. 블루프린트도 마찬가지다. 자주 쓰는 노드를 알고 많이 만들어 보면 잘할 수 있다. 모든 언어에는 문법이 있다. 글을 찍어내는 규칙이 담긴 틀이 있다. 많이 써보면 이 규칙을 나도 모르게 습득한다. 반복하다가 규칙을 깨달을 수도 있지만 '문법' 자체를 먼저 알고 시작한다면 단순히 반복하는 것보다 그 규칙을 더 빨리 알아차릴 수 있다. 게다가 무수히 반복하는 것보다 규칙을 알고 시작하는 게 더 재미를 붙이는데도 도움이 된다. 블루프린트도 문법이 필요하다. 그래프가 어떤 순서로 이어져야 하고 각 변수가 가지는 규칙을 알아야 한다. 이 글은 블루프린트의 '문법'에 관한 글이다.
야구도 규칙을 모르고 보면 재미없다. 공이 오가긴 하는데 무슨 일이 일어나고 있는지 모른다. 사람들이 왜 환호하는지 선수끼리 왜 싸우는지 알지 못한다. 복싱도 1초 남짓한 찰나의 순간에 오가는 두 선수의 수싸움을 알지 못하면 그냥 주먹질로 밖에 안 보일 것이다. 하지만 규칙을 알고 나면 투수가 던지는 공에 담긴 의도가 보이고 복싱선수가 던진 주먹이 가지는 의미가 보인다. 세상 모든 일에는 규칙이 숨어 있다. 규칙을 알기 전까지는 아무리 말해도 재미없고 나에게 아무런 의미가 없다. 하지만 규칙을 알면 재밌어진다. 행동 하나, 점 하나에 담긴 의미가 보이기 시작한다. 이 글을 통해 블루프린트의 의미를 알고 연결선으로 이어진 노드를 보고 웃음 지을 수 있었으면 좋겠다.
"블루프린트의 문법"
- 잘 만든 블루 프린트
어떤 게 잘 만든 블루프린트일까? 상상치도 못한 방법으로 목적지에 도달하는 엄청난 길이의 블루프린트. 노드 한 개로 이루어진 단순한 블루프린트. 사실 모양으로 블루프린트를 평가할 수는 없다. 블루프린트는 "특정 기능을 수행하기 위한 명령이자 일종의 설계도"이다.
블루프린트의 첫 번째 평가 조건은 "목적을 달성했는가"이다. 아무리 보기 좋고 설명이 잘 되어 있더라도 원하는 기능을 수행하지 못하면 아무 소용없다. 목적을 달성해야 한다. 두 번째 평가 조건은 목표를 "최대한 효율적으로 단순하게 달성했는가"이다. 부산에서 서울까지 ktx를 타고 바로 갈 수 있지만 차를 타고 강원도에 들렀다가 전라도에 들렀다가 부산으로 갈 수 있다. 두 번째 방식도 부산으로 가긴 했지만 엄청난 낭비다. 우리는 그럴 여유가 없다. 최대한 효율적인 방법으로 부산까지 가야 한다.
정리해 보자면 "가장 효율적이고 단순한 방식으로 목표를 달성했을 때" 잘 만든 블루프린트라고 할 수 있다. 어떻게든 부산으로 가면 되긴 하지만 좋은 방법은 단 한 가지다. 가장 효율적이고 단순하게 가는 방법이다.
잘 만든 블루 프린트 = "가장 효율적이고 단순한 방식으로 목표 달성"
- 잘 만든 블루프린트의 특징
잘 만든 블루프린트의 특징을 알아보자. '행복한 가정은 모두 비슷하게 닮았지만, 불행한 가정은 저마다의 이유로 불행하다'라는 소설 '안나 카레니나'의 문장이 있다. 블루프린트도 똑같다. "잘 만든 블루프린트는 모두 비슷한 이유로 잘 만들었지만 못 만든 블루프린트는 저마다의 이유로 못 만들었다." 못 만든 예시를 보는 것도 굉장한 공부라고 생각한다. 하지만 그 이전에 뭐가 잘 만든 건지 구분할 수 있어야 한다. 어떤 게 잘 만든 블루프린트인지 이야기해 보겠다.
1. 명확한 구조
잘 만든 블루프린트는 명확한 구조를 가진다. 잘 쓴 책의 목차와도 같다. 잘 쓴 책은 목차만 봐도 무슨 내용인지 대강 파악할 수 있다. 반대로 목차를 봤을 때 무슨 말을 하려는지 잘 모르겠다면 좋은 구조는 아닐 것이다. 우선 명확한 구조를 가진다는 뜻은 작업자 스스로 자신이 달성하고자 하는 목표를 명확히 이해했음을 의미한다. 설명하는 일은 생각보다 어렵다. 해당 주제를 명확하게 이해했을 때 남에게 설명할 수 있고 이를 쉽게 풀이하는 일은 더 깊은 이해를 요구한다.
명확한 구조는 공동 작업을 위함이기도 하다. 설명을 길게 늘어지게 하는 사람이 있다. 내용은 주제에서 겉돌고 핵심은 빠져버린다. 이런 사람의 설명을 듣고 있자면 답답하다. 타인이 내가 만든 블루프린트를 쉽게 이해할 수 있어야 하기 때문에 명확한 구조를 가져야 한다. 아무도 이해할 수 없는 글을 쓰기보다는 모두가 이해할 수 있도록 쉬운 언어로 표현해야 한다. 블루프린트는 일기장이나 메모장이 아니다.
2. 재사용성
두 번째는 재사용성이다. 작업하다보면 여러 개의 블루프린트가 생기고 한 개의 블루프린트 안에서도 여러 개의 함수와 변수가 복잡하게 엮인다. 그러다보면 한 부분을 재사용하는 일이 매우 중요해진다.
요리할 때 간장소스가 계속 쓰인다고 생각해 보자. 간장 소스가 필요할 때마다 매번 소스를 만들면 매번 맛도 다르고 소스를 만드느라 요리 시간도 지연될 것이다. 반면 소스를 미리 만들어 놓으면 일정한 맛을 낼 수 있고 바로 조리에 사용 가능하다. 작업의 효율성과 일관성 측면에서 하나의 간장 소스 레시피를 만들어서 소스를 준비해 놓는 편이 좋다.
레시피를 수정하고 조절하는 유지 보수 측면에서도 소스를 준비해 놓는 편이 좋다. 매번. 소스를 새로 만든다면 매번 계량이 미묘하게 달라지기 때문에 어느 부분에서 변화를 주어야 할지 알기 어렵다. 처음에 만든 소스랑 마지막에 만든 소스는 맛이 다를 수밖에 없다. 하나의 기준이 없기 때문에 설탕을 더 넣어야 할지 소금을 더 넣어야 할지 애매하고 모든 과정에서 반복해야 한다. 반면 미리 만들어 놓은 소스가 존재한다면 레시피를 수정할 때 한 번에 쉽게 변화를 줄 수 있다. 반복되는 코드나 로직을 함수로 분리하거나 이벤트로 만들어 '재사용성'을 높이면 예시와 같이 유지보수가 훨씬 간편해진다. 효율성이 높아지고 다른 요리에도 사용하는 등 확장성도 생긴다.
3. 주석과 설명
세 번째는 주석과 설명이다. 맛있는 간장 소스를 만들어 놓았더라도 시간이 지나면 무슨 소스를 만들어 놓았는지 까먹을 수 있다. 안에 뭐가 들었고 어떻게 만들었는지 바로 기억이 안 날 수 있다. 이때 소스에 관한 설명이 적혀 있다면 도움이 될 것이다. 타인이 봤을 때도 마찬가지다. 올바른 설명은 블루프린트를 이해하는데 많은 도움이 된다.
4. 효율적인 데이터 관리
네번째로 효율적인 데이터 관리다. 변수를 잘 관리해야 한다. 중복을 피하고 필요한 데이터만 저장해야 한다.
변수는 상자 안에 담긴 물건으로 자주 표현된다. 여기서도 동일한 비유를 사용하자면 식료품 창고에 상자 안에 재료들을 넣어 정리하는 중이다. 그런데 동일한 재료가 다른 상자에도 들어 있고 이름이 다르게 붙여져 있고 상자가 다른 곳에 가 있고 하면 관리가 힘들다. 필요한 재료를 찾으려 해도 찾기 힘들고, 못 찾아서 새로 주문했는데 알고 보니 다른 곳에 섞여 있고, 온갖 문제가 발생할 수 있다. 깔끔하게 정리하는 편이 좋다.
5. 최적화
마지막으로 최적화다. 쓸데없는 짓은 굳이 할 필요가 없다. 양파 하나 써는데 칼을 두 번 돌리고 썰 필요는 없다. 목적을 달성하는 최소한의 행위만 사용하면서 목적을 달성해야 한다.
*잘 만든 블루프린트의 특징*
1. 명확한 구조
2. 재사용성
3. 주석과 설명
4. 효율적인 데이터 관리
5. 최적화
- 마무리
지금까지 '잘 만든 블루프린트'의 특징을 살펴보았다. 쓰고 보니 창고정리와 상당히 비슷하다. 블루프린트를 잘 쓰려면 행보관한테 안 혼날 것처럼 하면 된다. 누가 봐도 보기 좋게 정리하고 더러운 게 있으면 바로 닦고 알아서 잘하고 지킬 것만 잘 지키면 된다. 그게 어렵다.
아직은 블루프린트 그래프를 들여다 보아도 뭐가 뭔지 잘 모를 것이다. 잘 만든 게 뭔지는 이제 알겠는데 그 안에 담긴 게 정확히 뭔지 몰라서 그렇다. 이런 글이 잘 쓴 글이라는 건 안 상태인데 내 앞에 놓인 글이 외국어로 적혀 있는 상황이다. 뭐가 뭔지 하나도 모른다. 이제부터 본격적으로 블루 프린트의 '문법'을 살펴보고 블루프린트를 이루는 '단어'를 공부해 볼 시간이다.
2024.08.08 - [분류 전체 보기] - 언리얼 엔진 블루프린트 기초 2장: 블루프린트의 기초
언리얼 엔진 블루프린트 기초 2장: 블루프린트의 기초
2024.08.08 - [개발일지] - 언리얼 엔진 블루프린트 기초 1장: 블루프린트 소개 언리얼 엔진 블루프린트 기초 1장: 블루프린트 소개- 서문 나는 블루프린트를 잘 모른다. 코딩하고 관련 없는 사람이
semidriedotter.tistory.com
'개발일지' 카테고리의 다른 글
개발중간점검_컨셉 디자인과 블루프린트 (1) | 2024.11.12 |
---|---|
개발 중간 점검_ 한 달간 열심히 블루프린트 (6) | 2024.09.27 |
언리얼 엔진 블루프린트 기초 3장: 함수와 변수 (1) | 2024.08.08 |
언리얼 엔진 블루프린트 기초 2장: 블루프린트의 기초 (0) | 2024.08.08 |
언리얼 엔진, 블루프린트 공부_1 (1) | 2024.07.26 |