오늘은 언리얼 엔진에서 프로젝트를 처음 생성했을 때 만들어지는 폴더 구조와 빌드는 어떻게 하는지 등에 대해서 알아보았다.
프로젝트를 처음 생성했을 때 알아두면 좋을 정보들이라고 생각한다.
프로젝트 생성
우리는 최대한 깔끔한 상태의 프로젝트를 생성하는 것이 목표이기 때문에 Games에서 Blank를 선택해준다.
그리고 C++로 개발을 할거라 C++을 선택해주고, 본인의 데스크탑이나 컴퓨터 성능에 따라 Maximum 또는 Scalable을 선택해준다.
그리고 Starter Content는 체크해제시켜준다. (만약 이 Start Content가 필요하다면 추후에 프로젝트에서 추가하는 방법도 있으니 참고하면 좋을 것 같다.)
이렇게 프로젝트를 생성하면 자동으로 폴더가 생성되는 구조를 볼 수 있는데, 이 폴더들은 뭘 저장하는지 알아볼 것이다.
프로젝트 전체 폴더 구조(실제구조)
- Source 폴더 : 작성한 스크립트들 저장
- Content 폴더 : 블루프린트, 에셋들을 저장
- sln 파일 : 비주얼 스튜디오 솔루션 파일
- .uproject 파일 : 언리얼 에디터 파일
- Binaries 파일 : 빌드했을 때 실행파일, dll 파일 등 저장
- Config 폴더 : 설정 파일들 저장
- DerivedDataCache 폴더 : 캐시 데이터 저장
- Intermediate 폴더 : 중간에 빌드 임시 파일 저장
- Saved 폴더 : 스크린샷이나 로그 등을 저장
솔루션의 폴더 구조와 프로젝트 폴더 구조가 다른 이유?
그런데 솔루션을 열어보면 비주얼 스튜디오 상에서는 또 폴더 구조들이 조금 다른게 보일 것이다.
그 이유는 비주얼스튜디오에서 빌드를 편하게 할려고 일종의 가상의 구조로 재구성한 것이라 그렇다고 한다.
sln 상에서의 폴더 구조
- Engine 폴더 : 언리얼 엔진의 코어 코드가 들어있음(엔진의 코어 기능을 커스텀하고 싶을 때 건드림)
- Games 폴더 : 실제 개발자들이 개발을 하는 폴더
- Programs 폴더 : 게임 외 서버나 유틸리티 프로그램들이 담겨있음
- Rules 폴더 : 게임 모듈들의 빌드 규칙을 담아놓음
- Visualizers 폴더 : 디버깅할 때 언리얼의 자료구조를 편하게 하기 위한 파일 설정들이 저장되어있음
선택되어있는 부분이 프로젝트의 루트 폴더라고 생각하면 된다.
선택된 폴더에서 대부분의 개발작업을 진행하게 된다.
Unreal에서의 빌드 프로세스
Unreal 엔진에서 빌드를 할 때의 진행 과정은 다음과 같다.
c 파일 수정 → 빌드(컴파일 + 링크) → DLL 파일(빌드를 한 결과물이 저장) 생성 → 언리얼 에디터
다음으로 비주얼 스튜디오 상단에 디버깅을 할 수 있는 모드가 많은데 다 어떤 역할들을 하는걸까?
디버깅모드
- DebugGame : 디버그에 대해 최적화된 모드(디버그에 대한 모든 것들을 가지고 좀 세부적으로, 최적으로 디버깅이 됨. 대신 좀 느림)
- Development : 가장 일반적인 빌드 모드. 빨리 개발하고 테스트하고 할 때 선택. DebugGame보다는 모듈이 많이 축소되어있지만 대신 속도가 빠름. 그래서 가벼운 테스트용으로 적합(대부분의 디버깅은 Development Editor를 채택)
- Shipping : 빌드, 최종 릴리즈 단계에서 선택, 디버그 정보가 모두 빠져있음. 게임 출시 직전 테스트하는 용도
여기서 궁금한 것이 하나 생겼다.
DebugGame이라는 키워드가 붙은 모드는 DebugGame, DebugGame Editor인데 뭐가 다른걸까?
DebugGame과 DebugGame Editor의 차이?
DebugGame 모드로 설정한 뒤 빌드를 하면 완전히 분리된 실행파일 형태에서 디버깅을 할 수 있다.
DebugGame Editor로 설정한 뒤 빌드를 하게 되면 Unreal 에디터에서 바로 디버깅을 할 수 있는 차이가 있다.
(Development와 Development Editor도 위의 두 모드의 차이점과 유사하다고 생각하면 좋을 것 같다!)
디버깅 모드까지 살펴봤으니 이제 빌드하는 과정을 알아보자.
보통 비주얼 스튜디오에서 빌드를 생각한다면 솔루션 빌드(ctrl + shift + b)를 많이 생각할 것이다.
이렇게 빌드를 하면 프로젝트에 들어있는 모든 파일들을 빌드하게 된다.
프로젝트 전체 빌드의 문제점
사실 프로젝트를 처음 생성한 상태라면 이렇게 전체 빌드를 해줘야 하지만, 코드 1줄만 수정했는데 전체 빌드를 하게 된다면 불필요하게 시간도 많이 소요되고 자원도 많이 소모될 것이다.
따라서 이번에 부분 빌드라는 것을 알게되어 공유하고자 한다.
프로젝트 부분 빌드
솔루션 우클릭 → 빌드 이렇게 하면 해당 솔루션 파일만 빌드된다.
이렇게 부분적으로 빌드를 하게되면 수정된 파일만 재빌드되기 때문에 시간도 아끼고 효율적이라 부분빌드를 권장하는 편이라고 한다.
그래서 얼마나 더 빠른데?
하지만! 전체빌드도 초기 빌드만 느릴 뿐, 2번째 빌드부터는 굉장히 스마트해진 컴파일러가 변경된 파일만 감지해서 빌드하기 때문에 원래 사용하던 전체 빌드의 효율도 나쁘지는 않다.
그렇다고 해도 다른 부분을 끌어와서 빌드하기 때문에 시간은 부분빌드가 더 빠르고 자원도 더 절약된다.
아 그리고 빌드를 할 때 몇가지 주의사항이 있다.
Unreal 에디터 켜놓은 상태에서 빌드하면 안되는 이유
Unreal 에디터가 빌드될 때 DLL 파일이 갱신되고 에디터가 갱신된 DLL을 가져가는 구조로 진행된다.
하지만 에디터가 켜져있으면 DLL을 붙잡고 있는 상태가 되는데 이 상태에서 빌드를 하게 되면 Unreal이 DLL을 꽉 붙잡고 안놔주기 때문에 ㅎㅎ DLL 파일이 정상적으로 갱신이 되어있지 않은 경우가 발생할 수도 있다.
따라서 빌드를 할 때 에러가 떴다면 에디터를 끄고 다시 빌드를 하는게 깔끔하게 될 것이다.
그리고 권장사항은 아니지만 꿀팁? 같은 내용을 이번에 알게되어서 공유해보고자 한다.
Unreal 프로젝트 안정적이고 멋지게 여는 방법
보통 프로젝트를 열 때 런처에서 다음과 같이 열 것이다.(본인도 이 방법을 알기전까지는 이렇게 열었었음)
2탄으로 돌아올게요..
'Unreal Engine' 카테고리의 다른 글
[ UE ] 퍼즐스테이지 설계 및 구상 (0) | 2025.01.24 |
---|---|
[ UE, C++ ] 언리얼 엔진의 라이플 사이클 및 액터 생성 (0) | 2025.01.23 |
[ UE ] C++ 코드로 RootComponent와 StaticMesh 생성하기 (0) | 2025.01.22 |
[UE5] UPROPERTY(), UFUNCTION()을 꼭 붙여야 할까? (1) | 2025.01.09 |
[UE5] Unreal 인터페이스 살펴보기 (0) | 2024.12.20 |