이번 섹션을 마치면 볼 수 있는 결과물입니다.
목표
이 섹션의 목표는 일인칭 슈팅 프로젝트를 구성하는 방법을 보여주는 것입니다.
세부 목표
이 튜토리얼의 이번 섹션을 마치면 다음과 같은 작업을 할 수 있습니다.
- 새 프로젝트 구성
- 에디터 시작 맵 설정
- Visual Studio에서 프로젝트 열기
- 프로젝트에 로그 메시지 추가
- 첫 번째 C++ 클래스 컴파일
- 디폴트 게임 모드 설정
단계
- 1.1 - 프로젝트 구성
- 1.2 - Visual Studio에서 프로젝트 열기
- 1.3 - 로그 메시지 추가하기
- 1.4 - 프로젝트 컴파일하기
- 1.5 - 디폴트 게임 모드 설정하기
- 1.6 - 섹션 1 요약
1.1 - 프로젝트 구성
이 단계에서는 언리얼 엔진을 사용하여 일인칭 슈팅(First Person Shooter, FPS) 게임의 시작점을 생성합니다.
-
에픽 런처에서 언리얼 엔진 을 열고 새 프로젝트를 생성합니다.
-
게임(Games) 프로젝트 카테고리를 선택합니다.
-
기본(Blank) 템플릿을 선택합니다.
-
블루프린트(Blueprint) 가 아닌 C++ 프로젝트 타입을 선택합니다.
-
시작용 콘텐츠(Starter Content) 를 비활성화합니다.
-
프로젝트 이름을 FPSProject 로 지정합니다.
-
프로젝트 이름을 지정한 후에는 생성(Create) 버튼을 클릭합니다. 그러면 프로젝트가 언리얼 에디터에서 자동으로 열립니다.
이미지를 클릭하면 확대됩니다.
이 튜토리얼의 코드 샘플 일부는 프로젝트 이름을 다르게 지정할 경우 업데이트해야 합니다.
-
콘텐츠 브라우저(Content Browser) 로 이동하고 엔진(Engine) > 콘텐츠(Content) > Maps > Templates 에서 Template_Default 를 더블 클릭하여 엽니다.
-
레벨 에디터 툴바 에서 플레이 버튼을 클릭하여 에디터에서 플레이(Play in Editor, PIE) 모드를 시작합니다.
WASD 키로 레벨에서 이동하고, 마우스로 카메라를 조준합니다.
-
Shift + Esc 를 누르거나 레벨 에디터 툴바 에서 중지 를 클릭하여 PIE 모드를 종료합니다.
-
레벨 탐색을 완료했으니, 콘텐츠 브라우저 로 이동하여 콘텐츠 폴더에 Maps 폴더를 생성합니다. (콘텐츠 폴더를 선택하고 콘텐츠 브라우저 의 파일창을 우클릭한 후 새 폴더(New Folder) 를 선택하면 됩니다.)
-
메인 메뉴 패널에서 파일(File) 을 클릭하고 현재 레벨을 다른 이름으로 저장(Save Current Level as...) 을 선택합니다.
-
현재 레벨을 다른 이름으로 저장 창에서 Maps 폴더를 선택하고 새 맵의 이름을 FPSMap 으로 지정한 후 저장(Save) 을 클릭합니다.
-
메인 메뉴 패널에서 편집(Edit) 을 클릭하고 프로젝트 세팅(Project Settings) 을 선택합니다.
-
프로젝트 세팅 탭의 좌측의 프로젝트(Project) 섹션으로 이동하여 맵 & 모드(Maps & Modes) 를 클릭합니다. 에디터 시작 맵(Editor Startup Map) 드롭다운 메뉴를 펼친 후 FPSMap 을 선택합니다.
이렇게 세팅하면 에디터가 디폴트 맵으로 FPSMap을 자동 로드합니다.
-
마지막으로, 다음 단계로 이동하기 전에 프로젝트 세팅 메뉴를 닫고 프로젝트를 저장합니다.
1.2 - Visual Studio에서 프로젝트 열기
이전 단계에서 기본 코드(Basic Code) 프로젝트를 구성했을 때, 언리얼 엔진은 게임 모드(Game Mode) 를 생성했습니다. 게임 모드는 게임의 규칙 및 승리 조건을 정의합니다. 또한 게임 모드는 폰, 플레이어 컨트롤러, HUD 등 일부 기본 게임플레이 프레임워크 타입에 사용되는 디폴트 클래스도 설정합니다. 이 섹션에서는 에디터를 사용하여 Visual Studio 의 솔루션으로 프로젝트를 열어 프로젝트의 게임 모드 클래스를 볼 수 있도록 합니다.
-
메인 메뉴 패널에서 툴(Tools) 을 클릭하고 Visual Studio 열기(Open Visual Studio) 를 선택하여 Visual Studio에서 C++ 코드를 엽니다.
-
Visual Studio에서 프로젝트가 실행된 후에는 Visual Studio의 Solution Explorer 내부에
.cpp및.h파일이 보일 것입니다.
예시 이미지 속의 Visual Studio의 경우 Dark Mode가 사용되었으므로, 현재 사용 중인 Visual Studio와 약간 다른 모습일 수 있습니다. Dark Mode는 Tools > Options > Environment > General > Color Theme 에서 활성화할 수 있습니다.
-
Source 를 펼친 다음, FPSProject 를 선택하여 새 게임의 메인 파일을 봅니다.
-
FPSProjectGameModeBase.cpp를 엽니다. 결과물은 다음과 같아야 합니다.FPSProjectGameModeBase.cpp
// Copyright Epic Games, Inc. All Rights Reserved. #include "FPSProjectGameModeBase.h" -
이제
FPSProjectGameModeBase.h를 엽니다. 결과물은 다음과 같아야 합니다.FPSProjectGameModeBase.h
// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "GameFramework/GameModeBase.h" #include "FPSProjectGameModeBase.generated.h" /** * */ UCLASS() class FPSPROJECT_API AFPSProjectGameModeBase : public AGameModeBase { GENERATED_BODY() }; -
이제 Visual Studio에서 C++ 프로젝트를 열었으니, 프로젝트에 코드 추가를 시작할 준비가 된 것입니다.
1.3 - 로그 메시지 추가하기
프로젝트에 코드 추가를 시작하는 좋은 방법은 FPSGameMode 에 로그 메시지를 추가하는 것입니다. 로그 메시지는 개발 과정에서 코드를 검증하고 디버깅하는 데에 매우 유용합니다. 이 단계에서는 로그 메시지를 사용하여 언리얼 엔진이 제공하는 기본 게임 모드가 아니라 FPSGameMode 를 실제로 사용하고 있는지 검증해 보겠습니다.
FPSProjectGameMode 헤더 파일
-
Solution Explorer 에서 FPSProject > Source > FPSProject 로 이동합니다.
-
FPSProjectGameModeBase.h를 더블 클릭하여 FPSGameMode 클래스의 헤더 파일을 엽니다.
-
클래스 선언은 다음과 같아야 합니다.
FPSProjectGameModeBase.h
~~~ UCLASS() class FPSPROJECT_API AFPSProjectGameModeBase : public AGameModeBase { GENERATED_BODY()
}; ~~~
-
AFPSProjectGameMode생성자 선언 아래에 다음 함수 선언을 추가합니다.FPSProjectGameModeBase.h
virtual void StartPlay() override;
이 함수 선언은 StartPlay를 오버라이드하여 게임플레이가 시작되면 화면에 로그 메시지를 출력할 수 있도록 해 줍니다.
-
FPSProjectGameMode.h는 다음과 같아야 합니다.FPSProjectGameModeBase.h
// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "GameFramework/GameModeBase.h" #include "FPSProjectGameModeBase.generated.h" /** * */ UCLASS() class FPSPROJECT_API AFPSProjectGameModeBase : public AGameModeBase { GENERATED_BODY() virtual void StartPlay() override; }; -
Visual Studio에서
FPSProjectGameMode.h헤더 파일을 저장합니다.
FPSProjectGameMode CPP 파일
-
Solution Explorer 에서 FPSProject > Source > FPSProject 로 이동합니다.
-
FPSProjectGameModeBase.cpp를 더블 클릭하여 FPSGameModeBase 클래스의 구현 파일을 엽니다.
-
이제 파일에 다음 코드 줄을 추가합니다.
FPSProjectGameModeBase.cpp
void AFPSProjectGameModeBase::StartPlay() { Super::StartPlay(); check(GEngine != nullptr); // 디버그 메시지를 5초간 표시합니다. // -1 '키' 값 실행인자가 메시지가 업데이트되거나 새로고침되지 않도록 방지합니다. GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Hello World, this is FPSGameMode!")); }게임플레이가 시작되면
StartPlay()가 새로운 디버그 메시지("Hello World, this is FPSGameModeBase!")를 화면에 5초간 노란색 텍스트로 출력합니다. -
FPSProjectGameModeBase.cpp는 다음과 같아야 합니다.FPSProjectGameModeBase.cpp
// Copyright Epic Games, Inc. All Rights Reserved. #include "FPSProjectGameMode.h" void AFPSProjectGameModeBase::StartPlay() { Super::StartPlay(); check(GEngine != nullptr); // 디버그 메시지를 5초간 표시합니다. // -1 '키' 값 실행인자가 메시지가 업데이트되거나 새로고침되지 않도록 방지합니다. GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Hello World, this is FPSGameModeBase!")); } -
Visual Studio에서
FPSProjectGameModeBase.cpp구현 파일을 저장합니다.
1.4 - 프로젝트 컴파일하기
이제 코드 변경 사항이 게임에 반영되는지 확인할 수 있도록 프로젝트를 컴파일하기에 적절한 시점입니다.
-
에디터로 돌아가서 컴파일(Compile) 버튼을 클릭하여 코드를 컴파일합니다.
프로젝트 개발을 C++ 프로젝트로 시작했기 때문에 언리얼 에디터에서 C++ 코드를 바로 컴파일할 수 있습니다. 이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
레벨 에디터 툴바 에서 플레이 버튼을 클릭하여 에디터에서 플레이(PIE) 모드를 시작합니다.
PIE 모드에서는 화면에 로그 메시지가 표시되지 않는 이유가 궁금하실 수도 있습니다. 로그 메시지가 보이지 않는 이유는 이 개발 단계에서는 에디터가 아직 기본 게임 모드를 사용 중이기 때문입니다.
-
Shift + Esc 를 누르거나 레벨 에디터 툴바 에서 중지 를 클릭하여 PIE 모드를 종료합니다.
C++ 게임 모드 클래스를 블루프린트로 확장하기
이제 C++ 게임 모드 클래스를 블루프린트로 확장하기에 적절한 시점입니다. C++와 블루프린트 레퍼런스 페이지로 이동하여 C++ 클래스를 블루프린트로 확장하는 방법을 자세히 확인해 보세요.
-
콘텐츠 폴더 안에 Blueprints 폴더를 생성합니다.
-
C++ 클래스(C++ Classes) > FPSProject 에서 FPSProjectGameModeBase 클래스를 우클릭하여 C++ 클래스 액션(C++ Class Actions) 메뉴를 엽니다.
-
FPSProjectGameModeBase 기반 블루프린트 클래스 생성(Create Blueprint class based on FPSProjectGameModeBase) 을 클릭하여 블루프린트 클래스 추가(Add Blueprint Class) 대화 메뉴를 엽니다.
-
새 블루프린트 클래스의 이름을 BP_FPSProjectGameModeBase 로 지정하고 Blueprints 폴더를 선택한 후 블루프린트 클래스 생성(Create Blueprint Class)버튼을 클릭합니다.
-
그 결과 Blueprints 폴더 내부에 새로 생성된 BP_FPSProjectGameModeBase 블루프린트 클래스가 있어야 합니다.
-
블루프린트 에디터 를 닫기 전에 BP_FPSProjectGameModeBase 블루프린트를 저장하세요.
1.5 - 디폴트 게임 모드 설정하기
새로 수정한 게임 모드를 블루프린트로 확장했으니, 이 단계에서는 프로젝트가 BP_FPSProjectGameModeBase 를 기본 게임 모드(Game Mode) 로 사용하도록 설정해야 합니다.
-
메인 메뉴 패널에서 편집 을 클릭하고 프로젝트 세팅 을 선택합니다.
-
프로젝트 세팅 탭의 좌측의 프로젝트(Project) 섹션으로 이동하여 맵 & 모드(Maps & Modes) 를 클릭합니다. 기본 게임모드(Default GameMode) 드롭다운 메뉴를 펼치고 BP_FPSGameModeBase 를 선택합니다.
-
프로젝트 세팅 메뉴를 닫습니다.
-
레벨 에디터 툴바 에서 플레이 버튼을 클릭합니다. 이제 "Hello World, this is FPSGameMode!"가 뷰포트 좌측 상단 모서리 부분에 노란색 텍스트로 5초간 표시됩니다.
-
Shift + Esc 를 누르거나 레벨 에디터 툴바 에서 중지 를 클릭하여 PIE 모드를 종료합니다.
1.6 섹션 1 요약
FPSProjectGameModeBase.h
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "FPSProjectGameModeBase.generated.h"
/**
*
*/
UCLASS()
class FPSPROJECT_API AFPSProjectGameModeBase : public AGameModeBase
{
GENERATED_BODY()
virtual void StartPlay() override;
};
FPSProjectGameModeBase.cpp
// Copyright Epic Games, Inc. All Rights Reserved.
#include "FPSProjectGameMode.h"
void AFPSProjectGameMode::StartPlay()
{
Super::StartPlay();
checkGEngine != nullptr);
// 디버그 메시지를 5초간 표시합니다.
// -1 '키' 값 실행인자가 메시지가 업데이트되거나 새로고침되지 않도록 방지합니다.
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Hello World, this is FPSGameModeBase!"));
}
축하합니다! 다음과 같은 내용을 배웠습니다.
✓ 새 프로젝트 구성
✓ Visual Studio에서 프로젝트 열기
✓ 프로젝트에 로그 메시지 추가
✓ 첫 번째 C++ 클래스 컴파일
✓ 디폴트 게임 모드 설정
이제 다음 섹션에서 캐릭터를 구현하는 방법을 배울 준비가 되었습니다.