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

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

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

ใช้ setFrameRate() API

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

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

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

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

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 อยู่ตลอดเวลาอาจทำให้เกิดความร้อนมากเกินไปและแบตเตอรี่หมดเร็ว ซึ่งอาจส่งผลให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี การปรับอัตราการรีเฟรชอย่างชาญฉลาดตามภาระการแสดงผลปัจจุบันและสภาพอุปกรณ์จะช่วยให้คุณรักษาสมดุลระหว่างความเที่ยงตรงของภาพกับประสิทธิภาพด้านพลังงานได้

Performance Monitoring

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

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

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

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