🔸2024년 10월 추가설명
아래 내용은 '언리얼 엔진4'를 기준으로 설명한 글이며, 본인이 '언리얼 엔진5'를 사용하고 있다면 아래 리뉴얼한 블로그의 제 포스팅을 참고하여 글을 읽으시면 됩니다.
🔸언리얼 엔진5 버전에서의 프로젝트 구조 및 용량 최적화하기
언리얼 처음 사용할 때 프로젝트를 만들고, 패키징도 하고 나면 갑자기 증식(?)된 프로젝트 내용물을 볼 수 있습니다. 처음 언리얼 엔진을 쓰고 패키징까지 한 경우, 무슨 폴더가 어떤 역할을 하는지 알 수 없고, 이후 늘어난 용량을 관리하기가 꺼려집니다.
특히 프로젝트를 백업하거나 추후에 프로젝트가 여러 개 늘어나게 되면 용량 관리가 가장 곤란해지게 되고, 단순히 압축만으로는 큰 용량을 효율적으로 줄일 수 없습니다. 또한 단순히 용량만 늘어나는 것이 아닌 작은 용량의 파일들이 많기 때문에 압축 및 해제 시간도 꽤 잡아먹게 됩니다.
이번 글에서는 이런 폴더 구조를 파악하고, 정리하여 용량을 효율적으로 줄이는 방법을 작성해보겠습니다.
🟦 폴더 구조 (PC-Windows 기준)
아래에서 설명할 프로젝트는 PC - Windows 플랫폼 프로젝트(UE4.21 이상 버전)를 기준으로 설명하겠습니다. 그리고 프로젝트도 C++과 블루프린트 둘 다 같이 설명하도록 하겠습니다.
🔹초기 프로젝트 생성 직후 프로젝트 폴더 구조(C++ / BP)
초기에 프로젝트를 생성할 때 옵션은 빈 프로젝트로 설정하고 시작 콘텐츠를 포함하지 않았습니다. 타겟은 데스크탑/콘솔로 설정하였습니다. 이렇게하면 Blueprint 프로젝트는 .uproject 파일과 Content, Config 폴더만 가진 단순한 프로젝트 폴더 구조를 가집니다.
C++ 프로젝트의 경우, Blueprint 프로젝트와 달리 뭔가 많이 있습니다. 그리고 패키징까지 마친 프로젝트 폴더 구조(플러그인 포함)는 더 복잡한 폴더 구조를 가지게 됩니다.
※ 처음 기본 프로젝트 생성 시 Blueprint와 C++ 프로젝트의 용량이 다른 이유는 Intermediate 폴더에 들어있는 엔진 소스 라이브러리가 포함이 되어 프로젝트 빌드가 되기 때문에 용량이 큰 것입니다.
🔹소스빌드 + 플러그인 추가 + 패키징까지 마친 최종 프로젝트 폴더 구조(C++)
프로젝트 패키징까지 마친 프로젝트(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 폴더 정도만 유지하면 깔끔하게 용량을 최적화하여 보관할 수 있습니다.
위의 이미지는 제가 예전에 작업했던 프로젝트(PC-Windows-VR, C++)의 프로젝트 용량이고, 백업 압축을 위해 폴더 정리 후의 용량 차이를 보여주고 있습니다. (8 GB → 2.81 GB)
더 자세한 사항은 언리얼 문서의 디렉터리 구조부분 참고하시면 됩니다.
감사합니다.