▶ 블루프린트란?
ㆍ 블루프린트란 '비주얼 스크립팅' 이라고 불리는 노드 기반 스크립팅 시스템을 말한다.
ㆍ 비주얼 스크립팅이란 말 그대로 '비주얼 스크립팅'
- 코드로 하는 작업을 노드라는 작업으로 연결 시켜주는 것을 의미한다.
※ 코드를 작성하는 대신 그래픽 인터페이스를 통해 프로그래밍을 한다.
※ 시각적인 그래프 기반 시스템으로, 게임플레이 메카닉과 인터렉션 로직을 구축할 수 있다
ㆍ 프로그래밍 언어에 익숙하지 않은 사람들도 블루프린트를 통해 게임 플레이 메카닉을 만들고, 인터페이스를 설계하며 상호작용 로직까지도 구현할 수 있다.
ㆍ 설계단계및 모듈화에서도 높은 효율을 자랑한다.
▶ 블루프린트의 종류
1. 레벨 블루프린트
ㆍ 각 레벨에서 특정 이벤트와 상호작용을 처리하기 위해 사용된다.
ㆍ 예시로 특정 조건이 충족되면 다음스테이지로 가는 문이 열림과 같은 로직
2. 클래스 블루프린트
ㆍ 게임오브젝트나 엑터에 대한 동작과 상호작용을 정의
ㆍ 클래스 블루프린트는 캐릭터, 아이템, 환경요소 등 게임에 필요한 거의 모든것에 대한 로직을 구현할 수 있다.
ㆍ 컴포넌트 기반이라고 생각하면 좋으며 다른 타입의 엑터처럼 동작하는 인스턴스 형태로 맵에 배치가 가능하다.
3. 애니메이션 블루프린트
ㆍ 캐릭터나 다른 3D모델들의 애니메이션 상태 전환을 관리한다.
ㆍ예를들어 캐릭터가 걷기상태에서 달리기 상태로 전환되는 로직을 작성
※ 크게 위 3가지를 중점으로 기억하자.
4. 인터페이스 블루프린트
ㆍ 여러 개체 간에 공유될 수 있는 기능 집합을 정의할 수 있다.
5. 데이터 블루프린트
ㆍ 데이터만 포함하는 특별한 종류의 클래스.
ㆍ예를들어 캐릭터의 스탯, 아이템의 정보
6. 매크로 라이브러리
ㆍ 재사용 가능한 코드 조각들 즉 매크로를 저장하는곳
※ 느낀점: "결국 블루프린트도 c++로 구성되어있구나" 를 느꼈습니다.
▶ 컴포넌트 프로그래밍이란?
ㆍ 상속 기반 프로그래밍에서의 단점을 극복하기 위해 나온 방식으로 물체를 1개 이상 정의하고 그 물체의 기능을 확장해 나가는 식으로 코드를 작성하는 개념을 말한다.
ㆍ 즉 재사용 가능한 '컴포넌트' 라는 독립적인 모듈들을 조합하여 소프트웨어를 구축하는 방식
ㆍ 이러한 컴포넌트들은 각각 특정 기능을 수행하며 상호작용을 위해 잘 정의된 인터페이스를 가지고 있다.
ㆍ덕 타이핑 개념으로 이해하자
※ 덕 타이핑?
ㆍ 동적 타이핑의 한 종류
ㆍ 객체의 변수 및 메서드의 집합이 객체의 타입을 결정한다.
※ 유래) 만약 그것이 오리처럼 걷고 오리처럼 꽥꽥거린다면 그것은 오리다.
ㆍ 객체의 타입 또는 클래스보다는 객체가 어떤 메서드나 속성을 지원하는지가 중요하다.
- 장점
ㆍ 컴포넌트 기반이므로 커드의 재사용성과 유지보수성이 향상된다.
ㆍ 시스템의 다른 부분과 독립적으로 개별 컴포넌트를 업데이트 하거나 수정할 수 있다.
※ 유지보수가 좋겠군
ㆍ 설계단계가 비교적 수월하다.
- 단점
ㆍ 여러 컴포넌트를 연결하는 로직이 필요하며 이는 즉 퍼포먼스 저하로 이어질 수 있다.
ㆍ 너무 많은 컴포넌트와 그 사이에 복잡한 상호작용으로 인해 시스템 전체가 복잡해질 여지가 있다.
▶ 언리얼 엔진에서의 컴포넌트 기반 프로그래밍
ㆍ 게임 객체(Actor)
- 언리얼 엔진에선 Actor라는 개념이 게임 세계에 배치될 수 있는 모든 객체를 말한다.
- Actor는 여러 컴포넌트로 구성되며 이들 컴포넌트가 Actor의 동작과 속성을 정의한다.
ㆍ 커스텀 스크립트 컴포넌트
- 개발자들은 자신만의 커스텀 스크립트 컴포넌트를 생성하여 Actor에 추가할 수 있다.
- 이렇게 만든 커스텀 스크립트는 Engine, EngineCore, CoreMinimal 클래스중 하나를 상속받아야 한다.
▶ C++과 블루프린트의 차이점
1. 속도
ㆍ C++는 컴파일된 언어로 코드가 직접 기계코드로 변환되어 실행된다.
ㆍ 블루프린트보다 훨씬 빠르다.
ㆍ 성능에 민감한 작업( 복잡한 계산, 대량 데이터 처리 등) 은 C++에서 처리하는게 좋을 것 같다.
※ 느낀점: 모두 장단점이 있는거같다. 프로토타입 작성은 블루프린트를 활용하고
성능에 민감한부분을 c++로 처리하면 좋을 것 같다.
▶ 일반 C++과 언리얼 엔진 프레임워크 C++의 차이점
1. 간소화된 문법
ㆍ 언리얼 엔진의 C++ 프레인워크는 게임 개발에 특화된 메크로와 함수들을 제공해 복잡한 작업들을 간단하게 만드는데 도움이 된다.
ㆍ하지만 아무리 간소화 되어 있어도 자료구조, 포인터 등 c++의 코어 기능 때문에 다른 스크립트 언어보단 복잡하다.
2. 스마트 포인터
ㆍ 언리얼엔진에서는 원시포인터 사용이 많이 위험하다.
ㆍ 포인터 관리를 돕기 위해 언리얼엔진의 c++프레임워크에서는 스마트 포인터를 권장한다
※ C++에서 언리얼엔진에 맞개 재정의된 언어이다.
▶ 스크립트 언어의 가장 큰 특징?
ㆍ컴파일러 대신 인터프리터를 사용한다.
ㆍ일반적인 응용 소프트웨어에선 컴파일러에 의해 기계어로 번역된 채로 실행된다...
→ 컴파일러는 특성상 오류를 발견해도 끝까지 다 읽어들이는 특징이 있다.
→ 코드 수정이 빈번하게 발생하면 매번 컴파일을 해야해서 개발 기간이 엄청 느리다.
→ 규모가 큰 프로그램이라면 몇시간 단위로 잡아먹고 일일히 컴파일 하는것도 곤욕이겠다.
▶ 인터프리터란?
ㆍ 인터프리터는 코드를 한 줄씩 읽어서 바로 실행하는 방식을 사용한다.
ㆍ 이 방식은 스크립트 언어에서 주로 사용되며, 소스 코드의 수정이 빈번하게 발생하는 개발 환경에서 유용하다.
ㆍ 오류를 발견하면 실행을 바로 멈추기 때문에 디버깅에서도 유리하다.
★ 언리얼 엔진에서는 핫리로드와 라이브코딩 기능을 제공한다.
ㆍ 핫 리로드 : 언리얼 엔진의 핫 리로드 기능은 특정 클래스나 모듈에 대한 변경사항만을 다시 컴파일하고, 그 결과를 이미 실행중인 게임에 즉시 반영할 수 있게 해준다.
※예를들어 플레이어를 작업중이면 플레이어에 관련된 기능만 읽어들인다.
ㆍ라이브 코딩
- 라이브 코딩은 프로그램이 실행 중일 때도 코드를 수정하고 그 결과를 바로 확인할 수 있는 기능이다.
※ 단, 반복을 돌리는 복잡한 변경사항이나 메모리 구조를 변경하는 등의 작업은 프로그램을 재시작 해야 반영됨.
▶ C++ 과 스크립트 언어의 차이점
ㆍc++은 컴파일러 기반의 언어로 전체 소스코드가 기계어로 번역된 후 실행되는 반면
스크립트 언어는 인터프리터 방식을 사용하여 소스코드를 한 줄씩 읽고 바로 실행한다.
'언리얼엔진 > 블루프린트' 카테고리의 다른 글
엑터의 라이프 사이클, 소멸과 가비지컬렉션 (1) | 2023.10.08 |
---|---|
블루프린트의 사용자 정의 자료형 만들기 (1) | 2023.10.08 |
머터리얼(Material)과 머터리얼 인스턴스(Material Instance) (0) | 2023.10.08 |
제어문과 조건문, 연산, 반복문 (0) | 2023.10.08 |
블루프린트의 기본 노드들과 자료형 (0) | 2023.10.07 |