환경설정 파일

시작 시 게임플레이 또는 엔진 행동을 환경설정하는 초기 설정입니다.

추가 참고

환경설정 파일(Configuration Files)언리얼 엔진(Unreal Engine, UE) 의 초기 설정을 제공합니다. 가장 기본적인 수준에서는 섹션으로 구분된 키-값 쌍의 목록이 들어 있습니다. 이 파일을 사용하여 모든 빌드와 플랫폼에서 언리얼 엔진 시작 시 로드되는 오브젝트와 프로퍼티의 디폴트값이 설정됩니다. 환경설정 파일의 확장자는 .ini 입니다.

구문

환경설정 파일은 다음 구조를 따릅니다.

[SECTION1]
<KEY1>=<VALUE1>
<KEY2>=<VALUE2>

[SECTION2]
<KEY3>=<VALUE3>

모든 환경설정 변수는 하나의 [SECTION] 에 포함되어야 하며 KEY 와 그 뒤의 = 심볼로 구성됩니다. 예를 들어 BaseEngine.ini 에는 다음 내용이 있습니다.

[Core.Log]
LogTemp=warning

환경설정 변수의 VALUE 는 비워두어도 되므로 다음과 같이 작성할 수도 있습니다.

[Core.Log]
LogTemp=

섹션 이름

섹션 이름은 임의의 값으로 설정할 수 있는 알파벳 스트링입니다. 환경설정 시스템은 환경설정 변수가 프로젝트 코드에 존재하는지 여부와 관계없이 환경설정 파일의 모든 선언을 로드합니다.

모듈

모듈에 포함된 환경설정할 수 있는 오브젝트의 섹션 헤더는 다음 구문을 사용합니다.

[/Script/ModuleName.ClassName]

설명은 다음과 같습니다.

  • ModuleName: 환경설정할 수 있는 오브젝트를 포함하는 모듈의 이름입니다.

  • ClassName: 환경설정할 수 있는 오브젝트를 포함하는 ModuleName 모듈 안에 있는 클래스의 이름입니다.

플러그인

플러그인에 포함된 환경설정할 수 있는 오브젝트의 섹션 헤더는 다음 구문을 사용합니다.

[/Script/PluginName.ClassName]

설명은 다음과 같습니다.

  • PluginName: 환경설정할 수 있는 오브젝트를 포함하는 플러그인의 이름입니다.

  • ClassName: 환경설정할 수 있는 오브젝트를 포함하는 PluginName 플러그인 안에 있는 클래스의 이름입니다.

블루프린트

블루프린트에 포함된 환경설정할 수 있는 에셋의 섹션 헤더는 다음 구문을 사용합니다.

[/PathToUAsset/UAssetName.UAssetName_C]

설명은 다음과 같습니다.

  • PathToUAsset: 에셋의 경로입니다.

  • UAssetName: 환경설정할 수 있는 오브젝트를 포함하는 PathToUAsset 내 에셋의 이름입니다.

커스텀 섹션 이름

커스텀 카테고리 이름에는 알파벳 스트링을 사용할 수 있습니다. 예를 들어 카테고리 이름을 "MyConfigSection"으로 설정하려면 다음과 같이 작성합니다.

[MyConfigSection]

커스텀 섹션 이름을 사용하면 섹션 안에 포함된 환경설정 변수를 수동으로 쿼리해야 합니다. 자세한 정보는 변수에 수동으로 환경설정 세팅 적용 섹션을 참고하세요.

코멘트

줄 앞에 세미콜론( ; )을 붙여 환경설정 파일 내에 코멘트를 작성할 수 있습니다. 키-값 쌍을 파일에서 삭제하지 않고 코멘트로 전환해 둘 수도 있습니다.

[Core.Log]
; 다음과 같은 줄을 사용해 DefaultEngine.ini 안에서 로그 카테고리별로 디스플레이 수준을 오버라이드하는 데 이 섹션을 사용할 수 있습니다.
; LogTemp=warning

키-값 쌍

