2017-10-17 106 views
1

我在我的遊戲中使用android C++快照類實現了一個雲存儲機制。它完美地保存和加載。但是,我試圖設置一個會導致衝突的測試用例。但我無法弄清楚如何去做。我一直聽到很多非常毛茸茸的「需要脫機並且需要保存的東西」等等,但沒有具體說明。任何人都知道如何與2臺設備A和B產生衝突?如何手動創建Android savegame(快照)衝突?

設備A 提交 - 所有工作正常,API檢測不到衝突。

設備B 提交 - 所有工作正常,API沒有衝突檢測,設備A的遊戲被覆蓋。

也許其中一個設備必須在提交期間脫機?

下面是我使用的檢測衝突的東西,沒有一個是人們發現:

GPlusMgr::Get().GetGameServices()->Snapshots().Open(gpg::DataSource::CACHE_OR_NETWORK, Filename.ToASCII(), gpg::SnapshotConflictPolicy::MANUAL, [this](gpg::SnapshotManager::OpenResponse res) 
{ 
    if (res.conflict_id != "") 
    { 
     // Do scary conflict resolution dance. 
    } 
    else 
    { 
     // No conflict, just save to cloud. 
    } 

非常感謝,

史蒂夫。

回答

0

要創建一個衝突,你需要以下情況

  • A和B負載相同的遊戲狀態
  • A和B改變遊戲狀態
  • A和B要保存在雲中的狀態

enter image description here

一個承諾第一。當B嘗試提交時,它會覆蓋A的更改或檢測狀態已更改。 B的更改不基於當前快照,而是基於更早的狀態。 B產生衝突。

+0

嗨托馬斯,(更新與更多的細節問題)。在Android上實現時,它看起來並不像那樣工作。你有沒有在Android設備上試過這個?在這種情況下沒有檢測到衝突。謝謝。 –