프로그래밍/언리얼엔진

[언리얼 엔진] 프로젝트 폴더 구조 및 용량 관리

LeePorter 2024. 9. 20. 17:59

언리얼 처음 사용할 때 프로젝트를 만들고, 패키징도 하고 나면 갑자기 증식(?)된 프로젝트 내용물을 볼 수 있습니다. 처음 언리얼 엔진을 쓰고 패키징까지 한 경우, 무슨 폴더가 어떤 역할을 하는지 알 수 없고, 이후 늘어난 용량을 관리하기가 꺼려집니다.

 

특히 프로젝트를 백업하거나 추후에 프로젝트가 여러 개 늘어나게 되면 용량 관리가 가장 곤란해지게 되고, 단순히 압축만으로는 큰 용량을 효율적으로 줄일 수 없습니다. 또한 단순히 용량만 늘어나는 것이 아닌 작은 용량의 파일들이 많기 때문에 압축 및 해제 시간도 꽤 잡아먹게 됩니다.

 

이번 글에서는 이런 폴더 구조를 파악하고, 정리하여 용량을 효율적으로 줄이는 방법을 작성해보겠습니다.


🟦 폴더 구조 (PC-Windows 기준)

아래에서 설명할 프로젝트는 PC - Windows 플랫폼 프로젝트(UE4.21 이상 버전)를 기준으로 설명하겠습니다. 그리고 프로젝트도 C++과 블루프린트 둘 다 같이 설명하도록 하겠습니다.

 

🔹초기 프로젝트 생성 직후 프로젝트 폴더 구조(C++ / BP)

C++ 프로젝트와 블루프린트 프로젝트의 생성 직 후 용량 차이. C++ 프로젝트는 엔진 소스가 추가되기 때문에 용량이 크다.
두 프로젝트 모두 빈 프로젝트로 생성.(시작 콘텐츠 없음)

 

초기에 프로젝트를 생성할 때 옵션은 빈 프로젝트로 설정하고 시작 콘텐츠를 포함하지 않았습니다. 타겟은 데스크탑/콘솔로 설정하였습니다. 이렇게하면 Blueprint 프로젝트는 .uproject 파일과 Content, Config 폴더만 가진 단순한 프로젝트 폴더 구조를 가집니다.

 

C++ 프로젝트의 경우, Blueprint 프로젝트와 달리 뭔가 많이 있습니다. 그리고 패키징까지 마친 프로젝트 폴더 구조(플러그인 포함)는 더 복잡한 폴더 구조를 가지게 됩니다.

 

※ 처음 기본 프로젝트 생성 시 Blueprint와 C++ 프로젝트의 용량이 다른 이유는 Intermediate 폴더에 들어있는 엔진 소스 라이브러리가 포함이 되어 프로젝트 빌드가 되기 때문에 용량이 큰 것입니다.

 

🔹소스빌드 + 플러그인 추가 + 패키징까지 마친 최종 프로젝트 폴더 구조(C++)

개발이 어느정도 진행되고 패키징 과정까지 거친 프로젝트의 구조.
테스트용으로 작업한 C++ 프로젝트. Plugin까지 추가한 형태로 Windows 플랫폼 프로젝트.

 

프로젝트 패키징까지 마친 프로젝트(C++ 프로젝트 기준, Blueprint 프로젝트 폴더 구조를 포함하고 있기 때문)에 플러그인까지 추가되었을 때의 폴더 구조를 가지고 설명하겠습니다.

 

 

🔹프로젝트에서 가장 중요한 파일 및 폴더(지우면 안됨!)

파일 및 폴더 설명
.uproject 파일 🔸언리얼 에디터 구동 시 해당 프로젝트에 대한 정보를 포함하고 있는 JSON 파일. 언리얼 에디터를 구동시키는 연결 파일.
Config 폴더 🔸프로젝트의 언리얼 환경설정 파일을 담고 있는 폴더
🔸지워도 에디터 실행에는 문제가 되지 않지만 만약 프로젝트를 작업한 상태에서 지웠다면 설정해놓은 설정값들은 없어지고 언리얼 엔진에서 제공하는 기본 세팅으로 적용
🔸지우고 나서 프로젝트 실행해도 Config 폴더가 생기지는 않음. Default 설정 파일들은 언리얼 엔진 폴더에 있기 때문.
Content 폴더 🔸언리얼 에디터에서 사용하는 .uasset들이 들어있는 폴더.
Plugins 폴더 🔸해당 프로젝트에서 외부 3rdParty 플러그인 혹은 자체 제작 플러그인을 사용하는 경우 직접 생성 or 프로젝트 내에서 플러그인 생성하기를 통해 폴더 생성.
🔸엔진에서 제공해주는 플러그인은 해당 프로젝트 폴더에 생성되지 않음.
Source 폴더 🔸C++ 프로젝트 전용.
🔸프로젝트의 모듈 소스와 빌드 파이프라인 C# 소스파일 등이 들어있는 폴더.

 

🔹지워도 문제 되지 않고 다시 증식(?) 되는 파일 및 폴더

