This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Размер вашей игры может быть критически важным фактором успеха на таких платформах, как веб и мобильные устройства, в то время как на ПК и консолях это менее важно из-за доступности и дешевизны дискового пространства.
Apple и Google установили ограничения на размер приложений при загрузке через мобильные сети (в отличие от Wi-Fi). Для Android это ограничение составляет 200 МБ для приложений, опубликованных с использованием app bundles. Для iOS пользователи получат предупреждение, если размер приложения превышает 200 МБ, но они всё равно смогут его загрузить.
Согласно исследованию 2017 года: «Каждое увеличение APK на 6 МБ снижает коэффициент конверсии установки на 1%.» (источник)
Poki и многие другие веб-платформы рекомендуют, чтобы начальная загрузка не превышала 5 МБ.
Facebook рекомендует, чтобы Facebook Instant Game запускалась менее чем за 5 секунд, желательно — за 3 секунды. Это не означает строго заданный размер, но речь идёт об объёмах до ~20 МБ.
Игровые рекламы с демо-геймплеем обычно ограничены объёмом от 2 до 5 МБ в зависимости от рекламной сети.
Оптимизировать размер приложения можно двумя способами: уменьшив размер самого движка и/или уменьшив размер игровых ресурсов.
Чтобы лучше понять, из чего складывается размер вашего приложения, вы можете сгенерировать отчёт о сборке. Обычно основной объём занимают звуки и графика.
Defold создаёт дерево зависимостей при сборке и упаковке приложения. Система сборки начинает с коллекции начальной загрузки, указанной в game.project, и просматривает все связанные коллекции, игровые объекты и компоненты, чтобы определить список используемых ресурсов. В итоговый пакет попадут только эти ресурсы. Всё, что не связано напрямую, будет исключено. Несмотря на это, как разработчику вам следует учитывать, какие ресурсы включаются в итоговое приложение и каков их размер — как по отдельности, так и в совокупности.
Быстрый способ уменьшить размер движка — исключить из него функциональность, которая вам не нужна. Это можно сделать с помощью файла манифеста приложения, в котором можно отключить ненужные компоненты движка. Примеры:
image.load()
Наибольший эффект даёт уменьшение размера звуков и текстур.
Defold поддерживает форматы:
Файлы звуков должны использовать 16-битные сэмплы. Декодеры Defold масштабируют частоту дискретизации под устройство воспроизведения.
Короткие звуки, например эффекты, обычно сильнее сжимаются. Музыкальные треки — меньше. Defold не сжимает аудио, разработчик должен оптимизировать звуки самостоятельно.
Вы можете использовать аудиоредакторы или консольные инструменты (например, ffmpeg) для снижения качества или конвертации. Также рассмотрите возможность перевода стерео в моно, чтобы уменьшить размер.
Начните с проверки размеров изображений, добавляемых в атлас или используемых как tilesource. Изображения не должны быть больше, чем это действительно необходимо. Импорт больших картинок и масштабирование внутри игры — пустая трата памяти. Используйте редакторы изображений, чтобы уменьшить размеры до нужных. Для фонов допустимо использовать маленькие изображения с масштабированием вверх. Также проверьте итоговый размер атласов — он зависит от платформы и GPU:
Этот пост на форуме содержит советы по пакетному изменению размеров изображений.
Если атлас слишком велик, его можно разбить на несколько меньших, использовать мультистраничные атласы или масштабировать весь атлас с помощью профиля текстур. Система профилей в Defold позволяет не только масштабировать атласы, но и применять алгоритмы сжатия для уменьшения их размера на диске. Подробнее о профилях текстур читайте в руководстве. Если вы не уверены, с чего начать, используйте следующие настройки в качестве отправной точки:
Дополнительные советы по оптимизации текстур можно найти в этом форуме.
Размер шрифта будет меньше, если явно указать нужные символы в поле Characters вместо использования опции All Chars.
Другой способ уменьшения начального размера приложения — это исключение части контента из основного пакета и его загрузка по требованию. Для этого используйте систему Live Update.
Вы можете исключить целые уровни, скины, персонажей и т.п. Организуйте загрузку так, чтобы в начальном наборе ресурсов были только те, что нужны для запуска и первого уровня. Используйте collection proxies или factories с включённой галочкой “Exclude”. Делите ресурсы по прогрессу игрока. Подробнее читайте в руководстве по Live Update.
Сборки для Android должны поддерживать 32-битные и 64-битные архитектуры. При создании сборки для Android можно указать, какие архитектуры включать:
Google Play поддерживает несколько APK на выпуск, что позволяет разделить сборку по архитектурам и уменьшить итоговый размер каждого APK.
Также вы можете использовать дополнительные файлы APK Expansion в сочетании с контентом Live Update, используя расширение APKX.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB