เอกสารนี้จะอธิบายวิธีตั้งค่าคำอธิบายประกอบ พารามิเตอร์ความแม่นยำ และ การตั้งค่าในโปรเจ็กต์
คำอธิบายประกอบและพารามิเตอร์ความแม่นยำ
คำอธิบายประกอบจะให้ข้อมูลตามบริบทเกี่ยวกับสิ่งที่เกมกำลังทำอยู่เมื่อมีการ ระบบจะบันทึกเครื่องหมายถูก พารามิเตอร์ความแม่นยำสะท้อนถึงประสิทธิภาพการทำงานและกราฟิก การตั้งค่าเกมของคุณ คุณกำหนดตัวแปรเหล่านี้โดยใช้บัฟเฟอร์โปรโตคอล ซึ่งเป็น รูปแบบการแลกเปลี่ยนข้อมูลที่มีโครงสร้างและใช้ภาษาที่เป็นกลางและมีโครงสร้างของ Google สำหรับข้อมูลเพิ่มเติม ข้อมูลเกี่ยวกับการใช้บัฟเฟอร์โปรโตคอลภายในเกมของคุณ โปรดดู เกี่ยวกับบัฟเฟอร์โปรโตคอล
คำอธิบายประกอบที่เป็นไปได้และพารามิเตอร์ความแม่นยำสำหรับเกมของคุณจะกำหนดใน
ไฟล์ชื่อ dev_tuningfork.proto
ซึ่งอยู่ใน assets/tuningfork
ของโปรเจ็กต์ของคุณ ต่อไปนี้คือตัวอย่างจากแอปเดโม
syntax = "proto3";
package com.google.tuningfork;
enum InstrumentKey {
CPU = 0;
GPU = 1;
SWAPPY_WAIT = 2;
SWAPPY_SWAP = 3;
CHOREOGRAPHER = 4;
}
enum Level {
// 0 is not a valid value
LEVEL_INVALID = 0;
LEVEL_1 = 1;
LEVEL_2 = 2;
LEVEL_3 = 3;
};
message Annotation {
Level level = 1;
}
message FidelityParams {
int32 num_spheres = 1;
float tesselation_percent = 2;
}
ข้อควรทราบ
- แพ็กเกจต้องเป็น
com.google.tuningfork
- ชื่อข้อความต้องตรงกับ
Annotation
และFidelityParams
- คุณสามารถใช้เฉพาะ
enums
ที่กำหนดไว้ในไฟล์นี้เป็นส่วนหนึ่งของคำอธิบายประกอบ - คุณใช้
enums
,int32s
หรือfloats
ได้ในช่องFidelityParams
เท่านั้น - เครื่องมือตรวจสอบ จะบังคับใช้สนธิสัญญาเหล่านี้
การตั้งค่า
ข้อความ Settings
กำหนดโดย tuningfork.proto
ดูตัวอย่างแบบเต็มใน
ไฟล์ต่อไปนี้:
gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/tuningfork_settings.txt
คุณต้องกำหนดการตั้งค่าสำหรับเกมของคุณในไฟล์ที่ชื่อว่า
tuningfork_settings.txt
อยู่ในไดเรกทอรี assets/tuningfork
ของ
คุณต้องระบุเฉพาะฟิลด์ต่อไปนี้
aggregation_strategy
: ข้อความที่มีข้อมูลต่อไปนี้method
:TIME_BASED
เพื่ออัปโหลดทุกๆ n มิลลิวินาทีหรือTICK_BASED
เพื่ออัปโหลดทุก n จุดintervalms_or_count
: n สำหรับช่องmethod
max_instrumentation_keys
: จำนวนคีย์การวัดที่จะใช้ ตั้งค่า เป็น4
หากใช้ไลบรารี Android Frame Pacingannotation_enum_size
: ช่องที่ไม่บังคับเนื่องจากมีการคำนวณขนาด ตั้งแต่เริ่มต้น จากข้อบ่งชี้
api_key
: คีย์ API โปรเจ็กต์ระบบคลาวด์ของแอป ใช้เพื่อตรวจสอบคำขอไปยัง ปลายทาง หากต้องการสร้างคีย์นี้ โปรดดู เปิดใช้ API ถ้า คุณเห็นข้อผิดพลาดในการเชื่อมต่อในlogcat
โปรดตรวจสอบว่าคีย์ API ถูกต้องdefault_fidelity_parameters_filename
: ชุดพารามิเตอร์ความแม่นยำที่ใช้ที่ การเริ่มต้น (ไม่บังคับหากคุณตั้งค่าtraining_fidelity_params
ในโค้ดของคุณ)level_annotation_index
: (ไม่บังคับ) ดัชนีในช่องคำอธิบายประกอบของ หมายเลขระดับ
ตัวอย่างการนำเสนอข้อความมีดังนี้
aggregation_strategy: {method: TIME_BASED, intervalms_or_count: 10000,
max_instrumentation_keys: 5, annotation_enum_size: [3,4]}
api_key: "API-KEY-FROM-GOOGLE-CLOUD-CONSOLE"
default_fidelity_parameters_filename: "dev_tuningfork_fidelityparams_3.bin"
level_annotation_index: 1
การตั้งค่าคำอธิบายประกอบ
คุณต้องตั้งค่าคำอธิบายประกอบด้วยตนเองระหว่างที่เล่นเกม คุณสามารถดู
ตัวอย่างของสิ่งนี้ในแอปเดโมเมื่อเล่นไปเรื่อยๆ ในทุกระดับของเกม
โดยอัตโนมัติ สำหรับข้อมูลเพิ่มเติม โปรดดูฟังก์ชัน SetAnnotations()
ใน
insightsdemo.cpp
ในกรณีนี้ คำอธิบายประกอบจะระบุเฉพาะหมายเลขระดับเท่านั้น
message Annotation {
Level level = 1;
}
กำหนดระดับคุณภาพ
ใช้ระดับคุณภาพในการใส่คำอธิบายประกอบเซสชันเพื่อให้ระบุได้ว่าอุปกรณ์ ทำงานในระดับคุณภาพที่สูงเกินไป (ทำให้ประสิทธิภาพลดลง) หรือ ต่ำเกินไป (ทำให้ความแม่นยำลดลงโดยไม่จำเป็น)
คุณต้องกำหนดระดับคุณภาพอย่างน้อยหนึ่งระดับสำหรับ
เกม ระดับคุณภาพจะสอดคล้องกับอินสแตนซ์ของ FidelityParams
ระดับเหล่านี้ต้องระบุโดยเรียงตามลำดับที่เพิ่มขึ้นกับแอตทริบิวต์
รูปแบบชื่อไฟล์ต่อไปนี้:
dev_tuningfork_fidelityparams_i.txt
โดย i
คือดัชนีที่เริ่มต้นที่ 1 โดยมีค่าสูงสุด
จาก 15 รายการ ไฟล์เหล่านี้ต้องอยู่ในไดเรกทอรี assets/tuningfork
ของ
โปรเจ็กต์ตัวอย่างแสดงตัวอย่างของโครงสร้างนี้ใน
gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/
ไดเรกทอรี
เกี่ยวกับบัฟเฟอร์โปรโตคอล
ไลบรารี Tuning Fork จะใช้รูปแบบบัฟเฟอร์โปรโตคอลของ Google สำหรับ การตั้งค่า คำอธิบายประกอบ และพารามิเตอร์ความแม่นยำ นี่คือคำจำกัดความที่ชัดเจน โปรโตคอลหลายภาษาสำหรับข้อมูลที่มีโครงสร้างและยืดหยุ่นได้ สำหรับข้อมูลเพิ่มเติม โปรดดู เอกสารประกอบของโปรโตคอลบัฟเฟอร์
Proto2 เทียบกับ Proto3
เวอร์ชันของรูปแบบบัฟเฟอร์โปรโตคอลมีการตั้งค่าในบรรทัดแรกของไฟล์:
syntax="proto2";
Proto2 และ Proto3 คือบัฟเฟอร์โปรโตคอล 2 เวอร์ชันที่ใช้กันโดยทั่วไป ทั้งคู่ ใช้รูปแบบสายไฟเดียวกัน แต่ไฟล์คำจำกัดความใช้ร่วมกันไม่ได้ สัญลักษณ์ ความแตกต่างระหว่าง 2 เวอร์ชันมีดังนี้
- ไม่อนุญาตให้ใช้คีย์เวิร์ด
optional
และrequired
ใน Proto3 อีกต่อไป - ทุกอย่างมีประสิทธิภาพ
optional
ใน Proโต3 - โปรโตคอล 3 ไม่สนับสนุนส่วนขยาย
ใช้ Proto3 ในไฟล์ Proto เนื่องจากสามารถคอมไพล์เป็น C# ได้ ผลงาน Proto2 รวมถึงชุดฟีเจอร์ที่จำกัดซึ่งใช้ในไลบรารี Tuning Fork
ข้อความกับการแสดงแบบไบนารี
รูปแบบลวด Probuf แบบไบนารีนั้นกำหนดไว้เป็นอย่างดีและมีความเสถียรในตัวแปรต่างๆ
เวอร์ชัน Protobuf (ไม่ใช่โค้ดที่สร้างขึ้น) นอกจากนี้ยังมีรูปแบบข้อความที่
ไลบรารี Protobuf เวอร์ชันเต็มสามารถสร้างและอ่านได้ รูปแบบนี้คือ
ไม่ชัดเจน แต่มีความเสถียรสำหรับชุดฟีเจอร์ที่จำกัดใน
คลัง Tuning Fork คุณแปลงระหว่างรูปแบบไบนารีและข้อความได้
โดยใช้คอมไพเลอร์ protoc
คำสั่งต่อไปนี้จะแปลง protobuf ของข้อความเป็น
เลขฐานสอง:
protoc --encode com.google.tuningfork.Settings tuningfork.proto < tuningfork_settings.txt > tuningfork_settings.bin
คุณต้องรวมไฟล์ไบนารีแทนไฟล์ข้อความใน APK เนื่องจาก ไลบรารี Protobuf ที่สมบูรณ์มีขนาดหลาย MB กำลังทำส้อมเสียง ก็ขึ้นอยู่กับว่าเกมจะเพิ่มขนาดเกมในจำนวนที่ใกล้เคียงกัน
เวอร์ชันเต็มเทียบกับ Lite เทียบกับ Nano
นอกจากไลบรารี Protobuf เต็มรูปแบบแล้ว ยังมีเวอร์ชัน Lite ที่ลดโค้ด
รอยเท้าโดยนำฟีเจอร์บางอย่างออก เช่น การสะท้อน FileDescriptors
และ
การสตรีมไปยังและจากรูปแบบข้อความ เวอร์ชันนี้ยังคงต้องใช้ขนาดหลาย MB
การใช้โค้ดเพิ่มเติมและไลบรารี Tuning Fork เป็นการภายในใช้
nanopb library ซอร์สโค้ด
สำหรับไลบรารีนี้รวมอยู่ในโครงการโอเพนซอร์ส Android ใน external/nanopb-c
และ
เป็นส่วนหนึ่งของสาขา gamesdk
ใช้ไลบรารีนี้ในเกมหากคุณมีขนาดโค้ด
เป็นปัญหา
มีไฟล์ CMake ใน gamesdk/src/protobuf
ที่ช่วยคุณผสานรวมได้
Protobuf ทั้ง 3 เวอร์ชัน กลุ่มตัวอย่างใช้ทั้ง nanopb และแบบเต็ม
Protobuf