라이라의 엔진 퀄리티 및 디바이스 프로파일

라이라 게임 샘플에서 엔진 퀄리티와 디바이스 프로파일 개요입니다.

프로젝트의 엔진 퀄리티 및 디바이스 프로파일 설정하기

언리얼 엔진은 프로젝트의 퍼포먼스 및 비주얼 퀄리티에 영향을 미치는 다양한 엔진 퀄리티(Scalability) 세팅을 제공합니다. 보통은 엔진 디폴트 세팅으로 필요 사항을 대부분 충족할 수 있지만, 더 높은 퍼포먼스 또는 퀄리티를 위해 세팅을 변경하는 것이 좋은 경우도 있습니다. 프로젝트는 여러 플랫폼에서 실행될 수 있으므로 엔진 퀄리티 세팅에도 여러 플랫폼을 위한 여러 값이 필요할 수 있습니다. PC 같은 플랫폼은 개방적이어서 다양한 하드웨어 유형을 포괄하므로 개별 사용자가 자신의 시스템에 맞게 세팅을 조정해야 할 수도 있습니다.

엔진 퀄리티 및 디바이스 세팅 시스템

엔진 퀄리티 목표를 달성하기 위해 다수의 엔진 시스템을 함께 사용하여 모든 플랫폼과 사용자층에 유효한 프로젝트 프로파일 환경설정을 만들 수 있습니다. 다음은 이 프로세스와 관련된 여러 엔진 시스템에 대한 설명입니다.

콘솔 변수

퍼포먼스 및 퀄리티 세팅은 대부분 엔진에서 콘솔 변수(Console Variables)로 구현됩니다. 콘솔 변수는 숫자, 스트링, 열거형 값을 저장하는 네임드 변수입니다. 콘솔 변수는 소스 코드에 디폴트로 설정되어 있으며, 게임별 환경설정 파일 또는 아래 설명된 기타 시스템에 의해 오버라이드될 수 있습니다. 대부분의 변수는 게임 실행 도중에 또는 명령줄에서 설정할 수 있으며, 그러면 값을 확정하기 전에 퀄리티 및 퍼포먼스 세팅을 프리뷰할 수 있습니다. 데이터 주도형 콘솔 변수를 프로젝트에 추가하려면 툴바를 클릭하고 편집(Edit) > 엔진(Engine) >데이터 주도형 CVar(Data Driven CVar) > 콘솔 변수 배열(CVars Array) 로 이동한 뒤 추가(Add) (+ ) 버튼을 클릭합니다.

project-settings-cvars

아래 이미지는 프로젝트 세팅(Project Settings)에 있는 데이터 주도형 콘솔 변수 배열입니다.

디바이스 프로파일

엔진은 디바이스 프로파일(Device Profiles)을 사용하여 프로젝트를 실행할 수 있는 여러 물리적 디바이스 타입의 계층구조를 정의합니다. 툴바로 이동하여 툴(Tools) > 인스트루먼테이션(Instrumentation) > 플랫폼(Platform) > 디바이스 프로파일(Device Profiles) 을 클릭하면 이 세팅을 찾을 수 있습니다.

platforms-device-profiles

예를 들어 디폴트 엔진 세팅에는 모든 Android 디바이스에 사용되는 'Android' 베이스 디바이스 프로파일이 있습니다.

android-device-profile

디바이스 프로파일 세팅에서 기존 디바이스 프로파일(1)에 액세스할 수 있으며, 추가로 CVar 열(2)에서 콘솔 변수를 편집할 수 있습니다.

베이스 프로파일 아래에는 'Android_High' 등의 퍼포먼스 버킷이 다수 있고, 그 프로파일 아래에는 특정 CPU/GPU 타입이 있습니다. 프로젝트가 실행되면 엔진은 커스터마이징 가능한 프로세스를 통해 어떤 특정 디바이스 프로파일을 사용할지 결정합니다. 그런 다음 'Android' 등의 상위 레벨에서부터 해당 프로파일과 관련된 세팅을 적용하고, 그 아래에 더 구체적인 프로파일 값이 설정된 경우 그 값으로 오버라이드합니다.

엔진 퀄리티 그룹

