gpg::SnapshotManager

#include <snapshot_manager.h>

รับและตั้งค่าข้อมูลต่างๆ ที่เกี่ยวข้องกับสแนปชอต

สรุป

หากแอปไม่เปิดใช้สแนปชอตขณะตรวจสอบสิทธิ์ (โปรดดู GameServices::Builder::EnableSnapshots) เมธอดส่วนใหญ่ใน SnapshotManager จะล้มเหลว

ประเภทสาธารณะ

CommitCallback Typedef
std::function< void(const CommitResponse &)>
กำหนดประเภท Callback ที่ได้รับ CommitResponse
FetchAllCallback Typedef
std::function< void(const FetchAllResponse &)>
กำหนดประเภท Callback ที่ได้รับ FetchAllResponse
MaxSizeCallback Typedef
std::function< void(const MaxSizeResponse &)>
กำหนดประเภท Callback ที่ได้รับ MaxSizeResponse
OpenCallback Typedef
std::function< void(const OpenResponse &)>
กำหนดประเภท Callback ที่ได้รับ OpenResponse
ReadCallback Typedef
std::function< void(const ReadResponse &)>
กำหนดประเภท Callback ที่ได้รับ ReadResponse
SnapshotSelectUICallback Typedef
std::function< void(const SnapshotSelectUIResponse &)>
กำหนด Callback ที่สามารถรับ SnapshotSelectUIResponse จาก ShowSelectUIOperation

ฟังก์ชันสาธารณะ

