언리얼 C++ 프로그래밍 75

[언리얼 C++] 개발자 툴

개발자 툴에는 디버거, 분석기, 프로파일러 등 여러가지 정보 수집 툴이 제공됩니다. 프로젝트나 코드 또는 컨텐츠의 최적화 작업 또는 예상대로 작동하지 않을 수 있는 여러 부분에 대한 진단에 도움이 될 수 있는 툴입니다. 제공되는 개발자 툴들은 파일 메뉴에서 Window >> Developer Tools 아래에서 찾을 수 있습니다. 개발자 툴은 세가지 카테고리로 나뉩니다. 디버그: 디버깅 툴이 들어있습니다. 로그: 메시지 및 출력 로그 창이 들어있습니다. 기타: 로거, 매니저, 프로파일러 등이 들어있습니다. 사용가능한 툴의 옵션과 설명은 아래 표와 같습니다. 옵션 설명 블루프린트 디버거 블루프린트 디버거를 엽니다. 중단점을 통해 블루프린트 또는 레벨 블루프린트를 단계별로 살펴볼 수 있습니다. 콜리전 분석기..

[언리얼 C++] UnrealBuildTool (모듈 및 빌드 구성)

1. 모듈 모듈은 언리얼 엔진 4의 빌딩 블록입니다. 엔진은 대규모 모듈 모음으로 구현되며 게임은 이를 보강하기 위해 자체 모듈을 제공합니다. 각 모듈은 기능 집합을 캡슐화하고 다른 모듈에서 사용할 수 있도록 공용 인터페이스 및 컴파일 환경(매크로, 포함 경로 등)을 제공할 수 있습니다. 모듈은 확장자가 .build.cs인 C# 소스 파일을 통해 선언되며 프로젝트의 소스 디렉터리에 저장됩니다. 모듈에 속한 C++ 소스 코드는 .build.cs 파일 옆이나 그 하위 디렉터리에 저장됩니다. 각 .build.cs 파일은 ModuleRules 기본 클래스에서 파생된 클래스를 선언하고 해당 생성자에서 빌드하는 방법을 제어하는 속성을 설정합니다. 이러한 .build.cs 파일은 UnrealBuildTool에 의해 ..

[언리얼 C++] UnrealBuildTool (UBT)