엔진 퀄리티 시스템은 런타임에 선택 가능한 퍼포먼스 세팅의 관련 세트를 정의하는 데 사용됩니다. 예를 들어 엔진의 디폴트 PostProcessQuality 그룹은 모션 블러(Motion Blur)블룸(Bloom) 세팅을 정의합니다. 세팅은 낮음(Low)부터 에픽(Epic)까지의 4개 수준과 최고 퀄리티인 시네마틱(Cinematic) 수준으로 나뉩니다. 프로젝트 또는 사용자가 엔진 퀄리티 그룹의 특정 퀄리티 수준을 선택하면 해당 퀄리티 수준의 모든 콘솔 변수가 적용됩니다.

engine-scalability-settings

엔진 퀄리티 그룹은 콘솔 변수 세팅을 디바이스 프로파일보다 먼저 적용합니다. 특정 디바이스 프로파일에 정의된 세팅은 사용자가 설정한 엔진 퀄리티 그룹의 세팅을 오버라이드합니다. 즉, 디바이스 프로파일이 개별 세팅을 오버라이드하기에 앞서 sg.PostProcessQuality 같은 베이스 엔진 퀄리티 그룹 콘솔 변수를 지정할 수 있다는 것입니다.

아래에서 설명하는 일반 플랫폼 환경설정 오버라이드 시스템을 사용하여 플랫폼별로 엔진 퀄리티 그룹 세팅을 생성하는 것도 가능합니다. 그러나 특정 디바이스 프로파일에 서로 다른 엔진 퀄리티 그룹을 구성하는 것은 불가능합니다.

일반적으로 엔진 퀄리티 그룹은 PC와 같이 개방된 플랫폼에서 유용합니다. 사용자가 다양한 PC 하드웨어 컴포넌트를 활용할 수 있기 때문입니다.

게임 사용자 세팅

UGameUserSettings 클래스는 개별 사용자가 옵션 UI 메뉴에서 변경할 수 있는 모든 세팅을 저장합니다. 사용자가 지정한 세팅은 프로젝트가 실행되는 특정 디바이스의 GameUserSettings.ini 파일에 저장됩니다. 파일 액세스를 제한하는 일부 플랫폼에서는 게임 사용자 세팅을 적절하게 저장 및 로드할 수 있게 하려면 플랫폼별 옵션을 활성화해야 합니다. 디폴트 엔진 클래스는 창 해상도 등의 특정 세팅에 더하여 각 엔진 퀄리티 그룹에 대해 사용자가 선택한 퀄리티를 저장합니다. 많은 프로젝트에서는 게임별 서브클래스를 사용하는 것이 좋습니다. 그렇게 하려면 네이티브 서브클래스를 생성한 다음 게임 사용자 세팅(GameUserSettings) 클래스 이름을 수정합니다. 이를 위해서는 DefaultEngine.ini 파일에서 [/Script/Engine.Engine] 섹션으로 이동하거나 편집 > 프로젝트 세팅(Project Setting) > 엔진 > 일반 세팅(General Settings) > 디폴트 클래스(Default Classes) > 고급(Advanced) > 게임 사용자 세팅 클래스(Game User Settings Class) 로 이동합니다.

general-user-settings

게임별 세팅 클래스에서는 새 세팅을 추가하거나 런타임에 세팅이 적용되는 방식을 변경할 수 있습니다. 특정 게임에 대한 디폴트 값은 게임의 DefaultGameUserSettings.ini 파일에서 설정 가능하며, 새 사용자에 대해서는 이 값이 사용됩니다. 게임 사용자 세팅은 블루프린트에 노출되며, 블루프린트 기반 세팅 UI 또는 소스 코드에서 호출 가능한 유용한 함수가 여럿 있습니다.

예를 들어 RunHardwareBenchmark 함수는 로컬 머신의 상대적인 CPU 및 GPU 속도를 탐지하는 자동 벤치마크를 실행하며, PerfIndexThresholds 로 시작하는 Scalability.ini 세팅을 사용하여 특정 머신에 가장 적합한 엔진 퀄리티 그룹 세팅을 추정합니다. 그러면 ApplyHardwareBenchmarkResults 를 호출하여 그 세팅을 적용하고 저장할 수 있습니다.

텍스처 그룹 세팅

