Я заранее прошу прощения за длинный вопрос с множеством подвопросов, но вопрос действительно такой, как указано в заголовке. Все, что следует ниже, представляет собой подробное разложение различных аспектов вопроса.
В моей универсальной игре для ios, созданной с использованием cocos2d, у меня есть четыре категории изображений - я хочу определить, какие из них следует помещать в таблицы спрайтов, а какие лучше загружать как отдельные изображения. Мое текущее предположение состоит в том, что только анимация персонажей, которая выполняется на протяжении всей игры, дает значение, загружаемое в память в виде таблиц спрайтов:
- Анимация персонажей, которая выполняется на протяжении всего игрового процесса (кроме случаев, когда пользователь находится в меню): для них я предполагаю, что наличие изображений в таблице спрайтов уменьшит использование памяти во время выполнения (из-за заполнения отдельных файлов до двух байтовых границ), следовательно, они являются кандидатами для таблицы спрайтов. Это правильно?
- Маленькие изображения (около 200 из них), из которых от 0 до 4 отображаются в любое время, выбираются случайным образом во время игры. Для них я не уверен, стоит ли загружать в память все 200 изображений, когда одновременно используются не более четырех. Так что может быть лучше напрямую обращаться к ним как к изображениям. Это правильно?
- Несколько (около 20) небольших элементов меню, таких как кнопки, которые используются только в статических меню: поскольку элементы меню используются только во время отображения меню, я предполагаю, что они не имеют большого значения для улучшения доступа к памяти через таблицы спрайтов. Это правильно?
- Несколько больших изображений, которые используются в качестве фона для меню, игровой сцены и т. Д. Большинство этих изображений имеют размер, равный разрешению экрана. Поскольку разрешение экрана примерно равно максимальному размеру одного изображения (например, для ipad retina размер изображения 4096 x 4096 по сравнению с размером экрана 2048 x 1536), от использования таблиц спрайтов не так много пользы, как максимум 1 или 2 больших изображения поместятся в один спрайт-лист. Кроме того, поскольку каждый из этих больших файлов используется только в одной сцене, предварительная загрузка всех этих больших изображений в виде таблиц спрайтов в память кажется ненужными накладными расходами. Следовательно, доступ к ним напрямую как к таблицам спрайтов. Это правильно?
Пара общих связанных вопросов:
а) Упаковка изображений, используемых в разных сценах, в одну таблицу спрайтов заставляет нас загружать их в память, даже если в этой сцене используется только подмножество изображений. Я полагаю, это плохая идея. Правильный?
б) Подтормаживание игры происходит только на старых устройствах (iPad 1 и iPhone 3gs). Помогут ли таблицы спрайтов уменьшить такое заикание?
c) Я предполагаю, что таблицы спрайтов только улучшат объем памяти во время выполнения, а не столько размер архива приложения на диске. Я заметил, например, что набор файлов размером 11,8 МБ, помещенный в таблицу спрайтов, составляет 11 МБ - не так много преимуществ сжатия. Это верное предположение?
Пожалуйста, дайте мне знать, что вы думаете по поводу моего обоснования выше.
Спасибо
Ананд