UE5 C++ | Warehouse Wreckage, 프로젝트 세팅과 블루프린트 구조 이해 (유데미)
언리얼 강의 중 Section 2를 정리한 첫번째 글입니다.
강의 정보 🎓
- 강의명: Unreal Engine 5 C++ Developer: Learn C++ & Make Video Games
- 플랫폼: 유데미
- 현재 섹션: Section 2 - Warehouse Wreckage
- 주요 내용: 프로젝트 세팅, 가장 기초적인 블루프린트 개념들을 다루었다.
프로젝트 세팅 🔧
- 기본(빈 프로젝트) → 블루프린트 → Desktop, Maximum, 시작용 콘텐츠
- 좌측 하단에 콘텐츠 드로어(Ctrl + Space)를 통해 기본 콘텐츠를 확인할 수 있고 Maps을 보면 3개의 기본 맵이 존재하는 것을 확인할 수 있다.
- 상단 바에서는 레벨 블루프린트를 열 수 있다.
드래그&드랍(콘텐츠 드로어)
옵션 이름 | 의미 |
---|---|
이동(Move Here) | 원본 파일을 새 위치로 ‘옮기는 것’ (원래 위치에서는 삭제됨) |
복사(Copy Here) | 원본 파일은 그대로 두고, 새 위치에 복사본을 만든다 |
고급 복사(Advanced Copy Here) | 복사하면서 경로까지 업데이트할 수 있도록 추가 설정하는 옵션 |
블루프린트 기본 개념 🧩
이벤트 그래프란?
블루프린트 안에서 게임 로직을 구성하는 캔버스다.
함수처럼 특정 조건이 발생했을 때 어떤 동작을 수행할지 시각적으로 연결해 구성한다.
마우스 우클릭을 통해 다양한 노드를 추가할 수 있으며, 실행 흐름을 선으로 이어서 표현한다.
예: “BeginPlay” 이벤트에서 문을 자동으로 열거나, “OnOverlap” 이벤트에서 사운드를 재생하도록 설정할 수 있다.
노드 (Node)
블루프린트에서 기능을 수행하는 최소 단위다.
함수 호출, 변수 처리, 조건 분기 등 C++ 코드의 한 줄 한 줄을 시각화한 블럭이라고 볼 수 있다.
대표적인 예로 Print String
노드는 문자열을 화면에 출력하는 로그 기능을 제공한다.
팁: 다양한 노드는 우클릭 후 검색하거나, 블루프린트의 컨텍스트에 따라 자동으로 제안된다.
이벤트 (Event)
특정 조건이나 시점에서 자동으로 호출되는 노드다.
대표적으로 BeginPlay
, Tick
, OnActorBeginOverlap
등이 있으며, 게임 내에서 “언제” 어떤 동작을 실행할지 정의할 수 있다.
예: BeginPlay는 게임이 시작되자마자 실행되고, Tick은 매 프레임마다 호출된다.
핀 (Pin)
노드와 노드를 연결하는 접점이다.
실행 핀(흰색)은 흐름을, 데이터 핀(컬러별)은 값을 전달한다.
핀끼리 드래그해 연결하며, 데이터 타입이 일치해야 연결이 가능하다.
예: Set Visibility 노드는 실행 핀과 Boolean 타입의 데이터 핀을 가진다.
피직스 프로퍼티 (Physics Property)
액터에 물리 효과를 적용할 수 있는 속성이다.
Simulate Physics
옵션을 활성화하면 중력, 질량, 충돌 반응 등이 적용된다.
물리 기반 상호작용이 필요한 경우 반드시 활성화해야 한다.
예: 박스를 떨어뜨리거나, 플레이어가 밀 수 있는 오브젝트를 구성할 때 사용 할 수 있다.
오브젝트 구조: 액터 & 컴포넌트
언리얼에서의 오브젝트는 데이터와 기능의 집합이다.
- 액터(Actor): 게임 월드에 배치할 수 있는 단위 (예: 캐릭터, 상자, 조명 등)
- 컴포넌트(Component): 액터를 구성하는 요소로, 메시, 콜라이더, 스크립트 등이 포함된다.
구조적으로는 액터가 루트가 되고, 컴포넌트는 그 하위에 연결된다.
레퍼런스 (Reference)
다른 오브젝트를 가리키는 포인터 또는 주소값 개념이다.
에셋이나 액터를 복제하지 않고 위치만 참조해 효율적으로 다룰 수 있다.
이 방식은 성능과 메모리 사용 측면에서 유리하다.
예: Get Player Character 노드는 현재 플레이어 캐릭터의 레퍼런스를 반환한다.
UE 5.1 주의 사항: StartContent 폴더 ⚠️
프로젝트를 열었을 때 디폴트 맵의 변경사항이 전부 덮어씌워지므로, 디폴트 맵을 수정하려면 먼저 맵을 복제하고 StarterContent 폴더 외부에 저장해야 한다.
콘텐츠 브라우저에서 에셋을 우클릭하고 ‘복제’를 선택해 기존의 맵을 복제할 수 있고 그런 다음 Content 폴더에서 우클릭하고 ‘새 폴더’를 선택해 프로젝트 안에 새 폴더를 생성할 수 있다.
새 폴더의 이름을 ‘Maps’ 등으로 변경한 후, 복제된 맵을 드래그하면 다음에 UE 5.1 프로젝트를 열었을 때 덮어씌워지는 것을 방지할 수 있다.
해결법
- 파일 선택 → 2. 우클릭 → 3. Duplicate → 4. 복제본 생성 → 5. 새 폴더로 이동
- 복제는 Ctrl + W 단축키로도 할 수 있다 (파일 선택 후 누르면 바로 복제).
- StarterContent 안의 에셋은 절대 직접 수정하지 말고, 항상 복제본을 수정하여 사용해야 한다.
요약 및 느낀점 📝
- 프로젝트 셋업에서는 콘텐츠 드로어(Ctrl + Space)를 활용하여 기본 맵과 블루프린트를 효과적으로 탐색하고 설정했다.
- 중요한 점은 StarterContent의 안전한 관리로, 모든 수정작업은 반드시 복제본에서 진행해야 한다.
- 블루프린트의 핵심 구성 요소들(이벤트 그래프, 노드, 핀, 오브젝트 구조)을 파악했으며, 앞으로 새로운 요소들도 체계적으로 정리할 계획이다.
느낀점 💡 블루프린트의 기본 개념들을 하나씩 익히면서 언리얼 엔진의 광활한 세계에 첫 발을 내딛은 것 같다. 시각적 프로그래밍의 매력을 느끼게 되었고, 앞으로 남은 강의들을 통해 이 개념들을 완벽하게 숙달하고 싶다. 특히 C++를 활용해서 더 복잡하고 효율적인 게임 시스템을 구현하는 것이 기대된다. 이런 기초 지식을 바탕으로 나만의 독창적인 게임 프로젝트를 만들어내고 싶은 열정이 생긴다.
다음 포스트 🧭
- 다음 포스트에서는 발사체를 발사하기 위한 임펄스, 스폰 등을 다룰 예정