Skip to content

Глобальная центральная конфигурация Unity (FastTMASettings)

Центральный конфигурационный узел FastTMA Suite, доступный через Tools → FastTMA → Settings или Edit → Project Settings → FastTMA. Все поля сохраняются в единственный ассет ScriptableObject по пути ProjectSettings/FastTMASettings.asset.


Путь доступа

СпособПуть
Меню UnityTools → FastTMA → Settings
Окно Project SettingsEdit → Project Settings → FastTMA

Инспектор FastTMASettings


Технические спецификации трех ключевых полей

Telegram Pay Url

  • Область действия: Точка входа ретранслятора платежей Stars. При инициации покупки Stars игроком среда выполнения считывает этот URL и открывает его в Telegram WebView через Telegram.WebApp.openTelegramLink().
  • Правила валидации:
    • Должен начинаться с https://http:// и голые доменные имена отклоняются.
    • Категорически запрещено завершать URL символом /. Конечная косая черта приводит к двойному URL-кодированию сегмента пути со стороны Telegram SDK, и платежный шлюз получает ответ 404.
  • Описание поведения: Если текущая игра не использует покупку виртуальной валюты Stars, это поле можно оставить пустым. Оно никак не влияет на остальные модули (User Profile, Haptics, Cloud Save и т. д.).

WARNING

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


Enable Eruda Console

  • Область действия: Плавающая панель отладки на мобильном устройстве, предоставляющая три вкладки — Console (консоль), Network (сеть) и Elements (элементы), работающая на базе библиотеки Eruda, внедряемой на этапе сборки.

  • Описание поведения: При установке этого флажка пост-процесс сборки внедряет сниппет Eruda в index.html; на реальном устройстве автоматически появляется шестеренка отладки.

  • Санитарные требования для релизов:

    ЭтапEruda ConsoleДействие
    Отладка на реальном устройстве✅ УстановленШестерня видна; полный вывод консоли
    Внутреннее тестирование / TestFlight❌ СнятШестерня скрыта; без остатков Eruda
    Официальный релиз в магазине❌ СнятЧистая сборка; нулевые следы Eruda

    Пост-процесс сборки выполняет строгий regex-обход файла index.html на этапе генерации ассетов. Снятие флажка гарантирует полное удаление — ручное редактирование файлов не требуется.


Auto Optimize Compression

  • Область действия: Фаза самовосстановления, выполняемая непосредственно перед запуском конвейера компиляции WebGL IL2CPP.

  • Ключевая ценность: По умолчанию установлен. Автоматически выполняет следующие два действия:

    1. WebGL Compression → Disabled (отключено)
      Отключает gzip / Brotli компрессию на уровне Unity Player Settings. Это предотвращает генерацию Unity файлов Build.framework.js.br или .gz, которые статический хостинг (Cloudflare Pages, Vercel, GitHub Pages) может не обслуживать с корректным заголовком Content-Encoding: br, что приводит к тому, что браузер интерпретирует сжатые байты как обычный текст — результатом становится белый или черный экран при первой загрузке.

    2. Data Caching → Enabled (включено)
      Активирует поведение, эквивалентное Application.SetConsoleFlag("webgl_defer_compilation"), указывая браузеру сначала полностью кэшировать WebGL-фреймворк и выполнять его только после полной готовности бинарных данных, полностью устраняя дергание при загрузке.

  • Когда снимать флажок: Только если вы используете собственный серверный Brotli-конвейер (например, Nginx с brotli_types или CDN с прозрачным Accept-Encoding: br) и уверены, что хостинговый слой корректно устанавливает Content-Encoding: br для каждого ассета.


Механизм самовосстановления ассетов и проверка связности

Create / Rebuild Settings Asset

Эта кнопка гарантирует наличие ассета ProjectSettings/FastTMASettings.asset ScriptableObject. Нажимайте ее в следующих случаях:

  • Файл ассета был случайно удален.
  • Новый клон репозитория открыт на другой машине.
  • Инспектор показывает No FastTMASettings found in ProjectSettings/.

Нажатие Create создает новый ассет со всеми полями в значениях по умолчанию. Нажатие Rebuild перезаписывает существующий ассет значениями, отображаемыми в данный момент в Инспекторе, выполняя роль ручного сброса.


Кнопка Apply — 2-секундный жесткий тайм-аут предварительной проверки

При нажатии Apply конвейер настроек выполняет следующую последовательность перед фиксацией значений в ScriptableObject:

  1. Тайм-аут-шлюз: Немедленно запускается 2-секундный аппаратный таймер.
  2. HTTP-зонд: К текущему Telegram Pay Url (если не пусто) отправляется HEAD-запрос.
  3. Матрица результатов:
Результат зондированияПревышен тайм-аутИндикатор Asset StatusПоведение при коммите
2xx OKНет🟢 ValidФиксация немедленно
3xx / 4xx / 5xxНет🟡 Reachable / WarnФиксация с предупреждением в консоли
Ошибка сети / DNS-сбойНет🔴 UnreachableОтказ от фиксации; ошибка записывается в SettingsReport.txt
Превышен тайм-аутДа⚠️ TimeoutПрерывание фиксации; диалог: «Проверьте файрвол / прокси»

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


Диаграмма состояний Asset Status

[No Asset] --Create--> [Default] --Apply--> [Pending Probe]
                                              |
                            ┌─────────────────┼─────────────────┐
                            ▼                 ▼                 ▼
                         [Valid]    [Reachable / Warn]   [Unreachable]
                            │                 │                 │
                            └────────[Asset Saved]←─────────────┘
                                              |
                                         [Ready]
СостояниеОписание
No AssetФайл ассета отсутствует; Инспектор показывает баннер «Not found».
DefaultАссет существует; все поля в значениях по умолчанию; Apply ещё не нажималась.
Pending ProbeApply нажата; 2-секундный зонд в полёте.
ValidЗонд вернул 2xx; настройки зафиксированы.
Reachable / WarnЗонд вернул не-2xx; зафиксировано с предупреждением.
UnreachableЗонд не прошёл; фиксация отклонена; ошибка записана.
ReadyАссет на диске соответствует последнему зафиксированному состоянию.

Практический совет

Комбинация Auto Optimize Compression (включен) и Cloudflare Pages Pages → Settings → Build configuration → Build → Data Caching позволяет минимизировать время первичной загрузки WebGL для аудитории Telegram Mini App на сетях 4G.