Apakah spritesheets sepadan? Apakah zip merupakan alternatif yang baik?

Aug 19 2020

Saya bertanya-tanya apakah spritesheets itu sepadan. Saya membuat game dengan pixi.js dan sedang memikirkan tentang pengoptimalan, dimulai dengan pemuatan aset. Saat ini saya memiliki array dari semua file dan menggunakan PIXI.loader, tetapi saya tahu ini tidak baik karena akan membuat permintaan web untuk semua file yang membutuhkan waktu lama, jadi saya harus mencari cara untuk memuatnya dalam satu permintaan web. Hal pertama yang saya pikirkan adalah spritesheet tapi kemudian saya berpikir "bagaimana jika saya hanya zip semuanya dan memuatnya dengan sesuatu seperti JSZip?" Saya tahu itu sudah mungkin (dari proyek ini yang memuat tekstur pixi dari zip) dan mendaftar apa yang menurut saya berpotensi hal-hal baik dan buruk:

Zip poin bagus:

  • Kompresi berarti pemuatan aset lebih cepat
  • Kompresi berarti ukuran build lebih kecil saat membuat build dengan elektron

Zip poin buruk:

  • Membutuhkan pemuatan pustaka terpisah yang berarti meningkatkan waktu pemuatan dan menggunakan lebih banyak RAM
  • Membutuhkan dekompresi dalam memori yang berarti peningkatan waktu pemuatan

Poin bagus Spritesheet:

  • Tidak memiliki header dari semua file gambar individual
  • Banyak digunakan sehingga merupakan teknik yang terbukti

Poin buruk Spritesheet:

  • Tidak ada kompresi (atau setidaknya tidak sebanding dengan zip)
  • Lebih dari satu panggilan jaringan karena keterbatasan telepon terkadang mencegah file lebih dari 2024x2024px sehingga perlu untuk membagi spritesheets
  • Lubang kosong karena semua gambar tidak berukuran sama dan hampir selalu ada sedikit ruang tersisa di spritesheet, artinya piksel tidak berguna yang masih ditransfer melalui jaringan

Saya bukan pengembang yang sangat berpengalaman, jadi saya punya beberapa pertanyaan:

  1. Apakah saya melewatkan poin di atas?
  2. Apakah spritesheets secara umum layak dilakukan?
  3. Teknik mana dari keduanya yang lebih berharga? Saya bisa melakukan keduanya tapi saya ingin fokus pada satu dulu dan meninggalkan yang lain dalam daftar yang bagus.

Jawaban

4 Theraot Aug 19 2020 at 01:12

Pertama-tama, sudah ada format gambar dengan kompresi. Secara khusus, format PNG mendukung kompresi lossless. Selain itu, meskipun benar bahwa mengambil banyak PNG dan membuat zip mereka mungkin akan menguntungkan ukurannya, membuat atlas tekstur (spritesheet atau serupa) juga akan mengurangi ukuran dengan cara yang sama, khususnya jika Anda menaikkan peringkat tingkat kompresi PNG. saat mengekspor gambar.

Dengan demikian, atlas tekstur yang diekspor dengan benar akan memberi Anda manfaat yang Anda cantumkan pada kompresi.

Apakah ini berarti Anda harus membuat semuanya menjadi satu spritesheet? Tidak. Anda harus mengumpulkan barang-barang yang harus diisi.

Mungkin juga perlu diperhatikan bahwa spritesheets bekerja lebih baik ketika gambar Anda kecil dan berukuran biasa. Mungkin Anda bekerja dalam skenario yang spritesheetsnya tidak cocok.

Apakah itu masalahnya? Saya tidak tahu. Lakukan percobaan. Jika Anda tidak ingin mencoba kedua teknik untuk memutuskan, pendekatan teknik menyarankan untuk menggunakan metode yang sudah terbukti, dan itu akan menjadi atlas tekstur.

Anda mungkin juga tertarik dalam mengemas algoritma yang dapat meminimalkan lubang pada atlas tekstur.