프로그래밍/Unreal 부트캠프

TIL 2025.01.08 기록

Rozentea 2025. 1. 8. 21:26

0. 개요


 

 

1. 언리얼


1. C++로 클래스 만들기

툴 메뉴에서 C++로 클래스 생성하기를 통해 원하는 액터를 상속받는 클래스를 만들 수 있다.

어제 기록에서는 이 방법 말고 VS로 직접 클래스를 생성하면 안될것 같다고 했는데,

모듈과 플러그인 같은 것을 깔면 해당 방법으로도 생성이 가능한 것 같다.

음... 원래도 되는데, 꼬일 가능성이 있어서 MSDN에 나온것 처럼 사용하거나 언리얼 에디터에서 생성하는게 좋은 것 같다.

 

Visual Studio에서 Unreal Engine 클래스, 모듈 및 플러그인 추가하기

Visual Studio 내에서 Unreal Engine 클래스, 모듈 및 플러그 인을 Unreal Engine 프로젝트에 추가하는 방법 알아보기

learn.microsoft.com

 

2. UE_LOG

위 사진처럼  UE_LOG를 사용하면, 로그를 출력해볼 수 있다.

UE_LOG의 인자를 살펴보면,

 

1. CategoryName (카테고리)

태그를 붙인다고 생각하면 되고, 특정 카테고리만 분류해서 보고 싶을때 많이 활용된다.

직접 카테고리를 만들 수도 있다. (보통은 LogTemp를 많이 사용한다고 한다.)

 

2. Verbosity (장황한, 상세성..?)

중요도에 따라 심각성을 분류할 수 있으며, 각 로그는 색이 다르게 출력된다.

심각도  콘솔 출력 색상
Log 일반적인 메세지, 색상 없음(기본 검정 텍스트, 흰색 배경) 또는 흰색.
Display 파란색 (일반적인 정보를 강조하기 위해 표시)
Warning 주황색 또는 노란색 (경고 메세지를 시각적으로 강조)
Error 빨간색 (문제가 되는 상황을 강조)
Fatal 빨간색 (치명적 오류이며 이후 프로그램 종료)

 

3. Format

출력할 문자열을 전달 받는다.

 

로그 필터링 방법

이전에 잠깐 언리얼을 했을때도 로그를 자새히 살펴보지 않아서 몰랐었다..

필터링 기능이 있어서 원하는 로그만 볼 수 있기 때문에 나중에 작업할 때 도움이 많이 될 것 같았다.

 

3. 랜덤

아직 다 공부한건 아닌데, 언리얼의 FMath에 있는 random함수들은 내부적으로 모두 stdlib.h에 있는 rand()와 srand()를 사용하는 것 같다.

FRandomStream : 문서에서는 FRandomStream::FRand()가 FMath에 미러링한다고 하는데..

rand()와 srand()를 사용하지 않는 것 같다.

사용되는 부분이라해도.. 시드 생성할 때 rand()를 사용한다..

 

FRandomStream 주의 하위 비트에서 매우 나쁜 품질을 가지기 때문에 모듈러스 연산자를 사용하면 안된다는 점이 있다..?

 

이부분을 찾아보기 시작한 이유는 정확한 1/2 확률을 어떻게 적용해야할까를 고민하다가 공부하게 되었다.

 

랜덤 함수로 뽑은 값이 동일한 확률로 뽑은 것이어야만 정확한 1/2확률이 나오기 때문이다..

물론 완벽히 정확한 난수를 뽑는게 불가능해 의사 난수를 뽑아 사용하긴 하지만..

 

https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Core/Math/FRandomStream?application_version=5.1

https://en.cppreference.com/w/cpp/numeric/random

 

Pseudo-random number generation - cppreference.com

The random number library provides classes that generate random and pseudo-random numbers. These classes include: Uniform random bit generators (URBGs), which include both random number engines, which are pseudo-random number generators that generate integ

en.cppreference.com

 

2. 언리얼 오류


1. 툴체인 버전

Running C:/Program Files/Epic Games/UE_5.4/Engine/Build/BatchFiles/Build.bat Development Win64 -Project="D:/Unreal PJ/TestPJ/TestPJ.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE Using bundled DotNet SDK version: 6.0.302 Running UnrealBuildTool: dotnet "..\..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" Development Win64 -Project="D:/Unreal PJ/TestPJ/TestPJ.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE Log file: C:\Users\USER\AppData\Local\UnrealBuildTool\Log.txt Visual Studio 2022 is installed, but is missing the C++ toolchain. Please verify that the "MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest)" component is selected in the Visual Studio 2022 installation options. Total execution time: 1.30 seconds UnrealBuildTool requires at minimum the MSVC 14.34.31933 toolchain. Please install a later toolchain such as 14.38.33130 from the Visual Studio installer.

 

과제를 진행하기 위해서 언리얼 C++ 프로젝트를 생성했더니 저런 에러가 발생했다.

사실 이전에도 블루프린트 프로젝트에서 C++프로젝트로 전환할 때 빌드 에러가 발생했었다.

그때는 이런 에러 메세지가 아니라 단순히 수동으로 프로젝트 빌드해보라는 에러가 발생했다.. 하지만 알고보니 그때도 해당 문제였을 것 같다.

 

아무튼 해당 에러는 툴 체인 버전을 다른걸 사용해라 정도로 이해하면 된다..

