Unreal 게임 개발 과정 TIL

Today's I Learning

본캠프 TIL

04.20 Unreal 본캠프 1일차) 코딩과 블루프린트

Sunlight__ 2026. 4. 20. 19:53

 

오늘부터 Unreal 본캠프 시작일이다.

OT부터 진행하였으며 강사진 및 튜터님들 소개와 커리큘럼 소개가 있었다.

 

이후부터는 C언어 코딩부터 배우게 되었다.

 


 

1. 코딩이란

 

 - 코딩이란 무엇일까, 코딩은 컴퓨터가 이해 가능한 명령서를 작성하는 과정이다. 중요한 점은 "우리" 가 이해 가능한 명령서가 아니라, "컴퓨터" 가 이해 가능한 명령서라는 점이다. 따라서 어떤 때에는 이해보다는 암기를 요구할 수도 있다.

 - 컴퓨터란 어린아이와 같아서 마트에 가서 우유를 사오라는 명령에도 마트가 무엇인지 우유가 무엇인지 산다는 행위가 무엇인지 모르기 때문에 하나하나 일일이 알려주어야 한다.

 

2. Low-Level Language와 High-Level Language

 

 - 기계어(Low-Level Language, Mechanic Language) : 아래와 같이 작성되어서 컴퓨터(기계)가 바로 이해할 수 있는 언어.

Hello, World! 예제의 이진 패턴 파일, 다만 위 그림은 16진법으로 표시되고 있음

 

 - 어셈블리어(Assembly Language) : 숫자가 아닌 문자이기에 사람에 좀 더 친숙한 언어이다. 이진 패턴의 특정 부분을 문자로 치환한다. 일대일 대응관계를 가지기에 양은 비교적 줄지 않았지만 모양은 예뻐진 언어이다.

Hello, World의 어셈블리 파일

 

 - 고급 언어(High-Level Language) : 우리가 배울 C언어 혹은 C++, Java, Python과 같은 언어들이다. 어셈블리어에서 모양은 물론, 양까지 만족스럽게 줄어들었다. 사람에 가깝다는 의미에서 High-Level Language라고 부른다.

위의 사진들과 같은 코드, 확실히 많이 줄어들었다.

 

 - 소스코드(Source Code) : 프로그래머가 고급 언어로 작성한 코드(명령서)를 소스코드라고 한다.

결국 컴퓨터가 이해할 수 있는 언어는 기계어 뿐이다. 따라서 사람이 고급 언어로 명령서(코드)를 작성하면 누군가는 "번역" 해서 컴퓨터가 읽기 쉬운 기계어로 바꾸어주어야 한다. 이런 "번역가" 를 컴파일러라고 한다.

 

 - 빌드 프로세스(Build Process) : 사람이 읽기 쉬운 고급 언어로 작성된 소스코드(명령서)를 컴퓨터가 읽기 쉬운 기계어로 변환하는 일련의 과정이다.

빡지 작성 후 암기하였다.

 

3. Compile

 

- 컴파일과 빌드 : 컴파일은 두 가지 의미를 지니고 있다. 

 1) 확장된 소스코드가 어셈블리 코드로 변환되는 과정

 2) 소스코드로부터 오브젝트 코드까지의 과정

 

 - 솔루션 > 프로젝트 > 소스코드  : 소스코드를 작성하려면 비주얼 스튜디오를 켜고 솔루션이라는 것을 먼저 만들어야 한다. 솔루션 안에는 프로젝트라는 것이 들어있고, 이 프로젝트 안에 소스코드가 들어있다.

솔루션 안에 프로젝트 안에 소스코드

 

이제 Visual Studio를 다운 받아서 실습을 해볼 것이다.

예제는 Ex000000) 이라고 하겠다.

 

Ex010301) 새 솔루션 만들기

솔루션을 만드는 과정

 - 우선 Visual Studio를 킨 뒤 새 솔루션을 만들 것이다.
 1) Project name에는 항상 현재 예제 번호를 작성할 것이다.

 2) Location에는 바탕화면의 C폴더를 새로 만들어서 지정한다. (SpartaC로 폴더를 만들었다.)

 3) Solution name은 항상 현재 섹션 이름을 작성할 것이다.

 4) Create를 선택하여 생성

 

 Ex010302) 비주얼 스튜디오 소스코드 에디터 레이아웃

 

 - 코파일럿(자동완성 툴) 제거, Solution Explorer 켜기, Error List 켜기, Output 켜기

 - Toolbar > Window > Save Window Layout > CLayout(이름)으로 저장하여 혹여나 지금 만든 레이아웃이 망가졌을 때 Apply Window Layout에서 복구 가능

