Chapter 01. 개발 환경 설정
1.1 비주얼 스튜디오와 언리얼 엔진 설치
1.1-1 비주얼 스튜디오 2022 Community 설치
- 이 링크에서 설치 진행
설치 할 때 “C++을 사용한 게임 개발”을 꼭 체크 해야함. 개별 구성 요소에서는 .NET Framework 4.6.X와 4.7.X 모두 체크. 밑에 C# 및 Visual Basic도 체크. Unreal Engine 설치 관리자 체크. Windows 10 SDK 모두 체크. 언어 팩에서는 영어 추가 설치 필요. 이 강의는 영문판 기준으로 진행.
1.2-2 언리얼 에디터
- Toolbar
프로젝트 설정과 실행 등 언리얼 에디터의 주요한 기능을 모아둔 창.

- Viewport
레벨이라 불리는 3차원의 게임 스테이지를 설계하는 창.

- Outliner
레벨을 구성하는 단위 요소인 액터의 목록을 관리하는 창.
계층 구조 및 폴더 생성 등의 기능을 사용해서 효과적으로 액터 목록을 관리.

- Details
뷰포트 혹은 아웃라이너에서 선택한 액터의 속성 값을 확인하고 편집하는 창.

- Content Browser
게임 제작에 사용하는 데이터인 애셋을 관리하는 창.

1.2-3 프로젝트 폴더 구성
- [중요] 키워드가 붙은 폴더들은 삭제시 프로젝트에 큰 영향을 줌.
붙지 않은 폴더들은 삭제해도 빌드시 재생성되기에 삭제해도됨.
앞으로 아래 폴더들이 들어있는 폴더를 프로젝트 폴더라고 부를 예정.
Content Browser > Content 우클릭 > Show in Browser 클릭 > 뒤로가기 하면 프로젝트 폴더.
- [중요] Config
게임 프로젝트의 설정 값을 보관하는 폴더.
- [중요] Content
게임 프로젝트에 사용되는 애셋들을 관리하는 폴더.
언리얼 엔진은 /Game 이라는 가상 경로를 기준으로 애셋들을 관리함.
Content 폴더가 가상 경로 /Game에 대응됨.
- [중요] Source
C++ 소스코드가 위치한 폴더.
빌드 설정을 담은 C# 소스코드도 있음.
- Intermediate
프로젝트 관리에 필요한 임시 파일들을 저장하는 폴더.
- Saved
에디터 작업 중에 생성된 결과물을 저장하는 폴더.
- Binaries
소스코드를 빌드한 결과물을 저장하는 폴더
- .vs
Visual Studio 관련 설정 내용이 들어있는 폴더.
Unreal Engine 5 이상 버전에서는 삭제시에 라이브 코딩에 문제 생길 수 있음.
이 수업에서는 라이브 코딩을 끄고 진행할 예정이라 삭제해도 됨.
- .sln 파일
소스코드를 관리하기 위한 Visual Studio 에디터의 솔루션 파일.
이 솔루션 파일이 관리하는 프로젝트 파일들은 Intermediate > ProjectFiles 폴더에 있음.
솔루션 파일과 프로젝트 파일들은 삭제되더라도
.uproject 파일 우클릭 > Generate Visual Studio project file 메뉴를 통해 언제든지 재생성 가능.
Unreal Build Tool에 의해 지원되는 기능.
1.2-4 모듈과 게임 모듈
- 소스코드를 빌드한 결과물을 언리얼 엔진에서는 모듈(Module)이라고 함.
특별히 게임 로직을 담은 모듈은 게임 모듈(Game Module)이라고 함.
- 언리얼 에디터가 게임 모듈을 성공적으로 로딩한다면,
Content Browser > C++ Classes > 게임모듈명으로된 폴더가 추가됨.
1.2-5 .uproject 파일
- .uproject 파일에는 게임 프로젝트를 언리얼 에디터로 열기 위한 정보가 저장되어 있음.
우클릭 > 연결 프로그램 > 메모장 클릭 시 내용을 볼 수 있음.
- EngineAssociation
이 정보에 의해 5.0 버전의 언리얼 에디터가 실행되고,
.uproject 파일이 위치한 폴더의 게임 프로젝트가 자동으로 에디터로 불러들여짐.
- Modules
실습 프로젝트 이름이 작성되어 있음. 해당 모듈(게임 모듈)을 함께 로딩하라는 의미.
그럼 언리얼 에디터는 프로젝트 폴더 > Binaries > 모듈명.dll 파일을 찾음.
이때 모듈명에는 규칙이 있음. 접두어로 "UnrealEditor-"가 붙음.
ex) UnrealEditor-StudyProject.dll
만일 해당 모듈 파일이 없다면 언리얼 에디터는 이 파일을 생성하기 위한
빌드를 진행할 것인지 물음.
1.2-6 언리얼 엔진 시스템
- 언리얼 빌드 시스템
Unreal Header Tool과 Unreal Build Tool을 통해 소스코드를 다양한 빌드 구성(디버그, 배포, ...)으로
빌드 될 수 있게끔 지원하는 시스템.
Unreal Header Tool의 핵심적인 기능은 .generated.h 파일의 생성임.
Unreal Build Toold은 소스코드가 해당 PC에 맞게 프로젝트를 재생성하는 기능을 지원.


