문서 요약: 구성 (.INI) 파일을 통해 Unreal Engine의 다양한 측면을 구성하는 방법.
문서 변경 내역: Josh Adams에 의해 작성; Richard Nalezynski에 의해 리포트되고 시관 경과에 따라 유지 관리됨.
개요
Unreal Engine에서의 기능과 초기화 방법에 대한 지침은 주로 구성 파일에 의존합니다.
구성은 섹션에 배치된 키와 값의 한 쌍으로 결정됩니다. 1개 이상의 값이 주어진 키와 연관될 수 있습니다.
일부 변수는 native 코드에 의해 직접 액세스되지만 다른 것들은 UnrealScript 코드로 쉽게 추적될 수 있습니다. SaveConfig()
또는 StaticSaveConfig()
함수가 객체에 호출될때마다 엔진은 지정된 구성 파일에 변수를 저장합니다(클래스가 설정 사항을 다른 구성 파일에 저장하도록 정의된 경우를 제외하고).
구성 파일의 native 코드에 의해 사용된 변수는 일반적으로 간단한 섹션 제목을 갖습니다. 예를 들면 DefaultEngine.ini 구성 파일에 나타난 첫번째 섹션은 [URL]
로 간단히 명명됩니다. 그러나 UnrealScript 코드에 의해 사용된 변수는 일반적으로 형식을 따라([(package).(classname)]
) 명확하게 자젹을 갖춘 클래스 이름을 갖습니다. 예를 들면 DefaultEngine.ini의 [Engine.Engine]
섹션은 Engine 클래스가 변수 키-값 쌍을 로드할 Engine 패키지내에 저장됩니다. 이 규칙에는 native C++ 코드에 의해 로드되는 키값의 섹션인 [WinDrv.WindowsClient]
섹션과 같은 일부 예외가 있습니다.
UnrealScript 코드 컴파일러(UCC)는 어떤 패키지가 존재하는지를 결정하기 위해 구성 파일을 사용한다는 것도 또한 유념하십시오. 게임 엔진과 달리 UCC는 설정의 작은 하부 세트를 사용(주로 DefaultEngine.ini 구성 파일의 [Editor.EditorEngine]
섹션)하여 패키지를 로드합니다.
엔진이 처음 실행되면 특정 구성 파일이 누락된 경우가 많습니다. 이 경우 기본 구성 파일이 로드되어 현재 프로젝트 이름을 사용하는 구성 파일로 변환됩니다. 예를 들면 DefaultEditor.ini는 ExampleGame 프로젝트에 대한 ExampleEditor.ini으로 변환됩니다. 실제 구성 파일이 생성된 후 기본 파일은 더 이상 사용되지 않습니다. 그러나 기본 파일이 매우 유용한 참고가 되는 것을 아실 것입니다.
이 기본 파일은 Engine 프로젝트의 Base 파일에 정의되어 있는 핵심 구성을 제거합니다. 이것은 기본 구성 파일의 [Configuration]
섹션에서 볼 수 있습니다.
엔진 구성 파일은 객체와 변수 기본값에 사용됩니다. 사용자 입력 구성은 Exec Commands?와 같은 함수에 대한 기본 키바인딩으로 사용될 수 있습니다.
구성 파일에 대한 작업
파일 형식
섹션 및 키-값 쌍
일반적인 구성 파일은 다음과 같이 배치된 키-값 쌍의 섹션으로 구성됩니다.
[Section] Key=Value
특수 문자
+ 속성이 아직 없으면 줄 하나 추가함(이전 .ini 파일 또는 earlier 동일한 .ini 파일의 이전것에서).
- 한 줄 삭제 (하지만 정확한 매치여야 함).
. 새로운 속성 추가함.
! 속성을 제거함. 속성 이름만 일치하지 완전히 일치할 필요는 없음.
주의: 중복된 줄을 추가하게 된다는 점을 제외하고는 . 는 + 와 동일합니다. 이것은 바인딩에 유용하게 사용될 수 있습니다(DefaultInput.ini에서 본 것과 같이). 예를 들면 가장 아래에 있는 바인딩이 영향을 받으므로 다음과 비슷과 내용을 추가할 수 있습니다.
[Engine.PlayerInput] Bindings=(Name="Q",Command="Foo") .Bindings=(Name="Q",Command="Bar") .Bindings=(Name="Q",Command="Foo")
이것은 적절하게 작동할 것입니다. + 를 사용하면 마지막 줄을 추가하는데 실패할 것이고 바인딩이 올바르지 않게 될 것입니다. .ini 파일 결합으로 인해 위와 같은 사용 패턴이 발생할 수 있습니다.
의견
대부분의 사람들이 세미콜론은 구성 파일에서 주석을 표시하는데 사용된다라는 경향을 가지고 있습니다만 FConfigFile::ProcessInputFileContents
또는 다른 문자열이 실제 주석 구분 문자로 사용되지 않습니다. 이 행동은 의도적인 것입니다. 기술적으로 모든 문자도 다른 키-값 쌍을 나타낼 수 있습니다. 일반적으로 세미콜론은 새로운 줄의 처음에 위치합니다. 주석같이 작동하지만 실제로는 아닙니다.
; This is a Comment ; So is this!
구성 파일 만들기
다른 구성 파일에 기반을 둔 새로운 구성 파일을 만들때 [Configuration]
섹션뿐만 아니라 BasedOn
키-값 쌍을 포함해야 합니다.
예를 들어 여러분의 구성 파일이 기본 Engine.ini 구성 파일에 기반을 두었다면 다음의 여러분 파일의 맨 위에 배치합니다.
[Configuration] BasedOn=..\Engine\Config\BaseEngine.ini
기본 구성 파일에서 상속된 주어진 섹션에 대한 기존 키-값 쌍에 추가를 하려면 + 특수 문자를 사용하여 다음과 같이 사용합니다.
[Core.System] +Extensions=mymap
기본 구성 파일에서 상속된 주어진 섹션에 대한 기존 키-값 쌍으로부터 삭제를 하려면 - 특수 문자를 사용하여 다음과 같이 사용합니다.
[Core.System] -Extensions=umap
만약 여러분의 구성 파일이 어떤것에도 기반을 두지 않는다면 + 또는 - 를 지정할 필요가 없습니다.
객체 구성 저장하기
Unreal Engine은 객체의 구성을 원하는 구성 파일에 저장할 능력을 가지고 있습니다. UnrealScript/엔진 구성 파일의 구문은 아주 간단하고 엔트리를 생성한 객체로 쉽게 추적할 수 있습니다.
구성 파일 이름 선언하기
클래스 선언은 새로운 구성 파일의 파일 이름을 포함합니다. 예를 들면 다음 클래스 예제는 User.ini 구성 파일에 저장될 변수를 선언합니다.
class MyController extends Controller config(user);
구성 파일에 파일 이름을 선언하지 않으면 엔진은 단순히 콘텐츠를 기본 구성 파일에 저장합니다. 다음 예제 코드가 위의 경우를 설명합니다.
class TestConfig extends Actor config; var config int X; function postbeginplay() { X=5; SaveConfig(); }
TestConfig
액터가 생성되면 X 값을 설정하고 그 구성을 저장합니다. MYGAME.ini 파일은 다음과 같이 업데이트됩니다.
[UDN.TestConfig] X=5
다음 번 TestConfig
액터가 생성되면 X의 기본 값은 5일 것입니다. 액터에서 PostBeginPlay()
함수를 제거한다해도 X는 5로 설정될 것입니다.
새로운 구성 파일 이름을 선언하면 해당 파일이 생성됩니다. 아래의 예제는 새로운 구성 파일을 선언하는 객체를 보여줍니다.
class TestConfig extends Actor config(UDN);
변수 구성 및 상속
구성 변수는 하위클래스에 의해 상속됩니다. 그러나 SaveConfig()
가 TestConfig
의 자식 클래스에서 호출되면 X의 값은 자식 클래스에 저장됩니다. 다음 예제는 위의 TestConfig
클래스 경우를 확장합니다.
class TestConfigChild extends TestConfig; function postbeginplay() { X=15; SaveConfig(); }
TestConfigChild
액터가 스폰되면 이 객체에 대한 구성은 저장됩니다.
[UDN.TestConfigChild] X=15
동적 대 정적 구성
프로그래머가 객체의 구성을 구성 파일에 저장하는데 사용할 수 있는 동적과 정적의 2가지 다른 방법이 있습니다. 기본적으로 객체의 인스턴스에 SaveConfig()
가 호출되면 런타임 변수가 저장되는 것을 의미합니다. 클래스 변수에서 StaticSaveConfig()
을 호출하는 것은 객체의 _기본_값을 구성 파일에 기록됩니다. 위의 예제는 런타임 객체의 구성을 저장하는 것을 잘 다루었습니다.
다음 스니피트(snippet)는 X의 기본값을 저장합니다.
class'TestConfigChild'.default.X = 30; class'TestConfigChild'.static.StaticSaveConfig();
X의 기본값은 구성 파일에 기록됩니다.
[UDN.TestConfigChild] X=30
사용 가능한 구성 파일
구성 파일은 지정된 프로젝트의 Config 디렉터리에 위치합니다.
다음은 Unreal Engine을 사용한 프로젝트에서 사용할 수 있는 구성 파일의 목록입니다.
- DefaultEditor
- DefaultEditorKeybindings
- DefaultEditorUserSettings
- DefaultEngine
- DefaultGame
- DefaultInput
- DefaultUI
'engine' 카테고리의 다른 글
스크립트 튜토리얼 (0) | 2010.08.26 |
---|---|
UDKEngine.ini 파일의 EditPackages와 ModEditPackages의 차이점 (0) | 2010.08.26 |
nFringe(언리얼 스크립트 비주얼 IDE) (0) | 2010.08.26 |
kismet에서 set vectorparam 없어짐 문제 (0) | 2010.08.26 |
UnrealScript 언어의 참조 (0) | 2010.08.26 |