에디터에서 텍스처가 생성되면 'World'나 'UI' 등의 다른 그룹에 할당할 수 있습니다. 이런 그룹은 런타임에 어떤 텍스처 세팅이 적용되는지 지정합니다. 각 그룹에는 특정 디바이스 프로파일에 맞게 커스터마이징 가능한 최대 크기, 밉 레벨, 텍스처 그룹 세팅 등의 여러 세팅이 있습니다. 패키징에서는 이러한 세팅을 고려합니다. 모바일 빌드에서는 최대 해상도를 낮게 설정하고, 해당 디바이스에서 스트리밍 가능한 밉 레벨만 인스톨 패키지에 포함할 수 있습니다. 텍스처 세팅은 런타임에 수정할 수 없기 때문에 콘솔 변수를 직접 사용하지 않습니다.

세팅 우선순위

세팅은 적용되기 전에 먼저 환경설정 파일에서 로드됩니다. 어떤 세팅을 적용할지 결정할 때는 핵심 환경설정 파일 계층구조(Configuration File Hierarchy)가 사용됩니다. 런타임에 수정할 수 없는 환경설정 파일을 로드하는 모든 세팅에는 이 우선순위가 중요합니다. 한편 콘솔 변수 시스템을 사용하여 런타임에 수정 가능한 세팅은 다음과 같은 순서로 적용되며, 높은 순번이 낮은 순번을 오버라이드합니다. 이 순서는 EConsoleVariableFlags 열거에서 정의됩니다.

우선순위 순서

플래그

설명

1

생성자로 설정(SetByConstructor)

콘솔 변수의 생성자에 설정되어 있는 디폴트 값입니다.

2

엔진 퀄리티로 설정(SetByScalability)

엔진 퀄리티 그룹의 퀄리티 수준으로 설정되는 값입니다.

3

게임 세팅으로 설정(SetByGameSetting)

엔진의 게임 사용자 세팅으로 설정되는 우선순위가 낮은 값입니다.

4

프로젝트 세팅으로 설정

DefaultEngine.ini 파일의 [/Script/Engine.RendererSettings]과 같은 섹션으로 프로젝트 세팅을 설정합니다.

이 세팅은 보통 에디터에 있는 프로젝트 세팅 메뉴에서 설정됩니다.

5

시스템 세팅 ini로 설정(SetBySystemSettingsIni)

DefaultEngine.ini 의 [ConsoleVariables] 및 [SystemSettings] 섹션입니다.

6

디바이스 프로파일로 설정(SetByDeviceProfile)

디바이스 프로파일의 더 구체적인 프로파일이 일반적인 프로파일을 오버라이드합니다.

7

게임 오버라이드로 설정(SetByGameOverride)

게임의 게임 사용자 세팅 서브클래스로 설정되는 우선순위가 높은 값입니다. 디바이스 프로파일을 오버라이드해야 하는 세팅에서 사용합니다.

8

콘솔 변수 ini로 설정(SetByConsoleVariablesIni)

엔진의 ConsoleVariables.ini 파일이며, 대부분 개발 중에 테스트 용도로 사용됩니다.

9

명령줄로 설정(SetByCommandline)

일부 명령줄 옵션에서 사용합니다.

10

코드로 설정(SetByCode)

다양한 디버깅 툴에서 사용합니다.

11

콘솔로 설정(SetByConsole)

가장 높은 우선순위로, 실행 중인 게임에서 콘솔로 'NameOfCVar Value'를 입력하여 설정합니다.

priority-call-order

이 다이어그램은 엔진 퀄리티 그룹 시스템에서 시작하는 엔진 오버라이드 프로세스의 예시를 보여줍니다. 우선 엔진은 엔진이 제공한 BaseScalability.ini 파일에서 블룸의 콘솔 변수(Cvar)가 포함된 [PostProcessing@2] 카테고리(UI에 '높음'으로 표시됨)를 확인합니다.

그런 다음 게임별 DefaultScalability.ini 파일이나 WindowsScalability.ini 등의 플랫폼별 파일에서 [PostProcessing@2] 카테고리로 오버라이드된 세팅이 있는지 확인합니다.

다음으로 BaseEngine.ini 파일 에서부터 [SystemSettings] 카테고리로 지정된 콘솔 변수를 확인합니다. DefaultEngine.ini 또는 플랫폼별 ini 파일의 오버라이드가 앞서와 마찬가지로 적용됩니다.

호출 순서는 디바이스 프로파일 시스템까지 계속 내려갑니다. 우선 디바이스 프로파일 매칭 규칙(Device Profile Matching Rules)이 실행되어 적용될 가장 낮은 수준의 디바이스 프로파일(이 경우 Android Galaxy)을 판별합니다.

