Системные пазлы (System) — Софт Эйт Софт
Description: Эти пазлы могут использоваться для выполнения различных системных функций, таких как вывод в консоль, измерение производительности, получение/установка плотности пикселей, получение информации о GPU и использование постоянного браузерного хранилища.

# Системные пазлы (System)

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

## Содержание

- Перечень пазлов
  - print to console
  - print performance info
  - check performance
  - feature available
  - get GPU
  - set screen scale
  - native screen scale
  - detect gamepad device
  - gamepad index
  - get gamepad property
  - storage set
  - storage get
  - storage remove
  - storage check
  - close app

#

## Перечень пазлов

#

### print to console

Выводит данные любого типа (вывод из какого-либо пазла, переменную или просто текст) в браузерную консоль. Вывод в консоль является наиболее универсальным и простым в использовании методом отладки ваших скриптов.

#

### print performance info

Записывает профиль производительности в течение 1 секунды и выводит его в браузерную консоль. Используйте этот профиль для поиска узких мест производительности и улучшения скорости рендеринга и загрузки приложений. Подробнее здесь.

#

### check performance

Измеряет производительность пользовательского компьютера или устройства. Внутри пазла используется открытая библиотека Detect GPU, чтобы быстро найти готовый результат измерения производительности и выдать характеристику GPU пользователя как "good" (хорошая) or "poor" (плохая).

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

Результат измерения производительности также доступен на странице WebGL Report, которую можно открыть в любом браузере.

Если пазл выдаёт "good", это не значит, что вы можете делать тяжёлую графику. Даже в этом случае вам нужно тщательно оптимизировать приложение!

#

### feature available

Проверяет, доступна ли функция, выбранная из выпадающего списка, в браузере пользователя. Если функция доступна, пазл возвращает `true`, если нет, то `false`.

Функции, которые могут быть проверены с помощью этого пазла:

Функция | Описание
--- | ---
Mobile Device | Приложение запущено на мобильном устройстве (телефоне, планшете или портативном устройстве виртуальной реальности).
Android | Приложение запущено на устройстве с ОС «Андроид».
iOS | Приложение запущено на устройстве с ОС «АйОС» или «АйпадОС».
Windows | Приложение запущено на устройстве с ОС «Виндоус».
macOS | Приложение запущено на устройстве с «Мак ОС».
ChromeOS | Приложение запущено на устройстве с «Хром ОС».
Linux | Приложение запущено на «Линуксе» («Убунту», «Федора», «Ред Хат» и т.д.).
Google Chrome | Приложение запущено в браузере «Гугл Хром» или на одном из его клонов («Хромиум», «Брейв», но не «Эдж»).
Firefox | Приложение запущено в браузере «Файрфокс».
Internet Explorer | Всегда `false`, поскольку «Интернет Эксплорер» давно не поддерживается в «Вердж3Д». Эта функция остаётся для совместимости.
Microsoft Edge | Приложение запущено в браузере «Майкрософт Эдж».
Safari | Приложение запущено в браузере «Сафари».
Touch Screen | Система имеет сенсорный экран («тачскрин»).
Retina Display (HiDPI) | Система имеет экран с высокой плотностью пикселей («Ретина»), т.е. его параметр native screen scale больше или равен `2`.
High Dynamic Range (HDR) | «Вердж3Д» приложение запущено в режиме высокого динамического диапазона. Эта характеристика не имеет отношения к поддержке системой пользователя HDR-мониторов.
Web Audio API | Система поддерживает технологию Web Audio (в настоящее время практически всегда поддерживается).
WebGL | Система поддерживает WebGL (по крайней мере версию 1.0 этого стандарта).
WebGL 2.0 | Система поддерживает WebGL версии 2.0.
WooCommerce | Приложение запущено на продуктовой странице, созданной с помощью плагина к «Вордпрессу» — «Ву Коммерц».
Do Not Track | Браузер выставил настройку "Do Not Track". Эта функция считается устаревшей и больше не используется.

#

### get GPU

