คู่มือนี้อธิบายวิธีลดขนาดของเกม เมื่อติดตั้งแล้ว เกมขนาดเล็กจะใช้เวลาในการดาวน์โหลดและใช้อินเทอร์เน็ตน้อยกว่า ทั้ง 2 อย่างนี้จะช่วยให้ Conversion การติดตั้งสูงขึ้น การวิจัยของ Google แสดงให้เห็นว่าการเพิ่มขนาด APK ที่แสดง 6 MB ส่งผลให้อัตราการติดตั้ง ลดลง 1% นักพัฒนาแอปจำนวนมากย้ายชิ้นงานออกจาก APK ไปยังเครือข่ายนำส่งข้อมูล (CDN) แต่ก็ต้องเสียค่าใช้จ่ายทั้งในการโฮสต์ CDN และในการพัฒนาและบำรุงรักษาระบบจัดการชิ้นงาน
หากต้องการลดขนาดของเกม ให้ทำตามขั้นตอนต่อไปนี้
- ใช้วิธีการนำส่งที่เพิ่มประสิทธิภาพ เช่น App Bundle และ Play Asset Delivery
- กำหนดขนาดพื้นฐานของเกมและทําความเข้าใจโครงสร้างของเกม
- ค้นหาชิ้นงานและไฟล์อื่นๆ ที่ลดขนาดได้
- ตรวจสอบพื้นผิวของกราฟิกและระบุโอกาสในการเพิ่มประสิทธิภาพ
- ทำตามคำแนะนำทั่วไปสำหรับชิ้นงาน
ใช้วิธีการนำส่งที่เพิ่มประสิทธิภาพ เช่น Android App Bundle และ Play Asset Delivery
ลองพิจารณาวิธีการนำส่งต่อไปนี้
แม้ว่าโดยปกติแล้วโปรเจ็กต์เดิมจะสร้าง APK สำหรับการเผยแพร่ แต่เกมที่เผยแพร่ใน Google Play ควรใช้ Android App Bundle App Bundle จะนำส่ง APK ที่เพิ่มประสิทธิภาพ ซึ่งปรับให้เหมาะกับการกำหนดค่าอุปกรณ์ของผู้ใช้แต่ละราย โดยเฉลี่ยแล้ว App Bundle จะลดขนาดแอปได้ 20%
หากต้องการแสดงเนื้อหาเกมผ่าน Google Play และมีขนาดการดาวน์โหลดเกิน 200 MB สำหรับ App Bundle ที่มีขนาดสูงสุดหลาย GB ให้ใช้ Play Asset Delivery (PAD) ไม่จำเป็นต้องใช้ CDN ภายนอก PAD รองรับวิธีการนำส่งที่แตกต่างกัน 3 วิธี ซึ่งแต่ละวิธี สามารถใช้ในเกมเดียวได้
- ขณะติดตั้ง: ดาวน์โหลดชิ้นงานเมื่อติดตั้ง เนื้อหาจะได้รับการแพ็กเกจ ในแพ็กเนื้อหา ซึ่งมาแทนที่ไฟล์ Opaque Binary Blob (OBB)
- นำส่งตามอย่างรวดเร็ว: ดาวน์โหลดชิ้นงานหลังการติดตั้ง
- ตามคำขอ: เกมจะเริ่มดาวน์โหลดเนื้อหาตามที่จำเป็น
PAD กำหนดให้เกมต้องแพ็กเกจโดยใช้รูปแบบ App Bundle นอกจากนี้ PAD ยังช่วยลดปริมาณข้อมูลที่ CDN ของนักพัฒนาแอปใช้ได้ด้วย (หากยังจำเป็นต้องใช้)
Google Play ใช้ Android App Bundle เพื่อสร้างและแสดง APK ที่เพิ่มประสิทธิภาพสำหรับการกำหนดค่าอุปกรณ์ของผู้ใช้แต่ละราย APK ที่เพิ่มประสิทธิภาพเหล่านี้มีชุดเนื้อหาพื้นผิวชุดเดียว ซึ่งจัดรูปแบบด้วยรูปแบบการบีบอัดที่เหมาะสมที่สุดสำหรับ อุปกรณ์ กำหนดค่า App Bundle เพื่อรองรับ รูปแบบการบีบอัดเท็กซ์เจอร์ที่แตกต่างกัน เพื่อรองรับอุปกรณ์ที่หลากหลายที่สุด
กำหนดขนาดพื้นฐานของเกมและทำความเข้าใจโครงสร้างของเกม
หากต้องการทำความคุ้นเคยกับเกม ให้พิจารณาปริมาณงานที่จำเป็นสำหรับการเพิ่มประสิทธิภาพ ที่กำหนด และพิจารณาว่าเกมดาวน์โหลดชิ้นงานเพิ่มเติมหรือไม่ ให้ทำตามขั้นตอนต่อไปนี้
- ใช้บิลด์เวอร์ชันที่ใช้งานจริง (ไม่ใช่เวอร์ชันแก้ไขข้อบกพร่อง) จากนักพัฒนาแอปหรือ APK ที่เผยแพร่
- บันทึกขนาดของไฟล์ไบนารีตามที่นักพัฒนาแอปส่งมา หรือหากเกมเผยแพร่แล้ว ให้บันทึกในหน้า Play Store ของเกม สำหรับขนาด APK ปัจจัยที่สำคัญที่สุดคือปริมาณข้อมูลที่ผู้ใช้ต้องดาวน์โหลดเพื่อเรียกใช้ เกมจริง
- ติดตั้งเกมในอุปกรณ์และเรียกใช้เกมไปยังเมนูเกมเริ่มต้น ในตอนนี้ ให้ตรวจสอบขนาดการติดตั้งของเกมตามที่ Android รายงาน (ในส่วนการตั้งค่า > พื้นที่เก็บข้อมูล) บางเกมมีขนาดการติดตั้งเริ่มต้นเล็กน้อย เนื่องจาก นี่คือตัวเลขสำคัญที่ต้องเพิ่มประสิทธิภาพ แต่จะดาวน์โหลดข้อมูลเพิ่มเติมหลัง การติดตั้ง บางเกมจะดาวน์โหลดข้อมูลหลายกิกะไบต์หลังจากติดตั้ง
- เกมบางเกมจะดาวน์โหลดข้อมูลหลังจากที่คุณเริ่มเล่นเท่านั้น คุณควรเล่นเกมสักพักเพื่อดูว่าเกมดาวน์โหลดข้อมูลเพิ่มเติมเท่าใด สำหรับผู้ใช้ทั่วไปที่เล่นเกมเป็นครั้งแรก
ค้นหาชิ้นงานและไฟล์อื่นๆ ที่ลดขนาดได้
ส่วนนี้จะอธิบายวิธีลดขนาดไฟล์ใน APK คุณใช้ App Bundle Explorer เพื่อดาวน์โหลด APK เฉพาะอุปกรณ์ได้
หากต้องการลดขนาดไฟล์ที่แพ็กเกจลงใน APK โดยตรง ให้ทำตาม ขั้นตอนต่อไปนี้
- ใช้ตัววิเคราะห์ APK ของ Android Studio ใน Android Studio ให้เลือกไฟล์ > โปรไฟล์หรือแก้ไขข้อบกพร่องของ APK แล้วเลือก APK
- เลือกโฟลเดอร์ชิ้นงาน สำหรับแต่ละไฟล์ จะมีการแสดงขนาดไฟล์ดิบและ เปอร์เซ็นต์ของขนาดการดาวน์โหลดทั้งหมด
ตรวจสอบโฟลเดอร์เนื้อหาและระบุตำแหน่งที่ข้อมูลส่วนใหญ่ของเกมอยู่ พิจารณาว่ามีเนื้อหาใดที่ใช้พื้นที่มากเกินไป (กล่าวคือ มากกว่า 1% ของพื้นที่ทั้งหมด) โดยเฉพาะอย่างยิ่ง ให้มองหาสิ่งต่อไปนี้
- ไฟล์รูปภาพและวิดีโอขนาดใหญ่ (เช่น ไฟล์ PNG, JPEG และ MP4): โดยปกติแล้วไฟล์เหล่านี้จะใช้ในหน้าจอเริ่มต้น พื้นหลัง และ โลโก้ ไฟล์เหล่านี้ไม่ค่อยได้ใช้ในเกมส่วนใหญ่ และสามารถบีบอัด เพิ่มเติมได้โดยไม่ส่งผลต่อประสบการณ์ของผู้ใช้ ไฟล์ PNG แบบไม่สูญเสียข้อมูลมีขนาดใหญ่มาก และเหมาะอย่างยิ่งที่จะนำมาบีบอัด
- ไฟล์แบบอักษรขนาดใหญ่ (เช่น ไฟล์ TTF): หากเพิ่มการรองรับอีโมจิ อาจทำให้ไฟล์แบบอักษรมีขนาดใหญ่ขึ้นอย่างมาก หากไฟล์แบบอักษรมีขนาดใหญ่กว่า 2-300 กิโลไบต์ ให้พิจารณาวิธีลดขนาด
- รูปแบบหรือเวอร์ชันไฟล์เสียงที่ซ้ำกันซึ่งคุณรวมได้
หากมี Application Binary Interface (ABI) หลายรายการ รวมอยู่ใน APK ให้ย้ายไปใช้ App Bundle หรือสร้าง APK หลายรายการ
กำหนดขนาดของไฟล์ออบเจ็กต์ที่แชร์แบบไบนารี (.so) หากต้องการตรวจสอบไฟล์ไบนารีเพื่อดูว่ามีสิ่งที่ไม่จำเป็นต้องรวมอยู่หรือไม่ เช่น ไฟล์บันทึก คุณสามารถใช้เครื่องมือ Bloaty McBloatface ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเพิ่มประสิทธิภาพไฟล์ไบนารีได้ที่แฟล็กและตัวเลือกการคอมไพล์
ตรวจสอบไฟล์ Manifest ของ Android เพื่อดูรูปแบบกราฟิกที่รองรับ พิจารณา ว่ามีแท็ก
<supports-gl-texture>
หลายรายการใน APK หรือไม่ หาก เกมรองรับรูปแบบสำหรับ GPU หลายตัวใน APK เดียว ให้ลองใช้ Basis Universal ของ Binomial ระบบการบีบอัดพื้นผิวของ GPU นี้จะสร้างไฟล์พื้นผิวในรูปแบบกลาง ที่แปลงรหัสไปยัง GPU ได้อย่างรวดเร็ว
ตรวจสอบพื้นผิวของกราฟิกและระบุโอกาสในการเพิ่มประสิทธิภาพ
ส่วนนี้จะอธิบายเครื่องมือและวิธีการที่จำเป็นในการพิจารณาว่าสามารถเพิ่มประสิทธิภาพ พื้นผิวของกราฟิกที่ใช้ในเกมได้หรือไม่
หากต้องการตรวจสอบพื้นผิวในเกม ให้ใช้ Android GPU Inspector (AGI), RenderDoc หรือ Snapdragon Profiler (สำหรับ GPU ของ Qualcomm Snapdragon เท่านั้น)
มองหาสิ่งต่อไปนี้
- พื้นผิวที่ปรับขนาดให้มีความละเอียดต่ำลงได้ เช่น พื้นผิวขนาดใหญ่สำหรับสิ่งที่แสดงผลในเกมเป็นขนาดเล็กเท่านั้น การลดขนาดพื้นผิวต้องใช้การคำนวณที่ซับซ้อน
- การใช้พื้นผิวขนาดเล็กหลายรายการที่รวมกันเป็นแมปพื้นผิวเดียวได้
- พื้นผิวที่ใช้บิตในช่องสีน้อยลงได้ พื้นผิวที่เหมาะคือพื้นผิวที่มีพื้นผิวแบบทึบไม่กี่แบบ การไล่ระดับสีและเฉดสีต้องใช้ความละเอียดที่สูงกว่า จึงไม่เหมาะที่จะนำมาใช้
- สำรวจอัลกอริทึมการบีบอัดพื้นผิวที่ดีขึ้น ตั้งแต่ ETC1 ไปจนถึง ETC2 และ ASTC
ทิ้งระดับ Mipmap สูงสุดเมื่อโหลดพื้นผิวในอุปกรณ์ระดับล่าง เพื่อประหยัดหน่วยความจำ ระบบการสตรีมเท็กซ์เจอร์ของ Unity ทำได้
หากยังไม่ได้ดำเนินการ โปรดตรวจสอบไฟล์ AndroidManifest สำหรับ รูปแบบกราฟิกที่รองรับ ตรวจสอบว่ามีแท็ก
<supports-gl-texture>
หลายแท็กใน APK หรือไม่ หากเกมรองรับรูปแบบสำหรับ GPU หลายตัวใน APK เดียว ให้พิจารณาใช้ Basis Universal ของ Binomial ระบบการบีบอัดพื้นผิวของ GPU นี้จะสร้างไฟล์พื้นผิวในรูปแบบกลาง ที่แปลงรหัสไปยัง GPU ได้อย่างรวดเร็ว
คำแนะนำทั่วไปสำหรับชิ้นงาน
ทำตามคำแนะนำต่อไปนี้สำหรับชิ้นงานของ APK
- ชิ้นงานรูปภาพ เสียง และวิดีโอ (ไม่ใช่พื้นผิว GPU): กำหนดว่าชิ้นงานจะปรับขนาดหรือบีบอัดเพิ่มเติมได้หรือไม่ โดยทั่วไปแล้วอัตราส่วนการบีบอัดที่สูงขึ้น มักจะยอมรับได้สำหรับเกม ไฟล์ PNG แบบไม่สูญเสียข้อมูลมีขนาดใหญ่เป็นพิเศษ จึงเหมาะอย่างยิ่งสำหรับการบีบอัด
- ชิ้นงานรูปภาพ (ไม่ใช่พื้นผิว GPU): ลองใช้ WEBP ซึ่งเป็นรูปแบบการบีบอัดรูปภาพ สำหรับการบีบอัดทั้งแบบสูญเสียรายละเอียดบางส่วนและแบบไม่สูญเสียรายละเอียด WEBP แบบสูญเสียรายละเอียดจะบีบอัดรูปภาพได้มากกว่า JPG 25-34%
- ลดความละเอียดของพื้นผิว: พื้นผิวที่มีขนาดใหญ่กว่าจำนวนพิกเซลมาก ซึ่งแสดงผลบนหน้าจอในท้ายที่สุดเป็นการใช้พื้นที่และทรัพยากร GPU อย่างไม่มีประสิทธิภาพ หากต้องการเปลี่ยนพื้นผิวและดูว่าพื้นผิวมีลักษณะอย่างไรในเฟรมโดยไม่ต้องสร้างเกมใหม่ ให้ใช้ AGI
- เปลี่ยนรูปแบบพื้นผิวของกราฟิก: ใช้รูปแบบพื้นผิวที่ใช้บิตน้อยกว่า ต่อช่อง เช่น ใช้รูปแบบพื้นผิว 16 บิต เช่น RGB565 แทน รูปแบบพื้นผิว 32 บิต เช่น ARGB ดูข้อมูลเพิ่มเติมได้จากหัวข้อต่อไปนี้
แหล่งข้อมูลเพิ่มเติม
- การปรับปรุง Android App Bundle ล่าสุดและไทม์ไลน์สำหรับแอปใหม่ใน Google Play
- ลดขนาด APK ในเกมด่วน Android
- พื้นผิวที่บีบอัดยิ่งยวดซึ่งถอดรหัสด้วย GPU ได้ (งานวิจัย)