Wuthering Waves เป็นเกมแอ็กชัน RPG คุณภาพสูงที่พัฒนาโดย Kuro Games การเพิ่มประสิทธิภาพการสิ้นเปลืองพลังงานเป็นสิ่งสำคัญอย่างยิ่งในการมอบประสบการณ์การใช้งานที่ยอดเยี่ยมอย่างยั่งยืนสำหรับเซสชันการเล่นเกมที่ยาวนาน

Android Studio ได้เปิดตัวเครื่องมือวิเคราะห์พลังงานจาก Hedgehog (2023.1.1) เพื่อช่วยนักพัฒนาแอปทำความเข้าใจข้อมูลการบริโภคพลังงานโดยอิงตาม On Device Power Rails Monitor (ODPM)
ความสามารถในการวิเคราะห์พลังงานใน Android Studio ยังช่วยให้คุณทดสอบการบริโภคพลังงานแบบ A/B ได้อย่างมีประสิทธิภาพสำหรับฟีเจอร์ของแอป Android ได้ด้วย (ดังที่แสดงด้านล่าง)

สิ่งที่พวกเขาทำ
Kuro Games เริ่มต้นด้วยการใช้เครื่องมือวิเคราะห์พลังงานของ Android Studio เพื่อทําความเข้าใจว่าลักษณะการทํางานของเกมส่งผลต่อการใช้พลังงานของอุปกรณ์อย่างไร ประสบการณ์นี้ทำให้ทีมพัฒนาเครื่องมือที่ปรับแต่งเองโดยอิงตาม Perfetto และ ODPM โดยรวมการปรับปรุงต่อไปนี้
- มุมมองที่กําหนดเอง - นักพัฒนาแอปสามารถกรองรางไฟและช่วงเวลาที่ยืดหยุ่นที่กำหนดไว้ล่วงหน้าได้
- การบำรุงรักษาที่ดีขึ้น - นักพัฒนาแอปสามารถอัปโหลดข้อมูลการใช้พลังงานไปยังระบบ QA ที่ปรับแต่งเองและเปรียบเทียบข้อมูลในเกมเวอร์ชันต่างๆ ได้
ประมวลผลข้อมูล ODPM
Kuro Games ใช้ Perfetto Trace Processor (Python) Metric API เพื่อประมวลผลavg_used_power_mw data
เซสชัน 30 วินาทีจากเมตริก android_powerrails
ซึ่งกำหนดเป็น AndroidPowerRails
ใน Pertetto metrics proto ในรูปแบบต่อไปนี้เพื่อเข้าถึงข้อมูล ODPM
รางไฟฟ้า | คุณภาพกราฟิก | FPS | ความสว่าง | การใช้พลังงานโดยเฉลี่ย | เปอร์เซ็นต์(ต่อราง / ทั้งหมด) |
---|---|---|---|---|---|
power.rail.cpu.big | สูง | 30 | ต่ำ | 474.158mW | 14.70% |
power.rail.cpu.mid | สูง | 30 | ต่ำ | 470.916mW | 14.60% |
power.rail.cpu.little | สูง | 30 | ต่ำ | 438.662mW | 13.60% |
power.rail.gpu | สูง | 30 | ต่ำ | 346.761mW | 10.70% |
... | ... | ... | ... | ... | ... |
ระบุรางจ่ายไฟที่ใช้พลังงานสูง
รางจ่ายไฟแต่ละรางไม่มีค่ามาตรฐาน Kuro Games ได้สร้างการทดสอบ A/B โดยใช้กรณีทดสอบต่างๆ ซึ่งรวมถึงการทดสอบขณะไม่มีการใช้งาน ขณะทำงาน และขณะต่อสู้ เพื่อระบุรางจ่ายไฟที่ใช้พลังงานสูง รางจ่ายไฟที่ค่าสูงอย่างชัดเจนจะระบุได้โดยเปรียบเทียบค่าของรางจ่ายไฟเดียวกัน การเปรียบเทียบความแตกต่างของลักษณะการทำงานในเทสเคสต่างๆ จะช่วยให้ทราบสาเหตุของปัญหาการสิ้นเปลืองพลังงานได้ทีละน้อย
การเพิ่มประสิทธิภาพ
ข้อมูล ODPM ช่วยให้ Kuro Games วัดการปรับปรุงของแต่ละสถานการณ์การเพิ่มประสิทธิภาพได้ ดังนี้
- การเปลี่ยนกลยุทธ์การจัดตารางเวลาของแกน CPU และการปรับลำดับความสำคัญของแต่ละเธรดเพื่อลดภาระงานของแกนหลัก
- การคอมไพล์ PSO (ออบเจ็กต์สถานะไปป์ไลน์) ล่วงหน้าเพื่อลดภาระงานการคอมไพล์ Shader แบบรันไทม์ของ CPU
- การใช้การคัด PVS (ชุดที่อาจมองเห็นได้) เพื่อลดปริมาณงานการแสดงผลของ GPU
- การฝังการกรองเงาที่บดบังแบบออฟไลน์เพื่อลดภาระงานการแสดงผลของ GPU
Kuro Games ดึงข้อมูล ODPM ในเทสเคสโดยใช้ฉาก 3 มิติและมุมมองกล้องเดียวกันที่มีระยะเวลาเท่ากัน เพื่อเปรียบเทียบผลลัพธ์การทดสอบภายใต้เงื่อนไขที่เหมือนกันและทําซ้ำได้
ผลลัพธ์
Kuro Games ใช้ข้อมูลจาก ODPM และการเก็บโปรไฟล์พลังงานเพื่อลดการใช้พลังงานทั้งหมดลง 9.68% จาก 3233mW ในรุ่นเดือนกันยายน (เวอร์ชัน 0904) เป็น 2920mW ในรุ่นเดือนพฤศจิกายน (เวอร์ชัน 1.4 เวอร์ชันสุดท้าย) รูปภาพต่อไปนี้แสดงรายละเอียดการลดพลังงานนี้ภายใต้การตั้งค่า FPS และกราฟิกที่สม่ำเสมอ

