C++ 설정

이 페이지는 업데이트 중입니다.

C++ 모딩을 시작하려면 먼저 블루프린트 기반 모딩 프로젝트를 위한 설정을 수행해야 합니다. 이는 시작 가이드에 설명되어 있습니다. 이 가이드는 필요한 모든 의존성을 설치하고 그곳에 설명된 설정 과정을 따랐다고 가정합니다.

배경 정보

C‍+‍+ 코드를 빌드하기 위해 언리얼은 "언리얼 빌드 도구"(UBT)라고 불리는 자체 빌드 파이프라인을 사용합니다. UBT는 파일 복사, "언리얼 헤더 도구"(UHT) 실행 및 원하는 플랫폼에 대한 빌드를 자동으로 수행합니다. UHT는 작성한 소스 코드를 분석하고 UFUNCTION 매크로와 같은 특정 매크로를 자동으로 생성된 코드로 대체하는 도구입니다. 또한 추가로 자동 생성된 코드를 포함하는 별도의 파일을 생성합니다.

UBT는 에디터에서 .uproject 파일을 열거나 Visual Studio 솔루션 파일에서 빌드를 실행할 때 자동으로 "Development Editor" 구성에서 실행됩니다.

UBT는 소스 구성 요소를 구성하기 위해 소스 코드에 배치된 여러 파일을 사용합니다. 이 파일들에 대한 개요는 아래에 제공됩니다.

대상

대상은 게임이 패키징되는 방식을 정의하는 UBT "프로그램"과 같습니다. 1.0 배포 기준으로, 모드는 더 이상 자체 대상을 정의하지 않고 기본 게임의 대상을 사용합니다. 이 대상은 Source/TargetName.Target.cs에서 찾을 수 있습니다. 이 대상 파일을 수정하지 마십시오.

모듈

모듈은 UBT의 프로그램 구성 요소입니다. 각 대상은 최소한 하나의 모듈에 의존합니다. 모듈은 라이브러리, 언리얼 엔진 자체, 플러그인, 새티스팩토리의 헤더 또는 모드 코드를 포함할 수 있습니다. 대부분의 모듈은 프로젝트의 /Source 폴더 내에 각자의 폴더에 위치합니다.

예를 들어, 함수 및 데이터 구조를 참조하는 데 사용되는 새티스팩토리 헤더는 /Source/FactoryGame 아래에 위치한 "FactoryGame" 모듈에 포함되어 있습니다. 각 모듈 폴더는 다시 루트 폴더에 구성 파일을 가지고 있습니다. "FactoryGame" `모듈`의 경우, 이 파일은 /Source/FactoryGame/FactoryGame.Build.cs입니다.

모듈 구성 파일은 모듈이 어떻게 컴파일되는지를 제어하는 맞춤 코드를 작성할 수 있게 해줍니다. 언리얼은 이 구성 시스템을 구현하기 위해 C#을 사용합니다.

예제 사용 사례는 다음과 같습니다:

  • 새티스팩토리, 언리얼 엔진 또는 제3자 코드에 대한 의존성 지정

  • 환경 변수에 따라 공개/비공개 빌드를 위한 정의 수행

  • 외부 .lib 파일 추가

  • 파일 시스템의 상태에서 정보(예: 빌드 ID) 계산

알파킷 템플릿 사용하기

알파킷 모드 생성 마법사는 아래 섹션에서 언급된 대부분의 파일을 자동으로 생성하는 템플릿을 포함하고 있습니다. 마법사에 대한 자세한 내용은 플러그인 설정 및 게임 월드 모듈 페이지에서 확인할 수 있습니다.

처음부터 모드 모듈 만들기

모드에 C‍+‍+ 코드를 추가하려면 모듈 빌드 구성 파일을 생성해야 합니다.

모드의 폴더인 Mods/모드참조/로 이동하십시오. '모드참조.uplugin' 파일이 위치한 곳입니다. Source라는 새 폴더를 만들고 그 안에 모드참조 하위 폴더를 만드십시오. 모드 참조의 개념은 여기에 설명되어 있습니다. 이 폴더 내에 모드참조.Build.cs라는 새 파일을 생성해야 합니다. 새 텍스트 파일을 만들고 확장자를 .cs 파일로 변경하여 생성할 수 있습니다. 이 방법으로 파일을 생성하기로 선택한 경우, 파일 이름 확장자를 표시하는 것을 권장합니다.

이 새 파일 내에 다음 구성 텍스트를 추가해야 합니다.

모든 PLUGIN_NAME 보기를 실제 모드 참조로 바꾸는 것을 잊지 마십시오.

