본문 바로가기

UnrealEngine

[UE] 프로젝트 폴더, 언리얼 엔진 에디터, 브루프린트 개요

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/Blueprints/UserGuide/Variables/

프로젝트에서 가장 중요한 파일 및 폴더(지우면 안 됨!)

 

. uproject 파일

⇒ 언리얼 에디터 구동 시 해당 프로젝트에 대한 정보를 포함하고 있는 JSON 파일. 언리얼 에디터를 구동시키는 연결 파일.

Config 폴더

⇒ 프로젝트의 언리얼 환경설정 파일을 담고 있는 폴더

  • 렌더링 옵션 설정, 에디터 설정. 에디터에서 변경된 옵션사항이 반영되어 저장됨.
  • 지워도 에디터 실행에는 문제가 되지 않지만 만약 프로젝트를 작업한 상태에서 지웠다면 설정해 놓은 설정값들은 없어지고 언리얼 엔진에서 제공하는 기본 세팅으로 적용
  • 지우고 나서 프로젝트 실행해도 Config 폴더가 생기지는 않음. Default 설정 파일들은 언리얼 엔진 폴더에 있기 때문.

Content 폴더

⇒ 언리얼 에디터에서 사용하는 uasset들이 들어있는 폴더.

  • 에셋이 저장됨.
  • UASSET: 언리얼엔진에서 사용되는 확장자명. 엔진 내부로 들어오면 다양한 확장자명으로 변경된다.

Plugins 폴더

⇒ 해당 프로젝트에서 외부 플러그인 혹은 자체 제작 플러그인을 사용하는 경우 존재.

  • 엔진에서 제공해 주는 플러그인은 해당 프로젝트 폴더에 생성되지 않음.

Source 폴더

⇒ C++ 프로젝트 전용.

  • 프로젝트의 모듈 소스와 빌드 파이프라인 C# 소스파일 등이 들어있는 폴더.

프로젝트 공유시 Config, Content,. uproject 파일만 공유하면 된다.

 

언리얼 엔진 에디터

⇒ 레벨(Level) 은 게임 '월드(가상공간 전체)'의 모든 것 또는 일부이다. 환경, 사용 가능한 오브젝트, 다른 캐릭터 등 플레이어가 보고 상호작용할 수 있는 모든 것이 레벨에 포함된다. 일반적으로 비디오 게임에서는 여러 레벨이 있으며 레벨 간 전환이 명확히 구분되어 있다. 예를 들어 한 레벨의 최종 보스를 물리치면 다음 레벨로 이동하게 된다. 언리얼 엔진으로 제작하는 다른 유형의 인터랙티브 경험에서는 여러 가지 상황이나 환경 간의 전환을 위해 다양한 레벨을 사용할 수도 있다. 언리얼 엔진은 각 레벨을 별도의. umap 파일로 저장한다. 그래서 때로는 레벨이 맵(Maps)이라고 불리기도 한다.

 

⇒ 액터(Actor)란 레벨에 배치할 수 있는 오브젝트를 말한다. 액터는 이동, 회전, 스케일과 같은 3D 트랜스폼을 지원하는 범용 클래스다. 액터는 에디터에서 직접 레벨에 배치 혹은 게임플레이 코드(C++ 또는 블루프린트)를 통해 생성(스폰) 및 소멸 가능하다.

  • 액터의 위치값은 레벨의 위치값. 액터는 레벨 위에 배치되므로 레벨을 절대좌표라 한다.

⇒ 컴포넌트(Component)는 액터에 추가할 수 있는 하나의 함수 기능이다. 액터에 컴포넌트를 추가하면 액터는 해당 컴포넌트가 제공하는 기능을 사용할 수 있다. 예시:

  • 스포트 라이트 컴포넌트는 액터가 라이트를 스포트 라이트처럼 발산하게 만든다.
  • 회전 이동 컴포넌트는 액터가 회전하게 만든다.
  • 오디오 컴포넌트는 액터가 소리를 재생하게 만든다.

루트 컴포넌트: 해당 액터를 차지하고 있는 컴포넌트. 해당 액터와 위치정보를 공유한다.

위치 설정이 상대 기준이라면 붙어있는 액터나 컴포넌트를 기준으로 위치정보가 설정되고, 월드 기준이라면 레벨을 기준으로 위치정보가 설정된다. 

 