Commit(const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > data, CommitCallback callback)
void
ซิงค์ข้อมูลที่ให้ไว้กับสแนปชอตแบบไม่พร้อมกัน และอัปเดตข้อมูลเมตาของสแนปชอตโดยใช้ออบเจ็กต์ข้อมูลเมตาที่มีให้
CommitBlocking(const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents)
คอมมิตข้อมูลที่ให้ไว้กับสแนปชอตแบบพร้อมกัน และอัปเดตข้อมูลเมตาของสแนปชอตโดยใช้ออบเจ็กต์ข้อมูลเมตาที่มีให้
CommitBlocking(Timeout timeout, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents)
คอมมิตข้อมูลที่ให้ไว้กับสแนปชอตและอัปเดตข้อมูลเมตาของสแนปชอตโดยใช้ออบเจ็กต์ข้อมูลเมตาที่มีให้
Delete(const SnapshotMetadata & snapshot_metadata)
void
ลบสแนปชอตที่ระบุ
FetchAll(FetchAllCallback callback)
void
โหลดข้อมูลสแนปชอตทั้งหมดแบบไม่พร้อมกันสำหรับโปรแกรมเล่นที่ลงชื่อเข้าใช้ในปัจจุบัน
FetchAll(DataSource data_source, FetchAllCallback callback)
void
โหลดข้อมูลสแนปชอตทั้งหมดแบบไม่พร้อมกันสำหรับโปรแกรมเล่นที่ลงชื่อเข้าใช้ในปัจจุบัน
FetchAllBlocking()
การโหลดข้อมูลสแนปชอตทั้งหมดแบบพร้อมกันสำหรับโปรแกรมเล่นที่ลงชื่อเข้าใช้อยู่ในขณะนี้ และแสดงผล FetchAllResponse โดยตรง
FetchAllBlocking(DataSource data_source)
การโหลดข้อมูลสแนปชอตทั้งหมดแบบพร้อมกันสำหรับโปรแกรมเล่นที่ลงชื่อเข้าใช้อยู่ในขณะนี้ และแสดงผล FetchAllResponse โดยตรง
FetchAllBlocking(Timeout timeout)
การโหลดข้อมูลสแนปชอตทั้งหมดแบบพร้อมกันสำหรับโปรแกรมเล่นที่ลงชื่อเข้าใช้อยู่ในขณะนี้ และแสดงผล FetchAllResponse โดยตรง
FetchAllBlocking(DataSource data_source, Timeout timeout)
การโหลดข้อมูลสแนปชอตทั้งหมดแบบพร้อมกันสำหรับโปรแกรมเล่นที่ลงชื่อเข้าใช้อยู่ในขณะนี้ และแสดงผล FetchAllResponse โดยตรง
GetMaxSize(MaxSizeCallback callback) const
void
แบบไม่พร้อมกันจะได้รับขนาดข้อมูลสูงสุดและขนาดภาพหน้าปกสูงสุดต่อสแนปชอตในหน่วยไบต์
GetMaxSizeBlocking() const
รับข้อมูลขนาดภาพสูงสุดและขนาดภาพหน้าปกสูงสุดต่อสแนปชอตในหน่วยไบต์แบบพร้อมกัน โดยจะแสดงผล MaxSizeResponse โดยตรง
GetMaxSizeBlocking(Timeout timeout) const
รับข้อมูลขนาดภาพสูงสุดและขนาดภาพหน้าปกสูงสุดต่อสแนปชอตในหน่วยไบต์แบบพร้อมกัน โดยจะแสดงผล MaxSizeResponse โดยตรง
Open(const std::string & file_name, SnapshotConflictPolicy conflict_policy, OpenCallback callback)
void
แบบไม่พร้อมกันจะเปิดสแนปชอตที่มีชื่อตัวนั้น
Open(DataSource data_source, const std::string & file_name, SnapshotConflictPolicy conflict_policy, OpenCallback callback)
void
เลิกใช้งานแล้ว ระบบจะไม่สนใจ data_source โปรดใช้ Open(file_name, conflict_policy, callback) แทน
แบบไม่พร้อมกันจะเปิดสแนปชอตที่มีชื่อตัวนั้น
OpenBlocking(const std::string & file_name, SnapshotConflictPolicy conflict_policy)
เปิดสแนปชอตชื่อดังกล่าวแบบซิงโครนัส
OpenBlocking(Timeout timeout, const std::string & file_name, SnapshotConflictPolicy conflict_policy)
เปิดสแนปชอตชื่อดังกล่าวแบบซิงโครนัส
OpenBlocking(DataSource data_source, const std::string & file_name, SnapshotConflictPolicy conflict_policy) เลิกใช้งานแล้ว ระบบจะไม่สนใจ data_source โปรดใช้ OpenBlocking(file_name, conflict_policy) แทน
เปิดสแนปชอตชื่อดังกล่าวแบบซิงโครนัส
OpenBlocking(DataSource data_source, Timeout timeout, const std::string & file_name, SnapshotConflictPolicy conflict_policy) เลิกใช้งานแล้ว ระบบจะไม่สนใจ data_source โปรดใช้ OpenBlocking(timeout, file_name, conflict_policy) แทน
เปิดสแนปชอตชื่อดังกล่าวแบบซิงโครนัส
Read(const SnapshotMetadata & snapshot_metadata, ReadCallback callback)
void
ไม่พร้อมกันจะอ่านสแนปชอตจากดิสก์และคัดลอกไปยังหน่วยความจำ
ReadBlocking(const SnapshotMetadata & snapshot_metadata)
แบบซิงโครนัสอ่านสแนปชอตจากดิสก์และคัดลอกลงในหน่วยความจำ
ReadBlocking(Timeout timeout, const SnapshotMetadata & snapshot_metadata)
การอ่านสแนปชอตจากดิสก์พร้อมกันและคัดลอกลงในหน่วยความจำ
ResolveConflict(const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, OpenCallback callback)
void
แก้ไขข้อขัดแย้งแบบไม่พร้อมกันโดยใช้ข้อมูลจากสแนปชอตที่ระบุ
ResolveConflict(const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents, OpenCallback callback)
void
แก้ไขข้อขัดแย้งแบบไม่พร้อมกันโดยใช้ข้อมูลที่ให้ไว้
ResolveConflictBlocking(const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata)
แก้ไขข้อขัดแย้งแบบพร้อมกันโดยใช้ข้อมูลจากสแนปชอตที่ระบุ
ResolveConflictBlocking(const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents)
แก้ไขข้อขัดแย้งแบบพร้อมกันโดยใช้ข้อมูลที่ให้ไว้
ResolveConflictBlocking(Timeout timeout, const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata)
แก้ไขข้อขัดแย้งแบบพร้อมกันโดยใช้ข้อมูลจากสแนปชอตที่ระบุ
ResolveConflictBlocking(Timeout timeout, const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents)
แก้ไขข้อขัดแย้งแบบพร้อมกันโดยใช้ข้อมูลที่ให้ไว้
ShowSelectUIOperation(bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title, SnapshotSelectUICallback callback)
void
แสดง UI สแนปชอตแบบไม่พร้อมกันเพื่อให้โปรแกรมเล่นเลือกสแนปชอตหรือขอสแนปชอตใหม่
ShowSelectUIOperationBlocking(Timeout timeout, bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title)
กำลังบล็อกเวอร์ชัน ShowSelectUIOperation
ShowSelectUIOperationBlocking(bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title)
ShowSelectUIOperationBlocking มากเกินไป ซึ่งใช้ระยะหมดเวลาเริ่มต้น 10 ปี

