ภาพรวมของ Android Performance Tuner (เนทีฟ)

หัวข้อนี้จะอธิบายวิธีผสานรวม Android Performance Tuner หรือที่เรียกว่า ไลบรารี Tuning Fork เพื่อบันทึกและอัปโหลดข้อมูลเวลาที่ใช้ในการแสดงผลเฟรมจากโฆษณาเนทีฟ (C และ C++) เครื่องมือเกม

สำหรับเครื่องมือเกมของ Unity โปรดดูที่ สำหรับ Unity

ฉากหลัง

องค์ประกอบสำคัญของประสบการณ์การเล่นเกมคือประสิทธิภาพการแสดงผล การแสดงภาพ ประสิทธิภาพการทำงานจะมาจากข้อมูล 2 อย่างต่อไปนี้

  • อัตราเฟรม: ความถี่ที่วาดเฟรม
  • การตั้งค่าคุณภาพของกราฟิก: ระดับความแม่นยำในการนำเสนอเฟรม รวมทั้งความแม่นยำในการจำลองและกราฟิก

สําหรับเกม การแสดงผลที่ดีจะได้รับประสิทธิภาพดังนี้

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

ไลบรารี Android Frame Pacing จะจำกัดอัตรา ความแปรปรวนของเวลาเฟรม ให้อัตราเฟรมที่เสถียรสำหรับเกม ส่วนที่เหลือ ความแปรปรวนของเวลาที่ใช้ในการแสดงผลเฟรมเกิดจากระดับของรายละเอียดที่แสดงในระหว่าง ฉากต่างๆ ในเกมเพลย์และความสามารถในการแสดงภาพกราฟิกของอุปกรณ์ การใช้ Android Performance Tuner คุณสามารถระบุเวลาระหว่างเกมเพลย์ได้เมื่อเวลาที่ใช้ในการแสดงผลเฟรม ช้ากว่าหรือเร็วกว่าเป้าหมายของคุณ แล้วเชื่อมโยงปัญหาเหล่านี้และ โอกาส:

  • การตั้งค่าคุณภาพเฉพาะ
  • ฉากที่เจาะจงในเกม
  • รุ่นอุปกรณ์หรือข้อมูลจำเพาะของอุปกรณ์

บันทึกและอัปโหลดข้อมูล

ห้องสมุด Tuning Fork อาศัยหนึ่งใน ขีดฟังก์ชัน จะถูกเรียกแต่ละเฟรมโดยไลบรารี Android Frame Pacing ภายในไลบรารี ข้อมูลเครื่องหมายถูกนี้จะถูกรวบรวมไว้ในฮิสโตแกรมซึ่งจะเป็นเป็นระยะ มีการอัปโหลดไปยัง Google Play ผ่านปลายทาง HTTP เครื่องหมายถูกแต่ละตัวจะได้รับการบันทึกเป็น ถูกเชื่อมโยงกับคีย์เครื่องมือและ annotation คำจำกัดความที่คุณระบุในโปรโตคอล ไฟล์บัฟเฟอร์

แป้นเครื่องดนตรี

คีย์เครื่องมือระบุตำแหน่งในเฟรมที่เครื่องหมายถูกมาจากไหนและ จำนวนเต็มที่ต้องส่งไปยังการเรียกใช้ฟังก์ชันเครื่องหมายถูกแต่ละครั้ง การกำหนดอัตราการแสดงโฆษณาในเฟรมของ Android ไลบรารีใช้ชุดคีย์เครื่องมือที่กำหนดไว้ล่วงหน้า ซึ่งกำหนดไว้ใน swappy_common.h คุณสามารถระบุคีย์เครื่องมือของคุณเองได้หากไม่ได้ใช้ Frame Pacing ไลบรารี

คำอธิบายประกอบ

คำอธิบายประกอบจะให้ข้อมูลตามบริบทเกี่ยวกับสิ่งที่เกมกำลังทำอยู่เมื่อมีการ ระบบจะบันทึกเครื่องหมายถูก ตัวอย่างเช่น คำอธิบายประกอบสามารถระบุ ดังต่อไปนี้:

  • ระดับของเกมปัจจุบัน
  • "เจ้านายใหญ่" อยู่บนหน้าจอ
  • ข้อมูลสถานะเกมอื่นๆ ที่เกี่ยวข้อง

