การแทรกแซงโหมดเกมคือการเพิ่มประสิทธิภาพเฉพาะเกมที่ผู้ผลิตอุปกรณ์ดั้งเดิม (OEM) กำหนดไว้เพื่อปรับปรุงประสิทธิภาพของเกมที่นักพัฒนาแอปไม่ได้อัปเดตอีกต่อไป เช่น
- การใช้การปรับขนาด Backbuffer ของ WindowManager
- การใช้ ANGLE แทนไดรเวอร์ GLES ดั้งเดิม
คุณสามารถทำให้เกมรองรับและจัดการ Game Mode API เพื่อให้ลบล้างการแทรกแซงโหมดเกมที่ OEM ให้มา
Game Mode API และการแทรกแซงพร้อมใช้งานในอุปกรณ์ต่อไปนี้
- อุปกรณ์ Android 12 บางรุ่น
- อุปกรณ์ที่ใช้ Android 13 ขึ้นไป
เกมแต่ละเกมสามารถดำเนินการต่อไปนี้ได้
- ใช้ลักษณะการทํางานของ Game Mode API
- เสนอการตั้งค่าการแทรกแซงโหมดเกมให้กับ OEM หรือ
- เลือกไม่ใช้การแทรกแซงโหมดเกมอย่างชัดเจน
ฉากหลัง
ส่วนนี้จะอธิบายสิ่งที่การแทรกแซงโหมดเกมทําและวิธีเพิ่มประสิทธิภาพเกมสำหรับแต่ละโหมด
การปรับขนาด Backbuffer ของ WindowManager
การแทรกแซงการปรับขนาดแบ็กบัฟเฟอร์ของ WindowManager สามารถลดภาระของ GPU ของอุปกรณ์ได้ นอกจากนี้ยังช่วยลดการใช้แบตเตอรี่เมื่อเกมเล่นที่อัตราเฟรมเป้าหมาย
การเปิดใช้การปรับขนาดอาจทำให้ GPU ทำงานน้อยลงสูงสุด 30% และลดการใช้พลังงานของระบบโดยรวมได้ 10% ผลลัพธ์อาจแตกต่างกันไปตามอุปกรณ์ที่ใช้ สภาพสภาพแวดล้อม และปัจจัยอื่นๆ เช่น การประมวลผลพร้อมกัน
เกมที่ไม่มีการจำกัดเฟรมเรตซึ่งทำงานบน GPU มีแนวโน้มที่จะแสดงเฟรมเรตสูงขึ้นเมื่อ GPU มีภาระงานลดลง
เราขอแนะนำอย่างยิ่งให้เกมทั้งหมดมีจังหวะที่ดี เนื่องจากอัตราเฟรมที่ไม่สม่ำเสมอส่งผลต่อวิธีที่ผู้ใช้รับรู้ถึงประสิทธิภาพอย่างมาก
การควบคุม FPS
การควบคุม FPS ของ Android คือการแทรกแซงโหมดเกมที่ช่วยให้เกมทำงานด้วยอัตราเฟรมที่เสถียรมากขึ้นเพื่อลดการใช้แบตเตอรี่ การแทรกแซงพร้อมใช้งานใน Android 13 ขึ้นไป ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมการจำกัด FPS
ประเมินการแทรกแซงโหมดเกม
ส่วนนี้ใช้คําสั่ง adb
ตั้งค่าโหมด
คุณต้องเลือกไม่ใช้โหมดเกมในไฟล์การกําหนดค่าโหมดเกมของแอปก่อนทดสอบการแทรกแซงโหมดเกม มิเช่นนั้น แพลตฟอร์มจะข้ามการตั้งค่าเหล่านี้และพิจารณาเฉพาะการเพิ่มประสิทธิภาพในเกม
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsBatteryGameMode="false"
android:supportsPerformanceGameMode="false"
/>
(ไม่บังคับ) สำรองข้อมูลการกำหนดค่าอุปกรณ์ที่มีอยู่
สำหรับ Pixel หรืออุปกรณ์อื่นๆ อาจมีการกำหนดค่าการแทรกแซงเกมอยู่แล้วในการกําหนดค่าอุปกรณ์ คุณสามารถค้นหาการกําหนดค่าได้โดยใช้คําสั่งต่อไปนี้
adb shell device_config get game_overlay <PACKAGE_NAME>
หากการค้นหาแสดงผลเป็น null
ให้ละเว้นการกําหนดค่าที่มีอยู่ หรือจะบันทึกไว้แล้วรีเซ็ตเป็นค่าเดิมหลังจากการประเมินก็ได้
ประเมินการแทรกแซง
หากต้องการประเมินการแทรกแซงการปรับขนาดแบ็กบัฟเฟอร์ของ WindowManager เพียงอย่างเดียว ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่าการปรับขนาดบัฟเฟอร์ WindowManager ที่ต่างกันในโหมดเกมต่างๆ
adb shell device_config put game_overlay <PACKAGE_NAME>
mode=2,downscaleFactor=0.9:mode=3,downscaleFactor=0.5
ในตัวอย่างนี้ mode=2
คือ "ประสิทธิภาพ" และ mode=3
คือ "โหมดประหยัดแบตเตอรี่" ค่า downscaleFactor
จะระบุเป็นเปอร์เซ็นต์ที่ใช้กับการตั้งค่าการปรับขนาด (เช่น 0.7 คือ 70% และ 0.8 คือ 80%) การปรับขนาด 90% (0.9) แทบจะมองไม่เห็น แต่การปรับขนาด 50% (0.5) นั้นสำคัญ
คำเตือน: ระบบอาจปรับขนาดกระบวนการย่อยไม่ถูกต้องใน Android 12 โดยเฉพาะอย่างยิ่ง ให้ตรวจสอบว่าข้อความแจ้งและป๊อปอัปแสดงผลอย่างถูกต้อง เราขอแนะนําให้คุณจํากัดการตั้งค่าการปรับขนาดไว้ที่อย่างน้อย 70%
หลังจากตั้งค่าค่าการปรับขนาดใหม่แล้ว ให้สลับระหว่างโหมดเกมเพื่อดูว่าเกมได้รับผลกระทบจากการแทรกแซงการปรับขนาดแบ็กบัฟเฟอร์ของ WindowManager อย่างไร
adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>
อย่าลืมรีสตาร์ทเกมหลังจากเลือกโหมดเกมแต่ละโหมด การแทรกแซงเพื่อลดขนาดต้องมีการรีสตาร์ทแอป
เลือกไม่รับความช่วยเหลือ
คุณควบคุมได้ว่าจะให้ใช้มาตรการแทรกแซงกับเกมหรือไม่โดยการเลือกไม่ใช้ การแทรกแซงแต่ละรายการมีการตั้งค่าการเลือกใช้ของตนเอง
- ไฟล์ XML สำหรับการกําหนดค่าเดียวกันกับที่ใช้ควบคุมการเลือกใช้และไม่เลือกใช้โหมดเกมจะใช้สําหรับการตั้งค่าการแทรกแซงด้วย
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:allowGameDownscaling="false"
android:allowGameFpsOverride="false"
/>
- โปรดสร้างและส่งเกมอีกครั้งเพื่อเลือกไม่ใช้
โดยค่าเริ่มต้น ระบบจะใช้การแทรกแซงที่ผู้ผลิตอุปกรณ์ดั้งเดิม (OEM) กำหนดไว้ เว้นแต่คุณจะเลือกไม่ให้เกมใช้การแทรกแซงดังกล่าวอย่างชัดเจน
แหล่งข้อมูล
ดูข้อมูลเพิ่มเติมเกี่ยวกับการวัดและเพิ่มประสิทธิภาพเกม
เครื่องมือวิเคราะห์ระบบ - วิเคราะห์การใช้งาน CPU และการเรียกใช้กราฟิก
Android GPU Inspector - โปรไฟล์กราฟิกใน Android
Android Frame Pacing Library - ช่วยให้เกม OpenGL และ Vulkan แสดงผลได้อย่างราบรื่นและกำหนดอัตราการแสดงเฟรมได้อย่างถูกต้อง
Android Performance Tuner - วัดและเพิ่มประสิทธิภาพอัตราเฟรมและกราฟิกในอุปกรณ์ Android จำนวนมาก
Power Profiler - ค้นหาว่าแอปใช้พลังงานมากกว่าที่จำเป็นในส่วนใด