다음으로 디바이스에 맞는 가장 높은 수준의 디바이스 프로파일(Android)부터 규칙을 적용하기 시작합니다. 먼저 엔진이 제공한 BaseDeviceProfiles.ini 에서 콘솔 변수를 확인한 다음 게임별 DefaultDeviceProfiles.ini 를 확인하여 오버라이드된 콘솔 변수가 있는지 확인합니다.

이 프로세스는 계층구조를 따라 내려오며 위에서 설명한 Android 호출과 유사한 프로세스로 AndroidMid 및 Android Galaxy 디바이스 프로파일 세팅을 확인합니다. 디바이스 프로파일이 모두 적용되면 위에서 설명한 우선순위가 더 높은 레벨의 오버라이드를 적용합니다.

게임별 오버라이드 세팅

게임의 특정 세팅을 변경하려면 환경설정 파일을 구성해야 합니다. 세팅은 여러 위치에 저장되므로, 이 작업은 알맞은 세팅을 찾는 데서부터 시작되는 다단계 프로세스입니다. 아래 예시는 '블룸 퀄리티' 같은 일반적인 개념에서 출발해 r.BloomQuality 같은 구체적인 세팅을 찾기까지의 프로세스를 보여줍니다. 이 세팅은 .ini 파일, 에디터 내 콘솔 변수 목록, 소스 코드에서 찾을 수 있습니다.

엔진 환경설정: BaseScalability.ini

Engine/Config 폴더로 이동하여 BaseScalability.ini 파일을 클릭합니다. 파일을 열고 PostProcessQuality 그룹에서 r.BloomQuality 변수를 찾습니다.

[PostProcessQuality@0] 

r.MotionBlurQuality=0

r.MotionBlur.HalfResGather=1

r.AmbientOcclusionMipLevelFactor=1.0

r.AmbientOcclusionMaxQuality=0

r.AmbientOcclusionLevels=0

r.AmbientOcclusionRadiusScale=1.2

r.DepthOfFieldQuality=0

r.RenderTargetPoolMin=300

r.LensFlareQuality=0

r.SceneColorFringeQuality=0

r.EyeAdaptationQuality=2

r.BloomQuality=4

디바이스 프로파일: 콘솔 변수

> 플랫폼 > 디바이스 프로파일 로 이동하여 디바이스 프로파일 에디터를 엽니다. 에디터에서 Windows 프로파일을 찾고 CVars 열에서 Windows 옆의 편집 아이콘을 클릭합니다.

device-profiles-edit-cvars

그러면 디바이스 프로파일에서 설정 가능한 모든 콘솔 변수의 카테고리별 목록이 창으로 열립니다.

bloom-quality-variable

위 이미지에서 볼 수 있는 블룸 퀄리티 변수는 렌더링 카테고리에 있습니다.

에디터 명령줄

실행 중인 게임 또는 에디터 창을 열고, 물결표 (~ )를 눌러 전체 콘솔을 연 다음, Cmd 라인 텍스트 필드에 'Bloom'을 입력합니다. 자동 완성 섹션에 r.BloomQuality 등 'Bloom'을 포함하면서 런타임에 설정할 수 있는 모든 콘솔 변수가 표시됩니다. editor-command-line-bloom

수동 검색

엔진 디렉터리 내에서 텍스트를 검색할 수 있도록 지원하는 Visual Studio 등의 코드 에디터를 사용하여 엔진의 모든 .ini 파일에서 'bloom' 같은 용어를 검색할 수 있습니다. 아니면 엔진 API 코드 베이스에서 특정 용어를 검색할 수도 있습니다. 지정된 콘솔 변수 또는 환경설정 세팅을 찾은 다음, 해당 세팅에 대한 엔진의 모든.ini 파일을 검색하여 어디에 설정되어 있는지 확인하고 게임 또는 플랫폼별 세팅에 적용하는 것이 좋습니다.

환경설정 파일에서 세팅 오버라이드하기

콘솔 변수 세팅을 모든 플랫폼 및 엔진 퀄리티 그룹에서 항상 동일하게 하려면 DefaultEngine.ini 파일의 [ConsoleVariables] 섹션으로 이동합니다. 예를 들어 다음을 DefaultEngine.ini 파일에 추가하여 모든 경우에 블룸 퀄리티를 오버라이드할 수 있습니다.

[ConsoleVariables]

r.BloomQuality=1