- 언리얼 모듈 시스템
모듈은 결국 컴파일 된 바이너리 파일(.dll)을 뜻함. 각 모듈 폴더에는 .build.cs 파일이 있음.
.build.cs 파일에는 모듈의 종속성과 필요한 라이브러리, 인클루드 경로 등의 설정이 적혀있음.
게임 로직이 작성된 모듈을 주 게임 모듈이라고 부르는데,
이 주 게임 모듈에 필요한 다른 모듈들을 포함시키면서 게임을 개발하게 됨.

- 언리얼 런타임 시스템
언리얼 오브젝트(uobject) 개념을 통해서 아래와 같은 기능을 런타임 중에 제공함.
Garbage Collection / Replication / Serialization / RTTI / Reflection
- 언리얼 C++
언리얼은 자체적인 C++ 문법을 개발하여, 기존의 C++의 단점을 극복함.
기존 C++은 개발자의 실수 방지보단 성능을 우선시 했으나,
언리얼 C++은 uobject 클래스의 상속과 특유의 매크로 문법을 통해
개발자의 실수 방지와 성능 두가지를 잡음.
- 라이브 코딩
언리얼 에디터의 실행 중에 에디터가 점유하고 있는 모듈을 컴파일하면
언리얼 에디터는 이를 감지해서 기존의 모듈과 신규 모듈의 차이점을 프로젝트에 반영함.
이러한 언리얼 엔진의 동작 방식을 라이브 코딩이라고함. (UE4에선 핫 리로드)
이 강의에서는 라이브 코딩을 사용하지 않지만, 만약 사용하고자 한다면
cpp 파일이 수정되었을 때 에디터의 컴파일 버튼을 누르면 됨.
그러면 Binaries 폴더에 임시 모듈파일(UnrealEditor-StudyProjectxxxx)이 생성됨.
header 파일이 수정되었다면 언리얼 에디터를 끄고 비주얼 스튜디오로 빌드해야 함.
이 강의에서는 소스코드를 변경했다면 그냥 비주얼 스튜디오로 다시 빌드 함.
회사에 가게되면 회사 정책 혹은 사수님이 시키는데로 하면 됨.
1.3 언리얼 C++ 개발 환경 설정
1.3-1 비주얼 스튜디오 에디터 설정
- 솔루션 구성(빌드 구성) 탭 늘리기
비주얼 스튜디오 Toolbar > 빈공간 우클릭 > 사용자 지정 > 명령 탭 > 도구 모음을 표준 지정.
하단의 솔루션 구성 클릭 > 선택 사항 수정 > 너비 200 설정.
- 오류 목록창 제거
에러를 확인할 때 언리얼 프로젝트에서는 오류 목록창을 이용하지 않음.
출력 창을 이용하는 것이 더 간결하기 때문. 출력 창의 에러를 더블 클릭 시 해당 위치로 이동됨.
도구 > 옵션 > 프로젝트 및 솔루션 > 일반 > 항상 오류 목록 표시 체크 해제.
- 영문 환경 설정
도구 > 옵션 > 환경 탭 > 국가별 설정 > 언어 > English 선택
- 언리얼 C++ 프로그래밍을 도와줄 Extension 설치 [보류]
Visual Commander 설치.
VisualCommander.vsix 파일 설치 후 Visual Studio 실행하면 Toolbar > Extensions 메뉴가 생성됨.
Extensions 메뉴를 눌러보면 VCmd가 있음. 이를 통해 다른 Extension을 추가할 수 있음.
다운로드 후 Visual Studio > Toolbar > Extensions > VCmd에서
Imports > ue4_smarter_macro_including.vcmd 더블클릭
Extensions > UE4 Smarter Macro Including 체크
언리얼 C++ 프로그래밍 하는 중에 매크로를 작성하면 자동 들여쓰기가 안되게끔 해줌.
1.3-2 언리얼 C++ 프로젝트의 빌드 구성
- Editor Vs. Non-Editor
Editor가 뒤에 붙은 빌드 구성은 Binaries 폴더에 에디터가 사용할
UnrealEditor-StudyProject.dll 파일이 생성됨.
Editor가 뒤에 붙지 않은 빌드 구성은 StudyProject.exe 파일이 생성됨.
다만, 비주얼 스튜디오의 Non-Editor 빌드는 애셋 없이 실행 파일만 생성하기에
StudyProject.exe를 실행하면 에러남.
- DebugGame
자세한 디버깅을 위해 최적화가 안된 빌드 결과물을 생성하는 빌드 구성.
최적화가 되지 않았기에, 모든 코드가 실행됨.
따라서 Development 빌드 구성으로 디버깅 하였을 때 생략되던 코드들이 실행됨을 볼 수 있음.
- DebugGame Editor
DebugGame과 동일한 수준의 에디터용 .dll 파일을 생성하는 빌드 구성.
- Development
중간 수준의 최적화와 디버깅도 가능한 빌드 결과물을 생성하는 빌드 구성.
- Development Editor
Development와 동일한 수준의 에디터용 .dll 파일을 생성함. 빌드 구성의 기본값.
- Shipping
게임의 최종 배포를 위해 최적화된 코드를 만들어내는 구성.
다만 .exe 파일을 실행해도 에러남. 에러 없이 완성된 게임을 배포하려면
언리얼 에디터 > File > Zip Package 메뉴를 사용해서
애셋과 실행 파일이 모두 묶여진 최종 패키지를 생성해야 함. [확인 필요]
- 언리얼 엔진 소스코드를 전체 다운 받으면 더 많은 빌드 구성이 있음.
구글에 언리얼 엔진 깃허브를 검색.
- 소스코드 컴파일 방법
라이브 코딩을 켜지 않는다면, 언리얼 에디터가 .dll 파일을 점유하고 있기 때문에
언리얼 에디터가 켜진 상태에서는 .dll 파일을 만들 수 없음.
따라서 언리얼 에디터를 끈 상태로, 비주얼 스튜디오에서 Ctrl + Shift + B를 통해서 빌드.
빌드가 성공한다면 F5를 눌러서 실행. 이후부터는 에디터가 켜져 있더라도
Ctrl + Shift + F5를 누르면 에디터가 꺼지면서 빌드 + 실행됨.
1.3-3 새 레벨 만들기
- Content Browser > Content 폴더 우클릭 > New Folder "Study"
Study 우클릭 새 폴더 > "Levels"
- Toolbar > File > New Level > Empty Level 클릭
File > Save Current Level 클릭 > Levels 폴더 > "Example"
- Toolbar > Settings > Project Settings > Maps & Modes
Eidtor Startup Map에 Example 지정.
Game Default Map에도 Example 지정.
Editor Startup Map은 에디터를 다시 켰을 때 처음 맵.
Game Default Map은 게임을 배포하고 배포된 게임을 실행했을때 처음 맵.
1.3-4 기본적인 레벨 구성
- Outliner 빈공간 우클릭 > Create Folder > "Environment"
- Toolbar > Window > Place Actors 클릭
Details 옆에다가 도킹
- Place Actors > Lights(전구 기호) > Directional Light와 Sky Light를 Viewport에 드래그 드랍.
- Outliner > DirectionalLight 클릭 > Details > Transform의 Location 초기화 후
Z 값을 1000으로 지정.
Outliner > SkyLight 클릭 > Details > Transform의 Location 초기화 후
Z 값을 500으로 지정.
Outliner > DirectionalLight와 SkyLight를 Environment 폴더로 이동.
DirectionalLight 클릭 > F2 > Sun.
SkyLight는 환경광. AmbientLight로 이름 변경. 조명을 아에 꺼도 어느정도 빛이 존재하는 걸 표현.
- Place Actors > Visual Effects에서 Sky Atmosphere와 Exponential Height Fog를 Viewport에 드래그 드랍.
- Outliner > SkyAtmosphere 클릭 > Details > Transform의 Location 초기화 후
Z 값을 1100으로 지정. Sun > Transform에서 Rotation을 변경하면 해의 위치 표현 가능.
Outliner > ExpotentialHeightFog 클릭 > Details > Transform의 Location 초기화 후
(-5000, -50, -5000)으로 지정.
- Place Actors > "Plane"을 검색 후 Viewport에 드래그 드랍.
Details > Transform의 Location 초기화.
Scale을 (30, 30, 1)로 지정.
Outliner > Cube 클릭 > F2 > "Floor"
- Place Actors > "Player Start" 검색 후 Viewport에 드래그 드랍.
Details > Trasform의 Location 초기화.
Z축 기즈모를 위쪽으로 올렸다가 End 키.
- Ctrl + Shift + S로 전체 변경 사항 저장.