이득우C++_11_언리얼 빌드 시스템
언리얼엔진의 각 종 구조를 서술
1. .uproject 파일
uproject 파일에 있는 정보 그리고 작동방식에 관해 서술
- .uproject 파일을 메모장을 열 경우 엔진버전이 표기
- 버전 내용은 Json 방식으로 표기
- .uproject는 윈도우 레지스트리에 등록
- .uproject의 기반을 가지고 UnrealVersionSelector를 통해서 언리얼 엔진이 실행
2. 언리얼 프로젝트 구조
- Config : 프로젝트의 각종 셋팅 저장
- Content : Asset들을 보관
- DerivedDataCache : 사용하는 Asset들의 주요정보를 캐싱하여 로딩을 줄임
- Intermediate : 임시로 사용하는 중간 결과를 저장
- Saved : 임시로 무언가를 저장하는 용도 Intermediate : 언제든지 용량이 클 경우 삭제 가능 DerivedDataCache : 용량을 줄일 때 역시 삭제 가능 Saved : 프로그램에서 무언가를 임의로 저장하지 않았다면 삭제 가능
3. 모듈
- 언리얼 엔진의 소스코드는 모두 모듈단위로 구성
- 에디터용으로는 DLL 동적라이브러리, 게임용으로는 정적라이브러리사용
- 에디터용 모듈은 UnrealEditor-{모듈이름}.DLL 의 이름규칙을 가짐
3-1. 에디터용 모듈 위치 및 파일
C:\Program Files\Epic Games\UE_5.1\Engine\Binaries\Win64
3-2. 모듈 migration
3-3. c++ 모듈 생성
{moduleName}.Build.cs 파일이 있는 곳이 모듈이 시작하는 곳
3-4. 모듈간의 종속관계
하나의 모듈에 너무 많은 코드가 들어가면 언리얼 엔진은 빌드 방식을 변경하기 때문에 적당한 모듈단위로 나눠서 관리하는 것이 유리
3-5. 모듈의 공개와 참조
- 모듈 내 소스를 필요한 만큼만 공개하는 것이 좋음(의존성 줄임 / 컴파일 타임 최소화)
- 공개할 파일은 Public 폴더 / 비공개할 파일은 Private 폴더로 나누면 된다
- 외부로 공개할 클래스 선언에는 {모듈이름}_DLL 매크로를 붙인다
- 게임모듈에서는 Build.cs 설정을 통해 참조할 모듈 지정 가능
모듈 참조를 원하지 않는다면 class 선언부의 외부에서 참조할 수 있게 만든 부분을 삭제해서 참조 불가능하게 만들 수 있다
4. Plugin System
4-1. Plugin?
모듈을 독립적으로 동작하게 변경한 것
게임 프로젝트에 모듈을 직접 추가하면 분업이 어렵고 방법도 까다롭다 따라서 플러그인 구조를 만들어서 분업화 한다
4-2. 클래스 생성 시 Plugin 선택
에디터에서 C++ 파일을 생성할 때 어느 Plugin 에 생성할 지 선택 가능
4-3. Build.cs 에 Plugin(Module) 추가
해당 부분에 모듈을 추가해야 사용가능
Plugin 작업법
보통은 위에 실습처럼 Plugin을 직접 File System에서 추가하지 않고 Editor에서 생성 및 추가
5. 게임 빌드
5-1. 게임빌드 관련 정보
5-1. exe 파일을 뽑는 빌드
“Shipping” 상태에서는 Assertion, check 같은 매크로들은 전부 제외됨
Editor에서 Shipping 설정 후 Package Project(쿠킹과 빌드 동시 실행)
exe 파일을 실행할 수 있다
댓글남기기