게임 개발/Unreal Engine 기본 17

[UE5] stat unit

Stat Unit stat unit 콘솔 명령어는 언리얼 엔진 뷰포트 내에서 유용한 성능 지표의 가시성을 전환합니다. 또한, stat unitgraph 콘솔 명령어를 사용하여 지표의 실시간 그래프와 함께 동일한 지표를 표시할 수도 있습니다. 각 항목들의 의미는 다음과 같습니다. Frame 게임의 한 프레임을 생성하는 데 소요된 총 시간입니다. Game 게임 쓰레드에서 사용된 시간입니다. 값이 프레임 시간과 유사하면, 게임 성능은 게임 쓰레드에 의해 병목이 발생한 것으로 보입니다. Draw 드로우: 렌더링 쓰레드에서 사용된 시간입니다. 값이 프레임 시간과 유사하면, 게임 성능은 렌더링 쓰레드에 의해 병목이 발생한 것으로 보입니다. GPU GPU: 씬 렌더링에 사용된 GPU에서 소요된 시간입니다. GPU 시..

[UE] Unreal Egnine 쿠킹 By the Book, On the Fly

Unreal Engine에서 Cooking은 게임 데이터를 빌드 가능한 형식으로 변환하는 프로세스입니다. 이 프로세스에서 "By the Book"과 "On the Fly" 두 가지 방법이 있습니다. 이 두 가지 방법은 각각의 장단점이 있으며, 게임에 따라 어떤 방법이 더 적합한지 결정해야합니다. 일반적으로 작은 규모의 게임에서는 "By the Book" 방법을 사용하고 대규모 게임에서는 "On the Fly" 방법을 사용하는 것이 일반적입니다. Unreal Engine에서는 게임 데이터가 매우 큰 경우 "On the Fly" 방법과 "By the Book" 방법을 혼합하여 사용할 수도 있습니다. By the Book 이 방법은 게임 데이터를 빌드 가능한 형식으로 미리 컴파일하는 것을 의미합니다. 이 방법..

[UE] UGameInstanceSubsystem, ULocalPlayerSubsystem...

Subsystem 서브시스템 클래스 Engine UEngineSubsystem 클래스 Editor UEditorSubsystem 클래스 GameInstance UGameInstanceSubsystem 클래스 LocalPlayer ULocalPlayerSubsystem 클래스 World UWorldSubsystem 클래스 예를 들어 이 베이스 클래스에서 파생된 클래스를 생성하면: class UMySubsystem : public UGameInstanceSubsystem 그 결과는 다음과 같습니다. UGameInstance 생성 이후, UMyGamesSubsystem 라는 인스턴스 역시 생성됩니다. UGameInstance 초기화 시, 서브시스템에서 Initialize() 가 호출됩니다. UGameInsta..

[UE4] UClass, UFunction, UProperty, UEnum UInterface 메타데이터 지정자

메타데이터 지정자 메타데이터 지정자를 사용하려면, UCLASS, UINTERFACE, UFUNCTION, UPROPERTY 매크로에 다음과 같이 meta 를 붙이면 됩니다: {UCLASS/UINTERFACE/USTRUCT/UFUNCTION/UPROPERTY}(meta=(MetaTag1="Value1", MetaTag2, ..)) 자세한 내용은 다음의 글을 참고 합시다. https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/GameplayArchitecture/Metadata/ 메타데이터 지정자 Metadata 키워드는 UClass, UFunction, UProperty, UEnum, UInterface 를 선언할 때 사용되며, 엔진 및 에디터 다양..

[UE4] Assertion - DO_CHECK, DO_GUARD_SLOW, DO_ENSURE

Runtime\Core\Public\Misc\Build.h  DO_GUARD_SLOW 1이면,checkSlow, checkfSlow, verifySlow 실행DO_CHECK 1이면,checkCode, checkf, verify, check, checkNoEntry, checkNoReentry, checkNoRecursion, verifyf, checkf 실행DO_ENSURE 1이면, ensure, ensureAlways, ensureMsgf, ensureAlwaysMsgf 실행  DEBUGDEVELOPMENTTESTSHIPPING SHIPPING EDITORDO_GUARD_SLOW10000DO_CHECK11001DO_ENSURE11001  Build.h에 정의된 코드를 같추려 보면 다음과 같습니다.#de..

[UE4] Assertion 이해하기

Assertion 이해하기 Assertion 코드가 런타임에 실행될때 코드가 원하는 대로 동작하는지 검증하는 도구입니다. 언리얼 엔진은 어려가지 유형의 커스텀 검증 매크로들을 제공합니다. 특정 빌드 환경설정 하에서는 컴파일시 제외시킬 수 있도록 매크로로 되어 있는데, 퍼포먼스 상의 이유거나 최종 빌드에서는 필요치 않기 때문이거나 입니다. 검증 종류 런타임 어서트 매크로는 실행 중지(DO_GUARD_SLOW) checkSlow, checkfSlow, verifySlow 디버그 빌드에서 실행 중지(DO_CHECK) checkCode, checkf, verify, check, checkNoEntry, checkNoReentry, checkNoRecursion, verifyf, checkf 실행 중지하지 않고 ..

[UE4] 오브젝트 생성 - CreateDefaultSubobject , NewObject, SpawnActor

CreateDefaultSubobject , NewObject, SpawnActor 언리얼 엔진에서의 UObject는 오브젝트 프로토입을 기본으로 합니다. 각 UClass는 UObject와 연관된 CDO(Class Default Object)라고 불리는 디폴트 인스턴스를 갖습니다. 이 인스턴스는 엔진이 초기화 될때 클래스 생성자를 통해 최초로 단 한번 할당됩니다. 이후에 생성자는 절대로 다시 불려지지 않고 새로운 UObject를 생성시 복사를 생성 합니다. 이것이 의미하는 것은 UObject 생성자는 어떠한 런타임 로직을 포함 할수 없다는 것입니다. 만약 Actor Component와 같은 서브 오브젝트들을 포함하고 있는 오브젝트라면, 이러한 디폴트 오브젝트들은 처음에 생성되어져야 합니다. UObject..

[UE4] UObject의 참조 카운트(UObject Reference Count)

어떠한 오브젝트의 참조 카운트를 얻을 수 있는 코드입니다. static int32 URamaStaticFunctionLib::GetObjReferenceCount(UObject* Obj, TArray* OutReferredToObjects = nullptr) { if(!Obj || !Obj->IsValidLowLevelFast()) { return -1; } TArray ReferredToObjects;//req outer, ignore archetype, recursive, ignore transient FReferenceFinder ObjectReferenceCollector(ReferredToObjects, Obj, false, true, true, false); ObjectReferenceColl..

[UE4] 액터의 수명 주기, 가비지 콜렉터

액터의 수명 주기 액터의 생명 주기에 대해서 이해를 하고 있어야 겠습니다. 이 문서는 액터의 수명 주기에 대한 일반적 개요서로, 액터가 레벨에 어떻게 인스턴스가 생성 (Spawn) 되고 소멸 (Destroy) 되는지에 대해서입니다. https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Objects/Optimizations/ 언리얼 오브젝트 처리 UObject 시스템의 기능에 대한 개요입니다. docs.unrealengine.com 가비지 콜렉터 언리얼 엔진은 자체 스마트 포인터를 제공하며 이를 통해 자동으로 가비지 콜렉션을 수행합니다. [게임 개발/Unreal Engine 기본]..