คู่มือนี้อธิบายวิธีใช้ปลั๊กอิน Unity เพื่อบันทึกและอัปโหลดข้อมูลเวลาเฟรมจาก Unity 2017.4 ขึ้นไป
สำหรับเอนจินเกมที่ใช้ C หรือ C++ โปรดดูคู่มือสำหรับเอนจินเกมเนทีฟ
ฉากหลัง
องค์ประกอบสำคัญของประสบการณ์การเล่นเกมคือประสิทธิภาพการแสดงผล ประสิทธิภาพการแสดงผล เป็นผลลัพธ์ของข้อมูลเข้า 2 รายการต่อไปนี้
- อัตราเฟรม: ความถี่ในการวาดเฟรม
- การตั้งค่าคุณภาพกราฟิก: ระดับความแม่นยำที่แสดงเฟรม รวมถึงความแม่นยำในการจำลองและกราฟิก
สำหรับเกม ประสิทธิภาพการแสดงผลที่ดีจะกำหนดดังนี้
- แสดงอัตราเฟรมที่สม่ำเสมอและคงที่ (นั่นคือ เปอร์เซ็นต์ของ เฟรมที่แสดงผลด้วยความถี่ที่ต้องการ)
- การแสดงผลเฟรมที่ความถี่สูงสุดเท่าที่จะทำได้ในขณะที่ยังคง ความเสถียร โดยปกติคือ 30 หรือ 60 FPS ขึ้นอยู่กับประเภทของเกม
- เพิ่มระดับรายละเอียดสำหรับผู้ใช้ให้ได้มากที่สุดตามขนาดหน้าจอและความหนาแน่น ในขณะที่ยังคงรักษาอัตราเฟรมที่ต้องการและเสถียรไว้ได้
ไลบรารีการเว้นระยะเฟรมของ Android จะจำกัดความผันแปรส่วนใหญ่ของเวลาเฟรม เพื่อให้อัตราเฟรมของเกมมีความเสถียร ความแปรปรวนที่เหลือของเวลาเฟรมเกิดจากระดับรายละเอียดที่แสดงในฉากบางฉากระหว่างการเล่นเกมและความสามารถด้านกราฟิกของอุปกรณ์ การใช้ Android Performance Tuner จะช่วยให้คุณระบุเวลาในระหว่างการเล่นเกมที่เวลาที่ใช้ในการแสดงผลเฟรมช้าหรือเร็วกว่าเป้าหมาย และเชื่อมโยงปัญหาและโอกาสเหล่านี้กับสิ่งต่อไปนี้
- การตั้งค่าคุณภาพที่เฉพาะเจาะจง
- ฉากที่เฉพาะเจาะจงในเกม
- รุ่นอุปกรณ์หรือข้อมูลจำเพาะของอุปกรณ์ที่เฉพาะเจาะจง
บันทึกและอัปโหลดข้อมูล
ไลบรารี Tuning Fork อาศัยการเรียกใช้ฟังก์ชัน Tick อย่างใดอย่างหนึ่ง ในแต่ละเฟรมโดยไลบรารีการเว้นวรรคเฟรมของ Android (หรือโดยเอนจิน Unity สำหรับ Unity เวอร์ชันเก่า ที่ไม่มีไลบรารีการเว้นวรรคเฟรม) ภายในไลบรารี ข้อมูลเครื่องหมายนี้จะได้รับการรวบรวมเป็นฮิสโทแกรม จากนั้นจะมีการอัปโหลดไปยัง Google Play เป็นระยะๆ ผ่านปลายทาง HTTP โดยแต่ละเครื่องหมายจะ บันทึกว่าเชื่อมโยงกับคีย์เครื่องดนตรีและคำอธิบายประกอบ คุณกำหนดคำอธิบายประกอบโดยใช้ปลั๊กอิน Unity
คีย์ระบุตำแหน่งของ Tick
คีย์เครื่องมือจะระบุตำแหน่งในเฟรมที่เครื่องหมายมาจากและเป็น จำนวนเต็มที่ต้องส่งไปยังการเรียกฟังก์ชันเครื่องหมายแต่ละรายการ ซึ่งปลั๊กอิน Unity จะดำเนินการนี้โดยอัตโนมัติ หากเปิดใช้ตัวเลือกการเว้นระยะเฟรมที่เพิ่มประสิทธิภาพแล้วในการตั้งค่า Unity สำหรับเกม (พร้อมใช้งานใน Unity เวอร์ชัน 2019.3.14 ขึ้นไป) Android Performance Tuner จะใช้ข้อมูลจากไลบรารีการเว้นระยะเฟรมของ Android เพื่อรายงานเมตริกที่ได้รับการปรับปรุง
คำอธิบายประกอบ
คำอธิบายประกอบให้ข้อมูลเชิงบริบทเกี่ยวกับสิ่งที่เกมกำลังทำเมื่อมีการบันทึก เครื่องหมาย ตัวอย่างเช่น คำอธิบายประกอบอาจระบุสิ่งต่อไปนี้
- ระดับเกมปัจจุบัน
- กำลังโหลดฉากที่เฉพาะเจาะจง
- "บอสใหญ่" อยู่บนหน้าจอ
- ข้อมูลสถานะเกมอื่นๆ ที่เกี่ยวข้อง
การกำหนดคำอธิบายประกอบจะกระทำในกล่องโต้ตอบที่ปลั๊กอิน Unity จัดเตรียมไว้
ภายใน ไลบรารี Tuning Fork จะใช้รูปแบบบัฟเฟอร์โปรโตคอลของ Google เพื่อจัดเก็บคำอธิบายประกอบและพารามิเตอร์ความแม่นยำ นี่คือโปรโตคอลหลายภาษาที่กำหนดไว้อย่างดี สำหรับข้อมูลที่มีโครงสร้างที่ขยายได้ ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับ Protocol Buffers
พารามิเตอร์ความแม่นยำ
พารามิเตอร์ความแม่นยำมีผลต่อประสิทธิภาพและคุณภาพกราฟิกของเกม เช่น ระดับรายละเอียดของ Mesh, ความละเอียดของพื้นผิว และวิธีลบรอยหยัก พารามิเตอร์ความแม่นยำจะกำหนดไว้ในกล่องโต้ตอบที่ปลั๊กอิน Unity จัดเตรียมให้เช่นเดียวกับคำอธิบายประกอบ
ค่าใช้จ่ายเพิ่มเติมของหน่วยความจำและ CPU
ระบบจะจัดสรรหน่วยความจำทั้งหมดที่ไลบรารี Tuning Fork ใช้เมื่อ เริ่มต้น เพื่อหลีกเลี่ยงปัญหาที่ไม่คาดคิดระหว่างการเล่นเกม ขนาดของข้อมูล ขึ้นอยู่กับจำนวนคีย์เครื่องมือ จำนวนคำอธิบายประกอบที่เป็นไปได้ และ จำนวนที่เก็บข้อมูลในฮิสโทแกรมแต่ละรายการ โดยจะเป็นผลคูณของค่าทั้งหมดนี้คูณด้วย 4 ไบต์สำหรับที่เก็บข้อมูลแต่ละรายการ นอกจากนี้ ยังมีสำเนาฮิสโทแกรมทั้งหมด 2 ชุดเพื่อให้ส่งได้ในลักษณะบัฟเฟอร์คู่
การส่งจะเกิดขึ้นในเธรดแยกต่างหากและจะไม่บล็อกการเรียกฟังก์ชัน Tick หากไม่มี การเชื่อมต่อเพื่ออัปโหลด ระบบจะจัดคิวการส่งเพื่ออัปโหลดในภายหลัง
การเรียกใช้ฟังก์ชันเครื่องหมายมีค่าใช้จ่ายในการประมวลผลเพียงเล็กน้อย โดยจะ คำนวณดัชนีในอาร์เรย์ของที่เก็บข้อมูลฮิสโทแกรมและเพิ่มจำนวน จำนวนเต็ม
คำขอเว็บ
ไลบรารีจะส่งคำขอ 2 ประเภทไปยังปลายทางของเซิร์ฟเวอร์
- คำขอ
generateTuningParameters
เมื่อเริ่มต้น - เป็นระยะๆ ระหว่างการเล่นเกม
uploadTelemetry
คำขอส่งข้อมูลไปยังเซิร์ฟเวอร์
ผู้เล่นออฟไลน์
หากไม่มีการเชื่อมต่อที่พร้อมใช้งานเมื่อเริ่มต้น ระบบจะลองส่งคำขออีกครั้ง หลายครั้งโดยเพิ่มเวลาหยุดชั่วคราว หากไม่มีการเชื่อมต่อขณะ อัปโหลด ระบบจะแคชการอัปโหลด ระบบจะจัดเก็บการอัปโหลดเป็นไฟล์ในที่เก็บข้อมูลชั่วคราว
ข้อกำหนด
หากต้องการใช้ปลั๊กอินในเกม ให้ใช้ Unity เวอร์ชันที่รองรับ
- Unity เวอร์ชัน 2017.4 ขึ้นไปและ .NET เวอร์ชัน 4.6
- ต้องใช้ Unity 2018.2 เพื่อใช้ไฟล์เสริมของ APK
- ต้องใช้ Unity เวอร์ชัน 2019.3.14 ขึ้นไปเพื่อปรับปรุงการเว้นระยะเฟรมและการวัด GPU
- หากต้องการรองรับฉากที่ใช้ Addressables คุณต้องใช้ Unity 2019.3 ขึ้นไปและแพ็กเกจ Addressables 1.19.4 ขึ้นไป
ผสานรวม Android Performance Tuner ใน Unity
ดูข้อมูลเกี่ยวกับการผสานรวม Android Performance Tuner ใน Unity ได้ที่ เปิดใช้ API