환경설정 키는 다양한 타입의 정보를 나타낼 수 있습니다.

  • 스트링

  • 숫자

  • 배열

  • 구조체

배열

환경설정 파일의 배열 구조체는 환경설정 파일 계층구조의 여러 환경설정 파일에 걸쳐 정보를 통합하고, 축적하고, 오버라이드할 수 있는 메커니즘을 제공합니다. 예를 들어, 엔진 디렉터리의 BaseEngine.iniDefaultEngine.ini 파일과 프로젝트 디렉터리의 DefaultEngine.ini 파일 등 계층구조 내 여러 파일에 걸쳐 하나의 환경설정 배열 오브젝트에 여러 엔트리를 추가할 수 있습니다.

환경설정 파일은 다음 배열 연산을 지원합니다.

**이름*

연산자

설명

예시

비우기(Empty)

!

배열의 콘텐츠를 비웁니다. = 이후의 모든 값은 무시합니다. 알아보기 쉽도록 !MyVar=ClearArray 와 같이 = 이후에 설명이 담긴 값을 넣는 것이 좋습니다.

!MyArray=ClearArray

추가(Append)

+

배열에 값이 이미 존재하지 않는다면 값을 추가합니다. 값이 이미 배열에 존재하는 경우 아무것도 하지 않습니다.

+MyArray=Value

제거(Remove)

-

배열에서 값을 제거합니다. 값이 정확히 매칭되어야 합니다.

-MyArray=Value

복제 추가(Append Duplicate)

.

배열에 값이 이미 존재하더라도 값을 배열에 추가합니다.

.MyArray=Value

배열 예시
MyConfigArray=7
!MyConfigArray=ClearArray
+MyConfigArray=2
+MyConfigArray=3
+MyConfigArray=4
.MyConfigArray=2
-MyConfigArray=4

이 예시의 각 줄은 다음 연산을 수행합니다.

  • MyConfigArray=7: 배열의 모든 것을 제거하고 7을 추가합니다.

  • !MyConfigArray=ClearArray: 배열의 모든 엔트리를 지웁니다.

  • +MyConfigArray=2: 배열에 2를 추가합니다.

  • +MyConfigArray=3: 배열에 3을 추가합니다.

  • +MyConfigArray=4: 배열에 4를 추가합니다.

  • .MyConfigArray=2: 중복 여부와 관계없이 배열에 2를 추가합니다.

  • -MyConfigArray=4: 배열에서 4를 제거합니다.

결과적으로 MyConfigArray 에는 [2,3,2] 가 포함됩니다.

구조체

환경설정 파일은 환경설정 오브젝트의 구조체 프로퍼티 변경을 지원합니다. 구조체를 설정하는 구문은 다음과 같습니다.

[/Script/MyModule.MyClass]
MyStruct=(MyStructProperty1=Value1,MyStructProperty2=Value2,...)

스트링

따옴표는 특수 이스케이프 문자, 16진수, UTF 시퀀스의 사용을 지원합니다. 이 점은 현지화 및 국제화에 유용합니다. 예를 들어, BaseEngine.ini 에는 다음 섹션이 포함되어 있습니다.

[Internationalization]
; 다음은 코어 엔진을 현지화하기 위한 경로이며, 현지화된 게임 콘텐츠 세팅은 *Game.ini 에 있습니다
+LocalizationPaths=../../../Engine/Content/Localization/Engine
+CultureDisplayNameSubstitutes="ja;\u53f0\u6e7e;\u30c1\u30e3\u30a4\u30cb\u30fc\u30ba\u30bf\u30a4\u30da\u30a4"
+CultureDisplayNameSubstitutes="\u53f0\u6e7e;\u4e2d\u534e\u53f0\u5317"

프로젝트의 환경설정 파일

프로젝트에 환경설정 파일을 사용할 때 고려할 사항이 있습니다. 다음 두 가지가 중요합니다.

  • 언리얼 엔진이 인식하는 환경설정 파일의 카테고리는 무엇인지

  • 동일한 카테고리 내의 파일은 서로 어떻게 상호작용하는지

