Processing math: 100%
본문 바로가기

전체보기

Where are UE_BUILD macros defined in UnrealEngine 아래 내용은 UnrealEngine5.3 환경에서 작성되었습니다. 언리얼 엔진을 사용할 때 빌드 환경을 기준으로 코드의 분기를 정하는 경우가 자주 있다. 이 때 활용되는 매크로는 UE_BUILD_DEBUG UE_BUILD_DEVELOPMENT UE_BUILD_TEST UE_BUILD_SHIPPING 등이 있는데, 에디터 프로젝트에서는 이 매크로에 대한 define 코드가 없는 것을 볼 수 있다. 물론 Core 모듈에 있는 Build.h 를 보면 아래 코드는 존재하지만 어디까지나 정의되지 않은 경우에 해당한다. 이렇듯이 이 매크로의 정의가 내부에서 이뤄지지 않는 것을 알 수 있다. 앞선 포스팅에서 언급했던 것과 같이, 언리얼은 솔루션 내의 코드만으로 빌드되는 것이 아니라 이 코드들을 기반으로 UnrealB.. 더보기
How to Redefine Macros on Unreal Engine 아래 내용은 UnrealEngine5.3 환경에서 작성되었습니다. 언리얼 코드 내에는 수많은 매크로들이 빌드 환경에 따라 정의되어 있고 패키징 시 빌드 설정을 변경하는 것만으로 많은 매크로들의 설정을 변경할 수 있습니다. 하지만 빌드 설정에 종속적인만큼 이 기준에서 벗어나는 경우 매크로 값을 Shipping 으로 패키징한 환경에서도 콘솔 명령어나 치트 매니저의 기능을 사용하고 싶은 경우도 존재할 수 있습니다. 이러한 경우 UnrealBuildTool 에서 참조하는 Build.cs 나 Target.cs 의 ModuleRules/TargetRules 를 변경하는 것으로 해결 가능합니다. 언리얼은 IDE 에서의 빌드든 패키징 동작 초기의 빌드든, dotnet 을 통해 UnrealBuildTool 을 실행하는 .. 더보기
How to Show the Current Active File in Visual Studio Solution Explorer Visual Studio 를 사용할 때 Solution Explorer 에서 현재 파일이 포커싱 되도록 하는 방법 Tools > Options > Projects and Solutions 에서 "Track Active Item in Solution Explorer" 를 체크 하지만 위 옵션을 사용하는 경우 불편할 수 있기 때문에 단축키를 지정하는 것이 나을 수 있음 Tools > Options > Environment > Keyboard > View.TrackActivityinSolutionExplorer 추천하는 단축키는 Ctrl + Alt + ; 더보기
How to use the WaitForDebugger switch when debugging the Unreal Engine 아래 내용은 Unreal Engine 5.2 환경에서 작성되었습니다. 언리얼은 몇몇 기능들이 다른 프로세스를 통해 실행되는 경우가 있다. AutomationTool 을 통한 쿠킹 및 패키징이라든지 혹은 크래시 발생 시 관련 내용을 리포트하는 CrashReportClient 등이 대표적이다. 이렇게 다른 프로세스를 통해 실행되는 경우 디버깅이 쉽지 않을 수 있는데 이 때 활용할 수 있는 커맨드라인 스위치 중 WaitForDebugger 가 있다. 이 스위치를 확인하는 부분은 기본적으로 다음과 같다. Unreal 의 Main 진입 부분 (GuardedMain, AndroidMain, iOS main) CrashReportClient 의 Main 으로부터 진입하는 RunCrashReportClient Auto.. 더보기
Unreal Package Project 에서 UAT 로 전달되는 Commandline Unreal Engine 5.2 에서 확인 UnrealEditor-TurnkeySupport-Win64-Debug.dll!FTurnkeySupportCallbacks::CookOrPackage(FName IniPlatformName, EPrepareContentMode Mode) Line 553 C++ UnrealEditor-TurnkeySupport-Win64-Debug.dll!UE::Core::Private::Tuple::TTupleBase::ApplyAfter(void(*)(FName, EPrepareContentMode) & Func) Line 321 C++ UnrealEditor-TurnkeySupport-Win64-Debug.dll!TBaseStaticDelegateInstance::Execu.. 더보기
How to avoid waiting for 'git status' command during Unreal Engine build 도입 언리얼 엔진이나 프로젝트를 빌드할 때 아래 메세지가 표시되면서 잠시 진행을 대기하는 것을 볼 수 있다. 이유 언리얼 엔진의 빌드 시스템은 BuildConfiguration.xml 의 SourceFileWorkingSet 명시된 Provider 를 기반으로 빌드해야할 파일을 식별하고 변경된 파일 빌드 작업 집합에 포함시켜 빌드 속도를 단축할 수 있다. 하지만 Provider 는 설정되어 있으면서 적절한 경로가 누락되어 있는 경우 응답 대기 시간만을 소모하는 부작용이 발생한다. 방법 작업 집합을 사용하지 않는 경우에는 BuildConfiguration.xml 을 다음과 같이 변경함으로써 관련 단계를 건너뛰어 시간을 단축할 수 있다. None 참고 참고로 BuildConfiguration.xml 의 위치.. 더보기
How to check Unreal global variables in Visual Studio's Watch window 도입 언리얼 프로젝트를 비주얼 스튜디오로 디버깅 할 때 전역변수 내용을 확인하고자 Watch 창에 변수명을 그대로 입력하면 정상적으로 표시가 되지 않는다. 언리얼 엔진은 여러 모듈로 이루어져 있고 각 모듈은 하나의 라이브러리가 되며 전역변수들은 이러한 라이브러리 내에 존재하기 때문이다. 준비 전역변수를 Watch 창에서 확인하기 위해서는, 우선 솔루션 환경 구성이 디버깅하고자 하는 환경과 일치하는 것이 중요한데, 환경 구성에 따라 코드 최적화 수준이 다르기 때문에 최적화된 경우 디버깅 정보가 정상적으로 표시되지 않을 수 있다. 다른 환경 구성을 사용하더라도 디버깅하고자 하는 모듈의 Build.cs 에서 코드 최적화 수준을 변경하는 것도 방법이 될 수 있겠으나, 일반적으로 디버깅을 하는 입장에서는 모든 변.. 더보기
알고리즘의 기초 알고리즘 어떤 작업을 수행하기 위해 입력을 받아 원하는 출력을 만들어내는 과정을 기술한 것 점근적 분석 입력이 충분히 큰 경우에 대한 알고리즘의 효율성을 확인 시간 복잡도 O - 표기법 O(f(n)) 은 점근적 증가율이 f(n) 을 넘지 않는 모든 함수들의 집합 O - 표기법은 함수의 점근적 상한을 나타냄 (upper bound) 최악의 경우에 시간이 얼마나 걸릴지 알 수 있음 Ω - 표기법 Ω(f(n)) 은 점근적 증가율이 적어도 f(n) 이 되는 모든 함수들의 집합 Ω - 표기법은 함수의 점근적 하한을 나타냄 (lower bound) 최선의 경우에 시간이 얼마나 걸릴지 알 수 있음 $\mathit{.. 더보기
언리얼 컨테이너의 기본 타입 설정 위치 * Unreal 5.2.0 기준으로 작성하였음. 언리얼의 여러 컨테이너들 (TArray, TSet, TMap, TMultiMap 등) 의 기본 타입 설정 위치 Runtime\Core\Public\Containers\ContainersFwd.h 더보기
Unreal Actor Factory 언리얼 에디터 상에서 특정 애셋 오브젝트를 레벨 에디터에 드래그 드랍하는 경우, 관련 액터의 배치 가능 여부를 비롯하여 배치 전/후 처리를 담당하는 팩토리 클래스이다. ​ 팩토리 오브젝트의 등록은 에디터 모듈의 Startup 단계에서 팩토리 오브젝트를 생성하고, 이를 에디터 인스턴스의 액터 팩토리 배열에 추가하는 형태가 일반적이다. ​ 액터 팩토리 클래스는 UActorFactory 를 상속하여 구현하며 사용성이 높은 멤버들은 다음과 같다. UActorFactory + NewActorClass : FString * 팩토리를 통해 실제 생성되는 액터의 클래스를 지정 + {virtual} CanCreateActorFrom(const FAssetData&, FText&) : bool * 인풋 파라미터로 들어온 .. 더보기