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