14 KiB
Анализ визуальных референсов Exchanger
Дата анализа: 2026-08-20.
Статус материалов
Каталог references/ содержит локальные концептуальные материалы и добавлен в .gitignore. Эти файлы используются для понимания продукта и не предназначены для приложения или production-сборки. Сам .gitignore не управляет экспортом Godot, поэтому будущий export preset должен явно исключить references/. Перед использованием конкретных логотипов, персонажей, шрифтов и иллюстраций необходимо подтвердить права и получить исходники подходящего качества.
Проанализированы:
- семь макетов интерфейса размером 720×1280;
- один рендер корпуса размером 904×1280;
- видео интерфейса H.264 размером 1080×1920, 50 FPS, длительностью 32,16 секунды, без звуковой дорожки.
Физический аппарат
Референс показывает высокий напольный разменник с портретным экраном:
- корпус с сильно скруглёнными углами и зелёной рамой;
- установка на четырёх колёсах;
- вертикальный экран на передней панели с подсвеченной рамкой;
- справа от экрана сверху вниз расположены купюроприёмник, платёжный терминал/NFC, монетоприёмник и дополнительный сервисный элемент;
- ниже экрана расположен подсвеченный лоток выдачи жетонов с подписью «Жетоны здесь!»;
- на лицевой панели размещено название «Размен»;
- оформление корпуса продолжает космическую тему интерфейса: звёзды, НЛО, зелёный инопланетянин, луч, корова и монеты;
- боковая панель содержит вертикальную надпись «Размен жетонов».
Из этого следует, что UI должен проектироваться для портретного дисплея и визуально согласовываться с оклейкой корпуса. Расположение физических приёмников справа можно отражать направляющими иллюстрациями на соответствующих экранах оплаты.
Визуальный язык интерфейса
- Целевая ориентация — портретная 9:16.
- Основной референсный viewport — 1080×1920; макеты также представлены в 720×1280.
- Стиль — яркий пиксель-арт с космическим фоном.
- Основные цвета: тёмно-синий фон, салатовый/зелёный акцент, белые панели и тёмно-синий текст.
- Панели имеют белое тело, зелёную строку-заголовок и скруглённые углы.
- Основные кнопки — крупные зелёные плашки с синим текстом.
- В верхней части присутствуют цена жетона, персонажи и короткие реплики.
- В нижней части постоянно видны бренд/логотип и телефон технической поддержки.
- Инопланетянин и НЛО выполняют роль маскота, подсказки и отображения результата.
- Фоновая композиция статична. Движение создают отдельные спрайты НЛО, луча и персонажей, которые не перекрывают функциональные панели.
Текущая космическая тема проекта является техническим прототипом. На Этапе 2 её следует адаптировать к портретной пиксельной композиции, не копируя неподтверждённые референсные ассеты напрямую. Фоновая картинка должна оставаться статичной; шейдеры, частицы и фоновое видео для неё не нужны. Промо-ролик — отдельный UI-компонент домашнего экрана.
Домашний экран
На домашнем экране одновременно отображаются:
- цена одного жетона; в референсе — 10 рублей;
- бинарное состояние запаса: «много жетонов» или «мало жетонов», без числового остатка;
- выбор способа оплаты: наличные или безналичные;
- крупное действие «Выдать»;
- промо-блок;
- логотип и телефон технической поддержки;
- тематические персонажи и короткая реплика клиента/маскота.
Референс не использует отдельный пустой стартовый экран с кнопкой «Начать». Домашний экран сразу показывает состояние автомата и доступные способы оплаты. Существующий StartScreen следует преобразовать в HomeScreen или заменить им при внедрении навигации.
Ветка оплаты наличными
Экран «Оплата наличными» содержит:
- кнопку возврата;
- текущий внесённый баланс;
- рассчитанное количество жетонов и возможный бонус;
- иллюстрации купюроприёмника и монетоприёмника;
- инструкции, куда вносить купюры и монеты;
- действие выдачи после достаточного баланса.
Контроллер должен передавать приложению события о принятой сумме и, вероятно, текущее состояние приёмников. Правила сдачи, минимальной суммы и отмены необходимо согласовать отдельно.
Ветка оплаты картой
Референс показывает несколько последовательных состояний:
- Выбор одной из предустановленных сумм: 10, 50, 100, 150, 200, 300, 400 или 500 рублей.
- Кнопку «Другая сумма».
- Цифровую клавиатуру для ввода произвольной суммы, отмену, очистку/ноль и подтверждение.
- Экран ожидания с инструкцией приложить карту к платёжному терминалу.
- Экран результата оплаты.
В видео показан отрицательный результат «Оплата не прошла» с грустным маскотом. Успешный результат и подтверждённая выдача в референсах не показаны, поэтому их визуальная композиция должна быть спроектирована отдельно в том же стиле.
Бонусы и расчёт жетонов
На макетах присутствует пример «100 жетонов + 50 жетонов в подарок». Это требует отдельной конфигурируемой модели:
- цена одного жетона;
- предустановленные суммы;
- правила округления суммы в количество жетонов;
- пороги и размер бонуса;
- максимальная сумма.
Датчик хоппера не сообщает точный остаток, поэтому приложение не может проверять выбранный пакет против количества жетонов внутри. Состояние Low предупреждает о малом уровне, но не блокирует оплату; отсутствие подтверждённого сигнала (Unknown) блокирует её до диагностики.
Числа из референса считаются примерами до подтверждения владельцем продукта.
Промо-блок
Домашний экран содержит отдельную область для промо-ролика. Планируемый компонент должен:
- воспроизводить локальные ролики по циклу;
- иметь статический fallback-постер;
- не блокировать основной поток и тач-ввод;
- отключать декодирование на скрытых экранах;
- работать без звука по умолчанию, если иное не согласовано;
- получать плейлист и режим воспроизведения из внешней конфигурации;
- корректно переживать отсутствующий или повреждённый файл.
Наблюдаемая последовательность видео
Приблизительная временная последовательность 32-секундного ролика:
- 0–13 секунд — домашний экран, анимация НЛО/луча и промо-области;
- 14–18 секунд — экран оплаты наличными;
- 19–20 секунд — возврат на домашний экран;
- около 21 секунды — короткий фоновой переход с НЛО;
- около 22 секунд — выбор суммы оплаты картой;
- около 23 секунд — ввод произвольной суммы;
- 24–27 секунд — ожидание прикладывания карты;
- 28–32 секунды — ошибка оплаты с анимированным маскотом.
Переходы преимущественно быстрые и не должны задерживать пользователя. Фоновая анимация сохраняет визуальную непрерывность между экранами.
Требуемые данные конфигурации
На основании референсов в конфигурацию необходимо добавить:
- ориентацию и целевой viewport;
- название/бренд автомата;
- телефон техподдержки;
- цену жетона;
- предустановленные суммы оплаты картой;
- минимальную, максимальную и кратную сумму;
- бонусные правила;
- начальное бинарное состояние
Enough/Lowдля mock-режима; - включённые способы оплаты;
- тексты подсказок;
- плейлист промо-роликов и fallback-постер;
- параметры показа логотипа и брендовых элементов.
Требуемые события контроллера
Протокол оборудования должен позволять получить или инициировать:
- состояние запаса «много/мало»; при отсутствии сигнала приложение использует техническое состояние
Unknown; - принятую наличную сумму и обновление баланса;
- состояние купюро- и монетоприёмника;
- начало карточной оплаты на выбранную сумму;
- успешный, отклонённый и отменённый результат оплаты;
- начало выдачи, прогресс и подтверждённое количество выданных жетонов;
- аппаратные ошибки и состояние связи.
Подтверждённая аппаратная разводка
IN8 — сервисная кнопка, IN1 и IN4 — active-low датчики уровня первого и второго хопперов, IN24 и IN25 — датчики выдачи первого и второго хопперов. Оба канала работают: первый использует 30X, второй — 40X. Выдача и пересчёт подтверждаются строками платы, поэтому физические входы не создают двойной программный учёт.
Неподтверждённые вопросы
- Фактическое разрешение и физический размер экрана.
- Является ли цена 10 рублей рабочей или демонстрационной.
- Финальные правила бонусных жетонов.
- Возможность возврата наличных и выдачи сдачи.
- Точная роль кнопки «Выдать» на домашнем экране.
- Формат взаимодействия с банковским терминалом через контроллер.
- Финальные бренд, логотип, персонаж, телефон и права на референсные ассеты.
- Требования к форматам промо-роликов, плейлисту и звуку.
- Визуальный сценарий успешной оплаты и частичной выдачи.