API โหมดเกม

Game Mode API ช่วยให้คุณเพิ่มประสิทธิภาพเกมเพื่อให้ได้ประสิทธิภาพที่ดีที่สุดหรือ อายุการใช้งานแบตเตอรี่ที่ยาวนานที่สุดเมื่อผู้ใช้เลือกโหมดเกมที่เกี่ยวข้อง

หรือคุณจะส่งคำขอการแทรกแซงโหมดเกมเพื่อปรับปรุง ประสิทธิภาพของเกมที่นักพัฒนาแอปไม่ได้อัปเดตอีกต่อไปก็ได้

API และการแทรกแซงของโหมดเกมพร้อมใช้งานในอุปกรณ์ต่อไปนี้

  • อุปกรณ์ Android 12
  • อุปกรณ์ที่ใช้ Android 13 ขึ้นไป

แต่ละเกมอาจใช้ลักษณะการทำงานของ Game Mode API, เสนอการตั้งค่าการแทรกแซงโหมดเกมต่อ OEM หรือเลือกไม่ใช้การแทรกแซงโหมดเกม

ตั้งค่า

หากต้องการใช้ Game Mode API ในเกม ให้ทำดังนี้

  1. ดาวน์โหลดและติดตั้ง Android 13 SDK

  2. ในไฟล์ AndroidManifest.xml ให้ประกาศแอปเป็นเกมโดยตั้งค่าแอตทริบิวต์ appCategory ในองค์ประกอบ <application> ดังนี้

android:appCategory="game"
  1. ค้นหาโหมดเกมปัจจุบันโดยเพิ่มข้อมูลนี้ลงในกิจกรรมหลัก

Java

// Only call this for Android 12 and higher devices
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ) {
  // Get GameManager from SystemService
  GameManager gameManager = Context.getSystemService(GameManager.class);

  // Returns the selected GameMode
  int gameMode = gameManager.getGameMode();
}

Kotlin

// Only call this for Android 12 and higher devices
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
  // Get GameManager from SystemService
  val gameManager: GameManager? = context.getSystemService(Context.GAME_SERVICE) as GameManager?

  // Returns the selected GameMode
  val gameMode = gameManager?.gameMode
}
โหมดเกมที่รองรับ คำอธิบาย
ไม่รองรับ เกมไม่ได้ประกาศการรองรับ Game Mode API และไม่รองรับการแทรกแซง Game Mode
มาตรฐาน ผู้ใช้ไม่ได้เลือกโหมดเกมหรือเลือกโหมดมาตรฐาน
ประสิทธิภาพ ให้อัตราเฟรมที่มีเวลาในการตอบสนองต่ำที่สุดเพื่อแลกกับอายุการใช้งานแบตเตอรี่และความเที่ยงตรงที่ลดลง
แบตเตอรี่ ช่วยให้แบตเตอรี่ใช้งานได้นานที่สุดเท่าที่จะเป็นไปได้ แต่จะลดความเที่ยงตรงหรืออัตราเฟรมลง
  1. เพิ่มโค้ดเพื่อค้นหาสถานะโหมดเกมในฟังก์ชัน onResume

    ตัวอย่างที่มีการตั้งค่าโหมดแบตเตอรี่ของผู้ใช้

แนวทางปฏิบัติแนะนำ

หากเกมรองรับความแม่นยำและอัตราเฟรมหลายระดับอยู่แล้ว คุณควรระบุการตั้งค่าที่เหมาะสมสำหรับโหมดประสิทธิภาพและ โหมดประหยัดแบตเตอรี่

  • หากต้องการให้อุปกรณ์มีอัตราเฟรมสูงสุดอย่างสม่ำเสมอ ให้พิจารณาลดความเที่ยงลงเล็กน้อย เพื่อให้ได้อัตราเฟรมที่สูงขึ้น

  • หากต้องการยืดอายุการใช้งานแบตเตอรี่ ให้ลองเลือกอัตราการรีเฟรชของจอแสดงผลที่ต่ำลง (เช่น 30Hz หรือ 60Hz) และใช้การเว้นระยะเฟรมเพื่อกำหนดเป้าหมายอัตราที่ลดลง

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

สำหรับทั้งเกมที่มีความเที่ยงตรงสูงและเกมทั่วไป คุณควรรองรับโหมดประหยัดแบตเตอรี่ เพื่อยืดเวลาการเล่นด้วยการลดอัตราเฟรมสูงสุด

ประกาศการรองรับโหมดเกม

หากต้องการประกาศการรองรับโหมดเกมและลบล้างการแทรกแซงโหมดเกมโดย OEM ให้เพิ่มการกำหนดค่าโหมดเกมลงในองค์ประกอบ <application> ในไฟล์ AndroidManifest.xml ก่อน

<application>
    <meta-data android:name="android.game_mode_config"
               android:resource="@xml/game_mode_config" />
  ...
</application>

จากนั้นสร้างไฟล์ game_mode_config.xml ในไดเรกทอรี res/xml/ ของโปรเจ็กต์ โดยมีเนื้อหาดังนี้

<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsBatteryGameMode="true"
    android:supportsPerformanceGameMode="true"
/>

เปลี่ยนโหมดเกม

หากต้องการสลับไปมาระหว่างโหมดเกม คุณสามารถใช้แดชบอร์ดเกม (มีให้บริการในอุปกรณ์ Pixel) หรือแอปพลิเคชันที่คล้ายกันซึ่ง OEM จัดหาให้ หรือจะ ใช้คำสั่งเชลล์ของโหมดเกมในระหว่างการพัฒนาก็ได้

หากคุณใช้แดชบอร์ดเกมและไอคอนการเพิ่มประสิทธิภาพไม่แสดง เมื่อเปิดเกม คุณอาจต้องอัปโหลดแอปไปยัง Google Play Console และติดตั้งผ่าน Play Store ดูข้อมูลเกี่ยวกับการทดสอบแอปใน Play Store ได้ที่แชร์ App Bundle และ APK ภายใน

กิจกรรมในแดชบอร์ดเกม รูปที่ 1 แดชบอร์ดเกมที่แสดงซ้อนทับเกมที่กำลังเล่นบนอุปกรณ์ Pixel

ในรูปที่ 1 คุณสามารถเปลี่ยนโหมดเกมของเกมที่กำลังเล่นได้จากวิดเจ็ตการเพิ่มประสิทธิภาพ ตามที่แสดงในวิดเจ็ต ขณะนี้เกมกำลังทำงานในโหมด PERFORMANCE

ในระหว่างการพัฒนา หากคุณใช้อุปกรณ์ที่ไม่มีแดชบอร์ดเกมและผู้ผลิตไม่ได้ระบุวิธีตั้งค่าโหมดเกมสำหรับแต่ละแอป คุณสามารถเปลี่ยนสถานะโหมดเกมผ่าน adb ได้โดยทำดังนี้

adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>

แอปพลิเคชันตัวอย่าง

ตัวอย่าง Game Mode API แสดงให้เห็นวิธีเพิ่มประสิทธิภาพ FPS และความละเอียดในการแสดงผลสูงสุดเพื่อประหยัดพลังงานในแอปได้ประมาณ 25%

ถัดไป

อ่านการแทรกแซงโหมดเกม เพื่อปรับปรุงประสิทธิภาพของเกมเมื่อไม่สามารถให้อัปเดตเกมได้