[딥 락 갤럭틱 모드 개발] Part 2. 프로젝트 기반 작업 및 환경 설정

이 글은 딥 락 갤럭틱 모드 개발 두 번째 단계로, 프로젝트 구조 이해부터 UEE(언리얼 에디터)에서의 기본 파일 생성, ModHub 위젯과 Actor 설정, 자동화 스크립트를 활용한 테스트 실행까지 초기 환경을 세팅하는 과정을 안내합니다.

[딥 락 갤럭틱 모드 개발] Part 2. 프로젝트 기반 작업 및 환경 설정

이전 단계

참고 사항

모드 개발 편의를 위하여, ModHub라는 Mod framework을 사용하는 가이드 입니다. ModHub 없이도 모드 개발은 가능하지만, 여러 편의를 위하여 ModHub를 사용 할 것을 권장 합니다.

프로젝트 구조

이전 단계에서 압축 해제 한 DRGModkitU38P10 폴더 내용은 아래와 같습니다.

우리가 집중해야 하는 파일 및 폴더는 아래와 같습니다.

FSD.uproject - UEE(Unreal Engine Editor)가 설치 된 환경에서, 더블클릭을 통해 프로젝트를 로딩 할 수 있습니다.

Content - 모딩에 필요한 위젯 및 리소스 파일들이 위치합니다. 더불어 작성 할 모드의 폴더 또한 Content 폴더 하부에 구성 됩니다.

Source - DRG에서 제공하는 클래스들 및 UEE에서 활용 가능한 property, method들을 확인 할 수 있습니다. 코드 구현부는 모두 비어있는 채로 제공 됩니다.

DRGModdingAuthmationScripts - UEE를 통해 cooking(compiling), 패키징 및 로컬 배포, 테스트 실행 등 기억하기 어려운 절차들을 통합 실행 시켜주는 스크립트 및 설정 파일들이 위치합니다. 절차가 꽤나 복잡하므로, 이 스크립트를 사용하는것을 강력히 권장합니다.

UEE 상에서 기본파일 생성 (mod hub)

FSD.uproject 파일을 더블클릭하여 UEE를 실행합니다. 초기 실행 화면은 아래와 같습니다.

UEE 하단의 Content Browser에서, root(Content) 위치에 Mod 이름으로 된 폴더를 하나 생성 합니다. Content Browser에 마우스 우클릭 -> New Folder 메뉴를 클릭하여 생성 할 수 있습니다. 본 예제에서는 'MyMod' 라는 이름을 사용 합니다.

폴더 생성 후 폴더 내부로 이동하여, 마우스 우클릭 -> Blueprint Class -> Actor를 선택하여, InitSpacerig, InitCave 라는 두 파일을 생성합니다.

InitSpacerig - 플레이어가 우주선에 진입 시 해당 Actor가 자동으로 Spawn 됩니다.

InitCave - 플레이어가 동굴에 진입 시 해당 Actor가 자동으로 Spawn 됩니다.

IHub Page Widget 생성

ModHub에 Configuration 화면으로 사용 될 User Widget을 추가해야 합니다.

Content Browser에서 마우스 우클릭 -> User Interface -> Widget Blueprint를 클릭하여 widget을 추가 합니다. 본 예제에서는 MyModConfig라는 이름을 사용 했습니다.

생성 된 파일을 더블클릭하여 Editor를 오픈하고,

화면 우상단의 Graph를 클릭하여 graph mode로 진입, Class Settings 클릭 후 화면 좌하단의 Details 창에서 Interfaces -> Add 를 클릭하여 IHubPageWidget을 선택 해 줍니다.

인터페이스가 올바르게 추가 되었다면, 화면 좌상단의 Interface -> Hub Page Widget 인터페이스가 잘 추가 된 것을 확인 할 수 있습니다. Get Page Info를 더블 클릭하여, HubMod 상에 보여질 내 Mod 설정 페이지의 이름을 입력합니다.

IHubMod Actor 생성

ModHub에 나의 모드를 등록하기 위해, 인터페이스를 상속 받아 구현해야 합니다.

먼저, 마우스 우클릭 -> Blueprint Class -> Actor를 선택 하고, 모드 이름을 지정 합니다. 본 예제에서는 MyMod라는 이름을 사용 했습니다.

MyMod Actor 파일을 더블 클릭하여 Editor를 열어줍니다.

화면 상단의 Class Settings를 클릭하고,

우측 Details 창에서, Interfaces -> Add -> IHubMod 를 추가 합니다.

