เรามีไฟล์ BMP ขนาดเล็กจำนวนมากซึ่งฉันคิดว่าจะคัดลอกได้ง่ายกว่าถ้าเรารวมมันไว้ใน TAR / ZIP / ใหญ่ ๆ
อะไรคือสถานะของศิลปะในการจัดส่งกราฟิกเกม?
เราใช้ C # และตระหนักถึง zlib เพียงระดมสมองเพื่อดูว่ามีโซลูชั่นอื่นใดที่ดีกว่า zlib หรือไม่
เรามีไฟล์ BMP ขนาดเล็กจำนวนมากซึ่งฉันคิดว่าจะคัดลอกได้ง่ายกว่าถ้าเรารวมมันไว้ใน TAR / ZIP / ใหญ่ ๆ
อะไรคือสถานะของศิลปะในการจัดส่งกราฟิกเกม?
เราใช้ C # และตระหนักถึง zlib เพียงระดมสมองเพื่อดูว่ามีโซลูชั่นอื่นใดที่ดีกว่า zlib หรือไม่
คำตอบ:
คุณสามารถดูSharpZipLibหรือDotNetZip - DotNetZip ช่วยให้คุณเข้าถึงStream
โดยตรงซึ่งมีประโยชน์เนื่องจากไลบรารี C # ส่วนใหญ่สามารถโหลดจากสตรีม (ตรงข้ามกับไฟล์) นอกจากนี้ DotNetZip ยังใช้ Ms-PL (เหมือน BSD) แทน GPL ด้วยข้อยกเว้นที่น่าสงสัยทางกฎหมาย
อีกทางเลือกหนึ่งคือการใช้atlases texture - แทนที่จะให้รูปภาพขนาดเล็กจำนวนมากมีขนาดใหญ่ขึ้น สิ่งเหล่านี้จะโหลดเร็วขึ้นเล็กน้อยและเร็วกว่าเล็กน้อยในขณะใช้งานจริงหากคุณฉลาดในการวาด
ในที่สุดคุณสามารถเรียกใช้เนื้อหาแต่ละประเภทผ่านทาง lossless compressor ที่เกี่ยวข้อง (PNG, FLAC และอื่น ๆ ) และเก็บไว้ในไฟล์แบน (โดยทั่วไปคือไฟล์ซิปที่ปิดใช้งานการบีบอัด) จำไว้ว่าให้หลีกเลี่ยงการบีบอัดข้อมูลที่ถูกบีบอัดเนื่องจากจะเป็นการเพิ่มขนาดในกรณีส่วนใหญ่
ศิลปะก่อน:
ตัวเลือกคือการจัดเก็บภาพในรูปแบบการบีบอัดเดียวกันกับที่คุณใช้สำหรับสร้างพื้นผิวที่บีบอัด นี่เป็นข้อดีที่คุณจะไม่แปลงรูปแบบที่สูญหายไปหนึ่งรูปแบบเป็นรูปแบบอื่น แต่คุณเก็บข้อมูลในรูปแบบที่สูญเสียไป อาจมีบางสิ่งที่จะได้รับโดยการจัดเก็บไฟล์ดังกล่าวในไฟล์เก็บถาวรที่บีบอัด
ดูคำตอบนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับพื้นผิวที่ถูกบีบอัด: https://gamedev.stackexchange.com/a/5177/3505
ZLIB อาจเป็นคำตอบที่ดี แต่ถ้าคุณรู้ว่ามีคนกำลังเปิดแหล่งข้อมูลของคุณคุณสามารถสร้างรูปแบบไฟล์ของคุณเองเพื่อจัดเก็บเนื้อหาของคุณได้
นี่คือวิธีที่คุณสามารถทำได้
มันอยู่ใน C แต่ไม่ควรยากที่จะเรียนรู้เนื่องจาก C # มีลักษณะคล้าย C และ C ++
แน่นอนคนที่ยังมีความรู้สูงกว่าสามารถจับทรัพยากรของคุณคุณสามารถเพิ่มการเข้ารหัสเล็กน้อยหากคุณต้องการไม่ยากเกินไป
สิ่งนี้มีประโยชน์มาก แต่จะเข้าร่วมไฟล์ของคุณ สำหรับการบีบอัดด้วยคุณมีสองทางเลือก
ทำให้ไฟล์ทรัพยากรทั้งหมดของคุณบีบอัดและจัดส่ง
วิธีนี้เป็นวิธีที่ง่าย แต่ไม่ดีมากคุณควรคลายการบีบอัดทุกอย่างถ้าคุณต้องการใช้ทรัพยากรเพียงแหล่งเดียว
บีบอัดทุกรีซอร์สและเพิ่มลงในไฟล์รีซอร์ส
ค่อนข้างดีเช่นกันคุณจะมีขนาดเพิ่มขึ้นเล็กน้อยนอกเหนือจากวิธีที่ 1 เนื่องจากแต่ละไฟล์ถูกบีบอัดแยกกัน แต่จะดีกว่าถ้าคุณต้องการความยืดหยุ่น
แต่ละวิธีมีข้อเสียของตัวเองคุณควรเลือกอย่างชาญฉลาด โดยทั่วไปถ้าเกมของคุณมีจำนวนทรัพยากรค่อนข้างน้อยวิธีที่ 1 น่าจะดีกว่าถ้าคุณมีจำนวนมากวิธีที่ 2 ควรเหมาะกับคุณเพราะขนาดของทรัพยากรทั้งหมดเข้าด้วยกัน
สำหรับ libs การบีบอัดคุณมี:
ฉันจะไปกับ LZO ถ้าฉันต้องการเข้าถึงเกมได้อย่างรวดเร็วดังนั้นคุณไม่ต้องกังวลกับการคลายการบีบอัดแบบเรียลไทม์ 7-Zip ถ้าฉันต้องการให้ไฟล์ถูกย่อขนาดมากหรือ Zlib ถ้าฉันต้องการอัตราส่วนและขนาดการบีบอัดที่สมดุล
ทางเลือกเป็นของคุณ: D
แน่นอนว่ามีอัลกอริธึมอื่น ๆ ในการบีบอัดข้อมูลและคุณสามารถค้นหาgooglingเหล่านั้นได้