Технические статьи компании Black VR

Погрузка игровых файлов с сервера UNITY ADDRESSABLE ASSET SYSTEM

Порой, заказчики BlackVR хотят наполнить большим количеством интересного контента свои приложения. Разнообразие в опыте пользователя это хорошо, но медаль имеет вторую сторону в виде увеличенного веса приложения. Не каждый может/захочет скачивать игру весом под гигабайт. Да и маркеты имеют определенные ограничения по максимальному весу приложений.

Для таких случаев существуют различные варианты решения, с подгрузкой дополнительных ресурсов. Например Google Play позволяет публиковать файлы расширения, до 2 гигабайт, для игры или приложения. Этот вариант подразумевает собой то, что приложение не уместилось в ограничение маркета в 100 мегабайт.

Рисунок 1. Игра с файлами расширенияПомимо этого существуют ситуации, когда приложение имеет несколько механик или различный контент, который не обязательно нужен пользователю в данный момент. В таком случае разумнее подгрузить только требуемую часть приложения, тем самым сократив время ожидания пользователя и вес приложения.
Рисунок 2. Загрузка модуля приложенияКак раз, возможности Unity позволяют разработчикам реализовать подобную задумку целыми двумя способами - Asset Bundle и Addressable Asset System. Первый способ постепенно устаревает. Зато второй, можно считать доработанным и расширенным новичком. Правда он уже дорос до 1.5.1 версии. Несмотря на это, в интернете сложно найти понятную информацию об этом инструменте, а документация оставляет желать лучшего.В первую очередь нужно иметь сервер или хостинг, на котором будут храниться файлы для приложения. Например, можно арендовать виртуальный хостинг. Благо цены на них довольно дешевые. Также на нем можно держать сайт.Далее следует загрузить пакет Addressables с помощью Package Manager. После этого у каждого ассета в инспекторе появляется специальный параметр, как на 3 рисунке.

Рисунок 3. Addressable сценаКогда все нужные ассеты будут добавлены, обязательно нужно упаковать их в бандл и загрузить на сервер. Бандл это своего рода архив с ассетами, который можно сжать. А ссылку на директорию в которой находится бандл следует указать в поле RemoteLoadPath в виде https://sitename.com/addressable/[BuildTarget]”.Стоит учесть, что для каждой платформы бандл нужно упаковывать отдельно, а движок легко позволяет это сделать. А также загруженный на устройство пользователя бандл кэшируется, и не требует повторного скачивания.Система очень удобная и требует малое количество кода для реализации. Например для того, что бы загрузить сцену, достаточно использовать эту функцию:

public AssetReference scene; //выбрать в инспекторе
Addressables.LoadSceneAsync(scene);

В заключение будет полезно разложить по полочкам самые важные плюсы и минусы системы Addressable Asset System для подгрузки игровых файлов с сервера.

Плюсы
- Экономия общего времени загрузки
- Экономия памяти
- Удобство использования

Минусы
- Ожидание загрузки в установленном приложении
- Наличие сервера для хранения файла
2020-02-03 11:07 Технические статьи Black VR