อะไรคือความทันสมัยในการส่งมอบกราฟิกเกมเช่นไฟล์ BMP ขนาดเล็กจำนวนมาก? [ปิด]


9

เรามีไฟล์ BMP ขนาดเล็กจำนวนมากซึ่งฉันคิดว่าจะคัดลอกได้ง่ายกว่าถ้าเรารวมมันไว้ใน TAR / ZIP / ใหญ่ ๆ

อะไรคือสถานะของศิลปะในการจัดส่งกราฟิกเกม?

เราใช้ C # และตระหนักถึง zlib เพียงระดมสมองเพื่อดูว่ามีโซลูชั่นอื่นใดที่ดีกว่า zlib หรือไม่

คำตอบ:


7

คุณสามารถดูSharpZipLibหรือDotNetZip - DotNetZip ช่วยให้คุณเข้าถึงStreamโดยตรงซึ่งมีประโยชน์เนื่องจากไลบรารี C # ส่วนใหญ่สามารถโหลดจากสตรีม (ตรงข้ามกับไฟล์) นอกจากนี้ DotNetZip ยังใช้ Ms-PL (เหมือน BSD) แทน GPL ด้วยข้อยกเว้นที่น่าสงสัยทางกฎหมาย

อีกทางเลือกหนึ่งคือการใช้atlases texture - แทนที่จะให้รูปภาพขนาดเล็กจำนวนมากมีขนาดใหญ่ขึ้น สิ่งเหล่านี้จะโหลดเร็วขึ้นเล็กน้อยและเร็วกว่าเล็กน้อยในขณะใช้งานจริงหากคุณฉลาดในการวาด

ในที่สุดคุณสามารถเรียกใช้เนื้อหาแต่ละประเภทผ่านทาง lossless compressor ที่เกี่ยวข้อง (PNG, FLAC และอื่น ๆ ) และเก็บไว้ในไฟล์แบน (โดยทั่วไปคือไฟล์ซิปที่ปิดใช้งานการบีบอัด) จำไว้ว่าให้หลีกเลี่ยงการบีบอัดข้อมูลที่ถูกบีบอัดเนื่องจากจะเป็นการเพิ่มขนาดในกรณีส่วนใหญ่

ศิลปะก่อน:

  • MPQ : อาจดีเท่าที่จะได้รับสำหรับเนื้อหาเกมการค้นหาได้รับการออกแบบให้มีความรวดเร็ว (แฮชตารางจากดิสก์เป็นต้น) ไฟล์แต่ละประเภท (ที่รองรับ) มีคอมเพรสเซอร์ที่ไม่ซ้ำกัน
  • Quake PAK : นี่คือโครงสร้างไฟล์แบบเรียบ
  • Doom WAD : ค่อนข้างเฉพาะกับ Doom แต่คุ้มค่าที่จะดู

1

ตัวเลือกคือการจัดเก็บภาพในรูปแบบการบีบอัดเดียวกันกับที่คุณใช้สำหรับสร้างพื้นผิวที่บีบอัด นี่เป็นข้อดีที่คุณจะไม่แปลงรูปแบบที่สูญหายไปหนึ่งรูปแบบเป็นรูปแบบอื่น แต่คุณเก็บข้อมูลในรูปแบบที่สูญเสียไป อาจมีบางสิ่งที่จะได้รับโดยการจัดเก็บไฟล์ดังกล่าวในไฟล์เก็บถาวรที่บีบอัด

ดูคำตอบนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับพื้นผิวที่ถูกบีบอัด: https://gamedev.stackexchange.com/a/5177/3505


0

ZLIB อาจเป็นคำตอบที่ดี แต่ถ้าคุณรู้ว่ามีคนกำลังเปิดแหล่งข้อมูลของคุณคุณสามารถสร้างรูปแบบไฟล์ของคุณเองเพื่อจัดเก็บเนื้อหาของคุณได้

นี่คือวิธีที่คุณสามารถทำได้

มันอยู่ใน C แต่ไม่ควรยากที่จะเรียนรู้เนื่องจาก C # มีลักษณะคล้าย C และ C ++

แน่นอนคนที่ยังมีความรู้สูงกว่าสามารถจับทรัพยากรของคุณคุณสามารถเพิ่มการเข้ารหัสเล็กน้อยหากคุณต้องการไม่ยากเกินไป

สิ่งนี้มีประโยชน์มาก แต่จะเข้าร่วมไฟล์ของคุณ สำหรับการบีบอัดด้วยคุณมีสองทางเลือก

  1. ทำให้ไฟล์ทรัพยากรทั้งหมดของคุณบีบอัดและจัดส่ง
    วิธีนี้เป็นวิธีที่ง่าย แต่ไม่ดีมากคุณควรคลายการบีบอัดทุกอย่างถ้าคุณต้องการใช้ทรัพยากรเพียงแหล่งเดียว

  2. บีบอัดทุกรีซอร์สและเพิ่มลงในไฟล์รีซอร์ส
    ค่อนข้างดีเช่นกันคุณจะมีขนาดเพิ่มขึ้นเล็กน้อยนอกเหนือจากวิธีที่ 1 เนื่องจากแต่ละไฟล์ถูกบีบอัดแยกกัน แต่จะดีกว่าถ้าคุณต้องการความยืดหยุ่น

แต่ละวิธีมีข้อเสียของตัวเองคุณควรเลือกอย่างชาญฉลาด โดยทั่วไปถ้าเกมของคุณมีจำนวนทรัพยากรค่อนข้างน้อยวิธีที่ 1 น่าจะดีกว่าถ้าคุณมีจำนวนมากวิธีที่ 2 ควรเหมาะกับคุณเพราะขนาดของทรัพยากรทั้งหมดเข้าด้วยกัน

สำหรับ libs การบีบอัดคุณมี:

  • สื่อที่มีชื่อเสียงที่สุดคือZlib
  • หนึ่งที่มีการบีบอัดเร็วกว่าLZO
  • อัตราการบีบอัดที่ดี7-Zip

ฉันจะไปกับ LZO ถ้าฉันต้องการเข้าถึงเกมได้อย่างรวดเร็วดังนั้นคุณไม่ต้องกังวลกับการคลายการบีบอัดแบบเรียลไทม์ 7-Zip ถ้าฉันต้องการให้ไฟล์ถูกย่อขนาดมากหรือ Zlib ถ้าฉันต้องการอัตราส่วนและขนาดการบีบอัดที่สมดุล
ทางเลือกเป็นของคุณ: D

แน่นอนว่ามีอัลกอริธึมอื่น ๆ ในการบีบอัดข้อมูลและคุณสามารถค้นหาgooglingเหล่านั้นได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.