정상적으로 Interface가 추가 되었다면, 화면 좌측 My Blueprint -> Interfaces -> Hub Mod 인터페이스들이 추가 된 것을 확인 할 수 있습니다.

먼저, Get Mod Info를 더블 클릭 후, Return Node 내 값들을 채워 줍니다.

Get Mod Pages를 더블 클릭 후, Return Node의 Hub Pages pin을 드래그 한 뒤, Promote to variable을 선택하여 멤버 변수를 생성 해 줍니다.

그 다음은, IHubMod의 초기화 구현을 넣어줘야 합니다. 보통 Actor들의 initializing 동작은 BeginPlay Event에 연결합니다. Actor가 생성되면 ActorBeginOver, Tick 이벤트도 기본 생성 되지만, 이 예제에서는 사용을 하지 않으므로 제거 합니다. (해당 node를 클릭 후 delete 키를 눌러 삭제 할 수 있습니다)

에디터 배경을 우클릭 후 Create Widget 노드를 클릭하여 생성 해 줍니다.

이후, 앞서 생성 했던 MyModConfig 위젯 클래스를 선택 해 줍니다.

BeginPlay의 Action pin을 방금 생성한 Construct Object From Class 노드의 Action in pin에 연결 해 줍니다.

앞서 동작은 Widget 객체의 생성 입니다. 이후, HubMod로 전달되는 멤버 배열 변수에 생성 한 Widget을 추가 해 주어야 합니다.

화면 좌측 My Blueprint 창에서, Hub Pages 변수를 드래그 하여 Getter node를 생성 합니다.

Hub Pages Getter node의 출력핀을 드래그하여, Array -> Add Node를 추가 합니다.

Construct node의 Action out pin과 Return Value pin을 아래 그림과 같이 연결 해 줍니다.

IHubMod Actor Spawn

앞서 생성 한 IHubMod가 게임 진입 시 Spawn 될 수 있도록, InitSpacerig, InitCave Actor에 Spawn 연결을 해 주어야 합니다.

InitSpacerig, InitCave 각각의 Blueprint에 아래와 같이 Spawn Actor from Class 노드를 생성 및 연결 해 주고, Spawn Transform 값도 연결 해 줍니다. Make Transform 노드는 Spawn Transform 핀을 드래그하여 생성 할 수 있습니다.

테스트 스크립트 설정 및 실행

앞서 설명 되었듯, 이 예제에서는 DRGModdingAutomationScripts를 사용합니다. 앞서 프로젝트 경로에 스크립트 폴더가 위치하고 있습니다.

스크립트 폴더 내 Config 설정이 선행 되어야 합니다.

Configs/GlobalConfig.init 파일을 열어 ModName을 내 mod 이름으로 수정 해 줍니다. 본 예제에서는 MyMod를 사용 했습니다.

Config/LocalConfig.ini 파일을 열어, UnrealEngineLocation을 수정 해 줍니다. 내 장치에 설치 된 Unreal Engine 경로를 입력 합니다. 본 예제에서는 D:\source\game\ue\Engine\UE_4.27 값을 사용 했습니다. 혹여나 Steam 설치 경로가 다르다면 함께 조정 되어야 합니다.

PakWhiteList.ini 파일을 열어, 앞서 추가한 내 mod 파일 경로를 입력합니다. 본 예제에서는 ../Content/MyMod 경로를 사용 했습니다.

Config 설정이 완료 되었으면, 테스트 실행을 해 볼 차례 입니다. Powershell을 열어 DRGModdingAutomationScripts 폴더로 이동 합니다. 파일 탐색기에서, Shift 우클릭을 통해 컨텍스트 메뉴를 열면, 더 쉽게 해당 폴더 위치에서 Powershell 창을 열 수 있습니다.

Powershell 창에서 QuickTestMod.bat 파일을 실행하여, 앞서 작성 한 Mod의 동작을 테스트 할 수 있습니다.

QuickTestMod.bat 스크립트가 실행이 완료되면, 아래와 같이 성공 메세지가 확인 된 후 DRG 게임이 자동 실행 됩니다.

게임 진입 화면에서, 우하단 Mod 설정 버튼을 눌러, Mod 설정 화면을 열어주고, 이곳에 새로 만든 Mod를 찾아 활성화 해줍니다.

게임에 진입 한 후, H키를 눌러 ModHub 창을 열면, 작성한 Mod가 목록에 확인 됩니다. MyModConfig Widget에는 아무 컨텐츠도 추가하지 않았기에 비어있는것이 정상입니다.

다음 단계

  • Part 3. 랜덤 미션 선택기 구현해보기

Subscribe to ModGo

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe