Обзор системы игровых настроек

< Все темы

Общие сведения

Система игровых настроек в HDK предоставляет инструменты для создания, редактирования и хранения настроек проекта, их валидации при редактировании. Доступ к настройкам осуществляется как из Blueprint-ов, так и из С++ кода.

Система включает в себя Engine сабсистему HDKGameSettingsSubsystem и Editor утилиту HDKGameSettingsEditor. Все операции по работе с настройками как в редакторе, так и во время игры производится через сабсистему. В свою очередь утилита является визуальным интерфейсом для наглядной работы с настройками в редакторе и также использует сабсистему.

 

Настройки (Поля)

Настройки создаются и хранятся в системе в виде полей (Fields).

 

Типы полей

Каждое поле может быть одного из следующих типов:

  • Boolean
  • Color
  • Enum
  • Float
  • Integer
  • Integer64
  • Rotator
  • String
  • Vector
  • Vector2D

В зависимости от выбранного типа, в поле хранится значение соответствующего типа, а также данные для валидации этого значения при редактировании (если она применима). Подробнее о валидации, см. раздел Валидация данных.

Совет: Если вам нужно сохранить в настройках данные, тип которых не поддерживается системой (например, любая пользовательская структура данных), вы можете написать для этого типа данных функции сериализации/десериализации в/из текстовой строки, а затем использовать поле типа String для хранения этих данных.

 

Тег

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

В качестве тегов используются GameplayTag-и. Благодаря использованию этого типа тегов доступ к настройкам устойчив к переименования или изменению названий в отличие от использования обычных текстовых тегов. Теги также можно регистрировать непосредственно в С++ коде и ссылать на них оттуда.

При создании нового поля, ему присваивается пустой тег. Пользователь должен задать этому полю уникальный тег, который не используется другими полями. Пока этого не будет сделано, новое поле добавить будет нельзя.

 

Мета данные

Для всех полей задаются мета данные в виде имени и описания поля. Обе переменных доступны для использования во время игры. Имя и описание хранятся в формате FText и могут быть локализованы.

Мета данные полей могут быть использованы для авто генерации игрового меню настроек. Специальный виджет для этих целей находится в разработке.

 

Валидация данных

Большинство типов полей поддерживают валидацию своих значений при редактировании значения. Как правило, валидация заключается в отсечении минимальных и/или максимальных значений. В зависимости от типа, в настройках поля можно задать следующие параметры валидации:

 

Параметр Описание
bClampMin Если включено, то отсекать значение поля, так чтобы оно не было меньше значение указанного в MinValue
MinValue Минимально допустимое значения поля (применяется, если включено отсечение по минимум)
bClampMax Если включено, то отсекать значение поля, так чтобы оно не было больше значения указанного в MaxValue
MaxValue Максимально допустимое значения поля (применяется, если включено отсечение по максимуму)

 

Типы поддерживающие валидацию:

  • Color (покомпонентно)
  • Enum (по заданному массиву значений)
  • Float
  • Integer
  • Integer64
  • Rotator (покомпонентно)
  • Vector (покомпонентно)
  • Vector2D (покомпонентно)

Там где валидация указана покомпонентно, означает, что минимум/максимум будет браться между каждой компонентой данных. Например, у вектора компоненты X, Y, Z будут отсекаться каждая по-отдельности. Суммарная длина вектора учитываться не будет.

Энумерации хранятся в системе неявно, в формате Byte. Поле типа Enum не знает о Blueprint или С++ типе энумерации. Функции для взаимодействия с энумерациями, также возвращают Byte значения, которые нужно сконвертировать в нужный пользователю тип. В таком случае, пользователю также пришлось бы заполнять поля типа Enum числами, вместо привычных текстовых обозначений. На данный момент нет возможности указать тип С++ или Blueprint энумерации в настройках поля, чтобы список допустимых значений энумерации заполнялся напрямую из указанного типа. В качестве компромисса, среди параметров полей типа Enum присутствует дополнительный массив EnumElements. Пользователь должен сам заполнить этот массив списком допустимых элементов энумерации. Данный из этого массива будут отображаться в настройках значения поля, а также будет использоваться для валидации значений устанавливаемых пользователем. Например, если пользователь попытается установить байтовое значение выходящее за рамки указанного массива, введенное значение будет обрезано в диапазоне от 0, до длины массива минус 1.

 

Категории

Настройки хранятся по категориям. Также как и полям, каждой категории пользователь должен назначить уникальный GameplayTag и мета данные в виде имени и описания категории. Обе мета переменных доступны для использования во время игры. Они хранятся в формате FText и могут быть локализованы.

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

Мета данные категорий могут быть использованы для авто генерации меню настроек. Специальный виджет для этих целей находится в разработке.

Хранение настроек

При конфигурировании настроек в редакторе, формируется набор данных по умолчанию. Эти данные автоматически сохраняются в стандартный файл конфигурации DefaultGame.ini проекта.

Далее, во время игры, изменения вносимые в настройки пользователем могут быть сохранены в бинарный файл в папку Saved\SaveGames\ проекта. Сохранение может производиться как в ручном режиме, так и в автоматическом, при каждом применении новых настроек пользователем.

Вы также можете задать имя файла и индекс пользователя, для которого будет произведено сохранение, а также включать/отключить автосохранение перейдя в настройки самой системы настроек. Подробнее о настройке самой системы, см. раздел Настройка системы.

 

Настройка системы

Чтобы настроить саму систему настроек перейдите в раздел настроек плагина Edit -> Project Settings -> Plugins -> HDK. В правой части окна разверните раздел Game Settings.

В данном разделе можно задать следующие параметры системы настроек:

 

Параметр Описание
Slot Name Имя слота (файла), в который будут сохраняться настройки
User Index Номер пользователя, для которого необходимо сохранять настройки
Auto Save Если включено, то автоматически сохранять настройки при применении их пользователем во время игры

 

 

Предыдущая Добавление игровых настроек
Следующая Работа с системой настроек

Наши работы

Ознакомьтесь с нашими работами

Все проекты
Фильтр
Все
VR
AR
Тренажер
Web-разработка
Инсталляция
Видео
Мобильное приложение
Все проекты

Мы гордимся работой

С лучшими компаниями