블루프린트 시스템 (Blueprint System)
블루프린트로 구현한 floating 시스템
블루프린트(Blueprint)는 언리얼 엔진에서 제공하는 비쥬얼 스크립팅(Visual Scripting) 시스템으로, 노드 기반 인터페이스를 이용하여 함수, 이벤트, 변수 또난 기타 게임 관련 요소를 나타내는 노드를 와이어로 연결하여 관계와 데이터 흐름 및 제어를 정의합니다.
※ 노드 기반 인터페이스 : 사용자가 "노드"와 해당 연결의 시각적 표현을 통해 복잡한 시스템을 생성하고 관리할 수 있는 사용자 인터페이스.
흐름과 노드 제어를 자유롭게 변경할 수 있다.
블루프린트 특징
장점
1) 시각적 표현
- 블루프린트는 드래그 앤 드롭 방식으로 동작을 표현합니다. **이벤트 그래프(Event Graph)**에서 노드와 **핀(Pin)**의 연결을 통해 명시적으로 표현하기 때문에, 복잡한 게임 로직을 비교적 쉽게 구현할 수 있습니다.
2) 코드 완전 호환
- 블루프린트는 C++과 완전 호환이 가능하기 때문에 C++에서 작성한 필드, 메소드, 생성자 초기화 등을 블루프린트에 반영되어 개발 효율을 높일 수 있습니다.
3) 개발 속도의 향상
- 블루프린트와 C++ 코드를 함께 사용함으로써 빠른 프로토타이핑과 개발속도를 높일 수 있습니다.
4) 접근성
- 일반적인 프로그래밍 언어보다 이해하기 쉽기 때문에 게임 개발자와 디자이너가 프로그래밍 지식이 없더라도 개임 개발을 할 수 있습니다.
5) 디버깅 용이성
- 블루프린트는 시각적인 방식으로 동작을 표현합니다. 이벤트 흐름을 쉽게 확인할 수 있기 때문에 C++만으로 구현한 코드에 비해 로직 이해가 빠르고 디버깅에 용이합니다.
단점
1) C++에 비해 느린 속도
- 블루프린트 함수는 C++과 달리 객체로 유지됩니다. 어떤 C++ 함수를 호출할 지에 대한 정보를 가지고 있어야 하기 때문에 코드를 수행하는 데 더 많은 명령을 거치기 ****때문에 C++에 비해 더 많은 리소스를 사용합니다. 때문에 코드의 성능을 보장하기 위해서는 블루프린트에서 많은 호출 및 성능을 사용하는 부분을 C++에서 구현하고, 블루프린트에서는 C++에서 작성한 함수를 호출하는 방식을 수행하는 게 좋습니다.
2) 떨어지는 가독성
- 간단한 로직의 경우 흐름 파악에 원활하지만, 복잡한 로직의 경우 수많은 노드와 핀, 흐름 제어로 인해 블루프린트가 너무 복잡해질 수 있습니다.
3) 제약 발생
- 엔진의 버전이 변경되거나 업데이트될 경우 C++에 비해 오류가 발생할 가능성이 더 높고, 일부 기능은 블루프린트로 구현하기 어렵거나 불가능할 수 있습니다.
협업에서의 블루프린트
협업에서는 전문으로 코드를 구현하는 프로그래머뿐 아니라 게임 디자이너, 혹은 아티스트 같은 비전문가들이 개발 프로세스에 참여할 수 있습니다. 블루프린트는 비전문가도 쉽게 사용할 수 있고 제어 흐름을 읽기 쉽기 때문에 코드에 대해 팀 구성원들간의 의사소통의 원활해질 수 있습니다. 이는 협업 시 프로젝트 개발 속도를 향상시킬 수 있습니다. 프로그래머가 코드를 최적화하는 동안 디자이너는 블루프린트를 사용하여 게임 매커니즘을 조정하듯 다양한 팀 구성원이 프로젝트의 다양한 측면을 동시에 작업할 수 있습니다. 또한 아트팀과 디자이너팀이 개념을 구현하기 위해 항상 프로그래머에게 의존할 필요 없이 블루프린트로 작성하여 각자의 아이디어를 직접 통합하고 테스트할 수 있습니다. 이렇게 확인한 아이디어는 프로그래머에게 제시하여 최적화 및 안정화가 가능하기 때문에 프로젝트 진행 속도가 향상될 수 있습니다.
'언리얼' 카테고리의 다른 글
[Unreal Engine] 루트 모션(Root Motion) (0) | 2024.04.03 |
---|---|
[Unreal Engine] IK 리타겟팅(IK Retargeting) (0) | 2024.04.03 |
[Unreal Engine] 애니메이션(Animation) (0) | 2024.04.03 |
[Unreal] 언리얼 오브젝트(UObject) (0) | 2024.04.02 |
[Unreal Engine] 블루프린트 (Blueprint) (0) | 2024.03.28 |