СИСТЕМА БАНДЛОВ НАШ...

Post on 03-Oct-2020

0 views 0 download

Transcript of СИСТЕМА БАНДЛОВ НАШ...

СИСТЕМА БАНДЛОВ В UNITY:

НАШ ПОДХОДВиталийНемятый

Client Development Team Lead

Copyright Plarium Global LTD. 2018Do not distribute

3 Система бандлов в Unity: наш подход

Copyright Plarium Global LTD. 2018Do not distribute

4 Система бандлов в Unity: наш подход

РАБОТА С РЕСУРСАМИ

◾ Assets и Objects во всех папках

с именем «Resources» при сборке проекта

объединяются в один сериализованный файл;

◾ растет время загрузки индекса;

◾ НЕ нужны для загрузки первой сцены приложения.

Copyright Plarium Global LTD. 2018Do not distribute

КАК БЫТЬ?

Copyright Plarium Global LTD. 2018Do not distribute

ASSET BUNDLES!!!

Copyright Plarium Global LTD. 2018Do not distribute

7 Система бандлов в Unity: наш подход

Это Архив с любым типом активов:

◾ Texture;

◾ Audio clip;

◾ Scene;

◾ …

◾ Script

ЧТО ЖЕ ТАКОЕ ASSET BUNDLE?

Copyright Plarium Global LTD. 2018Do not distribute

8 Система бандлов в Unity: наш подход

ПОДХОДЫ К РАЗБИЕНИЮ РЕСУРСОВ НА БАНДЛЫ

◾ Logical entitiesделение на основе функциональной части проекта, который они представляют;

◾ Object Typesделение по типу ресурсов: звуковые дорожки, языковая локализация...

◾ Concurrent contentгруппирование происходит на основе одновременности использования ресурсов.

Copyright Plarium Global LTD. 2018Do not distribute

9 Система бандлов в Unity: наш подход

ДОСТОИНСТВА ASSET BUNDLES

◾ уменьшают размер сборки;

◾ доставка и обновление контента без кода после установки;

◾ возможность управлять загруженными ресурсами.

Copyright Plarium Global LTD. 2018Do not distribute

10 Система бандлов в Unity: наш подход

Copyright Plarium Global LTD. 2018Do not distribute

11 Система бандлов в Unity: наш подход

СБОРКА ASSET BUNDLES

Copyright Plarium Global LTD. 2018Do not distribute

12 Система бандлов в Unity: наш подход

Copyright Plarium Global LTD. 2018Do not distribute

13 Система бандлов в Unity: наш подход

x64 АРХИТЕКТУРА И IL2CPP

◾ принудительный выпуск Universal приложений;

◾ использование IL2CPP.

Copyright Plarium Global LTD. 2018Do not distribute

14 Система бандлов в Unity: наш подход

СИСТЕМА БАНДЛОВ «НА КОЛЕНКЕ»

◾ папки с раширением .bundle;

◾ манифест как карта всех бандлов;

◾ контент-сервер;

◾ кэш и версирование бандлов;

◾ зависимости бандлов;

◾ компрессия бандлов.

Copyright Plarium Global LTD. 2018Do not distribute

15 Система бандлов в Unity: наш подход

BUNDLE EDITOR

◾ сборка и управление AssetBundles;

◾ формирование и редактирование Manifest;

◾ выгрузка Manifest на Authentication Server.

Copyright Plarium Global LTD. 2018Do not distribute

16 Система бандлов в Unity: наш подход

BUNDLE EDITOR

Copyright Plarium Global LTD. 2018Do not distribute

17 Система бандлов в Unity: наш подход

ВЫБОР МАНИФЕСТА

Copyright Plarium Global LTD. 2018Do not distribute

18 Система бандлов в Unity: наш подход

HEADER ДАННЫЕ

Copyright Plarium Global LTD. 2018Do not distribute

19 Система бандлов в Unity: наш подход

REQUIRED BUNDLES

Copyright Plarium Global LTD. 2018Do not distribute

20 Система бандлов в Unity: наш подход

СПИСОК БАНДЛОВ ДЛЯ СБОРКИ

Copyright Plarium Global LTD. 2018Do not distribute

21 Система бандлов в Unity: наш подход

ВЫБОР КОМПРЕССИИ

Copyright Plarium Global LTD. 2018Do not distribute

22 Система бандлов в Unity: наш подход

ГОТОВЫЕ БАНДЛЫ

Copyright Plarium Global LTD. 2018Do not distribute

23 Система бандлов в Unity: наш подход

ВЕРСИРОВАНИЕ МАНИФЕСТА

◾ хранение полных манифестов по версии клиента;

◾ хранение «базы» манифеста и набора «отличий»

