프로그래밍/언리얼엔진

[언리얼엔진] 플러그인 제작 및 사용법 - 4. 플러그인 빌드 및 배포

LeePorter 2022. 1. 27. 19:40

세 번째 포스팅까지 수행하지 않으셨다면 이전 포스팅을 순서대로 수행하시고 이번 포스팅을 보시길 바랍니다~

 

[플러그인 제작 과정]

[언리얼엔진] 플러그인 제작 및 사용법 - 1. 생성 및 준비단계

[언리얼엔진] 플러그인 제작 및 사용법 - 2. C++ 클래스 추가

[언리얼엔진] 플러그인 제작 및 사용법 - 3. 플러그인용 모듈 제작

 

이번 포스팅에서는 이전에 작업한 모듈을 다른 프로젝트에 있는 플러그인에 넣고, 이를 빌드하여 배포하는 것까지 설명하도록 하겠습니다. (하다보니 이름이 비슷하게 만들어서 ㅠ 햇갈리지 않게 주의해주세요 ㅎㅎ;;)


이전 포스팅까지 진행했다면 TestPlugin 모듈을 복사(혹은 잘라내기)하여 이전에 만들었던 'PluginTest' 프로젝트에 있는 플러그인에 추가합니다. [ PluginTest > Plugins > TestPlugin > Source ]와 같은 경로로 이동하여 복사한 TestPlugin 모듈 폴더를 붙여넣기 합니다.

 

🔹프로젝트명 : PluginTest (새로 본인이 알아보기 편한 프로젝트로 만드셔도 됩니다 ^^;;)

🔹플러그인이름 : TestPlugin

 

플러그인에 모듈 장착

 

이전에 TestPlugin 모듈의 헤더와 소스파일에 주석처리하며 수정했던 내용을 다시 원상태로 돌려놓습니다. 아래 소스코드를 참고하여 수정하시길 바랍니다. (Visual Studio가 아닌 텍스트 편집기를 이용해주세요)

 

// TestPlugin.h

#pragma once

#include "CoreMinimal.h"
#include "Modules/ModuleManager.h"

class FTestPluginModule : public IModuleInterface
{
public:

	/** IModuleInterface implementation */
	virtual void StartupModule() override;
	virtual void ShutdownModule() override;
};
// TestPlugin.cpp

// Copyright Epic Games, Inc. All Rights Reserved.

#include "TestPlugin.h"

#define LOCTEXT_NAMESPACE "FTestPluginModule"

void FTestPluginModule::StartupModule()
{
	// This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module
}

void FTestPluginModule::ShutdownModule()
{
	// This function may be called during shutdown to clean up your module.  For modules that support dynamic reloading,
	// we call this function before unloading the module.
}

#undef LOCTEXT_NAMESPACE
	
IMPLEMENT_MODULE( FTestPluginModule, TestPlugin );

 

위와 같이 파일 수정을 마친 뒤 저장하고, .uproject 파일을 우클릭하여 'Generate Visual Studio project files'를 수행합니다. 그리고 Visual Studio를 실행하여 프로젝트 빌드를 수행합니다. 그리고 TestPlugin .uplugin을 선택하고 아래의 코드를 추가합니다. (Modules 부분)

 

{
	"FileVersion": 3,
	"Version": 1,
	"VersionName": "1.0",
	"FriendlyName": "TestPlugin",
	"Description": "",
	"Category": "Other",
	"CreatedBy": "",
	"CreatedByURL": "",
	"DocsURL": "",
	"MarketplaceURL": "",
	"SupportURL": "",
	"CanContainContent": true,
	"IsBetaVersion": false,
	"IsExperimentalVersion": false,
	"Installed": false,
	"Modules": [
		{
			"Name": "TestPlugin",
			"Type": "Runtime",
			"LoadingPhase": "Default",
			"WhitelistPlatforms": [
				"Win64",
				"Win32"
			]
		}
	]
}

 

플러그인 Modules 부분의 'WhitelistPlatforms'를 추가해주시면 됩니다.(콤마 항상 확인. 윗줄의 "Default",) 보시면 대충 감이 오실겁니다. 해당 플러그인의 빌드 타겟 플랫폼을 설정하는 것인데 이것을 하지 않을 경우 모든 플랫폼(Android, iOS 등)에 대한 모든 타겟 플랫폼을 빌드하여 라이브러리를 생성합니다. 그래서 특정 타겟 플랫폼을 지정해주는 것입니다.

 

만약 타겟 플랫폼을 지정하지 않고 아래에서 설명할 플러그인 패키징을 수행하면, 안드로이드를 타겟으로 빌드할 때 Android SDK가 설치되어 있지 않다는 아래와 같은 오류가 발생하고, 패키징 빌드가 실패합니다.

ERROR: Platform Android is not a valid platform to build. Check that the SDK is installed properly.

 

.uplugin을 위와 같이 수정하고 나서 파일 저장하고 언리얼 프로젝트를 실행합니다. (마찬가지로 빌드하실 필요는 없습니다.) 프로젝트를 실행하면 콘텐츠 브라우저에서 TestPlugin의 C++ 클래스 폴더를 확인할 수 있습니다.

 

