Фоновая загрузка Unity игры в Telegram
Требуется реализовать механизм фоновой загрузки тяжелого (основного) билда Unity WebGL во время воспроизведения облегченной версии игры в Telegram. Основная цель: ускорить первый запуск основного геймплея скрытой загрузкой его данных до того, как пользователь пройдет интро.
Текущий пайплайн
- Сборка двух билдов: легкий (Loading) и тяжелый (Main).
- Легкий билд запускается первым.
- Пока работает легкий, в фоне загружается основной через адрес содержащий сжатый архивы .data .wasm.
Требуемая функциональность
- При запуске легкой сцены начинает фоново загружаться главный билд.
- По готовности - дождаться завершения Loading → отобразить заставку, а затем переключить пользователя на основной билд.
- Переключение происходящее при клике на кнопку «Играть» (после того, как пользователь посмотрит интро).
- Все данные для указания URL основного билда передаются через переменные JS в объекте UnityInstance.currentPackegeOption или через глобальную JS-переменную MainBuildUrl.
Технические детали
- Язык программирования: JavaScript (используется для интреопа генерации между Unity и Telegram Web App).
- Браузерные API: fetch (blob), IndexedDB (хрань-во для оффсайт кеша), Workbox (не обязательно, но ускоряет ТЗ).
- Рекомендуемый стек: Service Workers + расширение возможностей UnityLoader.
- Условия экономии трафика: Telegram Web App включает потоковую загрузку и отдает файлы со сжатием бр, потенциально необходимо собрать правильно сочетание сегментов RequestDownloadRemoteAbi в WebGLRequest класс внутри игры.
Исполнитель получается акт продления проекта уже размещенного на форуме со всей оригинальной документацией прям из обложки проектного сообщения.