1 분 소요

언리얼엔진의 각 종 구조를 서술

1. .uproject 파일

uproject 파일에 있는 정보 그리고 작동방식에 관해 서술

  1. .uproject 파일을 메모장을 열 경우 엔진버전이 표기
  2. 버전 내용은 Json 방식으로 표기
  3. .uproject는 윈도우 레지스트리에 등록
  4. .uproject의 기반을 가지고 UnrealVersionSelector를 통해서 언리얼 엔진이 실행

Image        

2. 언리얼 프로젝트 구조

Image

  1. Config : 프로젝트의 각종 셋팅 저장
  2. Content : Asset들을 보관
  3. DerivedDataCache : 사용하는 Asset들의 주요정보를 캐싱하여 로딩을 줄임
  4. Intermediate : 임시로 사용하는 중간 결과를 저장
  5. Saved : 임시로 무언가를 저장하는 용도     Intermediate : 언제든지 용량이 클 경우 삭제 가능 DerivedDataCache : 용량을 줄일 때 역시 삭제 가능 Saved : 프로그램에서 무언가를 임의로 저장하지 않았다면 삭제 가능        

3. 모듈

Image

  • 언리얼 엔진의 소스코드는 모두 모듈단위로 구성
  • 에디터용으로는 DLL 동적라이브러리, 게임용으로는 정적라이브러리사용
  • 에디터용 모듈은 UnrealEditor-{모듈이름}.DLL 의 이름규칙을 가짐    

3-1. 에디터용 모듈 위치 및 파일

Image

C:\Program Files\Epic Games\UE_5.1\Engine\Binaries\Win64

   

3-2. 모듈 migration

Image

Image    

3-3. c++ 모듈 생성

Image

Image

Image

Image

{moduleName}.Build.cs 파일이 있는 곳이 모듈이 시작하는 곳

   

3-4. 모듈간의 종속관계

하나의 모듈에 너무 많은 코드가 들어가면 언리얼 엔진은 빌드 방식을 변경하기 때문에 적당한 모듈단위로 나눠서 관리하는 것이 유리

Image    

3-5. 모듈의 공개와 참조

Image

  • 모듈 내 소스를 필요한 만큼만 공개하는 것이 좋음(의존성 줄임 / 컴파일 타임 최소화)
  • 공개할 파일은 Public 폴더 / 비공개할 파일은 Private 폴더로 나누면 된다
  • 외부로 공개할 클래스 선언에는 {모듈이름}_DLL 매크로를 붙인다
  • 게임모듈에서는 Build.cs 설정을 통해 참조할 모듈 지정 가능

   

Image

모듈 참조를 원하지 않는다면 class 선언부의 외부에서 참조할 수 있게 만든 부분을 삭제해서 참조 불가능하게 만들 수 있다

       

4. Plugin System

4-1. Plugin?

모듈을 독립적으로 동작하게 변경한 것

게임 프로젝트에 모듈을 직접 추가하면 분업이 어렵고 방법도 까다롭다 따라서 플러그인 구조를 만들어서 분업화 한다

Image Image    

4-2. 클래스 생성 시 Plugin 선택

Image

에디터에서 C++ 파일을 생성할 때 어느 Plugin 에 생성할 지 선택 가능    

4-3. Build.cs 에 Plugin(Module) 추가

Image

해당 부분에 모듈을 추가해야 사용가능    

Plugin 작업법

보통은 위에 실습처럼 Plugin을 직접 File System에서 추가하지 않고 Editor에서 생성 및 추가 Image

       

5. 게임 빌드

5-1. 게임빌드 관련 정보

Image    

5-1. exe 파일을 뽑는 빌드

“Shipping” 상태에서는 Assertion, check 같은 매크로들은 전부 제외됨

Image

Editor에서 Shipping 설정 후 Package Project(쿠킹과 빌드 동시 실행)    

Image

exe 파일을 실행할 수 있다

댓글남기기