โครงสร้าง

gpg::SnapshotManager::CommitResponse

เก็บข้อมูลสำหรับสแนปชอตที่อัปเดต พร้อมกับสถานะการตอบกลับ

gpg::SnapshotManager::FetchAllResponse

เก็บข้อมูลทั้งหมดสำหรับสแนปชอตทั้งหมด รวมถึงสถานะการตอบกลับ

gpg::SnapshotManager::MaxSizeResponse

คงขนาดสูงสุดสำหรับข้อมูลภาพรวมและสำหรับภาพหน้าปกของสแนปชอต

gpg::SnapshotManager::OpenResponse

เก็บข้อมูลสำหรับสแนปชอตที่ขอหนึ่งๆ พร้อมกับสถานะการตอบกลับ

gpg::SnapshotManager::ReadResponse

อ่านสถานะการตอบกลับและข้อมูลสแนปชอตที่ได้จากการดำเนินการอ่านสแนปชอต

gpg::SnapshotManager::SnapshotSelectUIResponse

Data และ ResponseStatus สำหรับการดำเนินการ ShowSelectUIOperation

ประเภทสาธารณะ

CommitCallback

std::function< void(const CommitResponse &)> CommitCallback

กำหนดประเภท Callback ที่ได้รับ CommitResponse

ประเภทการติดต่อกลับนี้ใช้ได้กับฟังก์ชัน Commit(*) และ ResolveConflict(*) ด้านล่าง

FetchAllCallback

std::function< void(const FetchAllResponse &)> FetchAllCallback

กำหนดประเภท Callback ที่ได้รับ FetchAllResponse

ประเภท Callback นี้ใช้ได้กับฟังก์ชัน FetchAll(*) ด้านล่าง

MaxSizeCallback

std::function< void(const MaxSizeResponse &)> MaxSizeCallback

กำหนดประเภท Callback ที่ได้รับ MaxSizeResponse

ประเภท Callback นี้มีไว้สำหรับ GetMaxSize

OpenCallback

std::function< void(const OpenResponse &)> OpenCallback

กำหนดประเภท Callback ที่ได้รับ OpenResponse

ประเภท Callback นี้ใช้ได้กับฟังก์ชัน Open(*) ด้านล่าง

ReadCallback

std::function< void(const ReadResponse &)> ReadCallback

กำหนดประเภท Callback ที่ได้รับ ReadResponse

ประเภท Callback นี้ใช้ได้กับฟังก์ชัน Read(*) ด้านล่าง

SnapshotSelectUICallback

std::function< void(const SnapshotSelectUIResponse &)> SnapshotSelectUICallback

กำหนด Callback ที่สามารถรับ SnapshotSelectUIResponse จาก ShowSelectUIOperation

ฟังก์ชันสาธารณะ

คอมมิต

void Commit(
  const SnapshotMetadata & snapshot_metadata,
  const SnapshotMetadataChange & metadata_change,
  std::vector< uint8_t > data,
  CommitCallback callback
)

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

โทรหา CommitCallback ที่ระบุไว้เมื่อการดำเนินการเสร็จสิ้น

CommitBlocking

CommitResponse CommitBlocking(
  const SnapshotMetadata & snapshot_metadata,
  const SnapshotMetadataChange & metadata_change,
  std::vector< uint8_t > contents
)

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

CommitBlocking

CommitResponse CommitBlocking(
  Timeout timeout,
  const SnapshotMetadata & snapshot_metadata,
  const SnapshotMetadataChange & metadata_change,
  std::vector< uint8_t > contents
)

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

ระบุ timeout เป็นมิลลิวินาที

ลบ

void Delete(
  const SnapshotMetadata & snapshot_metadata
)

ลบสแนปชอตที่ระบุ

การดำเนินการนี้จะลบข้อมูลของสแนปชอตในเครื่องและในเซิร์ฟเวอร์

FetchAll

void FetchAll(
  FetchAllCallback callback
)

โหลดข้อมูลสแนปชอตทั้งหมดแบบไม่พร้อมกันสำหรับโปรแกรมเล่นที่ลงชื่อเข้าใช้ในปัจจุบัน

