본문으로 건너뛰기
GAME DEVELOPMENT · UNREAL ENGINE 5 ARCHITECTURE36강 학습 가능

Unreal Engine 모듈 · 플러그인 개발

프로젝트에 붙어 있는 C++ 기능을 빌드·의존성·로드 경계로 분리하고, 다른 프로젝트에서도 활성화·컴파일·실행할 수 있는 Runtime 및 Editor 플러그인으로 완성합니다. 플러그인 생성 마법사보다 Unreal Build Tool의 의존성 그래프와 배포 후 검증을 중심으로 학습합니다.

강의 수36강
난이도심화
최종 결과물재사용 가능한 Runtime 상호작용 플러그인과 Editor 데이터 검증 플러그인
진행률을 불러오는 중...
학습 시작

과정에서 해결하는 문제​

기능이 동작해도 게임 모듈의 Character, 프로젝트 Config와 특정 에셋 경로를 직접 참조하면 다른 프로젝트로 옮기는 순간 컴파일이 깨집니다. 반대로 모든 헤더와 의존성을 Public으로 공개하면 빌드 시간이 늘고 구현 세부가 외부 계약이 됩니다. 이 과정은 무엇을 공개 API로 유지하고, 어떤 의존성을 Private으로 숨기며, Runtime과 Editor를 어디서 분리할지를 실제 두 플러그인으로 검증합니다.

모듈은 코드의 빌드·의존성·로드 단위이고, 플러그인은 하나 이상의 모듈과 선택적 Content·Config·Resources를 묶는 활성화 가능한 기능 패키지입니다. 둘을 같은 뜻으로 사용하지 않고, UBT가 만드는 모듈 그래프와 Plugin Descriptor가 정하는 로드 범위를 따로 추적합니다.

선수 지식​

  • Unreal Engine C++ 기초집 완료 또는 동등한 프로젝트 경험
  • C++ 클래스, 헤더와 CPP, 상속, 포인터·참조와 Forward Declaration
  • UCLASS, USTRUCT, UPROPERTY, UFUNCTION과 generated.h 기초
  • Actor, ActorComponent, UObject와 Subsystem의 수명·책임
  • Visual Studio 또는 Rider에서 C++ 프로젝트를 생성하고 Development Editor 빌드를 실행한 경험

멀티플레이 지식은 필수가 아닙니다. 상호작용 기능을 네트워크 게임으로 확장하려면 이 과정을 마친 뒤 Unreal Engine 멀티플레이 과정으로 이어갑니다.

권장 학습 환경​

  • Unreal Engine 5 계열 C++ 프로젝트와 프로젝트가 사용하는 정확한 엔진 버전의 공식 문서
  • Visual Studio 2022 또는 Unreal C++를 지원하는 Rider
  • Git으로 관리되는 실습 프로젝트와 별도의 빈 C++ 검증 프로젝트
  • Editor, Development Editor, Development Game 또는 패키징 빌드를 구분할 수 있는 환경
  • 코드 플러그인 두 개를 복사해도 경로가 겹치지 않는 짧은 ASCII 프로젝트 경로

메뉴, UAssetDefinition, Data Validation 함수 시그니처와 빌드 규칙은 UE5 세부 버전에 따라 달라질 수 있습니다. 예제는 UE 5.8 공식 문서를 기준으로 설명하되, 실제 프로젝트 버전의 Engine 헤더와 API Reference를 최종 근거로 사용합니다.

최종 결과물​

1. ReusableInteraction Runtime 플러그인​

프로젝트 Character를 직접 참조하지 않는 상호작용 인터페이스와 Scanner Component를 제공합니다. Trace 채널·거리·디버그 옵션은 UDeveloperSettings와 Config로 관리하며, Blueprint에는 요청 API와 확장 이벤트만 노출합니다. 서버 권한 프로젝트에서는 호출자가 이 API 위에 권한 검증을 추가할 수 있도록 C++ 경계를 유지합니다.