찾는 세팅이 BaseScalability.ini 또는 다른 환경설정 파일에 있는 경우, 프로젝트에서 새 환경설정 파일을 생성하여 오버라이드할 수 있습니다. 그렇게 하려면 프로젝트의 환경설정 디렉터리에서 엔진과 이름이 동일하지만 Default를 Base로 대체한 파일을 생성하거나 편집합니다. 엔진 내 변수와 이름이 동일한 섹션을 추가하거나 찾으면 됩니다. 예를 들어 낮은 퀄리티의 포스트 프로세스 엔진 퀄리티 그룹에서 블룸 퀄리티를 변경하려면 다음 텍스트를 DefaultScalability.ini 파일에 추가합니다.

[PostProcessQuality@0]

r.BloomQuality=1

엔진이 WindowsEngine.ini 등 플랫폼별 환경설정 파일에서 콘솔 변수를 설정하는 경우, 동일한 플랫폼별 환경설정 파일을 사용하여 특정 플랫폼에 대한 이 세팅을 오버라이드할 수 있습니다. 또한 디바이스 프로파일 또는 콘솔 변수 시스템을 사용하지 않는 어떤 플랫폼별 세팅이든 변경할 수 있습니다. 그렇게 하려면 엔진의 동일한 환경설정과 일치하는 새 플랫폼별 환경설정 파일을 생성합니다. 예를 들어 Engine/Config/Windows/WindowsEngine.ini 파일을 오버라이드하려면 ProjectName/Config/Windows/WindowsEngine.ini 파일을 새로 생성하고 위에 설명한 것과 동일한 유형의 변경을 가합니다.

엔진의 상위 레벨 플랫폼 디렉터리를 사용하는 콘솔 같은 플랫폼의 경우 프로젝트 폴더에 병렬 디렉터리를 만들 것을 권장합니다. 알맞은 디렉터리에 PlatformNameScalability.ini 파일을 생성하면 Android 등 특정 플랫폼에 대한 엔진 퀄리티 그룹을 오버라이드할 수 있습니다.

디바이스 프로파일 구성하기

디바이스별 차이를 수용하려면 프로젝트별 디바이스 프로파일 계층구조를 구성해야 합니다. 가장 쉬운 방법은 > 플랫폼 > 디바이스 프로파일 에 있는 디바이스 프로파일 에디터를 사용하는 것입니다. 에디터를 열고 값을 설정할 디바이스 프로파일 옆의 편집(Edit) 아이콘을 클릭하면 됩니다.

device-specific-profiles

변경하려는 디바이스를 모두 포함하는 최고 레벨의 프로파일을 편집할 것을 권장합니다. 그런 다음 콘솔 변수 목록을 편집하여 변경하려는 프로파일의 세팅을 추가 또는 제거합니다.

highest-profile-variable

이 화면은 변경 사항을 저장하지 않습니다. 에디터의 다른 세팅 화면과 달리 여기서는 에디터 상단의 버튼을 사용하여 DefaultDeviceProfiles.ini 를 열어야 합니다. 편집을 마친 뒤에는 디폴트로 저장(Save as Defaults) 을 클릭하여 변경 사항을 프로젝트의 DefaultDeviceProfiles.ini 파일에 작성해야 합니다. 에디터가 소스 컨트롤에 연결된 경우 같은 영역을 클릭하여 해당 파일을 소스 컨트롤에 체크 아웃하거나 추가해야 합니다. 에디터로 이렇게 저장하면 수정된 파일만 작성되지만, 결과 .ini 파일을 읽기 쉽도록 수동으로 수정하는 것이 좋습니다.

특정 플랫폼에 대한 텍스처 LOD 그룹(Texture LODGroups) 세팅은 디바이스 프로파일 창의 TextureLODGroups 열에서 편집 아이콘을 클릭하여 설정할 수 있습니다.

texture-lod-groups

프로젝트를 실행할 플랫폼이 다양한 경우 DefaultDeviceProfiles.ini 파일에 [/Script/Engine.TextureLODSettings] 섹션을 추가하여 엔진 디폴트를 오버라이드하는 방법이 더 쉬울 수도 있습니다. 새 DeviceProfileNameAndTypes 엔트리를 [DeviceProfiles] 섹션에 추가하여 디바이스 프로파일을 추가할 수도 있습니다. 이 메서드에 따르면 세팅이 의도한 대로 작동할 것입니다. 그러나 위 표에서 설명한 우선순위 계층구조 세팅 때문에 우선순위가 높은 엔진 세팅이 우선순위가 낮은 프로젝트별 세팅과 상충할 수 있습니다.