โทรหา FetchAllCallback ที่ระบุไว้เมื่อการดำเนินการเสร็จสิ้น การไม่ระบุ data_source จะทำให้การเรียกใช้ฟังก์ชันนี้เทียบเท่ากับการเรียกใช้ FetchAll(DataSource data_source, FetchAllCallback callback) ซึ่งมีการระบุ data_source เป็น CACHE_OR_NETWORK.

FetchAll

void FetchAll(
  DataSource data_source,
  FetchAllCallback callback
)

โหลดข้อมูลสแนปชอตทั้งหมดแบบไม่พร้อมกันสำหรับโปรแกรมเล่นที่ลงชื่อเข้าใช้ในปัจจุบัน

โทรหา FetchAllCallback ที่ระบุไว้เมื่อการดำเนินการเสร็จสิ้น ระบุ data_source เป็น CACHE_OR_NETWORK หรือ NETWORK_ONLY

FetchAllBlocking

FetchAllResponse FetchAllBlocking()

การโหลดข้อมูลสแนปชอตทั้งหมดแบบพร้อมกันสำหรับโปรแกรมเล่นที่ลงชื่อเข้าใช้อยู่ในขณะนี้ และแสดงผล FetchAllResponse โดยตรง

การระบุทั้ง data_source และ timeout จะทำให้การเรียกใช้ฟังก์ชันนี้เทียบเท่ากับการเรียกใช้ FetchAllResponse FetchAllBlocking(DataSource data_source, Timeout timeout) โดยที่ data_source ระบุเป็น CACHE_OR_NETWORK และ timeout ระบุเป็น 10 ปี

FetchAllBlocking

FetchAllResponse FetchAllBlocking(
  DataSource data_source
)

การโหลดข้อมูลสแนปชอตทั้งหมดแบบพร้อมกันสำหรับโปรแกรมเล่นที่ลงชื่อเข้าใช้อยู่ในขณะนี้ และแสดงผล FetchAllResponse โดยตรง

ระบุ data_source เป็น CACHE_OR_NETWORK หรือ NETWORK_ONLY การไม่ระบุ timeout จะทำให้การเรียกใช้ฟังก์ชันนี้เทียบเท่ากับการเรียกใช้ FetchAllBlocking FetchAllResponse(DataSource data_source, Timeout timeout) ซึ่งมีค่า data_source ที่คุณระบุ และ timeout ระบุเป็น 10 ปี

FetchAllBlocking

FetchAllResponse FetchAllBlocking(
  Timeout timeout
)

การโหลดข้อมูลสแนปชอตทั้งหมดแบบพร้อมกันสำหรับโปรแกรมเล่นที่ลงชื่อเข้าใช้อยู่ในขณะนี้ และแสดงผล FetchAllResponse โดยตรง

ระบุ timeout เป็นมิลลิวินาที การไม่ระบุ data_source จะทำให้การเรียกใช้ฟังก์ชันนี้เทียบเท่ากับการเรียกใช้ FetchAllResponse FetchAllBlocking(DataSource data_source, Timeout timeout) โดยมีการระบุ data_source เป็น CACHE_OR_NETWORK และ timeout มีค่าที่ระบุ

FetchAllBlocking

FetchAllResponse FetchAllBlocking(
  DataSource data_source,
  Timeout timeout
)

การโหลดข้อมูลสแนปชอตทั้งหมดแบบพร้อมกันสำหรับโปรแกรมเล่นที่ลงชื่อเข้าใช้อยู่ในขณะนี้ และแสดงผล FetchAllResponse โดยตรง

ระบุ data_source เป็น CACHE_OR_NETWORK หรือ NETWORK_ONLY ระบุ timeout เป็นมิลลิวินาที

GetMaxSize

void GetMaxSize(
  MaxSizeCallback callback
) const 

แบบไม่พร้อมกันจะได้รับขนาดข้อมูลสูงสุดและขนาดภาพหน้าปกสูงสุดต่อสแนปชอตในหน่วยไบต์

โทรหา MaxSizeCallback ที่ระบุไว้เมื่อการดำเนินการเสร็จสิ้น

ขนาดข้อมูลสูงสุดต่อสแนปชอตที่รับประกันว่ามีขนาดอย่างน้อย 3 MB อาจเพิ่มขึ้นในอนาคต

ขนาดสูงสุดต่อภาพหน้าปกสแนปชอตต้องมีขนาดอย่างน้อย 800 KB อาจเพิ่มขึ้นในอนาคต

GetMaxSizeBlocking

MaxSizeResponse GetMaxSizeBlocking() const 

