모듈, 플러그인 플랫폼

 

모듈별로 컴파일이 진행된다.

다른 여러 프로젝트에서 모듈을 사용할 수 있다.

플러그인 : 활성화하거나 비활성화 할 수 있음, 엔진 혹은 프로젝트에 포함

플랫폼 : 플랫폼 전용 코드가 따로 생성됨

 

UBT : 현재 있는 모든 모듈과 플러그인을 확인하고 소스 코드 처리에 필요한 파일을 프로젝트에 생성

 

Base Type

- Enum

- 문자열

1. FString : 기본 문자열

2. FName : 액터 이름에 사용

3. FText : 현지화가 준비된 문자열

- Structs

- Collection

1. TMap

2. TArray : 배열의 배열은 설정할 수 없다

3. TSet

- Transform Types

1. FVector

2. FRotator : 오일러 각 사용

3. FQuat

4. FTransform

 

UObject : 가비지 컬렉터에서 처리할 오브젝트, 메모리 시스템에서 자동으로 처리되려면 UObject를 상속받아야 한다.

액터와 컴포넌트 모두 UObject를 상속받기 때문에 가비지 컬렉터로 관리된다.

 

UObject의 라이프사이클

생성 : 액터가 에디터에 있는 레벨에 배치되거나 코드나 블루프린트에의해 직접 스폰될 때

 

스마트 포인터에 의해 오브젝트들의 레퍼런스가 관리된다.

제거 : 더 이상 레퍼런스되지 않는 오브젝트는 가비지 컬렉터에 의해 메모리에서 제거된다.

 

Data Objects

1. Curves

2. DataAssets

3. DataTables

 

 

액터의 라이프사이클

Constructor

BeginPlay

InitializeComponents

EndPlay

 

레퍼런스가 없으면 PendingKill로 설정되고 곧 제거됨

PendingKill로 설정된 액터는 접근하면 오류를 발생시킴

 

Memory Management

Loading Assets Option : Automatic or Deferred

- 애셋을 즉시 로드하거나 애셋에 대한 레퍼런스를 설정해 놓고 스트리밍 시스템에서 이 애셋을 비동기로 로드하도록 할 수 있다. 맵에 배치된 액터를 제외하고 액터도 마찬가지이다.

 

Garbage Collection

Placed vs Spawned

- 맵에 배치된 액터는 맵이 언로드될 때 모두 자동으로 가비지 컬렉션이 수행됨

References chain

 

Gameplay Framework

GameMode는 서버에 있다

클라이언트에서는 GameMode에 액세스할 수 없다. 대신에 GameState를 통해 정보를 얻을 수 있다. GameMode에서 GameState를 변경한다.

 

Subsystem : 

Async Task : 비동기 작업

 

Replication

리플리케이션은 오너십을 기반으로 한다.

액터와 프로퍼티 모두 리플리케이션이 가능하다.

안정성 설정이 가능하다.

메시지를 자체적으로 생성할 수도 있다. (RPC)

변수 값 변경이 발생할 때 이벤트를 발생시킬 수 있다. (RepNotify)

 

Unreal Automation Tool에서 Build, Cook, Pack 프로세스를 진행한다.

 

디버깅 프로파일링 툴

Stats : CMD > stat fps 입력

Console Commands : 

Session Frontend : 프로젝트에서 실행되는 세션과 관련된 툴을 제공

Unreal Insights : 모든 스레드에서 발생하는 이벤트를 자세하게 보여줌 메모리 할당 정보 및 네트워크 각각의 패킷 정보를 분석한다.

CSV Profiler : 

Memreport : 메모리 프로파일링 커맨드라인

LLM : 로우 레벨 메모리, 메모리와 클래스에 있는 엘리먼트의 양을 정확하게 제공, 트래킹 가능

ProfileGPU 커맨드 : GPU에서 발생하는 작업을 볼 수 있다.

Gauntlet : 빌드 시 빌드를 자동으로 테스트

+ Recent posts