환경설정 파일 카테고리

언리얼 엔진은 몇 가지 일반적으로 '알려진' 환경설정 파일 카테고리를 인식합니다.

일반

  • Engine

  • Game

  • Input

  • DeviceProfiles

  • GameUserSettings

  • Scalability

  • RuntimeOptions

  • InstallBundle

  • Hardware

  • GameplayTags

에디터 전용

  • Editor

  • EditorPerProjectUserSettings

  • EditorSettings

  • EditorKeyBindings

  • EditorLayout

데스크톱 전용

  • Compat

  • Lightmass

환경설정 파일 계층구조

각 카테고리에는 서로 다른 여러 환경설정 파일이 있을 수 있습니다. 예를 들어 Engine 디렉터리에는 다음 파일이 포함됩니다.

  • Engine\Config\BaseGame.ini

  • Engine\Config\Windows\WindowsGame.ini

위 두 파일은 Game 환경설정 파일 카테고리에 속합니다. 각 파일은 추가 커스터마이제이션 레이어를 제공합니다.

동일한 카테고리의 환경설정 파일은 계층구조에 따라 정리됩니다. 동일한 카테고리의 파일에 중복된 키-값 쌍이 있는 경우, 계층구조의 뒤에 오는 파일이 앞에 오는 파일의 키-값 할당을 오버라이드합니다. Engine 디렉터리에 저장된 환경설정 파일은 이 엔진 배포를 사용하는 모든 프로젝트에 적용됩니다. <PROJECT_DIRECTORY> 에 위치한 환경설정 파일은 해당 프로젝트에만 적용됩니다. 마찬가지로 <PLATFORM> 에 위치한 환경설정 파일은 해당 플랫폼에만 적용됩니다.

카테고리 환경설정 파일은 다음 순서대로 로드됩니다.

  1. Engine/Config/Base.ini

  2. Engine/Config/Base<CATEGORY>.ini

  3. Engine/Config/<PLATFORM>/Base<PLATFORM><CATEGORY>.ini

  4. Engine/Platforms/<PLATFORM>/Config/Base<PLATFORM><CATEGORY>.ini

  5. <PROJECT_DIRECTORY>/Config/Default<CATEGORY>.ini

  6. Engine/Config/<PLATFORM>/<PLATFORM><CATEGORY>.ini

  7. Engine/Platforms/<PLATFORM>/Config/<PLATFORM><CATEGORY>.ini

  8. <PROJECT_DIRECTORY>/Config/<PLATFORM>/<PLATFORM><CATEGORY>.ini

  9. <PROJECT_DIRECTORY>/Platforms/<PLATFORM>/Config/<PLATFORM><CATEGORY>.ini

  10. <LOCAL_APP_DATA>/Unreal Engine/Engine/Config/User<CATEGORY>.ini

  11. <MY_DOCUMENTS>/Unreal Engine/Engine/Config/User<CATEGORY>.ini

  12. <PROJECT_DIRECTORY>/Config/User<CATEGORY>.ini

엔진 디렉터리에서 설정된 환경설정은 이 엔진 배포를 사용하는 모든 프로젝트에 적용됩니다. 환경설정 변경사항을 보다 세밀하게 제어하려면 가능한 한 프로젝트 디렉터리에 위치한 환경설정 파일을 사용하세요.

환경설정 파일 계층구조에 대한 자세한 정보는 Engine/Source/Runtime/Core/Public/Misc 에 위치한 ConfigHierarchy.h 헤더 파일을 참고하세요.

계층구조 예시

계층구조가 작동하는 방식을 설명하기 위해, MyExampleProject 라는 프로젝트가 있고 Engine/Config/BaseEngine.ini 환경설정 파일에 다음 내용이 있다고 합시다.

[/Script/EngineSettings.GameMapsSettings]
GameDefaultMap=/Engine/Maps/Templates/OpenWorld

MyExampleProject/Config/DefaultEngine.ini 에는 다음 환경설정 세팅이 있다고 합시다.