รับข้อมูลขนาดภาพสูงสุดและขนาดภาพหน้าปกสูงสุดต่อสแนปชอตในหน่วยไบต์แบบพร้อมกัน โดยจะแสดงผล MaxSizeResponse โดยตรง

ขนาดข้อมูลสูงสุดต่อสแนปชอตที่รับประกันว่ามีขนาดอย่างน้อย 3 MB อาจเพิ่มขึ้นในอนาคต

ขนาดสูงสุดต่อภาพหน้าปกสแนปชอตต้องมีขนาดอย่างน้อย 800 KB อาจเพิ่มขึ้นในอนาคต

GetMaxSizeBlocking

MaxSizeResponse GetMaxSizeBlocking(
  Timeout timeout
) const 

รับข้อมูลขนาดภาพสูงสุดและขนาดภาพหน้าปกสูงสุดต่อสแนปชอตในหน่วยไบต์แบบพร้อมกัน โดยจะแสดงผล MaxSizeResponse โดยตรง

ขนาดข้อมูลสูงสุดต่อสแนปชอตที่รับประกันว่ามีขนาดอย่างน้อย 3 MB อาจเพิ่มขึ้นในอนาคต

ขนาดสูงสุดต่อภาพหน้าปกสแนปชอตต้องมีขนาดอย่างน้อย 800 KB อาจเพิ่มขึ้นในอนาคต

ระบุ timeout เป็นมิลลิวินาที

เปิด

void Open(
  const std::string & file_name,
  SnapshotConflictPolicy conflict_policy,
  OpenCallback callback
)

แบบไม่พร้อมกันจะเปิดสแนปชอตที่มีชื่อตัวนั้น

ระบบจะสร้างสแนปชอตที่ระบุหากยังไม่มี โทรหา OpenCallback ที่ระบุไว้เมื่อการดำเนินการเสร็จสิ้น

ชื่อสแนปชอตต้องมีความยาวระหว่าง 1 ถึง 100 อักขระที่ไม่ได้สงวน URL ไว้ (a-z, A-Z, 0-9 หรือสัญลักษณ์ "-", ".", "_" หรือ "~")

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

conflict_policy อาจเป็นค่าใดค่าหนึ่งต่อไปนี้

SnapshotConflictPolicy::MANUAL - ในกรณีที่มีความขัดแย้ง การตอบกลับจะมีสถานะ OpenResponse::VALID_WITH_CONFLICT คุณต้องแก้ไขความขัดแย้งโดยใช้ SnapshotManager::ResolveConflict อาจเห็นข้อขัดแย้งหลายรายการในแถวเดียวกัน ดังนั้นโปรดตรวจสอบทุกครั้งที่คุณโทรหา Open คุณจะเห็นข้อขัดแย้งนี้เป็นเพียงนโยบายเดียว ความละเอียดของแฮนเดิลที่เหลือสำหรับคุณ นโยบายนี้ช่วยให้แน่ใจว่าการเปลี่ยนแปลงสถานะของเกมที่บันทึกไว้ของผู้ใช้จะไม่สูญหายไป

SnapshotConflictPolicy::LONGEST_PLAYTIME - ในกรณีที่มีข้อขัดแย้ง ระบบจะใช้สแนปชอตที่มีค่าเวลาเล่นมากที่สุด นโยบายนี้เป็นตัวเลือกที่ดีหากระยะเวลาการเล่นเหมาะสมพอสมควรสำหรับรายการที่ "ดีที่สุด" บันทึกเกม โปรดทราบว่าคุณต้องใช้ SnapshotMetadataChange::Builder::SetPlayedTime() ขณะบันทึกเกมเพื่อให้นโยบายนี้มีความหมาย

SnapshotConflictPolicy::LAST_KNOWN_GOOD - ในกรณีที่มีความขัดแย้ง ระบบจะใช้สแนปชอตพื้นฐาน นโยบายนี้เป็นทางเลือกที่สมเหตุสมผลหากเกมของคุณต้องการความเสถียรจากข้อมูลภาพรวม นโยบายนี้ทำให้แน่ใจว่าโปรแกรมเล่นจะเห็นเฉพาะการเขียนที่ไม่มีการโต้แย้งเท่านั้น ซึ่งเป็นการรับประกันว่าไคลเอ็นต์ทั้งหมดจะต้องมาบรรจบกัน หมายเหตุ: ก่อนหน้านี้ SnapshotManager::BASE_WINS

