Стоят ли спрайты? Застежка-молния - хорошая альтернатива?

Aug 19 2020

Мне было интересно, стоят ли того спрайты. Я делаю игру с pixi.js и думал об оптимизации, начиная с загрузки ресурсов. В настоящее время у меня есть массив всех файлов и я использую PIXI.loader, но я знаю, что это не очень хорошо, потому что он будет делать веб-запрос для всех файлов, который занимает много времени, поэтому мне нужно найти способ загрузить их в одном веб-запросе. Первым делом я подумал о таблице спрайтов, но потом подумал: «А что, если бы я просто заархивировал все и загрузил что-то вроде JSZip?» Я уже знал, что это возможно (из этого проекта, который загружает текстуры pixi из zip-архива), и перечислил, что я считаю потенциально хорошими и плохими вещами:

Zip хорошие моменты:

  • Сжатие означает более быструю загрузку активов
  • Сжатие означает меньший размер сборки при создании сборки с электроном

Плохие точки почтового индекса:

  • Требуется загрузка отдельной библиотеки, что означает увеличение времени загрузки и использование большего количества оперативной памяти.
  • Требуется распаковка в памяти, что означает увеличение времени загрузки

Хорошие моменты Spritesheet:

  • Не содержит заголовков всех отдельных файлов изображений
  • Часто используется, так что это проверенный метод

Плохие точки таблицы спрайтов:

  • Без сжатия (или, по крайней мере, не сравнимо с архивированием)
  • Более одного сетевого вызова из-за телефонных ограничений, иногда предотвращающих файлы размером более 2024x2024 пикселей, что приводит к необходимости разбивать таблицы спрайтов
  • Пустые отверстия, так как все изображения имеют разный размер, и в таблице спрайтов почти всегда остается немного места, что означает бесполезные пиксели, которые все еще передаются по сети

Я не очень опытный разработчик, поэтому у меня есть несколько вопросов:

  1. Я пропустил что-то выше?
  2. Стоят ли вообще спрайты?
  3. Какая из них того и другого стоит больше? Я мог бы сделать и то, и другое, но я хочу сосредоточиться в первую очередь на одном, а другой оставить в удобном списке.

Ответы

4 Theraot Aug 19 2020 at 01:12

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

Таким образом, правильно экспортированный атлас текстуры предоставит вам перечисленные вами преимущества сжатия.

Означает ли это, что вы должны объединить все в один спрайт-лист? Нет. Вы должны собрать вещи, которые должны быть загружены вместе.

Также стоит отметить, что таблицы спрайтов работают лучше, когда ваши изображения небольшие и обычного размера. Возможно, вы работаете в сценарии, для которого не подходят таблицы спрайтов.

Так ли это? Я не знаю. Проведите эксперимент. Если вы не хотите пробовать оба метода, чтобы решить, инженерный подход предлагает использовать проверенный метод, и это будет атлас текстуры.

Вас также могут заинтересовать алгоритмы упаковки, которые могут минимизировать дыры в атласе текстуры.