메타버스SW아카데미

언리얼 프로젝트 폴더관리와 gitignore

Honey Badger 2023. 7. 5. 04:15

   저번 수업시간에 간단하게 언리얼 프로젝트를 만들고 깃헙에 올리는 과정을 학교 컴퓨터에서 실습했습니다. 깃헙에 언리얼 프로젝트를 올리는 과정에서 용량관계로 지워도 다시 생성되는, 버전관리를 할 필요가 없는 폴더들을 지우고 올렸습니다. 무슨 폴더들을 지운건지, 왜 특정 폴더들은 지워도 되는건지, 우선 간단히 설명해보겠습니다. 

 

 

 

언리얼 프로젝트의 폴더(C++기준)

 

 

 5.1버전을 기준으로 빈프로젝트 생성시 다음과 같이 11개의 파일 혹은 폴더가 생성됩니다.

핑크색으로 표시된 폴더들이 지우면 안되는 폴더,  노랑색으로 표시된 폴더들이 지워도 되는 폴더입니다. 

 

 

1. .vs폴더 : 숨김 설정이 되어있는 폴더로, 해당 프로젝트를 VS에서 실행할 때 초기화 및 데이터 구조 등을 기록하여 추후 솔루션 파일을 실행할 때 불러오기 과정을 단축하기 위한 용도입니다. 지워도 솔루션 파일을 실행하거나 uproject파일로 Generate Visual Studio project를 해주면 다시 생성됩니다. 

 

2. Binaries 폴더 : 컴파일된 이진 파일이 저장되있는 폴더. 실행파일(.exe)과 프로젝트를 빌드할 때 생성되는 추가적인 동적 연결 라이브러리(.dll)나 공유 객체 파일(.so)등이 포함되어 있습니다. 지워도 uproject파일 실행시 Missig- 팝업이 생성되고 여기서 yes를 누르면 다시 파일 생성 가능합니다.pdb, exe, dll, 빌드 결과물들이 저장되는 곳. 

 

3. Config 폴더 : 프로젝트의 언리얼 환경설정 파일을 담고 있는 폴더입니다. 프로젝트를 작업하다보면 입력,오디오,그래픽 등 다양한 설정값을 변경하게 되는데 이러한 내용이 해당 폴더에 저장됩니다. 

 

4. Content 폴더 : 프로젝트에서 사용되는 모든 에셋(리소스)를 포함하는 매우 중요한 폴더입니다. 

 

5. DerivedDataCache 폴더 : 언리얼 엔진이 빌드 과정에서 생성된 중간 파일과 캐시 데이터를 저장하는 폴더입니다. 이 폴더에는 전처리된 셰이더 파일, 컴파일된 머터리얼 등이 포함됩니다. 이전에 처리된 데이터를 재사용할 수 있게 하기 때문에 빌드 시간을 단축시키는 데 도움을 줍니다. 

 

6. Intermediate 폴더 : 프로젝트 빌드 시 생성되는 중간 파일들(컴파일된 코드, 임시 파일, 기타 빌드 관련 파일 등)이 여기에 위치합니다. 주로 엔진이 내부적으로 사용하는 임시 파일들로 지워도 에디터 실행 시 자동으로 재생성됩니다. 

빌드를 하는데 필요한 파일들(Batch파일, 빌드 스크립트, 작업 파일들)

 

7. Saved 폴더 : 프로젝트 작업 중 생성되는 임시 파일 및 저장된 데이터(로그 파일, 임시 캐시 파일, 백업파일, 스크린샷 등)이 여기에 저장됩니다. 지워도 되지만 설명한 데이터들이 사라짐을 명심하시기 바랍니다. 

 

8. Source 폴더 : 우리가 작성한 C++ 코드가 담기는 곳입니다. 프로젝트의 모듈 소스와 빌드 파이프라인 C# 소스파일 등이 들어있습니다. 

 

9. .vsconfig 파일 : VS에서 사용되는 구성 파일입니다. VS의 버전과 프로젝트에 대한 구성을 지정합니다. 

 

10. .sln파일 : VS솔루션 파일입니다. 

 

11. .uproject파일 : 언리얼 엔진 프로젝트 이름, 엔진 버전, 사용되는 플러그인 등의 정보를 포함하고 있습니다. 언리얼 엔진이 프로젝트를 인식하고 로드할 수 있게 합니다. 더블 클릭하여 실행할 수 있습니다. 

 

 

 

 

 

언리얼의 gitignore

 

  위에서 설명한 것처럼 지워도 다시 생성되는 임시 파일 등을 굳이 깃으로 버전관리하지 않는 것이 미관상으로도 깔끔하고, 효율성 면에서도 유리합니다. 따라서 깃허브에서 자동으로 생성해주는 언리얼의 .gitignore파일을 열어보면 해당 폴더, 파일들이 버전관리에서 제외된 것을 확인할 수 있습니다. 

깃 허브에서 제공하는 언리얼 .gitignore파일의 일부 캡처본

 

 

 

 

 

 

 

 

문제

 

분명 gitignore을 통해 Intermediate폴더를 버전관리에서 제외했음에도 불구하고 이 폴더를 비롯한 여러개의 파일에서 100개의 변경사항이 깃에 잡힌 것을 확인할 수 있습니다. 왜 이런 일이 발생했을까요?

 

 

 

 

 

 

원인 및 해결

 

 

 

원인

그 이유를 살펴보려면 우선 깃 폴더의 구조를 살펴볼 필요가 있습니다. 

빨간색으로 표시된 현재 폴더가 깃으로 버전관리중인 'UnrealProject1'폴더입니다.

파란색으로 표시된 폴더가 언리얼 프로젝트 폴더입니다.

 

  gitignore가 제대로 동작하지 않은 이유는 .gitignore에서 명시하고 있는 각종 디렉토리, 파일들은 파랑폴더 위에 보이는 .git 폴더를 기준으로 레퍼런싱하는 상대 경로이기 때문입니다.

  따라서 gitignore의 상대경로를 일일히 수정하거나 프로젝트 파일내용을 바로 깃폴더에 때려박는 것도 한가지 방법이 될 수 있습니다. 상대경로를 수정하긴 귀찮으니 후자의 방법을 택해보겠습니다. 

 

해결법1

.git, .gitignore, .gitattributes 파일을 언리얼 폴더 내에 넣어주었습니다. 이 경우 깃허브에서 폴더 인식을 제대로 하지 못하지 깃폴더 경로를 다시 지정해주어야 합니다. 

언리얼 관련과 깃관련 파일들이 섞이니 보기가 안 좋습니다. 요즘 디자인패턴을 공부했더니 마치 물리코드와 UI코드가 한 곳에 있는 것 같은 느낌이 드네요. 일단 gitignore파일을 수정하고 추후에 선배님께 어떤 방법이 맞는지 여쭤봐야 할 것 같습니다. 

  선배님 깃허브를 보니 전자의 방법을 사용했네요! git파일들은 다시 볼일이 거의 없으니 숨김 해놓으시면 좀 더 깔끔한 폴더관리가 가능할 것 같습니다.

 

 

 

해결법 2

 gitignore파일 수정 : 일단 임시로 당장 ignore되지 않은 파일들의 상대경로만 다음과 같이 수정해 추가해주었습니다. 

 

 

 아까 100개가 넘던 Change(버전관리에서 제외되어야 할 것들)가 사라지고 깔끔해진 깃허브를 확인할 수 있습니다. 

 

 

 

 

모두들 화이팅!!

'메타버스SW아카데미' 카테고리의 다른 글

Reflection System 이란?  (2) 2023.07.13
GitHub란 무엇일까?  (0) 2023.07.04