2017-10-17 156 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设备上试过这个?在这种情况下没有检测到冲突。谢谢。 –