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

40

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

Page 1: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый
Page 2: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

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

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

Client Development Team Lead

Page 3: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

Page 4: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

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

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

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

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

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

Page 5: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

КАК БЫТЬ?

Page 6: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

ASSET BUNDLES!!!

Page 7: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

◾ Texture;

◾ Audio clip;

◾ Scene;

◾ …

◾ Script

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

Page 8: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

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

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

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

Page 9: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

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

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

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

Page 10: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

Page 11: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

СБОРКА ASSET BUNDLES

Page 12: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

Page 13: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

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

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

Page 14: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

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

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

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

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

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

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

Page 15: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

BUNDLE EDITOR

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

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

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

Page 16: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

BUNDLE EDITOR

Page 17: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

Page 18: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

HEADER ДАННЫЕ

Page 19: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

REQUIRED BUNDLES

Page 20: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

Page 21: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

Page 22: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

Page 23: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

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

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

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

Page 24: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

MANIFEST

DEMO

Page 25: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

Bundle Manager

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

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

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

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

Page 26: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

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#

Page 27: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

CONTENT SERVER

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

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

Page 28: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

Page 29: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

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

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

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

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

Page 30: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

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 звук не воспроизводится.

Page 31: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

ПУТИ РЕШЕНИЯ

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

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

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

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

Page 32: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

Page 33: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

DESCRIPTOR~

DEMO

Page 34: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

Page 35: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

Дано:

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

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

Решение:

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

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

Page 36: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

Page 37: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

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

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

◾ Bamboo для CI;

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

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

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

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

Page 38: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

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

Page 39: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый

Copyright Plarium Global LTD. 2018Do not distribute

СПС ;)

Page 40: СИСТЕМА БАНДЛОВ НАШ ПОДХОДcdn01.x-plarium.com/browser/content/developers/... · СИСТЕМА БАНДЛОВ В UNITY: НАШ ПОДХОД Виталий Немятый