Çok sayıda küçük BMP dosyası gibi oyun grafiklerinin gönderilmesinde son teknoloji nedir? [kapalı]


9

Büyük bir TAR / ZIP / her neyse bir araya getirseydik kopyalamanın daha kolay olacağını düşündüğüm çok sayıda küçük BMP dosyası var.

Gönderi oyun grafiklerinde son teknoloji nedir?

C # kullanıyoruz ve zlib'in farkındayız. Sadece zlib'den daha iyi başka çözümler olup olmadığını görmek için beyin fırtınası yapın.

Yanıtlar:


7

Ayrıca SharpZipLib veya DotNetZip'e de bakabilirsiniz - DotNetZip Streamdoğrudan bir erişime izin verir , bu da çoğu C # kütüphanesinin akışlardan (dosyaların aksine) yüklenebileceğinden yardımcı olur. Ayrıca DotNetZip, yasal olarak şüpheli bir istisna dışında GPL yerine Ms-PL'yi (BSD-Like) kullanır.

Başka bir seçenek doku atlasları kullanmaktır - birçok küçük görüntünün birkaç büyük görüntüsüne sahip olmak yerine. Bunlar aslında biraz daha hızlı yüklenir ve bunları nasıl çizdiğinizi akıllı yaparsanız çalışma zamanında biraz daha hızlıdır.

Son olarak her varlık türünü ilgili kayıpsız kompresörden (PNG, FLAC vb.) Çalıştırabilir ve bunları düz bir dosyada (temelde sıkıştırma devre dışı bırakılmış bir zip dosyası) depolayabilirsiniz. Çoğu durumda boyutu artıracağından , sıkıştırılmış verileri sıkıştırmaktan kaçının .

Önceki tekniklerden bazıları:

  • MPQ : Muhtemelen oyun varlıkları için olduğu kadar iyi, aramalar hızlı olacak şekilde tasarlanmıştır (disk tabanlı karma tablo vb.). Her dosya türünün (desteklenen) benzersiz bir kompresörü vardır.
  • Quake PAK : Temelde düz bir dosya yapısıdır.
  • Doom WAD : Doom'a biraz özgü, ama bakmaya değer.

1

Bir seçenek, görüntüleri sıkıştırılmış dokular yapmak için kullandığınız aynı sıkıştırma biçiminde saklamaktır. Bu, bir kayıplı formatı diğerine dönüştürmeyeceğiniz avantajına sahiptir, ancak verileri kayıplı bir formatta saklarsınız. Dokulara bağlı olarak, bu tür dosyaları sıkıştırılmış bir arşivde saklayarak kazanılabilecek bir şey olabilir.

Sıkıştırılmış dokular hakkında biraz daha fazla bilgi için bu cevaba bakın: https://gamedev.stackexchange.com/a/5177/3505


0

ZLIB iyi bir yanıt olabilir, ancak varlıklarınızı kapmaya başlayanların farkındaysanız, varlıklarınızı saklamak için kendi dosya biçiminizi de yapabilirsiniz, bu o kadar da zor değil.

İşte nasıl yapabileceğiniz.

C dilinde, ancak öğrenilmesi zor olmamalı, çünkü C # C ve C ++ gibi.

Tabii ki, hala daha yüksek bilgiye sahip insanlar kaynaklarınızı yakalayabilir, isterseniz çok az şifreleme ekleyebilirsiniz.

Bu çok yararlı olabilir, ancak dosyalarınıza katılacaktır. Sıkıştırma için de iki seçeneğiniz var.

  1. Tüm kaynak dosyanızı oluşturun, sıkıştırın ve gönderin.
    Bu Yöntem kolaydır, ancak çok iyi değil, sadece bir kaynak almak istiyorsanız her şeyi sıkıştırmalısınız.

  2. Her kaynağı sıkıştırın ve bunları kaynak dosyasına ekleyin.
    Bu da oldukça iyi, yöntem 1'in yanındaki boyutta hafif bir artış olacak, çünkü her dosya ayrı olarak sıkıştırıldı, ancak esneklik istiyorsanız daha iyi.

Her yöntemin kendine özgü dezavantajları vardır, akıllıca seçmelisiniz. Genellikle, oyununuz oldukça az sayıda kaynağa sahipse, yöntem 1 daha iyi olmalıdır, LOTS varsa, yöntem 2 size uymalıdır, çünkü tüm kaynakların boyutu birlikte kazandığınız ekstraları boğacaktır.

Sıkıştırma kütüphaneleri için:

  • En ünlü araç, Zlib
  • Daha hızlı dekompresyona sahip olan LZO
  • Mükemmel sıkıştırma oranı, 7-Zip

Eğer hızlı erişim oyun içi istiyorum LZO ile gitmek istiyorum, bu yüzden gerçek zamanlı olarak sıkıştırılmamış hakkında korkmak zorunda değilsiniz, ben 7-Zip Eğer dosyaları bir LOT veya Zlib kendiliğinden küçültmek istiyorsanız dengeli dekompresyon oranı ve boyutu istiyorum.
Seçim senin: D

Ah, elbette verileri sıkıştırmak için başka algoritmalar var ve bu googling'i bulabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.