Оптимизация плиточных карт в cocos2d-iphone - PullRequest
1 голос
/ 13 ноября 2011

Моя игра cocos2d-iphone имеет мозаичные карты. Текстуры наборов плиток довольно большие. Я получил около 5 наборов плиток, и каждый из них имеет размер 2048x2048 (сетчатка).

Мои карты размером около 80х80. Они имеют около 8 слоев, и каждый из них использует один набор плиток.

Частота кадров падает (иногда около 30. Я знаю, что 30 довольно приемлемо, но все же, я хочу 50 +).

Так как текстуры огромные, я не могу позволить себе создавать много слоев (так как каждый загружает их текстуру).

Так как насчет того, чтобы разделить текстуры наборов плиток на гораздо меньшие (например, 1024x1024 каждая)? Это позволит мне использовать гораздо больше слоев для моих карт, верно?

Есть ли еще какие-нибудь советы для огромных карт тайла с сетчаткой?

Ответы [ 2 ]

3 голосов
/ 14 ноября 2011

Текстура с 2048x2048 и 32-битными цветами равна 16 МБ (!) Памяти. В пять раз это 80 МБ памяти только для текстур. Ой! Для сравнительно небольшой (80x80) карты тайла это огромный объем памяти текстур.

Первый порядок оптимизации заключается в использовании PVR-текстур, если вы действительно не можете уменьшить количество наборов плиток или изображений внутри них. Вы теряете некоторое качество изображения, но потребление памяти резко снизится, а производительность рендеринга текстур PVR будет намного лучше. Конечно, при работе с Tiled вам придется использовать (предположительно) текстуру PNG, которую вы затем преобразуете в PVR для использования в проекте, например, используя TexturePacker .

8 слоев плиток могут быть довольно здоровенными, но зависит от того, как вы их используете и сколько плиток каждого слоя фактически нарисовано. Попробуйте это: установите для всех слоев, кроме одного, видимый = НЕТ. Затем включите слои один за другим и посмотрите, как это влияет на частоту кадров.

Наконец, вы должны знать, что реализация tilemap в Cocos2D совершенно неэффективна после определенного количества плиток. Были попытки улучшить средство рендеринга тайла карт, например этот (HKTMXTiledMap) может стоить дать выстрел.

0 голосов
/ 21 ноября 2014

У меня была такая же проблема.Мое решение состоит в том, чтобы просто преобразовать файлы .png в .pvr.ccz, и размер файла и объем памяти значительно уменьшатся.Вот мои шаги:

  1. использовать TexturePacker для преобразования файлов наборов плиток (png-файлов) в pvr.ccz.Убедитесь, что это отображение 1: 1 (одинакового размера, без поворота, без заполнения границ, без обрезки ...), и они должны быть одинакового размера (например, 2048 x 2048)

  2. откройте файл .tmx и измените путь к файлу png на файл pvr.ccz.

и все!Это работает для cocos2d-x в моем случае.До изменения моя игра занимает 106 МБ памяти и только ~ 90 МБ после изменения, и это только для 1 текстуры набора плиток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...