전부 적용한 뒤의 모습

 

Ex010303) 비주얼 스튜디오 소스코드 에디터 살펴보기

 

 

4. 프로젝트와 소스코드 생성

 

Ex010401) 이전 작업 여는 방법

 

 - 저장해둔 폴더로 가서 .slnx 파일(솔루션 파일)을 더블클릭해서 실행한다.

 - 검색 > Visual Studio > 최근 프로젝트에서 실행하여도 된다.

 

Ex010401) 새 프로젝트 추가하는 방법

 

 - Solution Explorer > Solution 우클릭 > Add > New Project 클릭 > Console App C++을 선택 > Next > 예제 이름 작성 후 Create 클릭

 

 

시작 프로젝트
 - 소스코드 에디터를 빌드하면, 하나의 프로젝트만 시작 프로젝트로 설정하고 빌드 할 수 있다. 엉뚱한 곳에서 빌드하지 말고 꼭 시작 프로젝트 설정을 습관화 할 것

 

Ex010403) 시작 프로젝트 설정하는 방법

 

 - Solution Explorer > 원하는 프로젝트 우클릭 > Set as Startup Project 클릭

 - 선택된 시작 프로젝트는 더 굵고 하얗게 된다.

 

 

Ex010404) 소스코드(명령서) 삭제하기

 

 - Solution Explorer > 원하는 소스코드 우클릭 > Remove 클릭

Remove는 Solution Explorer에서만 안보이게 될 뿐이지, 디스크(휴지통)에는 남아있으며 휴지통에서 드래그로 복구 가능

 

Ex010405) 소스코드(명령서) 만들기

 

 - Solution Explorer > 원하는 프로젝트 우클릭 > Add > New Item 클릭 (단축키 : Ctrl + Shift + A)

 - C 언어 학습 중이므로 Main.c 파일 생성

 

 

Ex010406) 백지부터 시작해보자

 

 - // Main.c (여기서 // 이란 주석이다)

 

Ex010407) Error List와 Output 보는 방법

 

 - 빈 소스코드를 빌드 및 실행하면 다음과 같은 박스가 뜬다.

No를 선택

 

 - 영어로 적혀있지만 한 글자씩 천천히 읽어보며 에러를 파악하는 것이 좋다.

 - Error list 옆에 Output 클릭

 - Show output from에 Build를 지정한다. 그럼 에러와 관련 내용을 볼 수 있다.

 

5. main() 함수와 printf() 함수

 

- 프로그램의 시작점(Entry Point) : main 함수는 프로그램의 시작점이다. 즉, 모든 프로그램에게는 main() 함수가 있어야 한다.

 

Ex010501) main() 함수 [중요 샘플 코드]

 

 - 코드 작성에 있어서 가장 중요한 것은 " 시작이 있으면 무조건 끝을 맺어줘야 한다. " 이다. 만약 열었다면 무조건 닫는 문법이 있고, 소유했다면 다시 돌려주는 문법이 있다. (컴퓨터는 유추라는 능력이 없다. 어디가 시작이고 어디가 끝인지 알 수 없다.)

 - 들여 쓰기를 생활화 하자. 들여 쓰기를 처음부터 안하면 끝까지 안하는게 습관이 된다. 

// main.c

int main(void)     // 함수의 시작.
{

   return 0;          // 함수의 종료이자, 한 줄의 명령어 종료(세미콜론) . 
}

빡지를 써서 외웠다.

 

Ex010502) printf() 함수 [중요 샘플 코드]

 

 - printf() 함수 : print formatted의 약자이다. " 양식에 맞게 출력하다. " 라는 뜻이다. (탈출 문자열 혹은 서식지정자와 함께 쓰임)

 - 탈출 문자열(Escape Sequence) : 탈출 문자 ' \ ' 와 함께 작성된 문자열. C언어에서 문자열은 시작 큰 따옴표로 감싸져 있다. 이 문자열 도중 다른 의미를 지닌 문자열을 넣어서 사용한다. 즉, 잠시 문자열을 "탈출" 한다.

  출력
\n 개행
\t 탭(Tab)
\' 따옴표 출력
\" 쌍따옴표 출력
\\ 역슬래시 출력
%% %출력
// Main.c

#include <stdio.h>              // stdio는 공구통 이름. #include는 공구통을 포함시키라는 명령어.            

int main(void)
{
   printf("Hello, world!");      // stdio라는 공구통 안에 든 printf()라는 망치를 사용하는 예시.

   return 0;
}

빡지를 써서 외웠다.

 

 

이렇게 오늘 C 언어는 여기까지 배웠다.

 