예를 들어 엔진이 DefaultDeviceProfiles.ini 에서 변수를 설정하지만 이를 엔진 퀄리티 그룹별로 설정하고 싶은 경우, 엔진의 디바이스 프로파일 세팅을 실행 취소해야 합니다.

기존 엔진 세팅 취소하기

엔진의 디폴트 세팅 값이 원하는 세팅과 상충하는 경우 디폴트 세팅 값을 실행 취소해야 합니다. 이런 경우는 보통 세팅을 세팅 우선순위 목록에서 다른 레벨로 옮기거나 엔진 퀄리티 그룹 간에 옮기려 할 때 발생합니다. 예를 들어 블룸 퀄리티를 포스트프로세스 엔진 퀄리티 버킷에서 이펙트 버킷으로 옮기는 경우를 생각해 봅시다. 그렇게 하려면 DefaultScalability.ini 파일을 열고 아래 예시와 비슷한 라인을 추가해야 합니다.

    [PostProcessQuality@0]

    -r.BloomQuality=4

    [PostProcessQuality@1]

    -r.BloomQuality=4

    [PostProcessQuality@2]

    -r.BloomQuality=5

    [PostProcessQuality@3]

    -r.BloomQuality=5

    [PostProcessQuality@Cine]

    -r.BloomQuality=5

    [EffectsQuality@0]

    r.BloomQuality=2

    [EffectsQuality@1]

    r.BloomQuality=2

    [EffectsQuality@2]

    r.BloomQuality=2

    [EffectsQuality@3]

    r.BloomQuality=5

    [EffectsQuality@Cine]

    r.BloomQuality=5

여기에는 ‘-'로 라인을 시작하여 한 카테고리에서 엔진 변경을 취소한 다음(DefaultScalability의 라인은 -를 제외하고 BaseScalability의 라인과 완전히 일치해야 함) 이를 새 카테고리로 옮기는 고급 환경설정 시스템 구문이 사용됩니다.

두 가지 메서드를 통해 BaseDeviceProfiles.ini 파일에 있는 콘솔 변수 배열과 같은 배열을 오버라이드할 수 있습니다. 에디터에서 디바이스 프로파일 창을 사용하여 세팅을 저장하는 경우, 배열의 개별 디폴트 요소 각각을 취소하는 -CVars= 라인이 다수 포함된 DefaultDeviceProfile이 생성됩니다.

엔진이 설정한 배열 전체를 제거하고 대체하려면 다음 라인을 사용합니다.

!Cvars=ClearArray 

그 뒤 다음 라인을 사용하여 새 요소를 추가합니다.

+CVars 

또한 베이스 배열이 @Array=Key 구문을 사용하는 경우, 이는 맵처럼 취급하며 해당 키를 사용하여 라인을 오버라이드할 수 있습니다.

예를 들어 아래 라인을 DefaultDeviceProfiles.ini 파일에 추가하여 월드 노멀 맵 텍스처가 2048×2048 치수로 자동 축소되도록 설정할 수 있습니다(2048×2048보다 큰 경우).

BaseDeviceProfiles.ini 에 있는 @TextureLODGroups=Group 라인은 이전 값을 - 또는! 접두사로 제거할 필요가 없다는 것을 의미합니다.

[/Script/Engine.TextureLODSettings]

+TextureLODGroups=(Group=TEXTUREGROUP_WorldNormalMap,MinLODSize=1,MaxLODSize=2048,LODBias=0,MinMagFilter=aniso,MipFilter=point,MipGenSettings=TMGS_SimpleAverage)

라이라 샘플

라이라(Lyra) 게임 샘플은 이러한 여러 기능을 특정 프로젝트에서 결합하는 방법을 보여주는 예시입니다. 아래 섹션에서는 다양한 컴포넌트를 어떻게 결합했는지 살펴봅니다.

엔진 퀄리티 그룹

Lyra/Config/DefaultScalability.ini 파일은 Engine/Config 폴더에 있는 BaseScalability.ini 파일을 복사하고 파일명을 변경한 뒤 불필요한 부분을 제거하여 수동으로 만들어졌습니다.