UnrealBuildTool(UBT)은 다양한 빌드 구성에 걸쳐 언리얼 엔진 4 소스 코드를 빌드하는 프로세스를 관리하는 커스텀 도구입니다. 사용자가 구성 가능한 다양한 빌드 옵션을 살펴 보려면 BuildConfiguration.cs 파일을 읽어보시길 바랍니다. 1. 모듈식 아키텍처 언리얼 엔진 4는 여러 모듈로 나뉩니다. 각 모듈에는 모듈 종속성, 추가 라이브러리, 포함 경로 등을 정의하는 옵션을 포함하여 빌드 방법을 제어하는 .build.cs 파일이 있습니다. 기본적으로 이러한 모듈은 DLL로 컴파일되고 단일 실행 파일에 의해 로드됩니다. BuildConfiguration.cs 파일에서 모놀리식 실행 파일을 빌드하도록 선택할 수 있습니다. 빌드 프로세스는 .sln 또는 .vcproj 파일(Visual..

[언리얼 C++] 언리얼 프론트엔드 인터페이스

언리얼 프론트엔드 유저 인터페이스는 아래와 같은 부분으로 이루어져 있습니다. -1. 디바이스 브라우저 -2. 런처 -3. 세션 브라우저 -4. 자동화 -5. 세션 콘솔 1. 디바이스 브라우저 디바이스 브라우저는 현재 기능적으로 크게 제한되어 있으나, 나중에는 네트워크의 모든 타깃 디바이스를 관리하고 공유할 수 있게 될 것입니다. 자동으로 로컬에 사용가능한 디바이스를 감지하고 발견할 수 없는 디바이스를 수동 추가하는 인터페이스 역시 제공합니다. 현재는 로컬에서 발견 가능한 디바이스만 지원합니다. 로컬에서 발견 가능한 디바이스의 범위는 로컬 Windows PC 그리고 네트워크 상에서 선택된 콘솔 디바이스가 포함됩니다. 2. 런처 런처 탭에서는 게임을 빌드, 쿠킹, 설치, 실행시킬 수 있습니다. 런처의 모든 ..

[언리얼 C++] 언리얼 프론트엔드

언리얼 프론트엔드(UFE)는 게임 빌드에 대한 준비, 디바이스에 설치, 실행과 같은 작업을 단순화시켜 빠르게 할 수 있도록 고안된 툴입니다. 언리얼 프론트엔드는 모든 게임 설치, 프로파일링, 테스팅 작업을 하는데 있어서 중앙 인터페이스 역할을 하게끔 디자인되어 있습니다. 언리얼 프론트엔드는 아래와 같은 특징이 있습니다. 특징 설명 Launcher 게임을 빌드, 쿠킹, 설치, 실행합니다. UFE로, 로컬이든 네트워크든, 각기 다른 타깃 플랫폼이 실행중인 다수의 타깃 디바이스에 동시에 설치 가능합니다. 싱글 게임이나 멀티플레이 크로스 플랫폼 게임 테스트를 위한 작업 속도를 크게 끌어올리기 위해, 디바이스 별로 (지원하는 플랫폼에 대해) 다수의 인스턴스를 실행하고 그 인스턴스 별로 각기 다른 규칙을 구성할 수..

[언리얼 C++] 디바이스에서 실행하기

1. Android 디바이스에서 실행하기 에디터 메인 툴 바 오른편에 드롭다운 메뉴가 달린 Launch(실행) 버튼이 있습니다. 드롭다운 메뉴에는 현재 맵을 실행시킬 수 있는 플랫폼 목록이 나옵니다. 일반적으로 Windows나 Mac에서는 필요하지 않은데, 데이터 쿠킹 필요 없이 그냥 '플레이' 버튼을 사용하면 되기 때문입니다. Android의 경우, 여러가지 옵션이 있습니다. 포맷 설명 ETC1 모든 Android 기반 디바이스에 지원되지만 알파 텍스처는 압축되지 않습니다 (그대로 저장됩니다). 압축률을 높이려면 RGB 와 알파 텍스처를 별도로 사용하는 것이 좋습니다. ETC2 모든 OpenGL 3.x 클래스 디바이스에 지원되며, 알파 압축도 지원됩니다. ATC Qualcomm Adreno GPU 에 ..

[언리얼 C++] 컨텐츠 쿠킹

언리얼 엔진에서는 컨텐츠 애셋을 내부적으로 사용되는 특정 포맷으로 저장하는데, 텍스처 데이터는 PNG, 오디오는 WAV입니다. 그러나 이러한 컨텐츠들은 다양한 플랫폼에 맞는 여러가지 포맷으로 변환해줘야 합니다. 해당 플랫폼이 독점 포맷을 사용한다던가, 언리얼의 애셋 저장 포맷을 지원하지 않는다던가, 메모리 또는 퍼포먼스 측면에서 더욱 효율적인 포맷이 존재한다던가 하는 이유 때문입니다. 이렇게 내부 포맷에서 플랫폼 전용 포맷으로 컨텐츠를 변환하는 프로세스를 쿠킹이라고 합니다. 1. 명령줄에서 컨텐츠 쿠킹하기 게임 데이터 쿠킹을 위해서 Cook 커맨드렛을 사용해야 합니다. UE4Editor.exe -run=cook -targetplatform=+ [-cookonthefly] [-iterate] [-map=+..

[언리얼 C++] 리디렉터 (Redirector)

언리얼에서 리디렉터는 이동된 애셋을 가리키던 레퍼런스를 현재 위치로 고쳐주는 오브젝트입니다. 언리얼 에디터에서 애셋을 이동시키거나 이름을 바꾸면 원래의 장소에 리디렉터가 남습니다. 이를 통해 현재 로드되지는 않았지만 이 애셋을 참조하는 패키지가 그 애셋의 새 위치를 알게 됩니다. 작명 규칙을 조기에 정해두고 이를 고수하면 리디렉터로 많은 문제점들을 예방할 수 있습니다. 1. 에디터에서 리디렉터 고치기 에디터에서 리디렉터를 확인하려면 컨텐츠 브라우저에서 리디렉터 표시 필터를 켭니다. 그러면 그 리디렉터를 가리키는 모든 패키지를 다시 저장한 뒤, 그것을 참조하는 모든 것들을 다시 저장할 수 있다면 리디렉터를 삭제합니다. 2. ResavePackages 커맨드렛 ResavePackages 커맨드렛은 -fixu..

[언리얼 C++] 소스에서 언리얼 엔진 빌드하기

1. 소스에서 언리얼 엔진 빌드 루트 디렉터리 안에서, GenerateProjectFiles.bat 파일을 실행하여 프로젝트 파일을 구성합니다. 모든 프로젝트 파일은 intermediate 파일입니다. 최신 상태를 유지하려면 새 빌드를 동기화할때마다 프로젝트 파일을 생성해야 합니다. Intermediate 폴더를 지운 경우, GenerateProjectFiles.bat 파일을 실행하여 프로젝트를 재생성해야 합니다. [프로젝트명].sln 파일을 더블클릭하여 비주얼 스튜디오에 프로젝트를 로드한 후 솔루션 환경설정을 Development Editor로 설정합니다. 개발중인 Windows 운영체제 타깃 버전이 32비트냐 64비트냐에 따라 솔루션 플랫폼을 Win32나 Win64 중 하나로 설정합니다. 프로젝트 타..

[언리얼 C++] 빌드 환경설정 레퍼런스

1. 빌드 환경설정 설명 언리얼 엔진 4는 UnrealBuildTool(언리얼 빌드 툴, UBT)를 통한 커스텀 빌드 메서드를 사용합니다. 이 툴은 엔진의 리플렉션 시스템을 빌드하는데 필요한 정보를 처리해주어, C++ 코드를 블루프린트, 리플리케이션, 시리얼라이제이션, 가비지 컬렉션과 통합시켜 줍니다. 모든 빌드 환경설정에는 두개의 키워드가 들어있습니다. 그 중 첫번째는 엔진과 게임 프로젝트의 상태를 나타냅니다. 예를 들어 Debug 환경설정을 사용해서 컴파일을 하는 경우, 게임 코드 디버깅이 가능합니다. 두번째 키워드는 빌드 대상이 되는 타깃입니다. 예를 들어 프로젝트를 언리얼에서 열고자 하는 경우, 타깃 키워드를 Editor로 붙여 빌드해주면 됩니다. 빌드 환경설정 상태 설명 Debug 디버깅용 심볼..