우리가 방금 생성한 파일은 C# 파일(.cs)이며 C++ 파일(.cpp)이 아님을 유의하십시오.

이 구성은 기본 언리얼 엔진 프레임워크, 새티스팩토리 및 모드 로더를 모듈의 의존성으로 추가하며, 유용한 다른 설정도 수행합니다.

이 예제는 필요한 최소한의 PublicDependencyModuleNames보다 더 많은 항목을 나열합니다. 이들은 "혹시나" 포함된 것이며, 그렇지 않으면 FG 헤더를 포함할 경우 혼란스러운 오류가 발생할 수 있습니다. 이 오류에 직면하면 이 파일에 언급된 헤더를 포함하는 모듈을 추가해야 하지만, 오류 메시지에는 추가해야 할 모듈 이름에 대한 언급이 없습니다.

필요한 경우 나중에 이 구성 파일로 돌아와서 변경할 수 있습니다.

이제 모듈 소스 코드를 추가할 준비가 되었습니다.

모드참조Module.h라는 파일을 생성하고 이 템플릿으로 채우십시오. 모드참조를 실제 모드 참조로 바꾸는 것을 잊지 마십시오. 모든 모드참조 보기를 실제 모드 참조로 바꾸는 것을 기억하십시오.

#pragma once

#include "Modules/ModuleManager.h"

class FYourModReferenceModule : public FDefaultGameModuleImpl {
public:
	virtual void StartupModule() override;
};
cpp

다음으로 모드참조Module.cpp라는 또 다른 새 파일이 필요합니다. 다음 템플릿 코드를 채워 넣으십시오. 다시 한 번, 모드참조를 실제 모드 참조로 바꾸십시오.

#include "모드참조Module.h"

void F모드참조Module::StartupModule() {

}

IMPLEMENT_GAME_MODULE(F모드참조Module, 모드참조);
cpp

UPlugin에 모듈 추가하기

다음으로 언리얼 에디터에 우리의 에디터 모듈을 사용하도록 지시해야 합니다. 이를 위해 플러그인 루트에 있는 모드참조.uplugin 파일을 엽니다. 루트 JSON에 Modules 배열을 추가한 다음, Name을 모드참조로, Type을 Runtime으로, LoadingPhase를 Default로 추가하십시오. 예시:

"Modules": [
        {
            "Name": "모드참조",
            "Type": "Runtime",
            "LoadingPhase": "Default"
        }
    ]
json

(사용된 이름은 모드참조이며, 반드시 자신의 모드 참조를 사용해야 합니다)

마무리

이제 모듈 폴더, 구성, 소스를 추가하고 대상에 추가했으므로 Visual Studio 프로젝트 파일을 다시 생성해야 합니다. 이 과정에 대한 지침은 여기에서 확인할 수 있습니다.

이 과정이 완료되면 모드의 C‍+‍+ 코드를 작업할 수 있어야 합니다.

항상 맞춤 생성된 모듈에서 코딩하는 것을 확인하십시오! FactoryGame 또는 SML 모듈에 실수로 코드를 작성하지 마십시오.

클래스 추가하기

새 클래스를 추가하려면 일반적으로 두 가지 안전한 방법이 있습니다. 참고로, Visual Studio에서 직접 새 파일을 생성하지 마십시오. 프로젝트 구조에 대해 정보가 없으며 임시 디렉토리에 파일을 생성하는 것이므로 UBT에서 감지되지 않습니다.

  1. Windows 탐색기에서 클래스를 추가할 폴더로 이동하여 .cpp 파일과 .h 파일을 수동으로 생성하십시오. 이제 이를 Visual Studio 또는 선택한 텍스트 편집기에서 열 수 있습니다. 템플릿 코드로 채우거나 필요한 클래스를 직접 작성할 수 있습니다.

  2. 언리얼 에디터를 열고 콘텐츠 브라우저의 "트리 뷰"를 엽니다. 그런 다음 C++ 클래스 루트 폴더로 이동하고 모드 참조로 이름이 지정된 폴더를 엽니다. 그 폴더 내에서 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 새 C‍+‍+ 클래스를 선택합니다. 그런 다음 원하는 기본 클래스를 선택하고 다음을 클릭한 후 클래스를 이름 짓습니다. 다른 설정을 원하는 대로 변경하고 클래스 생성으로 마무리합니다.

언리얼 에디터 방법으로 새 클래스 파일을 생성할 때 맞춤 C‍+‍+ 모듈을 선택했는지 확인하십시오. 이 스크린샷에서 모드 참조는 'LightItUp’입니다.

이미지