UDN
Search public documentation:

ConfigurationFilesKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 언리얼 엔진 3 기본 > 환경설정 파일
UE3 홈 > 인풋 / 아웃풋 > 환경설정 파일

환경설정 파일


문서 변경내역: Josh Adams 작성. Richard Nalezynski 업데이트. 홍성진 번역.

개요


언리얼 엔진 3 는 그 함수의 기능과 초기화(initialize) 방법을 정하는 데 있어 환경설정 파일에 의존합니다. 환경설정 파일은 섹션별로 분리된 키-값 쌍으로 결정됩니다. 어느 한 키에 대해서 하나 이상의 값을 엮을 수 있습니다.

몇몇 변수는 네이티브 코드로 직접 접근해야 하는 반면, 언리얼스크립트 코드로 쉽게 추적할 수 있는 것도 있습니다. SaveConfig() 이나 StaticSaveConfig() 함수가 오브젝트에서 호출될 때마다, 엔진은 (별도의 환경설정 파일에 세팅을 저장하라 클래스에 정의되지 않았다면) 변수를 지정된 환경설정 파일에 저장합니다.

환경설정 파일에서 네이티브 코드에 의해 사용되는 변수에는 보통 간단한 섹션 제목이 붙습니다. 예를 들어 DefaultEngine.ini 환경설정 파일에 처음 나타나는 섹션은 단지 [URL] 이라 되어 있습니다. 그러나 언리얼스크립트에 의해 사용되는 변수는 보통 [(패키지).(클래스명)] 포맷에 따라 완전히 분류된 클래스 이름을 갖습니다. 예를 들어 DefaultEngine.ini 의 [Engine.Engine] 섹션은 Engine 패키지 안에 저장된 Engine 클래스를 가리킵니다. 예외없는 규칙은 없다고, [WinDrv.WindowsClient] 섹션같은 예외는 있습니다.

또하나 염두에 둘 것은, 언리얼스크립트 코드 컴파일러(UCC)가 존재할 패키지를 결정하는 데도 환경설정 파일을 사용한다는 점입니다. 게임 엔진과는 달리 UCC 는 패키지를 로드하는 데 있어 (주로 DefaultEngine.ini 환경설정 파일의 [Editor.EditorEngine] 부분에 있는) 세팅 일부분만을 사용합니다.

엔진이 처음 실행될 때, 몇몇 환경설정 파일이 거의 빠져 있을 것입니다. 디폴트 환경설정 파일을 로드, 현재 프로젝트 이름을 활용하여 환경설정 파일로 변환합니다. 예를 들어 ExampleGame 프로젝트에 대해서라면 DefaultEditor.ini 가 ExampleEditor.ini 로 변환됩니다. 디폴트 파일은 실제 환경설정 파일이 생성된 이후로는 더이상 사용되지 않습니다. 그래도 디폴트 파일은 리퍼런스하기에, 또는 사용자가 환경설정 파일을 디폴트 세팅으로 리셋시키기에 매우 좋다는 것을 알게 될 것입니다.

이 디폴트 파일은 Engine 프로젝트의 Base 파일에 정의된 코어 환경설정 파일에서 빌드합니다. 이는 디폴트 환경설정 파일의 [Configuration] 부분에서 확인할 수 있습니다.

Engine 환경설정 파일은 오브젝트와 변수 디폴트 값에 대해 사용됩니다. 사용자 입력 환경설정 파일은 Exec 명령과 같은 함수에 대한 키바인딩에 사용해도 됩니다.

환경설정 파일 작업하기


파일 포맷

섹션과 키-값 쌍

전형적인 환경설정 파일은 섹션과 키-값 쌍으로 구성되는데, 다음과 같은 식입니다:

  [Section]
  Key=Value
  

특수 문자

  • + - (기존 환경설정 파일이나 동일 환경설정 파일의 앞부분에) 해당 프로퍼티가 아직 존재하지 않으면 줄을 추가합니다.
  • - - (정확히 일치하는) 줄을 제거합니다.
  • . - 새 프로퍼티를 추가합니다.
  • ! - 프로퍼티를 제거하나, 정확히 일치할 필요는 없으며, 프로퍼티의 이름만 맞으면 됩니다.

