Android 15 จะตั้งค่าอัตราการรีเฟรชเริ่มต้นเป็น 60 Hz สำหรับเกมเพื่อเพิ่มประสิทธิภาพการใช้พลังงาน หากต้องการปลดล็อกอัตราเฟรมที่สูงขึ้น เช่น 120 FPS ตอนนี้คุณต้องขออัตราเฟรมเหล่านั้นอย่างชัดเจนโดยใช้ Frame Rate API หรือไลบรารี Swappy
อย่างไรก็ตาม ระบบอาจลบล้างคำขอนี้โดยพิจารณาจากปัจจัยต่างๆ เช่น ระดับแบตเตอรี่หรืออุณหภูมิของอุปกรณ์ แม้ว่าอัตราการรีเฟรชที่สูงขึ้นจะช่วยเพิ่มความลื่นไหลของภาพ แต่ก็ต้องใช้พลังงานมากขึ้นและสร้างความร้อนเพิ่มขึ้นด้วย ดังนั้น คุณจึงควรเสนอตัวเลือกให้ผู้ใช้เลือกอัตราการรีเฟรชที่ต้องการ และตรวจสอบประสิทธิภาพอย่างละเอียดเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่สมดุล
ใช้ setFrameRate()
API
setFrameRate()
API ช่วยให้นักพัฒนาแอปเกมใช้อัตราการรีเฟรชของจอแสดงผลที่เฉพาะเจาะจงได้ โดยวิธีดำเนินการมี 2 ขั้นตอนดังนี้
- ยืนยันความเข้ากันได้ของอุปกรณ์และเวอร์ชัน Android
- ขอ 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 มีรายละเอียดเพิ่มเติม
เคล็ดลับเพิ่มเติมเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
ส่วนต่อไปนี้แสดงเคล็ดลับยอดนิยมหลายประการ
- การเปลี่ยนอัตราเฟรมแบบไดนามิก
- การตรวจสอบประสิทธิภาพ
- ระบุตัวเลือก FPS ตามอัตราการรีเฟรชจอแสดงผลสูงสุด
การเปลี่ยนอัตราเฟรมแบบไดนามิก
หากต้องการเพิ่มประสิทธิภาพทั้งด้านประสิทธิภาพและการใช้พลังงาน ให้ลองใช้การสลับอัตราเฟรมแบบไดนามิกในเกม เทคนิคนี้ช่วยให้คุณสลับระหว่างอัตราการรีเฟรชที่สูงขึ้น เช่น 120 Hz เพื่อให้เล่นเกมได้ราบรื่นขึ้นในช่วงที่มีฉากที่มีความต้องการสูง และอัตราการรีเฟรชที่ต่ำลง เช่น 60 Hz ในช่วงที่มีความต้องการไม่สูงมากนัก หรือเมื่อต้องคำนึงถึงอายุการใช้งานแบตเตอรี่ หรือกำหนดเป้าหมายไว้ที่ต่ำกว่า 60 FPS การทำงานที่ 120Hz อย่างต่อเนื่องอาจส่งผลให้เกิดความร้อนมากเกินไปและแบตเตอรี่หมดเร็ว ซึ่งอาจส่งผลให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี การปรับอัตราการรีเฟรชอย่างชาญฉลาดตามภาระงานการแสดงผลปัจจุบันและสภาพของอุปกรณ์จะช่วยให้คุณรักษาสมดุลระหว่างความเที่ยงตรงของภาพกับประสิทธิภาพการใช้พลังงานได้
การตรวจสอบประสิทธิภาพ
ผสานรวมเครื่องมือตรวจสอบประสิทธิภาพ เช่น ตัวนับเฟรมหรือการวางซ้อนประสิทธิภาพ เพื่อให้เกมทำงานได้อย่างมีประสิทธิภาพสูงสุดที่อัตราการรีเฟรชที่สูงขึ้น เครื่องมือเหล่านี้จะให้ความคิดเห็นแบบเรียลไทม์เกี่ยวกับอัตราเฟรมจริงของเกม ซึ่งจะช่วยให้คุณยืนยันได้ว่าเกมของคุณบรรลุเป้าหมาย 120 FPS อย่างต่อเนื่องหรือไม่
หากอัตราเฟรมมีความผันผวนอย่างมาก ให้พิจารณากำหนดเป้าหมายอัตราเฟรมที่ทำได้ต่ำลงในอุปกรณ์หนึ่งๆ ซึ่งจะช่วยให้ได้รับประสบการณ์การใช้งานที่ราบรื่นขึ้นโดยไม่มีปัญหาด้านประสิทธิภาพที่อาจเกิดขึ้นเมื่อพยายามใช้อัตราการรีเฟรชสูงสุด
ระบุตัวเลือก FPS ตามอัตราการรีเฟรชจอแสดงผลสูงสุด
เกมควรตรวจหาอัตราการรีเฟรชจอแสดงผลสูงสุดที่อุปกรณ์ปัจจุบันรองรับ เช่น 60 Hz, 90 Hz หรือ 120 Hz และจำกัดการตั้งค่า FPS ให้เหมาะสม เช่น หากอุปกรณ์รองรับสูงสุด 60Hz ก็ควรปิดใช้ตัวเลือกที่สูงกว่า 60FPS ในการตั้งค่าเกมเพื่อไม่ให้ผู้เล่นสับสน