สไปรท์ชีทคุ้มไหม? ซิปเป็นทางเลือกที่ดีหรือไม่?

Aug 19 2020

ฉันสงสัยว่าสไปรท์ชีทคุ้มไหม ฉันกำลังสร้างเกมด้วย pixi.js และกำลังคิดเกี่ยวกับการเพิ่มประสิทธิภาพโดยเริ่มจากการโหลดเนื้อหา ขณะนี้ฉันมีอาร์เรย์ของไฟล์ทั้งหมดและใช้ PIXI.loader แต่ฉันรู้ว่าสิ่งนี้ไม่ดีเพราะจะทำให้การร้องขอทางเว็บสำหรับไฟล์ทั้งหมดซึ่งใช้เวลานานดังนั้นฉันควรหาวิธีโหลดไฟล์เหล่านี้ในคำขอเว็บเดียว สิ่งแรกที่ฉันนึกถึงคือสไปรท์ชีท แต่แล้วฉันก็คิดว่า "จะเป็นอย่างไรถ้าฉันแค่ซิปทุกอย่างแล้วโหลดด้วย JSZip ล่ะ?" ฉันรู้ว่ามันเป็นไปได้อยู่แล้ว(จากโครงการนี้ที่โหลดพื้นผิวพิกซี่จากซิป)และระบุสิ่งที่ฉันคิดว่าอาจเป็นสิ่งที่ดีและไม่ดี:

จุดดี Zip:

  • การบีบอัดหมายถึงการโหลดเนื้อหาได้เร็วขึ้น
  • การบีบอัดหมายถึงขนาดบิวด์ที่เล็กลงเมื่อสร้างบิวด์ด้วยอิเล็กตรอน

ซิปจุดเสีย:

  • ต้องโหลดไลบรารีแยกต่างหากซึ่งหมายความว่าเพิ่มเวลาในการโหลดและใช้ RAM มากขึ้น
  • ต้องมีการคลายการบีบอัดในหน่วยความจำหมายถึงเวลาในการโหลดที่เพิ่มขึ้น

Spritesheet จุดดี:

  • ไม่มีส่วนหัวของไฟล์ภาพแต่ละไฟล์
  • มีการใช้มากจึงเป็นเทคนิคที่พิสูจน์แล้ว

จุดเสียของ Spritesheet:

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

ฉันไม่ใช่นักพัฒนาที่มีประสบการณ์มากดังนั้นฉันจึงมีคำถามสองสามข้อ:

  1. ฉันพลาดประเด็นข้างต้นไปหรือเปล่า?
  2. สไปรท์ชีทโดยทั่วไปคุ้มค่าหรือไม่?
  3. เทคนิคใดของทั้งสองคุ้มค่ากว่ากัน? ฉันสามารถทำได้ทั้งสองอย่าง แต่ฉันต้องการมุ่งเน้นไปที่หนึ่งก่อนและปล่อยให้อีกรายการอยู่ในรายการที่ดี

คำตอบ

4 Theraot Aug 19 2020 at 01:12

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

ดังนั้นแผนที่พื้นผิวที่ส่งออกอย่างถูกต้องจะให้ประโยชน์ที่คุณระบุในการบีบอัด

นี่หมายความว่าคุณควรทำให้ทุกอย่างเป็นสไปรท์ชีทเดียวหรือไม่? ไม่ได้คุณควรรวบรวมสิ่งที่ควรโหลดไว้ด้วยกัน

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

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

คุณอาจสนใจที่จะบรรจุอัลกอริทึมที่อาจลดรูในแผนที่พื้นผิว