: . 는 중복된 줄이 추가될 가능성이 있다는 점만 빼면 + 와 비슷합니다. 예를 들어 (DefaultInput.ini 에서 보듯이) 가장 마지막(bottom-most) 것이 효과를 발휘하는 바인딩에 좋습니다. 그래서 이런 식으로 추가를 하게 되면:

  [Engine.PlayerInput]
  Bindings=(Name="Q",Command="Foo")
  .Bindings=(Name="Q",Command="Bar")
  .Bindings=(Name="Q",Command="Foo")
  

올바르게 작동은 할 것입니다. 여기에 + 를 사용하면 마지막 줄이 추가되지 않아, 바인딩 내용이 달라지게 됩니다. 환경설정 파일 결합시 위와 같은 상황이 벌어질 수도 있습니다.

코멘트

대부분 사람들은 환경설정 파일에서 세미콜론이 코멘트를 뜻한다는 인상을 받는 것 같습니다만, 그렇지 않습니다. 이는 의도된 것입니다. 엄밀히 어느 캐릭터도 다른 키-값 쌍을 표현할 수 있습니다. 전형적으로 세미콜론은 새 줄 처음에 옵니다. 코멘트인 체는 하지만, 실제로는 아닙니다.

  ; 이것은 코멘트고
  ; 이것도 마찬가지!
  

환경설정 파일 만들기

다른 환경설정 파일을 기반으로 하여 환경설정 파일을 새로 만들 때는, BasedOn 키-값 쌍과 함께 [Configuration] 섹션을 포함시켜야 합니다.

예를 들어, 환경설정 파일을 베이스 Engine.ini 환경설정 파일을 기반으로 하려는 경우, 파일 맨위에 다음과 같은 부분을 넣어야 합니다:

  [Configuration]
  BasedOn=..\Engine\Config\BaseEngine.ini
  

베이스 환경설정 파일에서 상속된 지정 섹션에 키-값 쌍을 추가하려면, 다음과 같이 + 특수 문자를 사용하십시오:

  [Core.System]
  +Extensions=mymap
  

베이스 환경설정 파일에서 상속된 지정 섹션에서 기존 키-값 쌍을 제거하려면, 다음과 같이 - 특수 문자를 사용하십시오:

  [Core.System]
  -Extensions=umap
  

환경설정 파일이 어느 것에도 베이스를 두고 있지 않다면 +- 를 지정할 필요가 없을 것입니다.

오브젝트 환경설정 저장

언리얼 엔진 3 에는 오브젝트의 환경설정을 원하는 환경설정 파일에 저장하는 기능이 있습니다. UnrealScript/Engine 환경설정 파일 싱택스는 매우 단순해서 항목을 만든 오브젝트로 쉽게 추적해 갈 수 있습니다.

환경설정 파일명 선언하기

클래스 선언에는 새로운 환경설정 파일의 파일명이 담깁니다. 예를 들어 다음 예제 클래스는 그 변수를 'User' 환경설정 파일에 저장한다 선언하고 있습니다:

TestConfig.uc
  class TestConfig extends Actor
     config(User);
  
  var config int X;
  
  function postbeginplay()
  {
     X=5;
     SaveConfig();
  }
  

TestConfig 이 런타임에 스폰될 때, X 값을 설정한 다음 그 환경설정을 저장합니다. (자신의 게임이 UDKGame 이라 가정하면) UDKUser.ini 파일이 다음과 같이 업데이트됩니다:

  [UDKGame.TestConfig]
  X=5
  

다음 번 TestConfig 이 스폰되면, X 의 디폴트 값은 5 가 됩니다. TestConfig 에서 PostBeginPlay() 함수를 지운다 해도 환경설정 파일에 남아있는 한 X 는 그대로 5 로 설정될 것입니다.

새 환경설정 파일명을 선언하면, 그 이름 앞에 프로젝트 이름(UDKGame 에는 UDK, ExampleGame 에는 Example)이 붙어 생성됩니다. 아래 예제는 새로운 환경설정 파일을 선언하는 오브젝트를 나타내며, (UDKGame 의 경우) UDKUDN.ini 에 저장됩니다:

  class TestConfig extends Actor
     config(UDN);
  