액터와는 달리 컴포넌트는 자립하여 존재할 수 없습니다. 반드시 액터에 어태치 되어야 한다. 액터에 컴포넌트를 추가하는 것은 그 액터 전체를 이루는 조각들을 결합하는 것과 같다. 예를 들어 자동차(액터)는 바퀴, 핸들, 차체, 라이트 등(컴포넌트)으로 구성된다. 이와 비슷하게, 플레이어 캐릭터를 나타내는 액터에게는 스켈레탈 메시(캐릭터의 시각적 표현), 캐릭터를 따라다니는 카메라, 플레이어의 입력을 받는 컨트롤러 등 갖가지 개별적인 컴포넌트가 있을 수 있다.

 

블루프린트 개요

언리얼 엔진의 비주얼 스크립팅 시스템인 Blueprint (블루프린트)는 언리얼 에디터 안에서 노드 기반 인터페이스를 사용하여 게임플레이 요소를 만드는 개념을 토대로 한 비주얼 스크립팅 시스템이다. 일반적인 스크립팅 언어와 마찬가지로, 엔진 내 객체 지향형(OO) 클래스 또는 오브젝트를 정의하는 데 사용된다. UE4를 사용하다 보면, 블루프린트를 사용하여 정의된 오브젝트를 그냥 일상적으로 "블루프린트"라 하는 경우가 많다.

이 시스템은 매우 유연하고 강력해서, 보통은 프로그래머가 없으면 힘들었던 개념 구현이나 툴 작업 거의 전부를 디자이너 스스로 해낼 수 있게 되었다. 게다가, 언리얼 엔진의 C++ 구현에서 가능한 블루프린트 전용 마크업을 통해 프로그래머가 어떤 기반 시스템을 제작하면, 디자이너가 그것을 확장하는 것도 가능하다.

게임플레이 프로그래밍과 이전에 언리얼스크립트를 사용했던 모든 것은 여전히 C++를 사용해서 코드로 처리할 수 있다. 동시에 블루프린트가 언리얼스크립트를 대체하고자 한 것은 아니지만, 언리얼스크립트가 처리했던 많은 부분을 대신해 주고 있기는 하다. 이를테면:

  • 클래스 확장
  • 디폴트 프로퍼티 저장 및 변경
  • 클래스에 대한 (컴포넌트 등의) 서브오브젝트 인스턴싱 관리

블루프린트로 기대하는 바는, 게임플레이 프로그래머가 유용한 함수와 프로퍼티 세트를 노출시킨 베이스 클래스를 구성해 두면, 그 베이스 클래스로 만든 블루프린트 가 그 함수와 프로퍼티를 활용하고 확장해 쓰는 것이다.

 

레벨 블루프린트

  • 빨간색 - 이벤트. 틱 이벤트: 매 프레임마다 호출되는 이벤트
  • Delta Second = 틱과 틱 사이의 거리
  • 하늘색 - 함수. 특정한 기능적 역할 수행. 입력 실행핀, 출력 실행핀 하나

다른 색깔의 노드들끼리 연결하면 언리언엔진에서 자동으로 컨버팅되도록 만들어준다.

 

입력 이벤트

  • Pressed와 Released.
  • 원하는 키 + input으로 생성. 아래의 예시는 1 input으로 생성.
  • 입력을 하기 위해선 게임에 포커싱이 이동해야 한다.

 

Variable (변수)는 월드에 있는 Object 나 Actor에 대한 값이나 주소(reference)를 담는 프로퍼티이다. 이 프로퍼티는 내부적으로는 그를 담고 있는 Blueprint에서 접근 가능하며, 외부적으로 접근 가능하게 하여 레벨에 놓은 Blueprint 인스턴스 작업을 하는 디자이너가 그 값을 변경하도록 할 수도 있다. Variable (변수)는 변수 이름이 들어간 둥근 박스로 표시된다.

 

변수 유형

  • 빨강: 부울(참, 거짓) 데이터를 나타냄.
  • 청록: 정수 데이터, 또는 소수점이 없는 숫자를 나타냄.
  • 초록: 실수 데이터, 또는 소수점이 있는 숫자를 나타냄.
  • 자홍: 문자열 데이터, 또는 알파벳과 숫자로 된 글자 그룹을 나타냄.
  • 분홍: 표시되는 텍스트, 특히나 현지화가 가능한 텍스트를 나타냄.
  • 금색: 벡터 데이터, 또는 XYZ나 RGB처럼 세 개의 실수로 구성되는 요소나 축 정보를 나타냄.
  • 보라: 3D 공간에서의 회전을 수치로 정의하는 그룹인 로테이터 데이터를 나타냄.
  • 주황: 트랜슬레이션(3D 위치). 로테이션, 스케일로 구성되는 트랜스폼 데이터를 나타냄.
  • 파랑: 오브젝트, 즉 라이트, 액터, 스태틱 메시, 카메라, 사운드 큐 등을 나타냄. 이 오브젝트가 메모리상에 살아있는지를 주의하며 사용.
  • 진한파랑: 구조체. 다양한 유형들의 집합체.

