언리얼 프로젝트 폴더 내 구조
- [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파일로 변환이 완료된 상태
- 전처리기 (Pre-Processing)
빌드 구성 및 플랫폼
- 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()와 같이 엔진 리플렉션에 필요한 코드를 자동으로 생성 해주는 매크로
'Unreal Engine > 개념정리' 카테고리의 다른 글
[UE5] - UGameplayStatics (0) | 2025.02.05 |
---|---|
[UE5] SpawnActorDeferred (지연된 스폰) (0) | 2025.02.03 |
[UE5] - 게임 플레이 프레임워크 (GameMode / GameState / PlayerController / PlayerState) + GameInstance (0) | 2025.01.31 |
[UE5] - Actor, Pawn, Character (0) | 2025.01.24 |
[UE5] - CDO(Class Default Object), 오브젝트 생성 (0) | 2025.01.15 |