2014-09-30 6 views
1

Я делаю игру с большим количеством листов спрайтов в cocos2d-x. Слишком много символов и эффектов, и каждый из них использует последовательность кадров. Файл apk больше 400 МБ. Поэтому мне приходится сжимать эти изображения.Как сжать листы спрайтов?

Фактически, каждый кадр в последовательности имеет лишь небольшую разницу, сравниваемую с другими. Поэтому мне интересно, есть ли инструмент для сжатия последовательности кадров вместо того, чтобы просто помещать их в лист спрайта? (Арматурная анимация может помочь, но эффекты не могут рассматриваться как арматура.)

Например, есть эффект, включающий 10 png-файлов, а размер каждого файла - 1mb. Если я использую TexturePacker, чтобы сделать их на лист спрайта, у меня будет большой файл png размером 8mb и файл plist размером 100kb. Общий размер составляет 8,1 м. Но если я могу сжать их, используя различия между фреймами, возможно, я получу png-файл из 1mb и 9 файлов из 100kb для воспроизведения других 9 png-файлов во время загрузки. Этот метод требует только размера 1,9 МБ на диске. И если я могу преобразовать их в формат pvrtc, память, требуемая во время выполнения, также может быть уменьшена.

Кстати, теперь я пытаюсь преобразовать .bmp в .pvr во время загрузки игры. Есть ли lib для преобразования в pvr?

Спасибо! :)

+1

Поскольку вы уже используете TP просто изменить свой выходной формат pvr.ccz, и вы получите самые маленькие файлы без потери качества, которые загружаются быстро и потребляют меньше памяти. Win-беспроигрышной. Преобразование времени загрузки довольно бессмысленно, но это только усугубит пользователей. – LearnCocos2D

+0

Вы правы, @ LearnCocos2D. Но наш файл apk слишком толст на диске, и, таким образом, мы получили только ранг А. Мой босс хочет, чтобы он оценивался как S. Поэтому я пытаюсь уменьшить размер на диске. – wayne

ответ

1

Если у вас есть много текстур для преобразования в pvr, я предлагаю вам получить инструменты PowerVR от www.imgtec.com. Он поставляется с вариантами GUI и CLI. PVRTexToolCLI выполнил эту работу для меня, я написал большую работу по преобразованию. Бесплатно скачать, бесплатно использовать, вы должны зарегистрироваться на своем сайте.

Я только что протестировал его, он преобразует многие форматы в pvr (включая bmp и png).

Прежде чем вы отправитесь туда (массивная пакетная работа), я предлагаю вам экспериментировать с некоторыми вариантами. PVR - это (обычно) жир на диске, быстрый для загрузки и эквивалент других форматов в ОЗУ ... Требования к ОЗУ в основном диктуются количеством пикселей и количеством бит, которые вы кодируете для каждого пикселя. Вы можете получить некоторый интересный размер диска с pvr, в зависимости от формата вывода и количества бит, которые вы используете ... но это может быть потеряно, и вы можете получить видимые артефакты. Поэтому экспериментируйте с ограниченным образцом, прежде чем решите пройти полный проход.

Первое, на что я бы посмотрел, даже до любого преобразования - это ваши анимации. Поскольку вы используете TP, он может обнаруживать повторяющиеся кадры и псевдоним N кадров в один кадр на текстуре. Например, моя команда дизайнеров предоставляет мне все анимации «walk/stance» с 5 картинками, но 8 кадров! Плис содержит псевдонимы фреймов для недостающих текстур. Во всех моих положениях рамка 8 такая же, как и рамка 2, поэтому текстура содержит только фрейм 2, но plist искусственно создает рамку8, которая обрезает изображение кадра 2.

Другое место, на которое я бы посмотрел, это используйте 16 бит. Это будет способствовать размеру пакета, требованию к памяти во время выполнения и скорости загрузки. Для примера используйте RGBA565 для текстур без прозрачности или RGBA5551 для анимации. Еще раз попробуйте несколько, чтобы убедиться, что вы получите приемлемый рендеринг.

весело :)

+0

Спасибо! Я попробовал инструменты PowerVR. Это действительно полезно, если я хочу преобразовать другие форматы в PVR. Однако я все еще не удовлетворен результатами TP.Поэтому я хочу существенно уменьшить размер диска. Я все еще пытаюсь сжать этот лист спрайтов и, возможно, распаковать их, когда пользователи запускают игру в первый раз. – wayne