⇒ 구조체들은 쪼갤 수 있다.(Vector, Rotator, Transform)

 

Key = Name 문자열 유형. 값이 싸서 검색에 용이하다.

 

실습.  1. 1번키가 입력받으면 검정색 Hello World 문구가 나오도록 하시오. 2. 매 프레임 마다 노란색 Hello World 한줄만 나오도록 하시오.

⇒ 해당 핀을 드래그 앤 드롭하여 검색하면 해당 핀과 연관된 기능들을 검색할 수 있다.

⇒ SET함수로 값을 설정해 주었지만, 실행핀에 아무런 연결이 되어있지 않으면 실행이 되지 않기 때문에 9가 출력되는 것이 아니라 초기값 0이 출력된다.

1번 입력 이벤트를 누르면 3.0에서 9.0이 출력된다.

기본값 0.0에서 Delta Seconds 값을 계속 더하여 시간을 출력.

프레임마다 매 초를 출력하는데, 3초가 지나면 “3초가 지났습니다.” 메시지를 출력한다. 비교연산자의 Condition값에 아무런 연결이 되어있지 않을 경우, 기본값이 true로 체크되어 있으므로 true값을 출력한다.

 

비교연산자(매크로): 흐름을 컨트롤할 수 있다. 실행핀을 여러 개 둘 수 있다.

1번을 누르면 Count라는 변수를 1 증가시킨다.

3초가 지날 때마다 Count값을 증가시켜 3초가 몇 번 지나갔는지 출력한다. 이때, 3초가 지난 뒤 time을 0으로 초기화하여 계속 반복할 수 있도록 한다.

 

변수의 디테일 창

  • 변수 이름 : 변수의 이름이 표시되어 있고 변경할 수 있다.
  • 변수 유형 : 드롭다운 메뉴를 통해 변수 유형을 설정하고, 변수가 배열 인지를 결정한다.
  • 편집가능: 블루프린트 인스턴스에서 변수를 공개적으로 편집할 수 있는지 결정한다.
  • 툴팁 : 이 변수에 대한 추가 정보로, 변수 위에 커서가 있을 때 표시된다.
  • 스폰 시 노출: 블루프린트 스폰 시 변수를 핀으로 노출시킬지 결정한다.
  • 프라이빗 : 변수를 프라이빗 (파생 변수에서 변경할 수 없도록) 설정할지 결정한다.
  • 마티네에 노출 : 변수를 마티네 에 노출시켜 변경하도록 할지 결정한다.
  • 환경설정 변수 : 컨픽 파일에서 변수 설정을 가능하도록 한다.
  • 카테고리 : 변수를 주어진 라벨별로 카테고리를 분류시킬 수 있다. 변수는 라벨별로 정렬된다.
  • 리플리케이션 : 이 변수의 네트워크를 통한 리플리케이트 여부를 결정한다.

https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/Blueprints/Overview/

 

블루프린트 개요

Blueprint, 블루프린트란 무엇인가, 그리고 다양한 블루프린트 유형에 대한 분석입니다.

docs.unrealengine.com

 

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/Blueprints/UserGuide/Variables/

 

블루프린트 변수

월드의 오브젝트나 액터에 대한 값 또는 레퍼런스를 담는 프로퍼티입니다.

docs.unrealengine.com

 

함수

Function (함수)는 Blueprint 내 다른 그래프에서 실행 또는 호출 가능한 특정 Blueprint에 속하는 노드 그래프다. 함수에는 하나의 입력부가 있는데, 실행 출력 핀이 하나 있는 함수 이름으로 된 노드로 표시된다. 이 함수가 다른 그래프에서 호출되면, 그 출력 실행 핀을 활성화시켜 연결된 네트워크가 실행되도록 한다.

순수함수: 실행핀 없이 그저 값을 읽어 들일 때 사용.

 

좌: 우클릭 후 설정 검색 / 우: 참조 전달(마름모꼴)

 

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/Blueprints/UserGuide/Functions/

 

함수

다른 그래프에서 실행, 호출할 수 있는 노드 그래프입니다.

docs.unrealengine.com