상단 메뉴들 중 [편집] - [플러그인]을 클릭하여 플러그인 창을 띄웁니다. 그리고 맨 아래 Other 카테고리를 선택하면 TestPlugin이 우측에 나타납니다. 여기서 우측 하단에 '편집...'을 누르면 플러그인에 대한 설명이나 설정을 할 수 있으며, 바로 옆에 '패키지...'를 누르면 플러그인 패키징을 하여 배포형태로 만들 수 있습니다.

 

플러그인 패키징

 

패키지를 누르면 패키징 Output 데이터를 어디에 놓을지 경로를 선택하면 패키징을 시작합니다. 이때 주의할 점은 언리얼 버전에 맞는 Visual Studio가 설치되어 있어야 합니다. 너무 하위이거나 너무 상위 버전이면 에러출력하며 패키징이 실패합니다. 관련하여 아래 언리얼 도큐먼트 링크 참고하시길 바랍니다.

 
 

언리얼 엔진용 Visual Studio 구성

언리얼 엔진 4 에서 작동하도록 Visual Studio 를 구성하는 팁입니다.

docs.unrealengine.com

 

패키징이 완료되면 지정한 경로에 TestPlugin 폴더가 생성된 것을 볼 수 있습니다. 

패키징한 플러그인과 지정한 빌드타겟(Win32_64)으로 빌드폴더 생성 확인

 

이제 이 플러그인을 다른 프로젝트에 사용하는 방법에 대해서 알려드리겠습니다. 먼저 패키징한 플러그인 폴더를 복사합니다. 그리고 사용 중인 혹은 개발할 언리얼 엔진 버전 폴더로 이동합니다. 정확한 플러그인을 붙여넣기할 경로는 아래와 같습니다. (설치 드라이브와 버전이 다를 수 있습니다.)

C:\Program Files\Epic Games\UE_4.26\Engine\Plugins\MarketPlace

 

만약 'MarketPlace' 폴더가 없을 경우 만들어주시면 됩니다. 그리고 그 안에 TestPlugin을 붙여넣기 합니다. 이렇게 하면 해당 언리얼 엔진 버전의 어느 프로젝트에서든지 플러그인을 사용할 수 있습니다. 플러그인 창에 가면 '설치됨' 카테고리 항목에 TestPlugin이 보일 겁니다. 활성화를 체크하고 프로젝트를 재시작합니다. 

 

이후 콘텐츠 브라우저의 '뷰 옵션'에서 '엔진 콘텐츠 표시'를 선택하면 TestPlugin의 C++ 클래스들을 확인할 수 있습니다.

 

※ 주의할 점은 다른 언리얼 엔진 버전에서는 해당 플러그인을 접근할 수 없습니다.

※ 또한 특정 버전으로 플러그인을 패키징한 경우(예를들면, 4.26) 다른 엔진 버전(예를들면 4.24)에 넣어도 활성화되지 않습니다.(보이기는 하지만 리빌드 에러 메시지 출력) 즉, 버전별로 패키징을 해야 합니다. (노가다)

언리얼 엔진에 플러그인 추가 후 활성화 상태일때

 

여기까지 플러그인의 제작 및 배포 후 사용과정에 대한 포스팅을 마칩니다.

플러그인의 제작 로드맵을 다시 정리하면

1. 플러그인용 모듈 제작 (모듈 제작 프로젝트 = MakePluginModule)
  = 프로젝트 모듈로써 소스코드 작업. 플러그인 생성 X

2. 플러그인 제작 (PluginTest 프로젝트에서 Plugin 생성 및 제작한 모듈 장착)
  = 플러그인 생성. 제작한 모듈 Plugin의 Source 폴더에 넣기
  = 연결 작업(헤더와 소스파일 수정) 후 프로젝트 빌드.

3. 플러그인 패키징 빌드 (빌드 타겟 플랫폼 설정 후 패키징)
  = .uplugin의 타겟플랫폼 지정. (때에 따라 Build.cs에서도 타겟 플랫폼 코드작성 필요.)
  = 언리얼 에디터 플러그인 창에서 패키지 수행.

4. 외부 플러그인 사용
  = 패키징한 플러그인을 'C:\Program Files\Epic Games\UE_4.26\Engine\Plugins\MarketPlace' 경로에 넣고 해당 버전으로 제작된 언리얼 프로젝트를 실행하여 플러그인 활성화.
  = 또는 프로젝트에 Plugins 폴더를 생성하여 그 안에 패키징한 플러그인을 넣으면 해당 프로젝트에서만 플러그인을 바로 사용할 수 있습니다.

 

이상입니다. 가장 기초적인 플러그인 제작 방법을 설명한 것이므로 나머지 작업(소스코드 작업, 특정 플랫폼 작업 등)들은 각자의 스타일에 맞게 작업을 해주시면 됩니다. 나중에 이와 관련하여 조금씩 포스팅해보도록 하겠습니다. ㅎㅎ

 

감사합니다.