[/Script/EngineSettings.GameMapsSettings]
GameDefaultMap=/Game/ThirdPerson/Maps/ThirdPersonMap.ThirdPersonMap

이러면 프로젝트 디렉터리의 DefaultEngine.ini 파일이 엔진 디렉터리의 BaseEngine.ini 파일보다 뒤에 오기 때문에, 프로젝트 시작 시 GameDefaultMap 의 값은 /Game/ThirdPerson/Maps/ThirdPersonMap.ThirdPersonMap 이 됩니다.

코드에 환경설정 변수 사용

환경설정 변수는 UPROPERTIESUSTRUCTS 에 자동으로 적용하거나 환경설정 매니저에서 수동으로 읽어 올 수 있습니다.

변수에 환경설정 세팅 적용

자동으로 적용

환경설정 파일 계층구조 안에서 자동으로 값을 로드하도록 클래스를 정의할 수 있습니다.

섹션 포맷

모듈 코드에 자동으로 환경설정 세팅을 로드하려면 [Section] 포맷을 다음과 같이 작성합니다.

[/Script/ModuleName.ClassName]

설명은 다음과 같습니다.

  • ModuleNameClassName 클래스가 정의된 모듈의 이름입니다.

  • ClassName 은 해당 변수가 정의된 클래스의 이름입니다.

ClassNameU 또는 A 접두사를 제외한 클래스 이름입니다.

자동으로 환경설정 변수를 로드하는 단계

MyGameModule 모듈 안에 AMyConfigActor 클래스가 있고, AMyConfigActor 안에 환경설정 파일에서 변경하고 싶은 멤버 변수 MyConfigVariable 이 있다고 합시다.

  1. UCLASS 선언에서 읽을 환경설정 파일 카테고리를 환경설정합니다. 이 예시는 Game 카테고리를 사용합니다.

    UCLASS(config=Game)
    class AMyConfigActor : public UObject
  2. 환경설정할 수 있도록 설정할 클래스 내 멤버 변수를 Config 로 마킹합니다.

    UPROPERTY(Config)
    int32 MyConfigVariable;
  3. 선택한 환경설정 파일 카테고리의 계층구조 어느 곳에서든 앞의 변수를 설정합니다. 예를 들어, 이 예시에서는 Game 카테고리를 사용하므로 프로젝트 디렉터리 내 DefaultGame.ini 안에서 다음 환경설정을 설정할 수 있습니다.

    [/Script/MyGameModule.MyConfigActor]
    MyConfigVariable=3

클래스는 다음과 같은 모습이어야 합니다.

UCLASS(config=Game)
class AMyConfigActor : public UObject
{
    GENERATED_BODY()

    UPROPERTY(Config)
    int32 MyConfigVariable;
}

수동으로 적용

앞에서 언급한 대로 환경설정 시스템은 C++ 코드에 실제 환경설정 변수가 존재하는지 여부와 관계없이 환경설정 파일의 모든 선언을 로드합니다. 따라서 모든 섹션에서 환경설정 변수를 쿼리할 수 있습니다. 예를 들어 DefaultGame.ini 에는 다음 환경설정이 있을 수 있습니다.

[MyCategoryName]
MyVariable=2

다음 코드를 통해 원하는 모든 파일에서 이 값을 읽을 수 있습니다.

int MyConfigVariable;
GConfig->GetInt(TEXT("MyCategoryName"), TEXT("MyVariable"), MyConfigVariable, GGameIni);

이제 게임 코드의 MyConfigVariable 값은 2입니다.

수동 읽기 옵션

변수를 얻을 수 있는 다양한 함수와, 변수를 가져올 다양한 환경설정 파일 카테고리가 있습니다.

함수

Engine/Source/Runtime/Core/Public/Misc 에 있는 ConfigCacheIni.h 에 다음 함수가 있습니다.

  • GetBool

  • GetInt

  • GetInt64

  • GetFloat

  • GetDouble

  • GetString

  • GetText

  • GetArray

환경설정 카테고리

