Unreal 개발 사전캠프 5일차

HappyCircle·2025년 11월 7일

Unreal 개발

목록 보기
5/163

언리얼 사전캠프 4일차

오늘 학습 진행 내용
언리얼 강의
1-10.블루 프린트 연산 (1)
블루프린트 시작하기
Hello World 출력
1. 빈 레벨 블루프린트 창에서 Print Text 노드(Text는 Hello World) 생성
2. Event BeginPlay 노드 출력 Print Text와 연결
3. 컴파일 후 저장하고 게임 플레이 버튼 클리하면 화면 우측 상단에 Hello World 텍스트 출력
Event란?
BeginPlay는 게임 시작될 때 단 한 번만 실행
Tick은 매 프레임 마다 실행

블루프린트 변수

언리얼 변수 타입 별 정리 언리얼 변수 타입 별 정리

Get/Set 노드
Get 노드로 변수를 불러올 수 있고
Set 노드로 변수값 설정 혹은 변경 가능

HP,MaxHP 변수 설정해서 현재 체력값=최대 체력값 동기화 후 현재 채력 화면에 출력 구성 HP,MaxHP 변수 설정해서 현재 체력값=최대 체력값 동기화 후 현재 채력 화면에 출력 구성

블루프린트 사칙연산
연산 노드 생성(+,-,X,%)

사칙연산 노드 생성으로 변수 값들 조정 및 수정값 반영 가능

블루프린트 비교 연산 & 논리 연산
비교연산

비교 연산 노드 비교 연산 노드

두값을 비교해 Boolean(True/False) 결과를 반환

논리 연산
논리 연산은 여러 조건을 조합 반전하여 복잡한 논리 흐름 처리 시 사용
AND : 양쪽 모두 참일 때만 True
OR : 둘 중 하나라도 참이면 True
Not : 결과를 반전
Xor : 두 조건 중 하나만 참일 때 True
해당 연산들은 If문, Branch 등에 연결하여 조건 분기를 제어


1-11.블루 프린트 연산 (2)
블루프린트 흐름제어
Branch(if-else)
Branch 노드는 조건에 따라 실행 흐름을 True 핀, False 핀으로 나누는 역할

Sequence
노드 양이 방대해져서 그 연결 복잡해지는 경우 해결 위해서
순차적으로 실행 순서 정리 필요할 때 사용(Pin 추가로 Then 개수 늘려서 순서에 맞춰서 노드 배열 가능)
Flip Flop
실행 흐름을 번갈아 가며 두 개의 출력핀 구분 실행(해당 핀들은 번갈아가면서 실행)
텍스트 슈팅게임
Bullet 발사 로직
마우스 좌클릭으로 총알 발사 로직 기능 구현

마우스 좌클릭 총알 발사 로직 기능 블루프린트 마우스 좌클릭 총알 발사 로직 기능 블루프린트

Reload 로직
R키를 눌러 총알을 재장전하는 기능 구현

R키를 눌러 총알을 재정전하는 기능 블루프린트 R키를 눌러 총알을 재정전하는 기능 블루프린트

블루프린트흐름 제어(반복문) While Loop While Loop는 특정 조건을 만족하면 계속 반복하는 노드 For Loop For Loop는 특정 인덱스 범위 내에서 계속 반복하는 노드

While, For Loop 사용 노드 구성 예시 While, For Loop 사용 노드 구성 예시

구구단 구현

구구단 구현 블루프린트 구성(2단~9단) 구구단 구현 블루프린트 구성(2단~9단)

블루프린트 열거형
열거혐(Enum)은 관련 있는 상수들을 한데 묶어 놓는 방법
0번 슬롯 헬멧,1번 슬롯 아머, 2번 슬롯 웨폰 이렇게 슬롯을 숫자로 표현

열거형 파일 생성
BluePrints->Enumeration(열거형) 생성
해당 파일에 이너머레이터 추가로(상수값 추가)
Enum 불러올 때는 변수항목에서 타입(Enum)

Enum 사용 예시 Enum 사용 예시

실습
발사&재장전 버그 수정
2가지 버그 존재
1. 총알 발사 제한:Bullet이 0 이하일 때 발사 불가
2. 불필요한 재장전 방지 : 이미 Bullet이 30발이면 재장전 안 되도록 수정