Выводит информацию о GPU пользователя: производитель (vendor), например: NVIDIA Corporation, Apple Inc., Qualcomm, и модель (model), например: GeForce GTX 1060 3GB/PCIe/SSE2, Apple A9 GPU, Adreno (TM) 330.

#

### set screen scale

Устанавливает коэффициент разрешения для 3Д-холста. Установите >`1` для улучшения качества, <`1` для улучшения производительности. `1` — это масштаб экрана по умолчанию независимо от плотности пикселей экрана.

Чтобы предотвратить рендеринг слишком большого количества пикселей на дисплеях с высокой плотностью, «Вердж3Д» использует по умолчанию коэффициент масштабирования равный 1. Если производительность не вызывает беспокойства, включите рендеринг с высокой плотностью пикселей, установив масштаб экрана на «родной», в противном случае можно выставить какое-нибудь промежуточное значение (например 1.5).

#

### native screen scale

«Родной» (зависит от аппаратного обеспечения и масштабирования браузера) коэффициент разрешения 3Д-холста. Если вы не увеличиваете или не уменьшаете вашу страницу, это значение равно 1 для обычных экранов и >1 для HiDPI-мониторов, современных смартфонов и планшетов.

#

### detect gamepad device

Определяет игровые манипуляторы («геймпады»), подключенные к системе или отключенные от нее. При обнаружении нового устройства срабатывают пазлы, указанные в слоте once connected do. При отключении устройства срабатывают пазлы, указанные в слоте once disconnected do. В любом случае значение gamepad index устанавливается и возвращает индекс устройства.

#

### gamepad index

Возвращает индекс подключенного/отключенного игрового манипулятора.

#

### get gamepad property

Возвращает свойство игрового манипулятора для устройства с заданным индексом.

Свойства:

- connection status — подключено ли устройство (выдает true) или отключено (выдает false).
- axis — положение оси («джойстика») устройства в диапазоне -1.0–1.0. Например аналоговый джойстик для большого пальца, встречающийся на всех последних моделях геймпадов, представлен двумя осями: влево-вправо и вверх-вниз.
- button — состояние кнопок устройства. Выдает true когда кнопка нажата, в противном случае false .
- analog button — состояние аналоговых кнопок. Аналогичен button, но может определять усилие нажатия на кнопку. Выдает значение в диапазоне 0–1.
- id — строка идентификатора устройства. Определяет марку и модель подключенного устройства.
- timestamp — время, когда были обновлены оси/кнопки игрового манипулятора. Вы можете хранить это значение в переменной и сравнивать с текущей меткой времени каждый кадр, чтобы определить, что какой-то джойстик/кнопка были передвинуты/нажаты.
- mapping — раскладка устройства: "standard" для стандартных манипуляторов, "xr-standard" для манипуляторов, используемых в виртуальной и дополненной реальности, "" (пустая строка) для неизвестных устройств.
- debug info — выходная строка с отладочной информацией. Выведите эту информацию с помощью пазла print to console, чтобы узнать, какие кнопки или джойстики доступны на подключенном игровом манипуляторе.

Данная функциональность используется в демо-приложении «Приключения фермера» (исходные файлы доступны в магазине ассетов).

Для назначения кнопок/джойстиков в вашем приложении используйте инструмент «Диагностика геймпада», свойство debug info или следуйте стандартной раскладке геймпада (работает не для всех типов устройств):

Для геймпадов устройств виртуальной реальности раскладка отличается:

#

### storage set

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

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

#

### storage get

Возвращает значение из локального хранилища браузера по заданному ключу.

#

### storage remove

Удаляет значение из локального хранилища браузера по заданному ключу.

#

### storage check

Проверяет, существует ли значение связанное с заданным ключём в локальном хранилище браузера.

#

### close app

Закрывает «Вердж3Д»-приложение. Из-за ограничений безопасности, накладываемых браузерами, этот пазл работает только для приложений, сделанных на «Электроне», «Кордове» и страниц открытых программным способом.

## Проблемы с пазлами?

Обращайтесь за помощью на наш форум!