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