변수 환경설정 및 상속


환경설정 변수는 서브클래스에 의해 상속됩니다. 그러나 SaveConfig()TestConfig 의 자식에서 호출되는 경우, X 값이 자식 클래스에 대해 저장됩니다. 아래 예제는 위의 TestConfig 클래스를 확장합니다:

TestConfigChild.uc
  class TestConfigChild extends TestConfig;
  
  function postbeginplay()
  {
     X=15;
     SaveConfig();
  }
  

런타임에 TestConfigChild 가 스폰되면 이 오브젝트에 대한 환경설정이 다음과 같이 저장됩니다:

  [UDN.TestConfigChild]
  X=15
  

동적 vs 정적 환경설정

오브젝트의 환경설정을 환경설정 파일에 저장하는 데 프로그래머가 쓸 수 있는 메서드는 정적인 것과 동적인 것 두 가지가 있습니다. 기본적으로 뜻하는 바는 단순한데, 오브젝트의 인스턴스에서 SaveConfig() 을 호출하면 런타임 변수가 저장된다는 뜻입니다. 클래스 변수에서 StaticSaveConfig() 를 호출하면 오브젝트 default 값을 환경설정 파일에 씁니다. 위 예제는 모두 런타임 오브젝트의 환경설정 저장을 다뤘습니다. 이를 통해 최종 사용자 환경설정을 되돌리거나, 환경설정 파일의 언리얼스크립트에 정의된 클래스의 디폴트 프로퍼티를 덮어쓸 수 있습니다.

다음 스니펫은 X 의 디폴트 값을 저장합니다:

  class'TestConfigChild'.default.X = 30;
  class'TestConfigChild'.static.StaticSaveConfig();
  

X 의 디폴트 값을 환경설정 파일로 씁니다.

  [UDN.TestConfigChild]
  X=30
  

사용가능한 환경설정 파일


환경설정 파일은 주어진 프로젝트의 Config 디렉토리(예로 %UDK ROOT%\UDKGaem\Config)에 위치해 있습니다.

언리얼 엔진으로 특정 프로젝트와 사용할 수 있는 환경설정 파일 목록은 이렇습니다:

  • DefaultCharInfo - 언리얼 토너먼트 3 가 사용하는 디폴트 캐릭터입니다.
  • DefaultCompat - 디폴트 호환성 룩업 테이블입니다.
  • DefaultEditor - 언리얼 에디터에 대한 디폴트 환경설정 입니다.
  • DefaultEditorKeybindings - 언리얼 에디터 내에서 사용되는 디폴트 키 바인딩 입니다.
  • DefaultEditorUDK - 언리얼 에디터 내에서 사용되는 디폴트 UDK 전용 세팅입니다.
  • DefaultEditorUserSettings - 언리얼 에디터용 디폴트 유저 세팅입니다.
  • DefaultEngine - 언리얼 엔진 3 용 디폴트 환경설정 입니다.
  • DefaultEngineUDK - 언리얼 엔진 3 내에서 사용되는 디폴트 UDK 전용 세팅입니다.
  • DefaultGame - 언리얼 엔진 3 내에서 실행되는 게임에 대한 디폴트 게임 환경설정입니다.
  • DefaultGameUDK - 언리얼 엔진 3 내에서 실행되는 게임에 대한 디폴트 UDK 전용 게임 환경설정입니다.
  • DefaultInput - 언리얼 엔진 3 내에서 실행되는 게임에 사용되는 디폴트 키 바인딩입니다.
  • DefaultInputDefaults - Coalesced.ini (병합됨) 파일이 사용될 때 디폴트로 리셋시키기 위해 필요한 파일입니다.
  • DefaultLightmass - 라이트매스가 사용하는 디폴트 라이트매스 세팅입니다.
  • DefaultUI - 언리얼 엔진 3 내에서 실행되는 게임용 디폴트 유저 인터페이스 환경설정입니다.
  • DefaultWeapon - 언리얼 토너먼트 3 에서 사용되는 디폴트 웨폰 세팅입니다.
  • DefaultWeaponDefaults - Coalesced.ini (병합됨) 파일이 사용될 때 디폴트로 리셋시키기 위해 필요한 파일입니다.