для каждой последующей версии.

Copyright Plarium Global LTD. 2018Do not distribute

24 Система бандлов в Unity: наш подход

MANIFEST

DEMO

Copyright Plarium Global LTD. 2018Do not distribute

25 Система бандлов в Unity: наш подход

ЗАГРУЗКА РЕСУРСОВ ИЗ БАНДЛА

Bundle Manager

◾ организация очереди загрузки AssetBundles с Content Server;

◾ поиск необходимых AssetBundle по имени;

◾ доставка ресурса клиенту;

◾ обработка ошибок процесса загрузки AssetBundles.

Copyright Plarium Global LTD. 2018Do not distribute

26 Система бандлов в Unity: наш подход

РАБОТА С БАНДЛОМ

Loader component

Bundle Manager

WWW.LoadFromCacheOrDownload

ManifestAssetAssetAseet…Asset

Unpucker

LoadAllAssetsAsync

Unload(false)

Cache

ABAB

ABAB

C#

Copyright Plarium Global LTD. 2018Do not distribute

27 Система бандлов в Unity: наш подход

CONTENT SERVER

◾ выделенный файловый сервер — во время разработки;

◾ CDN сервер — на продакшене (production environment).

Copyright Plarium Global LTD. 2018Do not distribute

ОСОБЕННОСТИ РЕАЛИЗАЦИИ НА WebGL

Copyright Plarium Global LTD. 2018Do not distribute

29 Система бандлов в Unity: наш подход

ОСВОБОЖДЕНИЕ БИЛДА ОТ РЕСУРСОВ

◾ работа со статическими ресурсами;

◾ вынесение статических ресурсов в Core Bundles;

◾ параллельная загрузка Core Bundles;

◾ разбиение большого бандла со сценой на волны.

Copyright Plarium Global LTD. 2018Do not distribute

30 Система бандлов в Unity: наш подход

СПЕЦИФИКА РАБОТЫ С БАНДЛАМИ ЗВУКА

Ошибка при загрузке бандлов со звуком в Editor:

Error: Cannot create FMOD::Sound instance for resource

archive:/CAB-71259a89453b52d98348c442374ef11c/CAB-71259a89453b5

2d98348c442374ef11c.resource, (Unsupported file or audio format. )"

В Editor звук не воспроизводится.

Copyright Plarium Global LTD. 2018Do not distribute

31 Система бандлов в Unity: наш подход

ПУТИ РЕШЕНИЯ

◾ в Editor не будет звука =);

◾ в редакторе работать с локальными ресурсами звуков — не выносить их в бандлы;

◾ собирать бандлы звука под Standalone для эдитора, а для билда — под WebGL.

*Бандлы звуков, собранные под WebGL, практически не сжимаются.

Copyright Plarium Global LTD. 2018Do not distribute

СИСТЕМА БАНДЛОВ 2.0

Copyright Plarium Global LTD. 2018Do not distribute

33 Система бандлов в Unity: наш подход

DESCRIPTOR~

DEMO

Copyright Plarium Global LTD. 2018Do not distribute

34 Система бандлов в Unity: наш подход

РАБОТА С РЕСУРСАМИ В EDITOR

Copyright Plarium Global LTD. 2018Do not distribute

35 Система бандлов в Unity: наш подход

ПРОБЛЕМА С ШЕЙДЕРАМИ И ЕЁ РЕШЕНИЕ

Дано:

При формировании Бандла с шейдерами не все варианты шейдера компилируются.

Туман – ? Ответ: Туман есть!

Решение:

1) анализ использования шейдеров;

2) формирование shader variant collection для шейдера.

Copyright Plarium Global LTD. 2018Do not distribute

АВТОМАТИЗАЦИЯ КАК ОСНОВНАЯ ЗАДАЧА

Copyright Plarium Global LTD. 2018Do not distribute

37 Система бандлов в Unity: наш подход

АВТОМАТИЗАЦИЯ

◾ Bamboo для CI;

◾ Cake для написания скриптов;

◾ фильтр для пушей;

◾ отдельный проект для каждого сжатия;

◾ доставка бандлов на контент-сервер.

Copyright Plarium Global LTD. 2018Do not distribute

38 Система бандлов в Unity: наш подход

REFERENCES

Читать:

◾ Unity Manual

◾ Asset Bundles Best Practices

◾ Asset Bundles and Asset Bundles Manager

Смотреть:

◾ Asset Management Details That You Won't Find in the Manual

◾ A Look Ahead: Resource Manager, Addressable Assets and Live Preview

◾ uDev #6: Разработка MMO RTS на Unity

Copyright Plarium Global LTD. 2018Do not distribute

СПС ;)