Документация Steamworks
Круговые меню
Круговое меню — экранный оверлей с игровыми действиями, показанный как кольцо с вариантами, которые можно выбрать с помощью контроллера. Оно похоже на Сенсорные меню, но вместо того, чтобы коснуться конкретного места на сенсорной поверхности, игрок должен навести виртуальную указку на выбранный вариант и нажать кнопку, чтобы его активировать.

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

Приведём пример кругового меню, используемого для быстрого выбора заклинания в Defender's Quest: Valley of the Forgotten:

dqdx_radial_menu.png

Круговое меню в центре экрана не является частью кода Defender's Quest. Оно работает полностью в рамках оверлея Steam и интерфейса настройки ввода Steam. А приложение Defender's Quest просто получает действия от API ввода Steam.

Круговые меню доступны как в режиме встроенной поддержки, так и в режиме совместимости, но они могут работать только с некоторыми источниками ввода:

Источник вводаПоддерживает круговое меню?
Трекпад
Крестовина
Блок кнопок
Джойстик
Гироскоп
Переключатели
Триггеры

Чтобы создать круговое меню, просто выберите совместимый источник ввода в настройках игры (к примеру, джойстик или трекпад) и выберите круговое меню в качестве способа ввода.

radial_menu_create.png

Экран настройки кругового меню выглядит следующим образом:
radial_menu.png

Основные настройки

Способ включения меню


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

Доступные варианты таковы:

Способ включения менюОписание
Нажатие кнопкиВыделенное действие срабатывает при нажатии элемента ввода
Если отпустить кнопкуВыделенное действие срабатывает только тогда, когда пользователь нажимает и затем отпускает элемент ввода
Сброс нажатия / Завершение смены режимаВыделенное действие срабатывает, когда ввод останавливается (к примеру, пользователь отпускает кнопку или поднимает палец с трекпада или джойстика), либо, если круговое меню находится в режиме переключения ввода, когда он заканчивается.
ВсегдаДействие работает, пока выделено.

Другие настройки


НастройкаОписание
Расположение по горизонтали или вертикалиОпределяет положение кругового меню на экране. Значения в диапазоне от 0 до 1, где 0 — левый или верхний край экрана, а 1 — правый или нижний.
Непрозрачность менюУ кругового меню чёрный фон, прозрачность которого можно регулировать. Впрочем, иконки действий всегда на 100% непрозрачны.
Размер менюКаков размер меню? От 0 (самый маленький размер) до 1 (самый большой).
Показывать действия кнопок в сенсорном менюПоказывает пояснение к действию выбранной кнопки кругового меню. Если используется иконка, то действие будет показано в левом верхнем углу. Если эта настройка выключена, то будет показана иконка или пустая кнопка.
Действие при нажатииЭто действия не привязано к какому-либо вводу, а к самому круговому меню. Это особенно удобно при комбинировании с типом активации меню «Всегда включено». Самый удобный пример: привязать к этому «паузу», чтобы когда вы открываете круговое меню, игра приостанавливалась, и у вас было время сделать выбор.

Кнопки меню


Каждой «Кнопке меню №X» можно назначить действие и/или кнопку из режима совместимости. По умолчанию на экране настройки вы увидите пять кнопок меню, но можно назначить до 20 (кнопки 6-20 можно найти в меню «Дополнительные настройки»).

radial_menu_button.png

Центральная кнопка


В центре круговое меню есть опциональная «центральная» кнопка, которую можно привязать точно так же, как и любую другую кнопку кругового меню. Обратите внимание, что размер этой кнопки увеличивается по мере того, как вы добавляете другие кнопки кругового меню.

СОВЕТ: отмена действий при нажатии по центру

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

Особенно подходящим способом в таком случае представляется создание действия, которое не делает ничего в игре (назовите его nevermind или как-то так), и привязка его к центральной кнопке. Или если вы игрок, а разработчик не предусмотрел такое действие (или вы в режиме совместимости), привяжите центральную кнопку к клавише, которую игра игнорирует. Затем выберите номер для этой кнопки меню.

Вуаля! Теперь если вы хотите убрать круговое меню без отправки действия, просто вернитесь в центр и отпустите элемент ввода.

Иконки кнопок меню


Для каждой кнопки меню можно также назначить иконку. Выберите одно из изображений:

radial_menu_button_icon.png

После выбора иконки можно изменить её цвет:

radial_menu_button_icon_color.png

By default the icons are provided by Valve from the Steam client itself. Их можно найти в <SteamInstallDirectory>\Steam\tenfoot\resource\images\library\controller\binding_icons (и если добавить собственные, они появятся в этом меню, но только на локальном компьютере). Разработчики могут предоставить собственные иконки для круговых и сенсорных меню, поместив png-файлы в папке /TouchMenuIcons в корневой папке игры.

Пример собственных иконок разработчика:

dqdx_sc_radial_icons.png

Интересный факт

В качестве иконок можно использовать анимированные гифки!

Вложенные круговые меню


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

Ссылка на создаваемые настройки:
steam://controllerconfig/433340/1360133345

Вот законченный файл с внутриигровыми действиями для создаваемых нами настроек:
slime_rancher_nested_radial_menus.vdf

Вот как это выглядит на экране:

slime_rancher_0.png

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

slime_rancher_1.png

Нажав по нему, игрок попадёт в слой набора действий «Системные опции». Когда игрок откроет круговое меню в следующий раз, он увидит это:

slime_rancher_2.png

Здесь представлены действия «Сделать скриншот», «Открыть клавиатуру» и настройки звука. Также есть опция «Возврат», выбор которой деактивирует слой набора действий «Системные опции». В следующий раз при открытии кругового меню будет показан первый слой действий:

slime_rancher_3.png

Вот как это настроить. Сначала необходимо создать слой набора действий. Для этого нажмём «Добавить слой набора действий».

slime_rancher_add_layer_1.png

Называем его «Системные опции».

slime_rancher_add_layer_2_1.png

После этого возвращаемся в основные настройки и набор действий «Игровые действия», выбираем левый трекпад и настраиваем основное круговое меню:

slime_rancher_radial_menu_config_1.png

Всё как обычно, кроме кнопки №5, которая активирует слой набора действий. Он настраивается с помощью кнопки «Набор действий» на экране настроек («Применить слой действий» --> «Системные опции» во всплывающем меню):

slime_rancher_radial_menu_config_3.png

Обратите внимание, что специальная кнопка «набор действий» не появится в меню настроек, если ни один набор действий не задан. Это означает, что слой набора действий должен быть создан до того, как для него задаётся способ активации. Дополнительная информация о создании слоёв наборов действий доступна в разделе Слои наборов действий.

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

slime_rancher_radial_menu_config_4.png

Затем выбираем левый трекпад, где круговое меню привязано к набору действий предыдущего уровня:

slime_rancher_radial_menu_config_5.png

Обратите внимание, что сочетания кнопок для действий предыдущего уровня показаны серым цветом. Для создания вложенного кругового меню их требуется перезадать. Если не изменить действие, оно будет по-прежнему показываться и на втором слое кругового меню. Назначим кнопкам различные сочетания системных действий (кроме центрального nevermind). Обратите внимание, что мы привязываем команду слоя набора действий к пятой кнопке меню, которая деактивирует слой набора действий:

slime_rancher_radial_menu_config_6.png

Вот и всё! Круговое меню с двойным вложением.

Ещё раз ссылка на настройки:
steam://controllerconfig/433340/1360133345

И на файл с внутриигровыми действиями:
slime_rancher_nested_radial_menus.vdf

Дополнительное чтение