Глобальная центральная конфигурация Unity (FastTMASettings)
Центральный конфигурационный узел FastTMA Suite, доступный через Tools → FastTMA → Settings или Edit → Project Settings → FastTMA. Все поля сохраняются в единственный ассет ScriptableObject по пути ProjectSettings/FastTMASettings.asset.
Путь доступа
| Способ | Путь |
|---|---|
| Меню Unity | Tools → FastTMA → Settings |
| Окно Project Settings | Edit → Project Settings → FastTMA |

Технические спецификации трех ключевых полей
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.
Ключевая ценность: По умолчанию установлен. Автоматически выполняет следующие два действия:
WebGL Compression → Disabled (отключено)
Отключает gzip / Brotli компрессию на уровне Unity Player Settings. Это предотвращает генерацию Unity файловBuild.framework.js.brили.gz, которые статический хостинг (Cloudflare Pages, Vercel, GitHub Pages) может не обслуживать с корректным заголовкомContent-Encoding: br, что приводит к тому, что браузер интерпретирует сжатые байты как обычный текст — результатом становится белый или черный экран при первой загрузке.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:
- Тайм-аут-шлюз: Немедленно запускается 2-секундный аппаратный таймер.
- HTTP-зонд: К текущему
Telegram Pay Url(если не пусто) отправляется HEAD-запрос. - Матрица результатов:
| Результат зондирования | Превышен тайм-аут | Индикатор 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 Probe | Apply нажата; 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.