환경설정 카테고리는 G<CATEGORY>Ini 로 식별됩니다. 예를 들어 Engine 카테고리는 GEngineIni 로 레퍼런스됩니다. 값은 Engine/Source/Runtime/Core/Public 에 있는 CoreGlobals.h 에 있습니다.

환경설정 세팅 편집

다음 작업을 통해 환경설정 세팅을 변경할 수 있습니다.

  • 적절한 .ini 파일의 환경설정 값 수정

  • 언리얼 에디터프로젝트 세팅(Project Settings) 에 노출된 환경설정 값 수정

언리얼 에디터프로젝트 세팅(Project Settings) 에 모든 환경설정 세팅이 노출되는 것은 아닙니다.

코드의 환경설정 세팅 저장

SaveConfig 를 통해 게임 코드의 환경설정 세팅을 저장할 수 있습니다.

환경설정 저장 예시

자동으로 환경설정 변수를 로드하는 단계 섹션의 예시와 동일한 코드를 가지고 있다고 합시다.

UCLASS(config=Game)
class AMyConfigActor : public UObject
{
    GENERATED_BODY()

    UPROPERTY(Config)
    int32 MyConfigVariable;
}

코드 내 어딘가에서 이 환경설정 변수를 수정합니다.

AMyConfigActor *Settings = GetMutableDefault<AMyConfigActor>();
Settings->MyConfigVariable = 42;

절대 경로 PathToConfigFile 을 통해 환경설정 파일에 이 새로운 환경설정 값을 다음과 같이 저장할 수 있습니다.

FString PathToConfigFile;
Settings->SaveConfig(CPF_Config, *PathToConfigFile);

관련 콘솔 명령

GetIni 콘솔 명령을 통해 모든 환경설정 세팅 값을 확인할 수 있습니다. 이 명령으로는 현재 사용 중인 플랫폼 이외의 플랫폼 세팅을 포함한 모든 환경설정 세팅의 값을 볼 수 있습니다. 이 명령은 로드된 환경설정 파일만 검색하므로, 로드되지 않은 환경설정 파일에 있는 세팅에 대한 쿼리는 실패할 수 있습니다

명령

GetIni [Platform@]IniFile:Section Key

Platform@ 실행인자는 선택적입니다. 제공하지 않으면 디폴트 Platform 은 현재 사용 중인 플랫폼입니다.

예시

Windows에서 Engine 계층구조의 URL 섹션에 있는 Protocol 키의 값을 찾으려면 다음을 실행합니다.

GetIni Windows@Engine:URL Protocol

명령줄에서 환경설정 오버라이드

언리얼 엔진에서는 명령줄 실행인자를 통해 환경설정 세팅을 오버라이드할 수 있는 메커니즘을 제공합니다.

명령줄 오버라이드는 배열에 적용할 수 없습니다.

특정 환경설정 파일 프로퍼티

명령

-ini:<CATEGORY>:[SECTION_1]:<KEY_1>=<VALUE_1>,[SECTION_2]:<KEY_2>=<VALUE_2>,...

설명

지정된 KEY 를 환경설정 파일 CATEGORY 의 주어진 SECTION 에 포함된 해당 VALUE 로 오버라이드합니다. 사용할 수 있는 환경설정 파일 카테고리의 전체 목록은 이 페이지의 환경설정 파일 카테고리 섹션을 참고하세요

예시

-ini:Engine:[/Script/Engine.Engine]:bSmoothFrameRate=False,[TextureStreaming]:PoolSize=100

이전 값과 관계없이 Engine 카테고리 계층구조의 [/Script/Engine.Engine] 섹션에 포함된 bSmoothFrameRate 의 값을 오버라이드합니다. PoolSize 도 마찬가지입니다.

카테고리의 디폴트 파일

명령

-Def<CATEGORY>Ini=<FILE_NAME>

설명

오버라이드하려는 특정 환경설정 파일 타입이 CATEGORY 일 때 Default<CATEGORY>.ini 파일을 <FILE_NAME> 으로 오버라이드합니다. 사용할 수 있는 환경설정 파일 카테고리의 전체 목록은 이 페이지의 환경설정 파일 카테고리 섹션을 참고하세요

