https://dev.epicgames.com/community/learning/tutorials/98E/unreal-engine-begin-play-engine-structure
Begin Play | Engine Structure | Tutorial
A high level overview of the engine structure, features and related BeginPlay coursework, walking you through the schematic that forms the basis for all...
dev.epicgames.com
https://d1iv7db44yhgxn.cloudfront.net/post-static-images/Engine%20Structure@2x.jpg
언리얼 엔진에 접근할 수 있는 다양한 방법
엔진 코드에 접근하기 위해서는
- 엔진이 어떤 방식으로 작업을 진행하는지 볼 수 있다, 더 엔진을 잘 이해할 수 있게 된다. 엔진 코드를 수정할 것이 아니라면 Install 시 런처에서 add하면 된다.
- 엔진 코드를 수정하여 커스텀 애셋을 만들 수 있다.
- 커스텀 엔진 빌드를 하는 경우 레지스트리에 빌드 ID가 등록된다.
- 커스텀 엔진 경로를 기존 엔진 경로와 동일한 위치에 두면 Perforce로 버전을 관리할 때 UnrealGameSync 툴을 이용하여 프로젝트를 팀 내에서 공유할 수 있다. 사용자들은 로컬에서 컴파일하지 않고 미리 빌드된 바이너리들을 서버에서 다운로드 받을 수 있다.
폴더 구조
- 엔진의 폴더 구조와 프로젝트 폴더 구조는 유사하다.
프로젝트는 엔진의 확장과 같은 역할을 하기 때문이다.
- Content 폴더
모든 애셋을 저장하는 폴더
애셋을 옮기고 싶으면 에디터의 Content Browser에서 옮겨야 엔진이 레퍼런스 변화를 기록할 수 있다.
- Binaries 폴더
빌드 모듈이 존재한다. (PDB 파일, UBT에 의해 만들어진 Executable 파일)
엔진 폴더에는 다양한 툴이 존재한다. (Swarm Agent, SwarmCoordinator, UnrealInsights, UnrealEditor.exe )
- Config 폴더
프로젝트 세팅이 저장되는 곳
엔진 폴더에는 BaseEditor.ini 프로젝트 폴더에는 DefaultEditor.ini가 있는데 프로젝트 폴더에 있는 Config 파일이 엔진의 것을 오버라이드 할 수 있다.
Config 폴더 내에 Platform 폴더가 존재하는데 폴더 이름은 플랫폼 명으로 만들어지고, Config 파일 이름은 플랫폼 이름을 포함해야 한다.
- Saved 폴더
프로젝트의 첫 실행 시 생성되는 폴더이다.
로컬 세팅 및 몇몇 데이터를 생성한다.
Saved 폴더 아래에 있는 폴더들
수정된 애셋을 자동 저장하는 Autosaves 폴더 : 애셋 복구하는데 사용할 수 있다.
Config 폴더 : 로컬 프로젝트를 위한 모든 오버라이드 설정 파일 포함
Crashes폴더 : 크래시 발생 시 로그를 저장, Dump파일 생성 (콜 스택 확인용)
Log 폴더 : 과거에 에디터나 게임 세션에서 찍혔던 로그를 확인할 수 있다.
- Intermediate 폴더
첫 실행 시 생성되는 폴더
Visual Studio 프로젝트 파일, 컴파일된 오브젝트 파일, 애셋 레지스트리 파일 (분석을 위해 사용됨) 등
에디터가 잘 안 켜질 경우 Intermediate 폴더와 Saved 폴더를 백업 후 삭제한 다음 다시 시도해 볼 수 있다.
이 폴더들에 프로젝트의 사용자의 로컬과만 관련 있는 파일들이 존재하기 때문에 이 폴더들은 다른 사용자들과 공유되지 않기 떄문이다.
공유되는 폴더 및 파일은 Config, Cotent, Source, Uproject 파일, (필요하다면 Binaries 및 커스텀 폴더를 추가 공유한다.)
보통 커스텀 폴더에는 Source Asset을 담는다. 이렇게 할 경우 다른 모든 사용자들에게도 상대 경로가 동일하기 때문에 아티스트가 애셋을 업데이트해도 reimport 할 필요가 없다.
- 플러그인 폴더
엔진 플러그인 폴더에 있는 플러그인들은 어느 프로젝트에서 사용 가능하다. 빌트 인 플러그인과 마켓에서 설치한 플러그인들이 위치해 있다. 커스텀 플러그인을 만든다면 프로젝트의 플러그인 폴더에 저장된다.
- UProject 파일
프로젝트를 정의하는 파일이다.
모듈 정의, 활성화된 플러그인 , Engine Association (엔진 버전) 정보를 포함한다.
Config는 계층적으로 오버라이딩 된다.
엔진 > 엔진 플랫폼 > 프로젝트 > 프로젝트 플랫폼 > 로컬
애셋을 관리하는 방법
애셋은 두 가지 방법으로 만들어진다.
1. 외부 DCC tool에서 Import
2. 에디터에서 직접 만들기
엔진에서 material을 텍스처로 굽는 거나 Modeling 툴을 사용하여 3D 메시를 생성하는 것도 애셋을 생성하는 방법 중 하나다.
애셋이 생성되면 asset Validation 플러그인이 애셋의 퀄리티를 보장하기 위해 사용된다. C++ 나 BP를 통해서 룰을 만들 수 있다. 예를 들면 네이밍 컨벤션, 텍스처 해상도, 메시 정점 수 등을 제한할 수 있다.
애셋은 모든 프로퍼티, 압축되지 않은 포맷의 Raw Data를 포함하는데, 이는 나중에 쿠깅 과정에서 타겟 플랫폼에 최적화된다.
- Derived Data Cache
현재 플랫폼에서 사용되는 애셋의 버전을 저장한다.
- Shared DDC
공유 폴더에 있는 맵을 최초로 열면 셰이더 컴파일, distance field와 같은 데이터가 생성되는데 공유 폴더에 저장되면 누군가 한 번만 실행하면 된다.
- Redirector
레퍼런스가 업데이트 되지 않았는데 옮겨진 애셋
다른 사용자가 레퍼런스 중인 애셋을 다른 곳으로 옮겼을 경우 기존 Path에 생성된다. 나중에 가능할 때 Redirector를 Fix 하면 된다.
Primary Asset과 Secondary Asset
Primary Asset은 AssetManager에 의해 관리된다.
사용자는 커스텀 Primary Asset type을 정의하고 AssetManager가 그것을 인식하게 할 수 있다.
Primary Asset은 Secondary Asset들의 로드를 관리한다.
Level은 Primary Asset이다. 레벨에 존재하는 모든 액터 (Secondary Asset)의 로드를 관리한다.
Tool
- Session Frontend 툴
Tool 메뉴에서 액세스하거나 독립형 애플리케이션으로 실행 가능하다.
PC나 네트워크로 연결된 장치에서 실행되는 게임에 연결할 수 있다.
내부 기능 :
Automated Testing
Console
legacy Profiler
- Device Output Log, Device Manager
연결된 장치의 로그 출력, 실행 관리
- Unreal Insights
Session Frontend 내부에 있던 나머지 기능들이 이것으로 대체됨
에디터 툴 메뉴에서 실행된다.
이전 툴에 없던 추가적인 기능으로 모든 스레드에서 일어나는 이벤트를 자세하게 보여준다.
메모리 할당 및 각각의 네트워크 패킷을 분석할 수 있다.
빌드
Unreal Automation Tool에 의해 관리된다.
다양한 방법으로 빌드할 수 있다
1. basic packing 프로세스를 에디터에서 직접 진행할 수 있다.
2. Project Launcher를 사용하여 특수 빌드를 진행할 수 있다.
3. Command List를 사용하여 진행할 수 있다.
- Building
C++ 코드를 포함한 프로젝트는 바이너리 빌드부터 시작한다. 바이너리 빌드 시 빌드 설정이 필요하다. (타겟, State)
target : Standalone Game, Editor, Client, Dedicated Server
State : Debug, Development, Shipping
- Cooking
바이너리 빌드 한 후에는 Cooking 과정을 거친다.
애셋을 타겟 플랫폼에 최적화하는 작업이다.
1. Cook by the book : 모든 애셋을 쿠킹한다. 시간이 걸린다.
2. Cook on the fly : Cook process가 생략되고 Cook Server가 내 장치에서 실행되어 게임에서 애셋이 필요할 때 쿠킹된다. 로딩 시간이 길어지지만 반복 작업을 하는데 있어서는 효율적이다.
- Staging
Cooked Asset이 Staging Directory로 이동하고 이동한 애셋들은 Packaging 프로세스를 거친다.
Staging Directory를 지정할 수 있다.
Saved 폴더 아래에 있다.
- Packaging
모든 애셋을 패키징할 때 하나의 파일에 저장하거나 여러개의 청크에 나눠서 저장할 수 있다 또는 UAsset 그대로 저장할 수 있다. UAsset 그대로 저장하는 경우에 유저는 애셋 데이터에 접근할 수 있게 된다.
패키징하는 경우에는 암호화되기 때문에 DLC나 패치를 생성하는데 활용된다.
패키징될 때 어떤 언어를 제공할 지 결정할 수 있다. Localize Text 및 Asset
- Asset Audit (애셋 우클릭)을 사용하여 어떤 Asset이 어떤 Chunk로 가는지 확인할 수 있다.
- 레퍼런스 뷰어
흰색 줄은 Hard Reference
보라색 줄은 Soft Reference
Hard Reference로 참조하는 애셋은 애셋이 로드될 때 자동으로 로드된다.
Soft Reference로 참조하는 애셋은 사용자가 필요할 때 임의로 로드할 수 있다. - 모든 애셋이 레벨과 함께 로드될 필요가 없기 때문에 로딩 시간을 줄여줄 수 있다.
- Gauntlet
자동화된 테스팅 및 검증 툴
'언리얼 5 > 에픽 게임즈 공식 강의' 카테고리의 다른 글
Enhanced Input Binding with Gameplay Tags C++ (0) | 2023.02.21 |
---|---|
Geometry Script (0) | 2023.02.20 |
All about Soft and Weak pointer (0) | 2023.02.20 |
프로그래밍 시작하기 (0) | 2023.02.19 |
페이퍼 2D 프로젝트 시작하기 (0) | 2023.02.18 |