단순히 툴체인 버전을 바꾸는게 아니라, 사용하지 않는 툴체인 버전이 깔려있다면, 그 툴체인 버전들을 지워야하는것 같다..(?)

나는 VS를 재설치했고, 그 과정에서 툴체인도 다시 재설치 해주어 해결했다.

 

 

[UE5/언리얼엔진5] 언리얼 엔진 5.3 설치 오류

5.3을 설치해서 사용하려고 하는데 이런 오류가 떴다. Generating VisualStudio project files: Discovering modules, targets and source code for project... WARNING: UnrealBuildTool has banned the MSVC 14.30.0-14.33.99999 toolchains due to com

ncommit-perday.tistory.com

 

 

UnrealBuildTool has banned the MSVC toolchain

I have both Visual Studio 2019 and 2022 installed. Building engine from source, UnrealBuildTool selected MSVC Toolchain 14.29.30133 (the latest that comes with 2019) and built fine. When attempting to generate project files for a project (which is associat

forums.unrealengine.com

 

2. 읽기 권한 문제

이 외에도 언리얼 5.5 C++ 프로젝트 빌드 이슈도 있는데,

현재 언리얼 엔진 5.5버전에서 읽기 권한 문제로 인해 C++ 프로젝트 빌드가 정상적으로 이루어지지 않는 경우가 발생할 수 있다고 한다.

프로젝트를 새로 생성하거나 빌드 작업을 시도할 때 나타날 수 있는 이슈인데, 임시 해결 방안이 있다.

 

1. 파일 탐색기에서 경로로 이동

   엔진이 설치된 위치로 이동

   예 : C:\Program Files\Epic Games\UE_5.4\Engine

   (해당 위치는 개인 환경에 따라 다를 수 있다.)

 

2. 폴더 속성 변경

   해당 폴더를 오른쪽 클릭 > 속성을 선택

   속성 창에서 읽기 전용 체크박스를 해제

   적용 버튼을 눌러 하위 폴더와 파일에도 동일한 설정을 적용

 

3. 언리얼 에디터와 Visual Studio 재실행

   권한 변경이 완료된 후 언리얼 에디터와 Visual Studio를 재실행한다.

 

4. 빌드 재시도

   이후 빌드 작업을 다시 진행한다.

 

해당 문제는 향후 언리얼 엔진 업데이트에서 해결될 가능성이 높을 것 같다.

현재로서는 위의 방법이 가장 간단하고 효과적인 임시 해결책이다.

 

3. 미니 프로젝트


1. 사운드 버그 수정

 

사실 버그라기 보다는 셋팅을 안해주어서 그런거긴 했다.

기본적으로 사운드는 카메라에 붙어있다.

 

1인칭이면 상관이 없지만, 지금 3인칭이기 때문에 문제가 있었다.

느껴질지 모르겠지만, 사운드를 듣는 객체가 카메라이기 때문에 카메라가 어디에 위치해있냐에 따라 들리는 것이 다르다..!

때문에 Audio Listener Override 노드를 이용해 PlayerController의 리스너의 위치를 변경해주어야 한다.

BeginPlay에서 리스너의 위치를 캐릭터 스켈레탈 메시에 어태치를 시켜주고,

Tick에서 리스너의 로테이션을 카메라기준으로 회전시켜 자연스러운 사운드가 들리게 수정해주었다.

 

<참고 자료>

 

 

4. 언리얼 프로젝트 git 관리


대용량으로 넘어가게 되면, 어짜피 LFS를 사용해야하긴 하지만.. 아직 프로젝트 크기가 작을 때 올릴 수 있는 방법이있다.

사실.. gitignore에 어느것을 넣어야 하는가에 대한 내용일 것 같다.

 

1. .vs 폴더
 빌드할때 빨라지는건데, 대부분 캐시로 이루어져있고, 매우 무겁기 때문에 git에 올릴 필요 없다.
 예전 빌드 가지고 있는 것


2. 바이너리
 exe 파일 들이 있는데, 에디터 단의 실행 파일같은 느낌이다.

 실행한다고, 에디터가 켜지지는 않는다. (언리얼 에디터가 켜질 때 사용하는 실행파일 느낌)

 

3. Intermediate
 중간파일로 컴파일 과정에서 나오는 파일들이다.

 .vs가 c++ 빌드 과정에서 나오는 부산물이라면, 해당 폴더는 언리얼쪽의 부산물이다.

 

4. Saved

 용량이 크진 않지만 필요없는 파일
 

이 4가지는 지워도되고, 지워서 git에 올리는게 좋다.

ㄴ> Saved를 제외하면, 용량이 큰편..

대신 해당 중간 파일들을 날리면, 캐싱들이 다 날라가서 솔루션을 열면 버그 처럼 나온다.
때문에 이런 파일들이 지워진 상태에서 프로젝트를 열려면 uproject 파일을 우클릭해 솔루션을 다시 생성해주면 된다.



또, 나중에 최종 실행 파일을 뽑기 위해서 패키징을 하는데, 패키징을 하면 이런 부산물들은 다 없는 채로 패키징이 된다.

즉, 단순히 빌드 부산물과 한번 빌드해둔 프로젝트를 보다 빠르게 켜기위한 캐싱들이다.

!!!! 꿀팁 !!!!

 만약 내 프로젝트 파일이 깨져서 불러와지지 않을 때 그때 오토세이브 파일을 그자리로 대체해주면 이전 오토세이브 시점으로 변경된다.

 

5. 마무리