![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Oct 2012
Сообщений: 35
|
Доброго времени суток. Долго думал на эту тему и рассматривал несколько решений. Допустим. Пишу приложение, которое должно поддерживаться на всех android и iOS девайсах. При этом везде оно должно выглядеть красиво.
Отличная штука есть в Starling'e : AssetManager, через который грузятся картинки из нужной папки. И через scaleFacor скейлятся до нужного размера. Но все же разрешений много.. и отличаются они мало того что скейлом, но еще и шириной. Главный вопрос #1: каким образом оптимальней всего грузить изображения под разрешения всех девайсов? Вариант который со старлинг-вики: сделать несколько наборов изображений (по ширине, и по 2 размера на каждую ширину). Итого будет 6 ассетов (минимум), что не хило скажется на размере инсталяшки. (Вопрос #2: а можно ли не включая картинки в установочный файл подгружать сразу нужные с сервера?) Можно конечно упростить. Брать максимальную ширину в 2х скейлах, и использовать эти 2 ассета под все разрешения. Теперь вопрос #3, касающийся формата картинок. Думаю использовать .PNG, но есть ли это оптимальное решение? было бы не плохо использовать векторную графику, без потери производительности, это возможно? P.S: Искал рабочий пример с поддержкой всех дейвайсов, но так и не нашел красивого решения. Сам писал приложение, поддерживающее все iOS разрешения экранов, но это проще - там их мало. upd: использую Citrus Engine Заранее благодарю за помощь. |
|
|||||
|
Вот отличная статья, в котороый описаны основные группы экранов разной плотности: http://habrahabr.ru/post/183836/
Ищем устройство с максимальным разрешением под определенную группу: https://sites.google.com/site/yoursc...-ios-i-android http://en.wikipedia.org/wiki/List_of..._pixel_density Рисуем дизайн под это разрешение, при желании можно выделить некоторые элементы для экзотических разрешений(например, растровые шрифты, или изображения со светлым контуром на темном фоне выглядят отвртатительно даже при масштабировании от большего к меньшему). На выходе - от 3 до 5(если целиться на ldpi и xxhdpi) наборов изображений. На Google Play можно публиковать Multiple APKs, указывя в манифесте фильтр плотности экрана(впрочем, некоторые по старинке просто плодят приложения с названиями в стиле "Mega game HD", "Mega game super HD", и т.п.) - вариант годится для магазинов, где не реализованна возможность фильтрации(если не ошибаюсь - все, кроме Google Play). Таким образом, в дистрибутиве игры для конечного пользователя будут находиться только нужные ресурсы. Если в игрушке много красивых фонов, покадровой анимации, крупных шрифтов(детская книжка, квест) - прийдется хорошенько извращаться с оптимизациями, иногда даже постоянная выгрузка всего и вся с постоянными указаниями gc/pauseForGCIfCollectionImminent не всегда спасает от падения приложения. Несколько моментов, которые будут полезными для оптимизации: 1. Использовать масштабируемый UI на базе 9-patch шкурок, это есть в Feathers. 2. Использовать ATF-текстуры(размер дистрибутива может вырасти по сравнению с PNG), но памяти на них нужно выделять меньше. 3. Чистить оперативную память после загрузки ресурсов в видеопамять, игровые уровни загружать только после их выбора пользователем, тогда же желательно выгружать ненужные элементы UI - лучше показать на несколько секунд экран загрузки, чем получить отрицательную оценку из-за вылетающего приложения. 3. Использовать Distance field fonts, есть реализации, не требующие хитрых шейдеров и выдающие приличный результат в нужных пределах точности, иначе либо делать по растровому шрифту на каждое разрешение(они масштабируются довольно-таки некрасиво), либо использовать отрисовку векторных в текстуры, что приведет к перерасходу памяти. 4. Если используются свои шейдеры - страться сократить количество операций любой ценой(для примера, шейдер 2D-водички удалось сократить на 4 инструкции, сохранив некоторые константы в свободных каналах dudv-текстуры). В общем, тут еще много всякого можно написать, но пока на этих вещах не набить шишки, оно все выглядит как "bla-bla-bla" ![]() |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 35
|
благодарю за ответ, узнал много нового и полезного. Nine-patch текстуры, увы, не подходят: приложение - квест с кучей графики и анимации ). Хотя можно кнопки менюшки через них сделать.
По поводу : Цитата:
поэтому буду очень благодарен за дальнейшие советы по оптимизации такого рода) |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|