언리얼 프로젝트 폴더 내 구조

  • [PrijectName].Sln
    • C++ 소스코드 및 빌드 설정 연결 파일
  • [ProjectName].uproject
    • 언리얼 에디터 프로젝트 설정 (콘텐츠, 맵, 플러그인 등)을 불러 올 때 사용하는 파일
  • .vsconfig
    • Visual Studio 프로젝트에서 사용되는 특정 설정 구성 요소 설치 요구사항 정의
    • 프로젝트를 열 때 Visual Studio가 필요한 워크로드 및 구성 요소를 자동으로 감지한다.
  • .vs
    • Visual Studio가 제공하는 자동으로 생성으로 생성되는 폴더
    • 디버깅, 솔루션 설정 관련 파일
  • Binaries
    • C++ 코드 빌드 시 생성되는 실행 파일 (.exe, dll)이 저장되는 폴더
  • Config
    • 게임 플레이, 렌더링, 입력 등의 설정을 담은 .ini 파일
    • 에디터 혹은 코드로 특정 설정을 바꾸면 해당 ini 파일이 수정된다.
      • DefaultEditor : 에디터 환경 설정 (뷰포트, UI 등)
      • DefaultEngine : 엔진 전반 설정(렌더링, 네트워킹 등)
      • DefaultGame : 게임 플레이 관련 설정(게임 모드, 플레이어 컨트롤러 클래스 등)
      • DefaultInput : 키보드, 마우스, 패드 등의 기본 입력들을 바인딩
  • Content
    • 언리얼 에디터의 콘텐츠 브라우저와 연결되어 있다.
    • 프로젝트 내 모든 에셋들을 포함하고 있는 폴더.
  • DerivedDataCache
    • 에셋, 셰이더 등을 빠르게 처리하기 위한 캐시 파일들을 저장하는 폴더.
  • Intermediate
    • C++ 컴파일시 생성되는 임시파일을 저장하는 폴더
  • Saved
    • 자동저장, 파일, 로그, 크래시 덤프들을 저장하는 폴더
  • Source
    • C++ 소스코드가 들어있는 폴더
    • 실제 게임 로직을 작성하는 곳
    • 빌드 설정 관련 주요 파일 포함
      • [ProjectName].Build.cs : 해당 프로젝트에 필요한 모듈, 라이브러리, 종속성 등 정의
      • [ProjectName].Target.cs, Editor.Target.cs : 각각 게임 실행 용, 에디터용 빌드 방식 정의

 

C++ 재 빌드 / 클래스 삭제 후 재 빌드시 

  • sln, vs, intermediate, binaries, DericedDataCache, Save들은 빌드 시 생성, 솔루션에 대한 빌드후 정보가 저장되는 파일
  • 해당 폴더 삭제 후 uproject -> generate visual studio project files를 통한 빌드
  • 클래스 삭제 / C++클래스 디렉토리 이동 / 빌드 실패등의 경우 사용하는 방법

 

언리얼 솔루션 구조

  • Engine
    • 언리얼 엔진 자체 소스코드 및 리소스가 담긴 폴더
    • 에디터 작동, 엔진 코어 관련 빌드 포함
  • Games
    • 개발자가 만든 프로젝트 코드들에 대한 폴더
    • Source, Config, .uproject 파일 등
      • Build.cs : 프로젝트 빌드 설정을 관리하는 파일
      • Public Dependency
        • 컴파일 대상 모듈 정의
        • 어떤 모듈을 포함할 지, 어떤 종속성을 가질지 결정한다.
        • 모듈을 포함하는 다른 모듈에서도 접근이 가능하다.
          • 이 모듈을 참조하는 다른 모듈에서도 해당 라이브러리를 사용할 수 있다.
        • 해당 프로젝트에서 필수적으로 사용하는 엔진 기능들 
          • Core : 엔진의 기본 기능들
          • CoreUObject : 리플렉션 시스템, GC
          • Engine : 게임 엔진의 주요 기능
          • InputCore : 입력 시스템
          • EnhancedInput : UE5에서 추가된 입력 시스템
          • UMG : 위젯 블루프린트와 관련된 모듈
      • PrivateDependency
        • 이 모듈 내에서만 사용 가능하며, 다른 모듈에서는 접근이 불가능하다.
        • 이 모듈을 참조하는 다른 모듈은 해당 의존성을 알 필요 없을 때
        • Slate, SlateCore같은 UI관련 특정 기능을 사용할 경우
  • Programs
    • 엔진 동작에 필요한 유틸리티 프로그램, 서버 모듈
  • Rules
    • 엔진, 게임 등 각 모듈의 빌드 규칙을 정의해놓은 파일들이 모여있는 곳
    • 모듈 의존성, 플러그인 활성화 여부, 빌드 대상 등을 제어한다.
  • Visualizers
    • 디버깅시 언리얼 엔진 관련 자료구조를 보기좋게 표시하기 위한 설정 파일

 

언리얼 빌드 프로세스

  • C++ 코드 수정시 컴파일 + Link과정을 통한 동적 라이브러리 DLL 생성
  • DLL이 언리얼 에디터에서 로드, 새로 작성한 로직(함수, 클래스 등)이 게임,에디터에 즉시 반영된다.
  • 소스파일 -> 전처리기-> 컴파일 -> 링커 -> 실행
    • 전처리기 (Pre-Processing)
      • 소스코드 주석 제거, define 치환 등 .cc 파일로 변환
    • 컴파일러
      • 어셈블리 파일로 변환, .s 파일 변환
    • 어세블러
      • 오브젝트 코드 파일로 변환. .o 파일 변환
    • 링커
      • 오브젝트 파일들을 묶어 실행 코드 파일로 변환
      • .o + .lib
    • 실행
      • .exe파일로 변환이 완료된 상태

 

빌드 구성 및 플랫폼

  • DebugGame
    • 게임 로직만 디버그 정보를 포함, 엔진은 최적화된 상태로 빌드한다.
    • 에디터가 아닌 독립 실행 파일 환경에서 디버깅이 가능하다.
  • DebugGame Editor
    • 에디터 환경에서 게임 로직을 디버그하기 편한 설정
    • 에디터 플레이 중 C++ 로직을 추적, 브레이크 포인트를 걸 때
  • Development
    • 디버그 정보를 최소화하여 실행 속도를 높인 개발용 빌드
    • 독립 실행 파일 환경테스트, 개발 단계에서 주로 쓰인다
  • Developmenet Editor
    • 에디터에서도 개발, 테스트를 원활히 할 수 있도록 구성된 빌드 모드
    • Live Coding 사용 시나리오, 기본모드
  • Shipping
    • 최종 사용자(User)에게 배포할 때 사용되는 릴리스 빌드
    • 디버그 정보 제거, 성능 최적화 극대화

 

  • #include "CoreMinimal.h"
    • 언리얼 엔진에서 자주 사용하는 기본 타입(FString, TArray)등 과 매크로(UE_LOG)등 각종 유틸리티 함수들을 정의하고있는 헤더 파일
  • #include "[ClassName].generated.h"
    • 언리얼 엔진의 리플렉션 시스템에서 필요한 코드를 자동으로 생성하기 위한 매크로
  • UCLASS()
    • 해당 클래스를 언리얼 엔진의 리플렉션 시스템에서 인식하도록 하는 매크로
    • 언리얼 에디터에서 이 클래스를 블루프린트로 확장 할 수 있게하며, 에디터의 여러 기능과 연동하도록 한다.
  • [SOLUTIONNAME]_API
    • 이 클래스를 외부 모드로 Export 하기 위한 매크로
    • DLL 등으로 빌드 할 때 필요한 선언
  • GENERATED_BODY()
    • UCLASS()와 같이 엔진 리플렉션에 필요한 코드를 자동으로 생성 해주는 매크로

+ Recent posts