다음으로는 블루프린트에 대해 공부하였다.

블루프린트의 이번 목표는 Bluprint FPS 슈팅 게임 개발이었다.

 

초기 강의에서 들은 내용 들은 알고 있던 내용이라 이후 내용은 직접 개발을 하며 어떤 활동을 하였는지 게시하겠다.

 

먼저 Fab에서 Stylized Egypt 에셋을 다운 받아서 프로젝트에 적용해 주었다.

https://www.fab.com/ko/listings/c935ca3e-dbb1-4b7d-a080-65de129c60bd

 

Stylized Egypt

Original Release Date: 9/21/2020This package contains a small set for creating a stylized Egypt environment.Video: https://youtu.be/qv6mvrqvLFMSupport, help, any questions, my mail: aleksandrbnet@gmail.com Thanks!

www.fab.com

 

 - 처음에 맵을 열 때 경고가 떳지만 일단 X를 누른뒤 나가서 오른쪽 상단에 경고 표시를 눌러 Rebuild를 눌러주어 해결해주었다.

맵을 적용시킨 모습

 

 - 에디터를 끄고 재시작 하였을 때 기본 맵이 아닌 이집트 맵이 열리게 할 것이다.

 - 이집트 맵을 선택 후 Edit > Project Settings > Maps & Mods > Default Maps > Stylized_Egypt_Demo 선택

 

 

이렇게 하면 다시 에디터를 실행 시켰을 때 내가 원하는 이집트 맵이 적용될 것이다.

 

 - 이후 콘텐트 폴더에서 새 폴더를 만든 뒤 BluePrints로 이름을 변경해 준다.

 - BluePrints 폴더 내부에 Chracter, Animation, GameMode, UI, Items, Monster 폴더를 생성해준다.

GameMode 게임 규칙 담당 (승리 조건, 스폰 규칙 등)
UI 화면에 보이는 UI (크로스헤어, 체력바, 탄약 수 등)
Items 맵에 배치되는 아이템 (탄약, 회복약 등)
Monster 적 캐릭터 (AI, 스폰, 행동 관련)

 

 

 

 - 캐릭터 블루 프린트 생성 (FPS_Character)

 - Component > Add > Camera 추가 > 오른쪽 Detail 패널에서 Location Z 값을 60으로 변경

 

 

 - Detail 패널에서 use pawn 검색 후 Use Pawn Control Rotation 체크

 - 이 옵션을 체크해야 마우스가 회전할 때 캐릭터가 바라보는 방향 그대로 카메라가 같이 움직여서 상하/좌우를 볼 수 있다.

 - Compile 오른쪽 ... 를 눌러 Save on Compile > On Success Only로 바꾸어 준다. (컴파일 적용시 저장이 함께 됨)

 

 - Compile (단축키 F7)을 눌러 변경사항들을 적용한다.

 

이제 총을 추가할 것이다.

 - Component > Add > Skeletal Mesh 이름은 Gun으로 설정 후 카메라 밑에 배치

 

하지만 총과 손의 스켈레탈 메시가 없기에 Fab에서 총을 먼저 추가해주겠다.

 - Fab에서 총 에셋 다운

 - M16 A1 Rifle을 다운 받아서 프로젝트에 추가하여 준다.

https://www.fab.com/ko/listings/ca5064f6-b1d7-4cfd-a504-19caaf687bff

 

M16 A1 Rifle \ M 16

The M16A1 is a legendary assault rifle. Ideal for any genre of game, from first-person shooter to military strategy.The special feature of this product is 5 unique weapon and sight skins. The product includes 2 animated meshes and 2 static meshes (with and

www.fab.com

 

콘텐트 브라우저 우측 Fab 버튼

 

- M16A1 > SK 내부에 들어가보면 SkeletalMesh가 있다. 이 중 Scope가 달린 총기를 적용한다.

- Gun을 선택 후 Skeletal Mesh Asset을 M16_Scope로 선택한다.

 

 

 

이렇게 오늘 강의가 끝이 났다.

사전 캠프 내에서 배운 내용이 제법 있었기에 초반에 따라가기엔 벅찬 느낌은 없었지만 이후에 내가 아직 공부하지 않은 부분으로 넘어가면 어려워질 것 같다고 생각이 들었다.

C 언어를 배우며 Hello, World를 입력하여 실행하여 보았을 때, "아 내가 드디어 프로그래밍을 해보는구나." 하는 생각이 들었으며 뿌듯한 느낌이 들었다.

앞으로 본캠프 과정 동안 포기하지 않고 열심히 수업을 듣기로 다짐하며 오늘 TIL을 끝마친다.