이 파일에는 엔진 퀄리티 그룹의 작동을 미세조정하는 두 가지 변경 사항 세트가 있습니다.

  • 자동 벤치마크 툴에서 사용한 퍼포먼스 한계치(Performance Thresholds) 는 원래의 엔진 디폴트보다 높은 값이며, 그 결과 높음이나 에픽 퀄리티 수준을 달성하려면 더 빠른 컴퓨터가 필요해졌습니다.

  • 콘솔 변수 세팅의 foliage.DensityScalegrass.DensityScale 은 FoliageQuality 카테고리에서 ViewDistanceQuality 카테고리로 옮겨졌습니다.

이 작업은 간소화된 옵션 메뉴 UI를 사용하여 수행됐습니다. 특정 게임에 대한 폴리지 퀄리티를 지정할 필요가 없기 때문입니다.

디바이스 프로파일

DefaultDeviceProfiles.ini 파일은 에디터에 있는 디바이스 프로파일 창의 디폴트로 저장(Save To Defaults) 옵션을 사용하여 생성되었습니다. 그런 다음 이 값을 수동으로 편집하여 프로파일을 추가하고, 이후 디바이스 프로파일 창으로 수정하여 개별 세팅을 미세조정했습니다.

여기에는 다음과 같은 변경 사항이 포함됩니다.

  • 게임별 'UI With MIPs' 카테고리의 세팅을 정의하기 위해 디폴트 텍스처 그룹 오버라이드가 추가되었고, 에디터에서 DefaultEngine.ini 의 [EnumRemap] 섹션을 활용해 명명되었습니다.

  • iOS 및 Android의 베이스 프로파일로 사용할 새 모바일 디바이스 프로파일이 추가되었습니다.

  • 모바일 디바이스에서 최대 밉 크기를 줄여서 메모리 및 다운로드 용량을 줄이기 위한 새 모바일 프로파일이 새 콘솔 변수 세팅 및 오버라이드 텍스처 그룹으로 정의되었습니다. 이 크기는 쿠킹 시점에 적용됩니다.

  • 베이스 프로파일을 새 모바일 프로파일로 설정하기 위해 iOS 및 Android 디바이스 프로파일이 수정되었습니다.

플랫폼 환경설정 파일

플랫폼 환경설정 파일은 프로젝트를 위한 파일을 생성하는 데 활용할 수 있는 예시입니다. 공개 플랫폼용 환경설정 파일은 Config 폴더에 있는 Default*.ini 파일에서 사용 가능합니다. 게임 콘솔 등 플랫폼 소유자의 라이선스를 필요로 하는 지원 플랫폼은 Lyra/Config/PlatformName/PlatformName*.ini 디렉터리에서 찾아볼 수 있습니다.

비공개 플랫폼 라이선스를 보유한 경우 에픽 파트너사에 문의하세요. 추가 정보는 에픽 온라인 서비스를 참고하세요.

라이라에는 배포에 맞춰 게임을 변형하는 용도의 커스텀 환경설정 옵션이 포함되어 있습니다. 예를 들어 게임이 다수의 Windows 기반 스토어에서 배포되는 경우, Config/Custom 폴더 안에 스토어별 세팅을 오버라이드하는 .ini 파일이 들어 있는 하위 폴더를 생성하면 됩니다.

이러한 .ini 파일 오버라이드는 다음 개발 명령줄 옵션으로 활성화됩니다.

-CustomConfig=Directory 

아니면 Target.cs 파일에 있는 CustomConfig 파라미터를 사용할 수도 있습니다. Config/Custom/CustomConfigName/PlatformName/PlatformNameEngine.ini 와 비슷한 파일 경로를 사용하여 명명된 파일을 생성함으로써 플랫폼별 커스텀 환경설정 파일을 추가할 수 있습니다.

게임 사용자 세팅

사용자별 디바이스 세팅을 처리하기 위해 라이라는 ULyraSettingsLocal 클래스를 UGameUserSettings 의 서브클래스로 사용합니다. 라이라는 음량과 그래픽 퀄리티 등 디바이스에만 저장되는 로컬 세팅을 수정할 때도 동일한 세팅 UI를 사용하며, 키 바인딩을 처리하기 위해서는 클라우드 스토리지에 작성하여 다수의 디바이스에서 사용할 수 있는 ULyraSettingsShared 클래스를 사용합니다.

자세한 정보는 GameSettings 플러그인 문서를 참조하세요.