예시

-DefGameIni=FooGame.ini

FooGame.iniDefaultGame.ini 환경설정 파일을 오버라이드합니다. 사용할 수 있는 환경설정 파일 카테고리의 전체 목록은 이 페이지의 환경설정 파일 카테고리 섹션을 참고하세요

카테고리 내 모든 파일

명령

-<CATEGORY>Ini=<FILE_NAME>

설명

주어진 CATEGORY 내 모든 환경설정 파일을 오버라이드합니다. 사용할 수 있는 환경설정 파일 카테고리의 전체 목록은 이 페이지의 환경설정 파일 카테고리 섹션을 참고하세요

예시

-EngineIni=FooEngine.ini

FooEngine.ini 가 다른 모든 *Engine.ini 파일을 오버라이드합니다. 사용할 수 있는 환경설정 파일 카테고리의 전체 목록은 이 페이지의 환경설정 파일 카테고리 섹션을 참고하세요

접미사가 일치하는 환경설정 파일

명령

-iniFile=<PATH/TO/FILE_NAME>

설명

접미사 경로가 일치하는 모든 환경설정 파일을 오버라이드합니다.

이 명령을 사용하려면 경로의 접미사 디렉터리 구조가 환경설정 파일의 엔진 디렉터리 구조와 매칭되어야 합니다.

예시

-iniFile=C:/MyAdditionalConfigFiles/Engine/Config/BaseEngine.ini

C:/MyAdditionalConfigFiles/Engine/Config/BaseEngine.ini overrides the configuration file <PROJECT_DIRECTORY>/Engine/Config/BaseEngine.ini. 사용할 수 있는 환경설정 파일 카테고리의 전체 목록은 이 페이지의 환경설정 파일 카테고리 섹션을 참고하세요

모든 환경설정 파일

명령

-IniBootstrap=<FILE_NAME>

설명

로드되고 파싱되는 모든 환경설정 파일을 오버라이드합니다. 읽기 전용입니다.

예시

-IniBootstrap=Foo.ini

환경설정 파일 중 Foo.ini 만 로드되고 나머지는 로드되지 않습니다.

환경설정 파일에서 콘솔 변수 설정

환경설정 파일은 콘솔 변수를 명시할 수 있는 다른 메커니즘을 제공합니다. 일부 콘솔 변수는 일반 환경설정 카테고리에서 설정될 수 있으며 다른 콘솔 변수는 특정 환경설정 카테고리에서 설정해야 합니다. 일반적으로 콘솔 변수는 프로젝트 디렉터리 내 DefaultEngine.ini[ConsoleVariables] 섹션에서 설정됩니다.

특정 카테고리

아래 표에 특정 섹션에서 설정되어야 하는 특정 카테고리의 콘솔 변수가 설명되어 있습니다.

타입

섹션

설명

Rendering

[/Script/Engine.RendererSettings]

r. 로 시작하는 모든 콘솔 변수입니다.

Rendering Override

[/Script/Engine.RendererOverrideSettings]

콘솔 변수 r.SupportAllShaderPermutations 에만 해당됩니다.

Streaming

[/Script/Engine.StreamingSettings]

s. 로 시작하는 모든 콘솔 변수입니다.

Garbage Collection

[/Script/Engine.GarbageCollectionSettings]

gc. 로 시작하는 모든 콘솔 변수입니다.

Network Settings

[/Script/Engine.NetworkSettings]

콘솔 변수 n.VerifyPeer , p.EnableMultiplayerWorldOriginRebasing , NetworkEmulationProfiles 에만 해당됩니다.

Cooker Settings

[/Script/UnrealEd.CookerSettings]

cook. 으로 시작하는 모든 콘솔 변수입니다.

추가 정보를 위한 유용한 소스 파일

다음 엔진 파일에서 환경설정 시스템과 그 컴포넌트에 대한 추가 정보를 찾아볼 수 있습니다.

  • ConfigCacheIni

  • CoreGlobals

  • ConfigHierarchy

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
취소