SilvervineUE4Lua (1) uplugin 파일 분석
들어가며
모든 언리얼 플러그인은 .uplugin 파일을 가지고 있습니다.
이는 플러그인 디스크럽터라고 불리는데, 플러그인의 명세서 같은 것 입니다.
엔진 혹은 프로젝트를 실행할 때, Plugin 폴더의 .uplugin 파일을 찾고 그 내용을 읽어서 로드합니다.
그러면 이제 SilvervineUE4Lua
(이하 실버바인)을 UE5 버전으로 포팅하기 위한 첫번째 단계로 .uplugin
파일을 살펴보겠습니다.
기존의 프로젝트는 다음 링크를 참고 해주세요.
SilvervineUE4Lua
UPLUGIN
1 | { |
.uplugin 파일은 JSON 형식을 띄고 있으며 크게 두 구역으로 나눌 수 있습니다.
파일 포맷 영역, 모듈 스크립터 영역으로 구분할 수 있습니다.
먼저 파일 포맷 영역을 보겠습니다.
파일 포맷 영역
1 | { |
파일 포맷의 키 값은 다음 API 레퍼런스를 따릅니다.
FPluginDescriptor
아마 마지막 5개의 키 값을 제외하곤 어떤 값을 입력해야 할 지 알아보실 수 있을 겁니다. 그러면 5개만 빠르게 설명하겠습니다.
EnabledByDefault
- 플러그인의 활성화 여부
true
: 모든 프로젝트에서 이 플러그인은 기본적으로 활성화됩니다.false
: 기본적으로 비활성화 됩니다.
CanContainContent
- 플러그인에 콘텐츠(에셋, 사운드, 이미지 등)을 포함할 지 여부
true
: 플러그인에 콘텐츠가 포함될 수 있습니다.false
: 플러그인에 콘텐츠가 포함될 수 없습니다. (코드만 가능)
IsBetaVersion
- 플러그인의 베타 버전 표시 여부
true
: 플러그인이 베타 버전임을 나타냅니다.false
: 플러그인이 베타 버전이 아님을 나타냅니다.
Installed
- 플러그인이 엔진 위에 설치되었는지 여부
true
: 플러그인이 설치되어 있습니다.false
: 플러그인이 설치되어 있지 않습니다.
CanBeUsedWithUnrealHeaderTool
- 플러그인의 C++ 코드가 UHT 에 의해 처리될 수 있는지 여부
true
: C++ 코드가 UHT에 의해 처리될 수 있습니다.false
: C++ 코드가 UHT에 의해 처리되지 않습니다.
모듈 스크립터 영역
1 | { |
모듈 스크립터에 대한 것은 다음 링크에서 확인하실 수 있습니다.
FModuleDescriptor
실버바인 플러그인의 모듈은 크게 세 가지로 나눌 수 있습니다. Lua
, LuaEditor
, LuaCodeGen
입니다.
이들 각각의 기능을 살펴보면 다음과 같습니다.
Lua
: 메인 모듈로, Lua 스크립팅 언어를 엔진에서 사용할 수 있도록 합니다.LuaEditor
: LuaVM 에셋을 에디터 상에서 uasset 파일로 생성할 수 있는 기능을 제공합니다.LuaCodeGen
: Lua 코드를 C++ 코드로 변환하여 처리하는 모듈입니다.
이제 각 모듈의 설정에 대해 살펴 보겠습니다.
SilvervineUE4Lua
- Type - Runtime
- 프로그램을 제외한 모든 대상에 로드되는 모듈입니다.
- LoadingPhase - PreDefault
- Default 페이즈 전에 실행됩니다.
- Defalut 페이즈는 엔진 초기화 중, 게임 모듈 로드 후 입니다.
SilvervineUE4LuaEditor
- Type - Editor
- 에디터가 시작할 때만 로드되는 모듈입니다.
- LoadingPhase - Defulat
- Default 페이즈에 실행됩니다.
SilvervineUE4LuaCodeGen
- Type - Program
- 독립 실행형 프로그램에서만 로드됩니다.
- 에디터나 게임 런타임에서는 로드되지 않습니다.
- LoadingPhase - PostConfigInit
- 엔진이 완전히 초기화되기 전, 구성 시스템이 초기화된 직후 로드됩니다.
포팅을 하기 위한 첫 발걸음으로 .uplugin 파일을 살펴보았습니다.
앞으로 갈 길이 멀어보이지만 하나씩 하다보면 완성할 수 있겠죠? 열심히 해보겠습니다.
이 블로그의 모든 글은 CC BY-NC-SA 4.0 라이선스를 따르며, 별도로 명시되지 않는 한 모든 권리를 보유합니다. 재배포 시 출처를 명시해 주세요: You're locked. Xerlocked..
댓글