지난 언리얼 엔진 버전에서는 레벨 내 하나 이상의 액터를 변경하고 싶을 때 소스 컨트롤에서 파일을 체크아웃해야 했습니다. 이 경우 액터 변경 작업이 끝날 때까지 다른 팀원은 해당 파일에 접근할 수 없어서 개발 프로세스가 느려졌습니다. 한 파일에서 한 번에 한 사람만 작업할 수 있었기 때문입니다.
액터당 한 개의 파일(One File Per Actor, OFPA) 은 액터 인스턴스의 데이터를 외부 파일에 저장하여 액터 변경 시 메인 레벨 파일을 저장할 필요가 없게 함으로써 사용자 간 작업이 겹치는 상황을 줄여 줍니다.
액터당 한 개의 파일 기능은 에디터에서만 이용 가능합니다. 모든 액터는 쿠킹될 때 각 레벨 파일에 임베드됩니다.
액터당 한 개의 파일은 월드 파티션을 사용할 때 기본적으로 활성화되어 있습니다. 월드 파티션(World Partition) 레벨 밖에서 OFPA를 사용하는 것은 현재 실험단계 기능으로 간주되며 기본적으로 비활성화되어 있습니다. 월드 파티션 밖에서 OFPA를 활성화하는 방법은 다음과 같습니다.
- 메인 메뉴에서 편집(Edit) > 에디터 개인설정(Editor Preferences) 으로 이동합니다.
- 사이드바에서 실험단계(Experimental) 를 선택합니다.
- 툴(Tools) 섹션을 찾아 액터당 한 개의 파일 체크박스를 활성화합니다.
액터당 한 개의 파일 활성화하기
액터당 한 개의 파일 기능은 세분화된 방식으로 설계되어 두 가지 방법으로 사용할 수 있습니다.
첫 번째 방법은 디테일(Details) 패널에서 개별 액터에 대해 OFPA를 수동으로 활성화하는 것입니다.
경우에 따라 한 번에 한 액터씩 OFPA를 활성화해야 할 수도 있습니다. 그렇게 하려면, 디테일 패널에서 패키징 모드(Packaging Mode) 옵션을 검색하여 드롭다운 메뉴에서 외부(External) 를 선택합니다.
단일 액터에 OFPA를 활성화합니다.
이 옵션을 선택한 다음에는 레벨의 모든 액터에 이 기능을 활성화하겠냐고 묻는 메시지가 표시됩니다. 예(Yes) 를 선택하면 레벨의 모든 액터가 OFPA로 변환되며, 아니요(No) 를 선택하면 선택한 액터에 대해서만 활성화됩니다.
액터 및 레벨에 대해 새로 생성된 외부 패키지를 저장해야 합니다. 이후에는 액터를 수정해도 레벨을 다시 저장하지 않아도 됩니다.
두 번째 방법은 전체 레벨에서 액터당 한 개의 파일을 사용하도록 활성화하는 것입니다.
레벨에 OFPA를 활성화합니다.
그 절차는 다음과 같습니다.
- 월드 세팅 패널을 엽니다. 메인 메뉴에서 창(Window) > 월드 세팅(World Settings) 으로 이동합니다.
- 패널의 월드(World) 섹션으로 이동하고 외부 액터 사용(Use External Actors) 옆의 체크박스를 활성화합니다.
- 이 옵션을 활성화한 다음, 레벨을 저장합니다.
-
모든 액터를 외부 패키징으로 변환할 것인지 묻는 메시지가 표시됩니다. 예 를 선택하여 OFPA 변환을 완료합니다.
예를 클릭하여 레벨의 모든 액터를 변환합니다.
서브레벨 변환하기
레벨에 외부 액터 사용 옵션을 활성화하면 현재 레벨만 OFPA로 변환된다는 점에 유의하세요. 모든 서브레벨을 변환하려면, 서브레벨을 로드한 다음 위에서 설명한 대로 각각의 서브레벨에 외부 액터 사용 을 활성화해야 합니다. 레벨에 서브레벨이 여러 개인 경우 문제가 될 수 있으므로, 레벨과 서브레벨을 자동으로 변환하는 커맨드릿을 사용할 수 있습니다.
커맨드릿 내용입니다.
커맨드릿을 사용하려면 다음 단계를 따릅니다.
-
명령 프롬프트 창을 엽니다.
-
프롬프트에서 UnrealEditor.exe 파일이 있는 위치로 이동합니다. 예:
c:\Builds\Home_UE5_Engine\Engine\Binaries\Win64
- 다음으로, 명령을 입력합니다. 커맨드릿을 실행할 .exe 파일의 이름인
UnrealEditor.exe
로 명령어 작성을 시작합니다. -
커맨드릿의 이름과 다음 아규먼트를 추가합니다.
-run="ConvertLevelsToExternalActorsCommandlet"
은 커맨드릿 이름입니다.-nosourcecontrol
은 커맨드릿이 소스 컨트롤을 사용하지 않는다는 뜻입니다.-convertsublevels
는 커맨드릿이 맵에 있는 모든 서브레벨을 변환한다는 뜻입니다.
-
레벨의 위치로 명령을 마무리합니다.
"/Game/Maps/TestMaps/ExternalActors/MasterMap"
이 예시에서 Game 은 프로젝트의 이름이고 MainMap 은 변환할 맵의 이름입니다. - Enter 를 눌러 커맨드릿을 실행합니다. 그러면 레벨과 모든 서브레벨이 OFPA로 변환됩니다.
소스 컨트롤과 함께 OFPA 사용하기
소스 컨트롤 애플리케이션에서 작업할 때 외부 액터 파일명이 인코딩된 것을 볼 수 있을 것입니다. 이 문제를 해결하기 위해 체인지리스트 보기(View Changelist) 창을 사용하여 체인지리스트의 콘텐츠를 보고 유효성을 검사한 다음 체인지리스트를 제출할 수 있습니다.
OFPA를 사용하는 레벨에 대한 기존 체인지리스트입니다.
이 창은 기존 체인지리스트와 포함된 파일을 표시합니다. 외부 액터의 경우 인코딩된 파일 이름 대신 액터 이름, 레벨 경로 및 에셋 타입을 볼 수 있습니다.
에디터에 체인지리스트 지원이 내장되어있기 때문에 체인지리스트를 소스 컨트롤에 제출하기 전에 해당 콘텐츠의 유효성을 검사할 수 있습니다. 이 작업이 필요한 이유는 OFPA로 인해 프로젝트의 복잡도가 높아졌기 때문입니다. 예를 들면, 사용자가 여러 파일을 체크아웃하고 그중 일부만 제출하여 허상 참조를 남겨둘 수 있습니다.
언리얼 엔진에서 소스 컨트롤을 사용하는 방법에 대한 자세한 내용은 에디터 내 소스 컨트롤에서 확인할 수 있습니다.
OFPA를 사용하는 경우, 콘텐츠 및 액터 파일이 에디터 내에서 소스 컨트롤에 제출됩니다.
Perforce를 소스 컨트롤 제공자로 사용할 때만 체인지리스트가 지원됩니다.