Bagaimana keadaan terkini dalam pengiriman grafis game seperti banyak file BMP kecil? [Tutup]


9

Kami memiliki banyak file BMP kecil yang menurut saya akan lebih mudah untuk disalin jika digabungkan dalam TAR / ZIP besar / apa pun.

Apa yang paling mutakhir dalam pengiriman grafis game?

Kami menggunakan C # dan mengetahui zlib. Lakukan brainstorming untuk melihat apakah ada solusi lain yang lebih baik daripada zlib.

Jawaban:


7

Anda juga bisa melihat ke SharpZipLib atau DotNetZip - DotNetZip memberi Anda akses ke Streamlangsung, yang sangat membantu karena kebanyakan perpustakaan C # di luar sana dapat memuat dari stream (sebagai lawan dari file). Lebih lanjut, DotNetZip menggunakan Ms-PL (Seperti BSD), bukan GPL dengan pengecualian yang dipertanyakan secara hukum.

Pilihan lain adalah menggunakan tekstur atlas - alih-alih memiliki banyak gambar kecil memiliki beberapa yang besar. Ini sebenarnya memuat sedikit lebih cepat dan sedikit lebih cepat saat runtime jika Anda menjadi pintar dengan cara Anda menggambar mereka.

Akhirnya Anda dapat menjalankan setiap jenis aset melalui kompresor lossless yang relevan (PNG, FLAC, dll.) Dan menyimpannya dalam file datar (pada dasarnya file zip dengan kompresi dinonaktifkan). Ingatlah untuk menghindari mengompresi data terkompresi, karena itu akan meningkatkan ukuran dalam kebanyakan kasus.

Beberapa karya seni sebelumnya:

  • MPQ : Mungkin sebagus yang didapat untuk aset game, pencarian dirancang untuk menjadi cepat (tabel hash berbasis disk dll.). Setiap jenis file (yang didukung) memiliki kompresor unik.
  • Gempa PAK : Ini pada dasarnya adalah struktur file datar.
  • Doom WAD : Agak khusus untuk Doom, tetapi layak untuk dilihat.

1

Opsi adalah untuk menyimpan gambar dalam format kompresi yang sama yang Anda gunakan untuk membuat tekstur terkompresi. Ini memiliki keuntungan bahwa Anda tidak akan mengonversi dari satu format lossy ke format lossy lainnya, namun Anda menyimpan data dalam format lossy. Bergantung pada teksturnya, mungkin masih ada sesuatu yang diperoleh dengan menyimpan file-file tersebut dalam arsip terkompresi.

Lihat jawaban ini untuk info lebih lanjut tentang tekstur terkompresi: https://gamedev.stackexchange.com/a/5177/3505


0

ZLIB bisa menjadi jawaban yang baik, tetapi jika Anda mengetahui orang-orang membuka ambil aset Anda, Anda juga bisa membuat format file Anda sendiri untuk menyimpan aset Anda, itu tidak terlalu sulit.

Begini caranya.

Itu dalam C, tetapi tidak harus sulit untuk dipelajari, karena C # adalah beberapa seperti C dan C ++.

Tentu saja, orang yang masih memiliki pengetahuan yang lebih tinggi dapat menangkap sumber daya Anda, Anda dapat menambahkan sedikit enkripsi jika Anda mau, tidak terlalu sulit.

Ini bisa sangat berguna, tetapi itu hanya akan bergabung dengan file Anda. Untuk kompresi juga, Anda punya dua pilihan.

  1. Buat seluruh file sumber daya Anda, kompres, dan kirim.
    Metode ini mudah, tetapi tidak terlalu baik, Anda harus membuka kompres semua jika Anda ingin mengambil hanya satu sumber daya.

  2. Kompres setiap sumber daya, dan tambahkan mereka kompres ke file sumber daya.
    Itu juga cukup bagus, Anda akan memiliki sedikit peningkatan ukuran di samping metode 1, karena setiap file dikompresi secara terpisah, tetapi lebih baik jika Anda menginginkan fleksibilitas.

Setiap metode memiliki kekurangannya sendiri, Anda harus memilih dengan bijak. Secara umum, jika gim Anda memiliki jumlah sumber daya yang cukup rendah, metode 1 harus lebih baik, Jika Anda memiliki BANYAK, metode 2 harus cocok dengan Anda, karena ukuran semua sumber daya bersama-sama akan membanjiri ekstra yang Anda peroleh.

Untuk lib kompresi, Anda harus:

  • Media paling terkenal, Zlib
  • Yang dengan dekompresi lebih cepat, LZO
  • Rasio kompresi yang hebat, 7-Zip

Saya akan pergi dengan LZO jika saya ingin akses cepat, jadi Anda tidak perlu khawatir tentang uncompressing secara real-time, 7-Zip jika saya ingin file menjadi BANYAK atau Zlib sendiri jika saya ingin rasio dan ukuran dekompresi seimbang.
Pilihan ada di tangan Anda: D

Ah, tentu saja ada algoritma lain untuk memampatkan data, dan Anda dapat menemukan googling tersebut .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.