SnapshotConflictPolicy::MOST_RECENTLY_MODIFIED - ในกรณีที่ขัดแย้งกัน ระบบจะใช้รีโมต นโยบายนี้เป็นทางเลือกที่สมเหตุสมผลหากเกมของคุณสามารถยอมให้ผู้เล่นเปลี่ยนแปลงการเปลี่ยนแปลงของตนในอุปกรณ์หลายเครื่องได้ เนื่องจากนโยบายนี้จะเลือกข้อมูลล่าสุดแบบสุ่ม การเปลี่ยนแปลงของโปรแกรมเล่นอาจสูญหายได้ หมายเหตุ: ก่อนหน้านี้ SnapshotManager::REMOTE_WINS

SnapshotConflictPolicy::HIGHEST_PROGRESSในกรณีที่มีข้อขัดแย้ง ระบบจะใช้สแนปชอตที่มีค่าความคืบหน้าสูงสุด ในกรณีที่เสมอกัน ระบบจะเลือกสแนปชอตที่ดีล่าสุดแทน นโยบายนี้เป็นตัวเลือกที่ดีหากเกมใช้ค่าความคืบหน้าของภาพรวมเพื่อกำหนดเกมที่บันทึกไว้ที่ดีที่สุด โปรดทราบว่าคุณต้องใช้ SnapshotMetadataChange::Builder::SetPlayedTime() ขณะบันทึกเกมเพื่อให้นโยบายนี้มีความหมาย

เปิด

void Open(
  DataSource data_source,
  const std::string & file_name,
  SnapshotConflictPolicy conflict_policy,
  OpenCallback callback
)

แบบไม่พร้อมกันจะเปิดสแนปชอตที่มีชื่อตัวนั้น

เลิกใช้งานแล้ว ระบบจะไม่สนใจ data_source โปรดใช้ Open(file_name, conflict_policy, callback) แทน

OpenBlocking

OpenResponse OpenBlocking(
  const std::string & file_name,
  SnapshotConflictPolicy conflict_policy
)

เปิดสแนปชอตชื่อดังกล่าวแบบซิงโครนัส

ระบบจะสร้างสแนปชอตที่ระบุหากยังไม่มี

ดูรายละเอียดเพิ่มเติมได้ที่เปิด

OpenBlocking

OpenResponse OpenBlocking(
  Timeout timeout,
  const std::string & file_name,
  SnapshotConflictPolicy conflict_policy
)

เปิดสแนปชอตชื่อดังกล่าวแบบซิงโครนัส

ระบบจะสร้างสแนปชอตที่ระบุหากยังไม่มี

ระบุ timeout เป็นมิลลิวินาที

ดูรายละเอียดเพิ่มเติมได้ที่เปิด

OpenBlocking

OpenResponse OpenBlocking(
  DataSource data_source,
  const std::string & file_name,
  SnapshotConflictPolicy conflict_policy
)

เปิดสแนปชอตชื่อดังกล่าวแบบซิงโครนัส

เลิกใช้งานแล้ว ระบบจะไม่สนใจ data_source โปรดใช้ OpenBlocking(file_name, conflict_policy) แทน

OpenBlocking

OpenResponse OpenBlocking(
  DataSource data_source,
  Timeout timeout,
  const std::string & file_name,
  SnapshotConflictPolicy conflict_policy
)

เปิดสแนปชอตชื่อดังกล่าวแบบซิงโครนัส

เลิกใช้งานแล้ว ระบบจะไม่สนใจ data_source โปรดใช้ OpenBlocking(timeout, file_name, conflict_policy) แทน

อ่าน

void Read(
  const SnapshotMetadata & snapshot_metadata,
  ReadCallback callback
)

ไม่พร้อมกันจะอ่านสแนปชอตจากดิสก์และคัดลอกไปยังหน่วยความจำ

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

ReadBlocking

ReadResponse ReadBlocking(
  const SnapshotMetadata & snapshot_metadata
)

แบบซิงโครนัสอ่านสแนปชอตจากดิสก์และคัดลอกลงในหน่วยความจำ

ระบบจะส่งข้อมูลกลับมาตามค่าเพื่อให้แก้ไขได้ง่ายขึ้น การเรียกฟังก์ชันนี้แต่ละครั้งจะแสดงผลการอ่านแบบเต็ม ซึ่งหมายความว่าคุณควรอ่านภาพรวมเพียงครั้งเดียวเท่านั้น การไม่ระบุ timeout จะทำให้การเรียกใช้ฟังก์ชันนี้เทียบเท่ากับการเรียกใช้ ReadBlocking ReadBlocking(Timeout timeout, const SnapshotMetadata& snapshot_metadata) ซึ่งมีการระบุ timeout เป็น 10 ปี