파일 및 폴더 설명
.sln 🔸Visual Studio Solution 파일.
🔸.uproject 파일 선택 후 마우스 우클릭 → 팝업 메뉴에서 'Generate Visual Studio project files'를 선택하면 생성되는 C++ 프로젝트에서만 볼 수 있는 파일.
🔸Visual Studio에서 작업하기 위해서는 필요함.
🔸지워도 위에 적은 방식으로 다시 생성할 수 있음.
.vs 폴더 🔸C++ 프로젝트에서 .sln 파일과 마찬가지로 Generate 과정에서 생성되는 폴더.
🔸폴더 자체는 숨김 설정되어 있으므로 윈도우 탐색기의 폴더 옵션에서 숨김 파일 보기를 설정해야만 볼 수 있음.
🔸해당 프로젝트를 Visual Studio에서 실행할 때 초기화 및 데이터 구조 등을 기록하여 추후 솔루션 파일을 실행할 때 불러오기 과정을 단축하기 위한 용도.
🔸지워도 솔루션 파일을 실행하거나 Generate 과정을 거치면 다시 생김.
Binaries 폴더 🔸C++ 컴파일 과정을 거쳐 생성된 프로젝트에 대한 에디터 전용 DLL 파일들이 있는 폴더.
🔸그렇기 때문에 이 폴더가 없으면 .uproject를 실행시킬 때마다 에디터 실행 시 'Missing <프로젝트명> Modules' 메시지 팝업을 띄움. Yes를 누르면 컴파일 과정을 거쳐 다시 파일과 폴더를 생성하고, 에디터가 실행됨.

바이너리 데이터가 없을 경우 새롭게 프로젝트 모듈을 빌드하라는 경고창이 뜬다.
Build 폴더 🔸언리얼 프로젝트 패키징 과정을 거치면 생성되는 폴더.
🔸[언리얼 문서 - 디렉터리 구조 설명] 엔진이나 게임을 빌드하는데 필요한 파일은 물론, 플랫폼별 빌드를 만드는데 필요한 파일도 들어 있음.
🔸예를 들면, 안드로이드 플랫폼의 경우 빌드 환경 설정(프로젝트 설정 - Android) 시 자동으로 생성됨.
Intermediate 폴더 🔸언리얼 엔진 라이브러리 및 해당 프로젝트 소스 코드에 대한 빌드 과정을 거치면 생성되는 파일들이 들어있는 폴더.
🔸[언리얼 문서 - 디렉터리 구조 설명 참조] 엔진이나 게임 빌드 도중 생성된 임시 파일이 들어 있으며, 게임 디렉터리에서 셰이더는 Intermediate 디렉터리에 저장됨.
🔸임시 파일이기 때문에 지워도 에디터 실행 시 자동으로 생성됨. (시간이 조금 더 걸릴 뿐)

 

🔹지워도 문제는 되지 않지만 유지하는 게 이득인 폴더

파일 및 폴더 설명
Saved 폴더 🔸지워도 문제가 되지는 않지만 작업 시 귀찮은 부분들이 존재할 수 있음.
🔸프로젝트 작업 시 임시로 저장되는 파일들이 보관되는 장소로, 자동 저장, 스크린샷, 빌드 파일, 백업 임시 파일, 로그, SaveGames 등등 많은 데이터가 축적되는 장소
🔸언리얼 에디터 사용 시 작업의 효율성을 높이거나 복구작업, 문제 확인 등의 활용성이 높은 폴더.
🔸다만 작업이 길어지고 패키징까지 하면 용량을 꽤 많이 잡아먹음. (패키징 백업본 + Cooking 과정에서의 엔진 및 프로젝트 리소스 Cooked 데이터 등등)
🔸Saved 폴더에 저장된 파일과 폴더 들 중에서 개인적으로 Config 폴더를 제외한 나머지 파일 및 폴더를 지우고 백업하는 편. 이유는 아래에서 설명함.
 
 

언리얼 에디터에서 사용하는 색상을 저장하는 경우 Saved 폴더의 Config 폴더에 저장된다.
색상 정보같은 경우 폴더 구조 중 [Saved]-[Config] 폴더에 저장됨.

 

프로젝트 작업 후 백업 및 용량 관리를 위해서는 위에 정리한대로, 지우면 안 되는 파일 및 폴더들과 함께 Saved의 Config 폴더 정도만 유지하면 깔끔하게 용량을 최적화하여 보관할 수 있습니다.

 

프로젝트 백업 및 프로젝트 정리 할 때 폴더 용량 최적화하면 거의 1/4 수준으로 줄일 수 있다.
폴더 정리 후 압축을 하여 거의 1/3 수준으로 용량을 최적화 시킴. 압축하면 약 3GB

 

위의 이미지는 제가 예전에 작업했던 프로젝트(PC-Windows-VR, C++)의 프로젝트 용량이고, 백업 압축을 위해 폴더 정리 후의 용량 차이를 보여주고 있습니다. (8 GB → 2.81 GB)

 

더 자세한 사항은 언리얼 문서의 디렉터리 구조부분 참고하시면 됩니다.

감사합니다.

 

디렉터리 구조

엔진과 게임 프로젝트를 구성하는 디렉터리 구조에 대한 개요입니다.

docs.unrealengine.com