โปรโตคอล com.google.tuningfork.Annotation จะกำหนดคำอธิบายประกอบ ข้อความบัฟเฟอร์ ในการตั้งค่าคำอธิบายประกอบปัจจุบัน คุณต้องส่งการเรียงอันดับ ข้อความที่คุณกำหนด TuningFork_setCurrentAnnotation() จากนั้นข้อมูลเครื่องหมายถูกที่ตามมาทั้งหมดจะถูกเชื่อมโยงกับคำอธิบายประกอบนี้จนกระทั่งอีกรายการหนึ่ง ตั้งค่าคำอธิบายประกอบแล้ว ต่อไปนี้เป็นตัวอย่างคำจำกัดความโปรโตสำหรับคำอธิบายประกอบ

import "tuningfork.proto"
enum Level {
  INVALID_LEVEL = 0;
  Level_1 = 1;
  Level_2 = 2;
  Level_3 = 3;
}
message Annotation {
  optional Level level = 1;
}

พารามิเตอร์ความแม่นยำ

พารามิเตอร์ความแม่นยำจะส่งผลต่อประสิทธิภาพและคุณภาพกราฟิกของ เช่น ระดับความละเอียดของ Mesh, ความละเอียดของพื้นผิว และการลดรอยหยัก เช่นเดียวกับคำอธิบายประกอบ พารามิเตอร์ความแม่นยำจะกำหนดโดยใช้ ข้อความบัฟเฟอร์โปรโตคอล com.google.tuningfork.FidelityParams รายการต่อไปนี้คือ ตัวอย่างคำจำกัดความ Proto สำหรับพารามิเตอร์ความแม่นยำ

import "tuningfork.proto"
message FidelityParams {
  int32 texture_quality_level = 1;
  int32 shadow_resolution = 2;
  float terrain_details_percent = 3;
  int32 post_processing_effects_level = 4;
}

ในการเริ่มต้น Tuning Fork คุณจะผ่านการตรวจสอบการเรียงอันดับ พารามิเตอร์ที่เกมใช้ คุณสามารถเปลี่ยนพารามิเตอร์เหล่านี้ได้ในกรณีต่างๆ เช่น ผู้ใช้เปลี่ยนการตั้งค่าการแสดงภาพเกมและข้อมูลที่อัปโหลดครั้งต่อๆ ไปของคุณ เชื่อมโยงกับพารามิเตอร์ใหม่ด้วย

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

หน่วยความจำและโอเวอร์เฮดของ CPU

หน่วยความจำทั้งหมดที่ไลบรารี Tuning Fork ใช้จะได้รับการจัดสรรที่ เพื่อหลีกเลี่ยง เรื่องน่าประหลาดใจระหว่างการเล่นเกม ขนาดของข้อมูล ขึ้นอยู่กับจำนวนคีย์เครื่องมือ จำนวนคำอธิบายประกอบที่เป็นไปได้ และ จำนวนที่ฝากข้อมูลในแต่ละฮิสโตแกรม จะเท่ากับผลคูณของจำนวนทั้งหมด 4 ไบต์สำหรับที่เก็บข้อมูลแต่ละชุด และยังมีฮิสโตแกรมอีก 2 ชุด ในรูปแบบการบัฟเฟอร์ 2 รอบ

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

มีค่าใช้จ่ายในการประมวลผลการเรียกฟังก์ชันเห็บเพียงเล็กน้อย โดยใช้เพียงแค่ จะคำนวณดัชนีในอาร์เรย์ของที่เก็บข้อมูลฮิสโตแกรมและเพิ่ม จำนวนเต็ม

ผสานรวมไลบรารี Tuning Fork

คู่มือการผสานรวมนี้แบ่งออกเป็น 2 ส่วน ส่วนแรกจะอธิบายถึง เพื่อทำการทดสอบแบบครบวงจรโดยใช้แอปเดโมและ Google Play Console ส่วนที่ 2 จะอธิบายถึงวิธีผสานรวมไลบรารี Tuning Fork ไว้ใน เชนเครื่องมือของคุณ รวมถึงวิธีใช้ฟังก์ชันที่ไลบรารีมีให้ คลิก ลิงก์ถัดไปด้านล่างเพื่อเริ่มต้น