각각 Branch로 조건 처리해서 버그 해결 각각 Branch로 조건 처리해서 버그 해결

While Loop로 구구단 구현
구구단을 While Loop로 구현(Index가 아닌 Condition 이용)

A,B 변수로 단수는 10 미만까지 반복 곱하는 수는 증가하다가 9가 되면 0으로 되게 조건 처리해서 해결 A,B 변수로 단수는 10 미만까지 반복 곱하는 수는 증가하다가 9가 되면 0으로 되게 조건 처리해서 해결


언리얼 튜터 특강
부트캠프 목표
언리얼 개발 역량을 심어주는 것이 목표
엔진 중에서는 탑티어 엔진
언리얼 개발자가 대체 어떠한 일들을 하는지에 대해서
언리얼 개발 전에는 Direct X 같은 그래픽 API로 엔진 직접 구현 필요(부품 조립해서 만들듯이)
예전에는 윈도우 핸들받아와서 그래픽 디바이스 초기화 하고 버퍼 만들고 삼각형으로 물체 그리고 텍스처 좌표 계산해서 색입히고 이런 일련의 복잡한 과정을 거쳐야 했음.

언리얼 엔진의 등장으로
새프로젝트 생성 -> 템플릿 선택
플레이 버튼 클릭 -> 플레이어 캐릭터가 이미 달리고 있음
무대,배우,카메라 전부 준비된 상태로 사용 가능
그래픽은 그림이 아니라 조명과 감정 조절을 통해서 디자인하는 느낌
사운드도 소리 파일 타임라인 추가만으로도 가능
조작감(타격감), 물리, AI, 카메라 등도 슬라이더 하나로 조절 한다거나 자동으로 중력 적용, 오브젝트 충돌 자동 감지 등으로 처리 가능

언리얼 개발자의 6가지 길드
게임플레이 프로그래머(일반적인 프로그래머에 가장 가까운 직군) 가장 많이 뽑힘.
해당 개발자들은 블루프린트와 C++를 모두 사용
부트캠프에서 가장 많이 키우는 직업군
기획자와 가장 많이 소통하고 어떻게 하면 더 재밌을까?를 끊임없이 고민하는 직군

테크니컬 아티스트(TA)-경력직 우선
아티스트의 상상과 프로그래머의 논리를 연결
미적 감각이 좀 있다고 생각하는 분들이 가장 주목해야 될 직군
코딩(C++)을 너무 잘 알지는 못해도 되지만
블루프린트와 언리얼의 시각적 툴(머티리얼, 나이아가라 등)을 기가 막히게 다뤄야 함.

엔진 프로그래머
가장 깊은 곳, 가장 어려운 일을 하는 개발자
블루프린트를 거의 안 쓰고 언리얼 엔진 코드만 봄.
에픽게임즈 개발자들과 직접 소통하며 엔진의 버그를 잡고 기능을 개선
가장 난이도가 높은 직군

툴 프로그래머
다른 개발자들이 더 편하게 일할 수 있도록 전용 도구를 만들어주는 직군
게임 안에 들어가는 기능이 아니라 언리얼 엔진 자체에 붙는 확장 기능을 만듬

AI 프로그래머
게임 속 모든 움직이는 것들에 로직을 구현하는 직군
블루프린트(비헤이비어 트리)도 많이 쓰지만 복잡한 판단 로직은 C++로 구현
플레이어 행동 예측하고, 도전적이며 공정한 경험을 설계

레벨 디자이너/아티스트
프로그래머는 아니지만 언리얼 엔진을 가장 많이 쓰는 언리얼 개발자
다른 개발자들이 가져다준 액터들을 가져다가 실제 플레이어가 뛰어놀 맵을 디자인 배치하는 직군
프로그래밍 지식은 거의 없지만 에디터 사용법에 능숙해야 함.

언리얼 사용 다른 산업들
디지털 트윈
실제를 보듯이 가상을 연출해주는 것들
자동차 회사에서 꽤 뽑고 있음(제조업)
실제 제조, 개발 전 테스트로 미리 가상에서 만들어 보는 작업

건축&인테리어
가상의 모델 하우스 제작

디지털 휴먼
가상 인간 모델

