Пост по прошлой неделе

Файлы конфигурации можно использовать для установки значений свойств, которые будут инициализированы при загрузке проекта. Конфигурация определяется парами ключ-значение, расположенными в разделах. Одно или несколько значений могут быть связаны с данным ключом.

Что такое файл конфигурации?

Файлы конфигурации - текстовые файлы, содержащие настройки свойств для настройки игрового процесса или поведения движка.

Для чего используют файлы конфигурации?

Файлы конфигурации можно использовать для установки значений свойств, которые будут инициализированы при загрузке проекта. Конфигурация определяется парами ключ-значение, расположенными в разделах. Одно или несколько значений могут быть связаны с данным ключом.

Файлы конфигурации механизма используются для значений объектов и переменных по умолчанию. Конфигурация пользовательского ввода может использоваться для привязки клавиш. По умолчанию файлы DefaultEngine.ini и DefaultGame.ini создаются при создании нового пустого проекта с помощью Мастера проектов . Новые проекты, начинающиеся с шаблонов, могут также создавать файлы конфигурации DefaultEditor.ini и DefaultInput.ini, если это необходимо.

Указание настраиваемых переменных:

Чтобы указать, какие переменные следует считывать из файлов конфигурации, класс, содержащий эти переменные, должен сначала получить спецификатор Config в своем макросе UCLASS.

Украшение класса спецификатором Config просто указывает, что этот класс может иметь переменные, считанные из файлов конфигурации, и указывает, из каких файлов считываются конфигурации. Чтобы указать конкретную переменную как прочитанную и сохраненную в файле конфигурации, спецификатор Config также должен быть предоставлен макросу UPROPERTY().

Файлы конфигурации и наследование:

Спецификаторы Config, UCLASS и UPROPERTY наследуются. Это означает, что дочерний класс может либо считывать, либо сохранять все переменные, указанные как Config в родительском классе, и они будут в той же категории файла конфигурации. Все переменные будут находиться под заголовком раздела с именем дочернего класса. Например, информация файла конфигурации для ChildExampleClass, который наследуется от приведенного выше класса ExampleClass, будет выглядеть как следующие строки и сохраняться в тех же файлах конфигурации игры.

Конфигурации для каждого экземпляра:

Каждая категория конфигурации имеет свою собственную иерархию файлов, в которых указаны конфигурации для конкретного движка, проекта и платформы.

Категории конфигурации:

  • Compat
  • DeviceProfiles
  • Editor
  • EditorGameAgnostic
  • EditorKeyBindings
  • EditorUserSettings
  • Engine
  • Game
  • Input
  • Lightmass
  • Scalability

Иерархия файлов:

Иерархия файла конфигурации считывается, начиная с Base.ini, при этом значения в более поздних файлах иерархии переопределяют более ранние значения. Все файлы в папке Engine будут применяться ко всем проектам, а настройки для конкретных проектов должны находиться в файлах в каталоге проекта. Наконец, все различия, специфичные для проекта и платформы, сохраняются в [ProjectDirectory]/Saved/Config/[Platform]/[Category].ini.

Приведенный ниже пример файловой иерархии относится к категории файлов конфигурации Engine.

  1. Engine/Config/Base.ini
  2. Engine/Config/BaseEngine.ini
  3. Engine/Config/[Platform]/base[Platform]Engine.ini
  4. [ProjectDirectory]/Config/DefaultEngine.ini
  5. Engine/Config/[Platform]/[Platform]Engine.ini
  6. [ProjectDirectory]/Config/[Platform]/[Platform]Engine.ini

Комментарии:

У большинства людей сложилось впечатление, что точка с запятой обозначает комментарии в файлах конфигурации, но это не так (FConfigFile::ProcessInputFileContents на самом деле не рассматривает их или любую другую строку как разделитель комментариев). Такое поведение является преднамеренным. Технически любой символ может представлять другую пару ключ-значение. Обычно точка с запятой ставится в начале новой строки. Это работает как комментарий, но на самом деле это не так.

Итоги работы

По итогу работы я познакомился с файлами конфигурации и методами работы с ними.

License

Copyright 2022-present Борис Тараканов.

Released under the MIT license.

Тараканов Борис
Тараканов Борис
Студент Университета Дружбы Народов (РУДН)

My research interests include distributed robotics, mobile computing and programmable matter.