ReadBlocking

ReadResponse ReadBlocking(
  Timeout timeout,
  const SnapshotMetadata & snapshot_metadata
)

การอ่านสแนปชอตจากดิสก์พร้อมกันและคัดลอกลงในหน่วยความจำ

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

ResolveConflict

void ResolveConflict(
  const std::string & conflict_id,
  const SnapshotMetadata & snapshot_metadata,
  OpenCallback callback
)

แก้ไขข้อขัดแย้งแบบไม่พร้อมกันโดยใช้ข้อมูลจากสแนปชอตที่ระบุ

การดำเนินการนี้จะแทนที่ข้อมูลในเซิร์ฟเวอร์ด้วยสแนปชอตที่ระบุ โปรดทราบว่าการดำเนินการนี้อาจทำให้เกิดความขัดแย้งได้ ซึ่งจะต้องแก้ปัญหาเคสซ้ำ

การเรียกใช้วิธีนี้ที่มีสแนปชอตที่คอมมิตแล้วหรือที่ไม่ได้เปิดผ่าน Open จะล้มเหลวโดยมีสถานะ BaseStatus::ERROR_INTERNAL

โทรหา OpenCallback ที่ระบุไว้เมื่อการดำเนินการเสร็จสิ้น

ResolveConflict

void ResolveConflict(
  const std::string & conflict_id,
  const SnapshotMetadata & snapshot_metadata,
  const SnapshotMetadataChange & metadata_change,
  std::vector< uint8_t > contents,
  OpenCallback callback
)

แก้ไขข้อขัดแย้งแบบไม่พร้อมกันโดยใช้ข้อมูลที่ให้ไว้

การดำเนินการนี้จะแทนที่ข้อมูลในเซิร์ฟเวอร์ด้วยการเปลี่ยนแปลงข้อมูลเมตาที่ระบุและ contents โปรดทราบว่าการดำเนินการนี้อาจทำให้เกิดความขัดแย้งได้ ซึ่งจะต้องแก้ปัญหาเคสซ้ำ

ค่าที่ไม่ได้อยู่ในการเปลี่ยนแปลงข้อมูลเมตาจะได้รับการแก้ไขให้เป็นเวอร์ชันปัจจุบันในเซิร์ฟเวอร์

โปรดทราบว่าขนาดรวมของ contents ต้องไม่เกิน maxDataSize ที่ GetMaxSize ระบุไว้

การเรียกใช้วิธีนี้ที่มีสแนปชอตที่คอมมิตแล้วหรือที่ไม่ได้เปิดผ่าน Open จะล้มเหลวโดยมีสถานะ BaseStatus::ERROR_INTERNAL

โทรหา OpenCallback ที่ระบุไว้เมื่อการดำเนินการเสร็จสิ้น

ResolveConflictBlocking

OpenResponse ResolveConflictBlocking(
  const std::string & conflict_id,
  const SnapshotMetadata & snapshot_metadata
)

แก้ไขข้อขัดแย้งแบบพร้อมกันโดยใช้ข้อมูลจากสแนปชอตที่ระบุ

การดำเนินการนี้จะแทนที่ข้อมูลในเซิร์ฟเวอร์ด้วยสแนปชอตที่ระบุ โปรดทราบว่าการดำเนินการนี้อาจทำให้เกิดความขัดแย้งได้ ซึ่งจะต้องแก้ปัญหาเคสซ้ำ

การเรียกใช้วิธีนี้ที่มีสแนปชอตที่คอมมิตแล้วหรือที่ไม่ได้เปิดผ่าน Open จะล้มเหลวโดยมีสถานะ BaseStatus::ERROR_INTERNAL

ResolveConflictBlocking

OpenResponse ResolveConflictBlocking(
  const std::string & conflict_id,
  const SnapshotMetadata & snapshot_metadata,
  const SnapshotMetadataChange & metadata_change,
  std::vector< uint8_t > contents
)

แก้ไขข้อขัดแย้งแบบพร้อมกันโดยใช้ข้อมูลที่ให้ไว้

