Mir 2 ช่วยปรับปรุงประสิทธิภาพการแสดงผลโดยใช้ไลบรารีการกำหนดเฟรม

Mir 2: Return of the King

Mir 2: Return of the King เป็นเกมมือถือคุณภาพสูงที่มี IP ของ Legend ซึ่งได้รับอนุญาตจาก Actoz Soft และพัฒนาโดย HK ZHILI YAOAN LIMITED โดยใช้เครื่องมือเกม Unity

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

เกมดังกล่าวใช้ไลบรารีการกำหนดเฟรม (Swappy) ของ Android เพื่อปรับปรุงความเสถียรของอัตราเฟรม การแสดงผลที่ราบรื่น และเพิ่ม Android Vitals (เมตริกเซสชันที่ช้า) อย่างมาก

เปิดตัวเซสชันที่ช้าใน Android Vitals

เซสชันที่ช้าคือเมตริก Android Vitals ใน Google Play Console เซสชันที่ช้ามีเฟรมที่ช้ามากกว่า 25% เฟรมจะช้าในกรณีต่อไปนี้

  1. ที่ 20 fps เฟรมจะไม่แสดงภายใน 50 มิลลิวินาทีหลังจากเฟรมก่อนหน้า

  2. ที่ 30 fps เฟรมจะไม่แสดงภายใน 34 มิลลิวินาทีหลังจากเฟรมก่อนหน้า

Play จะเริ่มพาผู้ใช้ออกจากเกมที่มีอัตราเฟรม 20 FPS ในโทรศัพท์ให้ทันเวลา

มีหลายสาเหตุที่ทำให้เฟรมแสดงหรือแสดงผลบนหน้าจอนานกว่าเวลาเฟรมเป้าหมายของนักพัฒนาแอป เกมอาจใช้ CPU หรือ GPU มากเกินไป ร้อนเกินไป (ทำให้เกิดการจำกัดความร้อน) หรือเฟรมเรตของเกมไม่ตรงกับอัตราการรีเฟรชของจอแสดงผลของอุปกรณ์

ไลบรารีการกำหนดเฟรมคืออะไร

ไลบรารีการกำหนดเฟรมของ Android หรือที่เรียกว่า Swappy เป็นส่วนหนึ่งของไลบรารี AGDK Swappy ช่วยให้เกม OpenGL และ Vulkan แสดงผลได้อย่างราบรื่นและกำหนดอัตราการแสดงเฟรมได้อย่างถูกต้องบน Android

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

นอกจากนี้ คลังการจัดการเฟรมยังช่วยยืดอายุการใช้งานแบตเตอรี่ด้วยเนื่องจากจะหลีกเลี่ยงการอัปเดตการแสดงผลที่ไม่จำเป็น เช่น หากเกมแสดงผลที่ 60 FPS แต่จอแสดงผลอัปเดตที่ 120 Hz หน้าจอจะอัปเดต 2 ครั้งสำหรับทุกเฟรม ไลบรารีการกำหนดอัตราการแสดงเฟรมจะหลีกเลี่ยงปัญหานี้โดยการตั้งค่าอัตราการรีเฟรชเป็นค่าที่อุปกรณ์รองรับซึ่งใกล้เคียงกับอัตราเฟรมเป้าหมายมากที่สุด

วิธีที่ Mir 2 ปรับปรุงประสิทธิภาพการแสดงผลด้วยคลัง Frame Pacing

Mir 2 (미르2: 왕의 귀환) พบปัญหาด้านประสิทธิภาพการแสดงผลที่ไม่เสถียร ซึ่งเซสชันทำงานช้า 40% ที่เกณฑ์อัตราเฟรม 20 FPS ซึ่งสูงกว่าเกณฑ์ 20% ของ Google Play มาก

รูปที่ 1 เมตริกเซสชันที่ช้าก่อนผสานรวมไลบรารีการกำหนดเฟรม

Mir 2 (미르2: 왕의 귀환) เป็นเกมที่มีกราฟิกคุณภาพสูง อุปกรณ์บางรุ่นจึงอาจพบปัญหาในการคง FPS ให้เสถียร การแจกแจงอัตราเฟรมแสดงให้เห็นว่าเซสชันจำนวนมากทำงานที่ FPS ต่ำกว่า 20 FPS

รูปที่ 2 การแจกแจง FPS ของเกมก่อนผสานรวมไลบรารีการกำหนดเฟรม
แต่ละกลุ่มแสดงเปอร์เซ็นต์ของเซสชันที่เฟรม 75% เร็วกว่าป้ายกำกับกลุ่ม

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

รูปที่ 3 เฟรมยาว B กำหนดอัตราการแสดงเฟรม 2 เฟรม (A และ B) อย่างไม่ถูกต้อง

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

รูปที่ 4 เฟรม C และ D รอแสดง

Mir 2 ผสานรวมไลบรารี Frame Pacing ได้อย่างง่ายดายโดยใช้ประโยชน์จากฟีเจอร์ Optimized Frame Pacing ในตัวของ Unity การดำเนินการดังกล่าวส่งผลให้ประสิทธิภาพการแสดงผลดีขึ้นอย่างมาก โดยเฉพาะการลดเมตริกเซสชันที่ช้าจาก 40% เหลือ 10%

รูปที่ 5 การปรับปรุงเซสชันที่ช้าหลังจากผสานรวมไลบรารีการกำหนดอัตราการแสดงเฟรม

จำนวนเซสชันที่ทำงานช้าของ Mir2 ลดลงอย่างมากหลังจากผสานรวมไลบรารี

รูปที่ 6 การกระจาย FPS ของเกมหลังจากผสานรวมการกำหนดเฟรม
แต่ละกลุ่มแสดงเปอร์เซ็นต์ของเซสชันที่เฟรม 75% เร็วกว่าป้ายกำกับกลุ่ม

เริ่มต้นใช้งานคลังการกำหนดอัตราเฟรม

วิธีใช้คลังการกำหนดเฟรมในเครื่องมือสร้างเกมแบบเนทีฟ

ดูคู่มือต่อไปนี้เพื่อผสานรวมไลบรารีการกำหนดเฟรมของ Android ลงในเกม

วิธีใช้คลังการกำหนดเฟรมในเครื่องมือเกมของ Unity

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

รูปที่ 7 เปิดใช้การกำหนดเฟรมใน Unity Engine

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

วิธีใช้คลังการกำหนดเฟรมในเครื่องมือสร้างเกม Unreal

Unreal 4.25 ขึ้นไปผสานรวมไลบรารีการกำหนดเฟรมของ Android ซึ่งเป็นส่วนหนึ่งของ Android Game Development Kit บทความการกำหนดเฟรมอัตราเฟรมในอุปกรณ์เคลื่อนที่อธิบายวิธีเปิดใช้ไลบรารีการกำหนดเฟรมอัตราเฟรมของ Android และวิธีควบคุมการกำหนดเฟรมอัตราเฟรมจากโค้ด C++