ปัจจุบันข้อมูล ODPM พร้อมใช้งานสำหรับอุปกรณ์ Pixel 6 ขึ้นไปเท่านั้น แต่คุณจะเห็นว่ามีการปรับปรุงในอุปกรณ์ Android ทุกรุ่นผ่านเมตริกอื่นๆ ซึ่งรวมถึงการใช้งาน CPU, การใช้งาน GPU และ Batterystats ตัวอย่างเช่น Kuro Games ยังพบว่ามีการใช้ GPU ลดลง 9.6% โดยรวมในฉากเดียวกันสำหรับ Oppo Reno 5
เริ่มต้นใช้งาน
คุณอาจเริ่มจากข้อมูล Power Profiler หรือ Perfetto Power Rails สำหรับกรณีการใช้งานขั้นสูง
ชื่อรางไฟ ODPM จะเป็นชื่อเฉพาะของอุปกรณ์ ชื่อรางอาจเป็น "S2S_VDD_G3D" คุณต้องมีความรู้เฉพาะเกี่ยวกับฮาร์ดแวร์ของอุปกรณ์เพื่อตีความข้อมูลการตรวจสอบพลังงานที่เกี่ยวข้อง ตั้งแต่ API ระดับ 35 ของ Android เป็นต้นไป คุณจะใช้ PowerMonitor
จาก getSupportedPowerMonitors
ได้
เมื่อใช้ PowerMonitor คุณจะดึงข้อมูลการแมประหว่างป้ายกำกับที่มนุษย์อ่านได้กับชื่อรางจ่ายไฟดิบที่กำหนดโดย OEM แต่ละรายได้
หากต้องการยืนยันการปรับปรุงในอุปกรณ์ที่ไม่มี ODPM คุณสามารถใช้การประมาณความถี่ของ CPU, ความถี่ของ GPU และแบนด์วิดท์ของหน่วยความจําเป็นพร็อกซีสําหรับการสิ้นเปลืองพลังงาน