เพิ่มประสิทธิภาพอัตราการรีเฟรช

Android 15 จะตั้งค่าอัตราการรีเฟรชเริ่มต้นเป็น 60 Hz สำหรับเกมเพื่อเพิ่มประสิทธิภาพการใช้พลังงาน หากต้องการปลดล็อกอัตราเฟรมที่สูงขึ้น เช่น 120 FPS ตอนนี้คุณต้องขออัตราเฟรมเหล่านั้นอย่างชัดเจนโดยใช้ Frame Rate API หรือไลบรารี Swappy

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

ใช้ setFrameRate() API

setFrameRate() API ช่วยให้นักพัฒนาแอปเกมใช้อัตราการรีเฟรชของจอแสดงผลที่เฉพาะเจาะจงได้ โดยวิธีดำเนินการมี 2 ขั้นตอนดังนี้

  1. ยืนยันความเข้ากันได้ของอุปกรณ์และเวอร์ชัน Android
  2. ขอ FPS สูงโดยใช้ setFrameRate()

ยืนยันความเข้ากันได้ของอุปกรณ์และเวอร์ชัน Android

ใช้เมธอด Display.getSupportedModes() เพื่อดูว่าอุปกรณ์รองรับอัตราการรีเฟรช 90Hz, 120Hz หรืออัตราการรีเฟรชอื่นๆ หรือไม่ หากอุปกรณ์จำกัดอยู่ที่ 60 Hz คุณจะไม่สามารถเพิ่มค่านี้ได้

Kotlin

val display = windowManager.defaultDisplay
val supportedModes = display.supportedModes
for (mode in supportedModes) {
  Log.d("DisplayInfo", "Supported mode: ${mode.physicalWidth}x${mode.physicalHeight}, ${mode.refreshRate}Hz")
}

ขอ FPS สูง

เรียกใช้ setFrameRate() เมื่อเริ่มลูปการแสดงผล ระหว่างการเริ่มต้นหน้าต่างเกม หรือเมื่อ FPS เป้าหมายต้องเปลี่ยนอัตราการรีเฟรชของจอแสดงผล

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

ข้อมูลโค้ดต่อไปนี้แสดงวิธีหลีกเลี่ยงอัตราการรีเฟรชที่สูงเกินไปด้วย setFrameRate() API

Kotlin

val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
  window.setFrameRate(
      targetFps,
      Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
      0
  )
}

หน้าอัตราเฟรมมีรายละเอียดเพิ่มเติมสำหรับการอ่านเพิ่มเติม

ใช้ไลบรารีการกำหนดเฟรม

ไลบรารีการกำหนดเฟรมหรือ Swappy เป็นไลบรารีโอเพนซอร์สที่ออกแบบมาเพื่อลดความซับซ้อนในการจัดการ VSync และการจัดตารางเฟรมในเครื่องมือสร้างเกม C/C++ สำหรับ Android เครื่องมือนี้ช่วยปรับปรุงกระบวนการเพิ่มประสิทธิภาพอัตราการรีเฟรช โดยทำหน้าที่เป็นเลเยอร์การแยกระดับที่สูงขึ้นอย่างมีประสิทธิภาพเหนือฟังก์ชันการทำงานต่างๆ เช่น setFrameRate() นอกจากนี้ Swappy ยังมีฟีเจอร์เพิ่มเติมที่สามารถช่วยเพิ่มความราบรื่นและประสิทธิภาพโดยรวมของเกม

หน้า Swappy มีรายละเอียดเพิ่มเติม

เคล็ดลับเพิ่มเติมเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด

ส่วนต่อไปนี้แสดงเคล็ดลับยอดนิยมหลายประการ

  1. การเปลี่ยนอัตราเฟรมแบบไดนามิก
  2. การตรวจสอบประสิทธิภาพ
  3. ระบุตัวเลือก FPS ตามอัตราการรีเฟรชจอแสดงผลสูงสุด

การเปลี่ยนอัตราเฟรมแบบไดนามิก

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

การตรวจสอบประสิทธิภาพ

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

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

ระบุตัวเลือก FPS ตามอัตราการรีเฟรชจอแสดงผลสูงสุด

เกมควรตรวจหาอัตราการรีเฟรชจอแสดงผลสูงสุดที่อุปกรณ์ปัจจุบันรองรับ เช่น 60 Hz, 90 Hz หรือ 120 Hz และจำกัดการตั้งค่า FPS ให้เหมาะสม เช่น หากอุปกรณ์รองรับสูงสุด 60Hz ก็ควรปิดใช้ตัวเลือกที่สูงกว่า 60FPS ในการตั้งค่าเกมเพื่อไม่ให้ผู้เล่นสับสน