การดำเนินการนี้จะแทนที่ข้อมูลในเซิร์ฟเวอร์ด้วยการเปลี่ยนแปลงข้อมูลเมตาที่ระบุและ contents โปรดทราบว่าการดำเนินการนี้อาจทำให้เกิดความขัดแย้งได้ ซึ่งจะต้องแก้ปัญหาเคสซ้ำ

ค่าที่ไม่ได้อยู่ในการเปลี่ยนแปลงข้อมูลเมตาจะได้รับการแก้ไขให้เป็นเวอร์ชันปัจจุบันในเซิร์ฟเวอร์

โปรดทราบว่าขนาดรวมของ contents ต้องไม่เกิน maxDataSize ที่ GetMaxSize ระบุไว้

การเรียกใช้วิธีนี้ที่มีสแนปชอตที่คอมมิตแล้วหรือที่ไม่ได้เปิดผ่าน Open จะล้มเหลวโดยมีสถานะ BaseStatus::ERROR_INTERNAL

ResolveConflictBlocking

OpenResponse ResolveConflictBlocking(
  Timeout timeout,
  const std::string & conflict_id,
  const SnapshotMetadata & snapshot_metadata
)

แก้ไขข้อขัดแย้งแบบพร้อมกันโดยใช้ข้อมูลจากสแนปชอตที่ระบุ

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

การเรียกใช้วิธีนี้ที่มีสแนปชอตที่คอมมิตแล้วหรือที่ไม่ได้เปิดผ่าน Open จะล้มเหลวโดยมีสถานะ BaseStatus::ERROR_INTERNAL

ระบุ timeout เป็นมิลลิวินาที

ResolveConflictBlocking

OpenResponse ResolveConflictBlocking(
  Timeout timeout,
  const std::string & conflict_id,
  const SnapshotMetadata & snapshot_metadata,
  const SnapshotMetadataChange & metadata_change,
  std::vector< uint8_t > contents
)

แก้ไขข้อขัดแย้งแบบพร้อมกันโดยใช้ข้อมูลที่ให้ไว้

การดำเนินการนี้จะแทนที่ข้อมูลในเซิร์ฟเวอร์ด้วยการเปลี่ยนแปลงข้อมูลเมตาที่ระบุและ contents โปรดทราบว่าการดำเนินการนี้อาจทำให้เกิดความขัดแย้งได้ ซึ่งจะต้องแก้ปัญหาเคสซ้ำ

ค่าที่ไม่ได้อยู่ในการเปลี่ยนแปลงข้อมูลเมตาจะได้รับการแก้ไขให้เป็นเวอร์ชันปัจจุบันในเซิร์ฟเวอร์

โปรดทราบว่าขนาดรวมของ contents ต้องไม่เกิน maxDataSize ที่ GetMaxSize ระบุไว้

การเรียกใช้วิธีนี้ที่มีสแนปชอตที่คอมมิตแล้วหรือที่ไม่ได้เปิดผ่าน Open จะล้มเหลวโดยมีสถานะ BaseStatus::ERROR_INTERNAL

ระบุ timeout เป็นมิลลิวินาที

ShowSelectUIOperation

void ShowSelectUIOperation(
  bool allow_create,
  bool allow_delete,
  uint32_t max_snapshots,
  const std::string & title,
  SnapshotSelectUICallback callback
)

แสดง UI สแนปชอตแบบไม่พร้อมกันเพื่อให้โปรแกรมเล่นเลือกสแนปชอตหรือขอสแนปชอตใหม่

เมื่อเสร็จสมบูรณ์แล้ว สแนปชอตที่เลือกหรือคำขอสแนปชอตใหม่จะแสดงผลผ่าน SnapshotSelectUICallback

ShowSelectUIOperationBlocking

SnapshotSelectUIResponse ShowSelectUIOperationBlocking(
  Timeout timeout,
  bool allow_create,
  bool allow_delete,
  uint32_t max_snapshots,
  const std::string & title
)

กำลังบล็อกเวอร์ชัน ShowSelectUIOperation

อนุญาตให้ผู้โทรระบุการหมดเวลาเป็นมิลลิวินาที หลังจากพ้นเวลาที่ระบุ ฟังก์ชันจะแสดงผล ERROR_TIMEOUT

ShowSelectUIOperationBlocking

SnapshotSelectUIResponse ShowSelectUIOperationBlocking(
  bool allow_create,
  bool allow_delete,
  uint32_t max_snapshots,
  const std::string & title
)

ShowSelectUIOperationBlocking มากเกินไป ซึ่งใช้ระยะหมดเวลาเริ่มต้น 10 ปี