2. DataGuard Editor 플러그인​

ToolMenus와 Dockable Tab에서 검사 범위를 선택하고 Asset Registry로 후보를 모읍니다. UEditorValidatorBase 규칙이 잘못된 이름·누락된 필수 데이터·금지된 참조를 Message Log와 Data Validation 결과로 보고합니다. Editor 모듈만 사용하므로 Shipping 게임에 포함되지 않습니다.

3. 이식·배포 검증 기록​

두 플러그인을 원본 프로젝트 밖으로 패키징한 뒤 빈 C++ 프로젝트의 Plugins/에 설치합니다. 원본 게임 모듈 이름이 남지 않았는지 검색하고, 플러그인 활성화, IDE 프로젝트 갱신, Editor 빌드, Runtime 실행, Data Validation과 Development 패키징 결과를 기록합니다.

36강 커리큘럼​

강의주제누적 결과물
1모듈과 플러그인은 왜 필요한가프로젝트 기능 분리 후보 지도
2Unreal Build Tool과 UnrealHeaderTool의 빌드 흐름UBT·UHT 실패 단계 진단표
3Target, Module, Plugin 구조 읽기빌드·로드 구조 트리
4.Build.cs와 모듈 의존성최소 의존성 Build.cs
5Public·Private와 헤더 공개 범위공개 API 목록
6API 매크로와 모듈 경계외부 모듈 사용 클래스
7IModuleInterface 수명안전한 등록·해제 모듈
8LoadingPhase 선택로딩 단계 결정 기록
9새 Runtime 모듈 추가독립 GameplaySupport 모듈
10Runtime·Editor·Developer 분리실행 대상별 모듈 설계
11순환 의존성·Include 해결비순환 의존성 그래프
12Forward Declaration 실전경량 Public 헤더
13로그와 빌드·로드 디버깅모듈 전용 로그 카테고리
14.uplugin Descriptor두 모듈 플러그인 Descriptor
15Content Only와 Code Plugin플러그인 유형 선택 기록
16Project와 Engine Plugin설치 범위 결정표
17Runtime 플러그인 생성ReusableInteraction 뼈대
18Editor 플러그인 생성DataGuard 뼈대
19Plugin Module 의존성Runtime→Editor 역참조 없는 그래프
20UDeveloperSettings상호작용 설정 화면
21Config 범위와 기본값이식 가능한 기본 Config
22ToolMenus 명령DataGuard 메뉴·툴바 진입점
23Slate Dockable Tab검사 결과 탭
24Details Panel 커스터마이징검사 설정 편집 흐름
25Custom Asset·Factory·Asset Definition검사 규칙 Asset 생성 경로
26Data Validation자동 발견 Validator
27Asset Registry 검사비동기 수집 기반 검사 목록
28상호작용 기능 플러그인 분리프로젝트 의존성 제거
29Blueprint API와 C++ 확장 지점좁은 Blueprint 계약
30에셋·Content·입력·설정 안전성Soft Reference 정책
31테스트·로그·크래시 추적실패 재현 체크리스트
32플러그인 패키징·적용배포 폴더와 소비 프로젝트
33버전 호환성·배포 점검버전·지원 범위 문서
34실습 1: Runtime 플러그인완성된 ReusableInteraction
35실습 2: Editor 플러그인완성된 DataGuard
36최종 이식·검증빈 프로젝트 검증 보고서

전체 커리큘럼 전용 페이지 보기

공식 문서 기준​

COURSE ORIENTATION

과정 선택 안내​

학습 대상
Unreal C++ 기초를 모듈 경계와 재사용 가능한 Runtime·Editor 플러그인으로 확장하려는 학습자
선수지식
Unreal Engine C++ 입문, UObject·ActorComponent·Subsystem과 C++ 빌드 기초
최종 결과물
빈 C++ 프로젝트에서 이식 검증한 Runtime 상호작용·Editor 데이터 검증 플러그인