개발자의 일상
9시 출근,어제 동작 잘되던 기능에서 버그 발생
10시 기능 관련 블루프린트 확인
11시 아티스트가 올린 캐릭터 애니메이션 파일 확인, 문제 없음
1시 점심 먹고 와서 C++ 코드 확인, 원인 파악 못함
3시 해결 아직까지 못함
5시 옆자리 TA에게 도와달라고 요청 해결 못함
5시 50분 퇴근 10분전 어제 건드린 캐릭터 신발 바닥 물리 설정값 설정 바꾼게 저장 안되어 있었음
6시 설정값 수정해서 해결

새로운 기능 창조 보다는 끝없는 문제 해결이 업무의 비중이 훨씬 높음

본인이 만들고 싶은 것에 대한 매우 강력한 동기부여가 중요함

분반은 테스트로 나눠짐(레벨 테스트)


사전 캠프 퀘스트
STEP 1. 팀원과 함께 영상 시청 후 기본 기능 학습하기
팀원과 함께 위 영상을 시청하고 기본요소에 대해 학습합니다. 팀원 전체가 아래 내용에 대해 답변할 수 있어야하며 이해하고 있어야합니다.
프로젝트는 어떻게 생성하나요?
언리얼 엔진에서 새 프로젝트 생성 -> 템플릿 선택 -> 언리얼 버전 선택 및 프로젝트 옵션 선택 후 생성
Actor 배치, Actor는 무엇이고 어떻게 맵에 추가하나요?
액터는 레벨 내에 존재하는 모든 오븥젝트 기반의 클래스(건물, 캐릭터,라이트,카메라 등)
눈에 보이지 않는 것들은 트리거 볼륨이라고도 부름(액터의 일종)
해당 액터들을 액터 배치 패널에서 선택해서 레벨에 드래그 해서 배치 혹은 컨텐츠 브라우저에서 에셋 찾아서 클릭해서 드래그하여 배치
Viewport에서 오브젝트를 조작하려면 어떤 단축키를 사용하나요?

구분단축키기능
변환 툴 전환Q선택(Select)
W이동(Move / Translate)
E회전(Rotate)
R스케일(Scale)
Spacebar이동 → 회전 → 스케일 순서로 토글
카메라 조작RMB 드래그시점 회전
RMB + W / A / S / D카메라 이동
Alt + LMB오브젝트 중심으로 궤도 회전(Orbit)
Alt + RMB줌(Zoom) / 전후 이동
RMB + 휠카메라 이동 속도 조절
오브젝트 선택LMB 클릭선택
Ctrl + LMB선택 추가 / 제거
Shift + LMB다중 선택
F선택한 오브젝트로 뷰포트 포커스 이동
정밀 조작V + 드래그버텍스 스냅 이동(Vertex Snap)
MMB 드래그(피벗 위)피벗 임시 이동
뷰 / 표시 관련G게임 뷰 모드 전환(Game View)
F11뷰포트 전체화면(몰입 모드)
[ / ]그리드 스냅 크기 감소 / 증가
Ctrl + 숫자 / 숫자뷰포트 북마크 저장 / 이동

맵을 저장하는 방법은 무엇인가요?
1. 메뉴에서 File->Save Current Level 클릭해서 저장
2. 단축키 Ctrl + S 혹은 Ctrl + Shift + S(다른 이름 저장)으로 저장


STEP 2. 간단한 3D 맵을 제작해봐요!
1.
간단한 맵을 제작해주세요. 초점은 "오브젝트 배치"와 "간단한 레이아웃" 구성입니다.
a.
예시) 작은 방과 바깥 마당
Fab에서 다운받은 Fantastic Villiage Pack 에셋 활용해서 집과 함께 레벨에
잔디밭 배치 구성
잔디밭의 경우 하나의 잔디로 구성된 액터여서 잔디 복사 후 여러 개의 잔디 생성 후 하나의 액터로 Merge해서 사용

잔디밭 및 집 배치 구현 잔디밭 및 집 배치 구현


STEP 3. 결과물을 제출하고 발표해요!
1.
개별로 만든 결과물을 팀 내에서 발표해주세요!
a.
담임매니저님의 공지에 따라 미니 팀프로젝트 발표일에 팀활동할 시간을 정해주세요
b.
개별로 만든 결과물을 팀원들과 서로 공유하고 발표하는 시간을 가져주세요
c.
해당 발표내용 및 인사이트를 팀노션에 작성해주세요!

profile
개발합시다!

0개의 댓글