블루프린트 비주얼 스크립팅 시스템은 UE4 가 아티스트와 레벨 디자이너에게 선사하는 가장 흥미로운 기능 중 하나로, 예전에는 코드 작성 지식 없이 도달할 수 없었던 수준의 제어가 가능합니다. 블루프린트 스크립트로 접근할 수 있는 시스템과 기능의 범위는 아주 넓어서, 창의적인 가능성이 무궁무진하다는 뜻이기도 하지만 그 모든 것이 어떻게 작동하는지를 파악하는 것이 처음에는 쉽지 않아 보일 수가 있습니다.
그러면 실제 블루프린트를 가지고 어떤 것들을 만들 수 있을까요? 아래 목록은 약간의 일반적인 예제로, 이 시스템을 최대한 활용할 수 있는 방법을 배우기 위해 천천히 씹고 뜯고 맛보고 즐길 만한 가치가 있는지 보여줄 수 있었으면 합니다.
레벨 스크립트 생성
레벨 블루프린트는 언리얼 엔진 3 에서 키즈멧이 했던 그 역할 그대로를 채워주고 있습니다. 각 레벨에는 저마다의 레벨 블루프린트가 있으며, 여기서 레벨에 있는 액터에 대한 레퍼런싱 및 조작, 마티네 액터를 사용한 시네마틱 제어, 레벨 스트리밍, 체크포인트, 기타 레벨 관련 시스템 등의 관리가 가능합니다. 레벨 블루프린트는 레벨에 배치된 클래스 블루프린트(다음 절의 예제 참고)와도, 그 안에 들어있는 변수 읽기/설정이나 커스텀 이벤트 발동 등의 상호작용이 가능합니다.
상호작용형 오브젝트 생성
클래스 블루프린트는 문, 스위치, 수집가능 아이템, 파괴가능 배경 등 상호작용형 애셋 제작에 이상적입니다. 위 그림에서 버튼과 문짝 세트는 각각 별개의 블루프린트로, 그 안에는 플레이어 오버랩 이벤트에 대한 반응, 애니메이션 적용, 사운드 이펙트 재생, (버튼이 눌렸을 때 불이 들어오게 만드는 등의) 머티리얼 변경과 같은 작업을 하는 데 필요한 스크립트가 들어있습니다.
이 경우, 버튼을 누르면 문 블루프린트 안의 이벤트가 활성화되어 열리도록 합니다. 하지만 문은 다른 블루프린트 유형이나 레벨 스크립트 시퀸스로도 쉽게 활성화시킬 수 있습니다. 블루프린트의 자립적인 속성때문에, 레벨에 드롭하는 식으로 구성해 주기만 하면 최소한의 셋업으로도 그냥 작동할 것입니다. 프로젝트 전반에 걸쳐 사용중인 블루프린트를 편집하면 그 모든 인스턴스가 업데이트된다는 뜻이기도 합니다.
컨스트럭션 스크립트로 커스터마이징 가능한 프리팹 생성
컨스트럭션 스크립트는 클래스 블루프린트 내 하나의 그래프 유형으로, 게임플레이 도중이 아니라 에디터 내에서 해당 액터가 배치 또는 업데이트될 때 실행되는 것입니다. 포인트 라이트 컴포넌트의 색과 밝기에 맞도록 머티리얼을 자동 업데이트하는 조명 기구라든가, 일정 영역에 폴리지 메시를 임의로 흩뿌리는 블루프린트 등, 쉽게 커스터마이징 가능한 소품 제작에 유용하여 배경 아티스트의 작업 속도를 향상시킬 수 있습니다.
콘텐츠 예제 맵에서, (위 그림의) 각 예제가 들어있는 긴 방은 사실 다수의 컴포넌트로 구성된 블루프린트 하나입니다. 블루프린트의 컨스트럭션 스크립트는 블루프린트의 디테일 패널에 노출된 파라미터에 맞춰 다양한 스태틱 메시와 라이트를 생성 및 배열합니다. 콘텐츠 예제 맵을 하나 하나 만들 때마다, 데모 룸 블루프린트를 끌어 놓은 다음, 생성하려는 방의 갯수, 길이, 높이(와 기타 옵션)에 대한 값을 설정하는 것으로, 완벽한 방 세트를 순식간에 만들 수 있었습니다.
이런 블루프린트를 만들려면 초기 시간 투자가 조금 필요할 수 있지만, 자주 사용할 것이 확실하다면 레벨 제작시의 시간 절약이나 수정의 편의성을 생각해 볼 때 그럴만한 가치가 있습니다.
플레이가능 게임 캐릭터 생성
Pawn 은 클래스 블루프린트의 한 유형이기도 하며, 블루프린트 그래프 안에 플레이가능 캐릭터에 필요한 모든 요소를 몰아넣는 것이 가능합니다. 카메라 행위 조작, 마우스 입력 이벤트 셋업, 콘트롤러와 터치 스크린, 스켈레탈 메시 애니메이션 처리용 애니메이션 블루프린트 애셋 생성 등이 가능합니다.
캐릭터 블루프린트를 새로 만들면 이동, 점프, 수영, 낙하에 필요한 여러가지 행위가 내장되어 있는 캐릭터 컴포넌트가 딸려오기에, 캐릭터를 조종하고자 하는 방식에 맞춰 약간의 입력 이벤트를 추가해 주기만 하면 됩니다.
HUD 생성
블루프린트 스크립트는 게임의 HUD 를 만드는 데도 사용 가능하며, 이벤트 시퀸스와 변수를 포함 가능하다는 점에서는 클래스 블루프린트와 유사하지만, 레벨에 직접 추가되는 것이 아니라 프로젝트의 GameMode 애셋에 할당됩니다.
HUD 를 셋업하여 다른 블루프린트의 변수를 읽어온 다음 사용하여 생명력 막대 표시, 점수 값 업데이트, 목표 마커 표시 등의 작업이 가능합니다. 클릭 또는 모바일의 터치 입력에 반응하는 버튼과 같은 요소에 대해 HUD 를 사용하여 히트 박스를 추가하는 것도 가능합니다.
위 그림의 모든 예제는 UE4 에 공개된 샘플 콘텐츠에 포함되어 있으니, 자세히 살펴보고자 하는 분들은 Content Examples, Shooter Game, Swing Ninja 프로젝트를 살펴보시기 바랍니다.
여러분은 어떻게 생각하시나요? 블루프린트로 할 수 있는 일들이 마음에 드시나요? 저희 포럼 에 들러 피드백 꼭 부탁드립니다! 한국 사용자분들을 위해 네이버 카페도 준비되어 있습니다.