白黒羊

PlayFabの「Title exceeded limit CustomData:UserDataValueUpdatesPer15Seconds」に引っかかった

リリース後、PlayFabの「Title OverView」>「PlayStream Monitor」をぼーっと眺めていると、突然このようなエラーらしきものが。

CustomData:UserDataValueUpdatesPer15Seconds をクリックするとこのような画面になりました。

なおこの画面は、それぞれのタイトルのページから、歯車マーク>「Title Settings」>「Limits」>「Data Storage」>「Player data value updates per 15 seconds」からも開くことができます。
この項目は ひとり分のプレイヤーデータが15秒以内に更新できる回数の上限を表したものとのことで、最大回数は10回までみたいですね。
グラフを見ると結構ギリギリでたまに超えています。

PlayStream Monitorで iボタンを押すとjson形式で詳細が表示されます。

{
  "EventName": "title_exceeded_limit",
  "LimitId": "CustomData:UserDataValueUpdatesPer15Seconds",
  "LimitDisplayName": "Number of times the same player data value may be updated within a period of 15 seconds.",
  "Unit": "Count",
  "LimitValue": 10,
  "Value": 11,
  "AssociatedEntities": {
    "player": [
      "XXXXXXXXXXXXXXXX"
    ]
  },
  "Details": {
    "key": "System"
  },
  "EventNamespace": "com.playfab",
  "EntityType": "title",
  "Source": "PlayFab",
  "EventId": "4d6cbca7432d4f11af8c5b004bc5df67",
  "EntityId": "C4F50",
  "SourceType": "BackEnd",
  "Timestamp": "2021-01-02T06:52:46.8257107Z",
  "History": null,
  "CustomTags": null,
  "Reserved": null,
  "PlayFabEnvironment": {
    "Vertical": "master",
    "Cloud": "main",
    "Application": "mainserver",
    "Commit": "22da35e"
  }
}

Limit Valueが10なのにValueが11になっているのでエラーになっているようですね。
11の段階でエラーになるのでおそらくこのValueは常に11になる気がします。

対策

ひとりのプレイヤーが15秒間に10回データを更新したい状況というのはなかなかない気がします。
おそらくどこかに実装ミスがある気がするのでユーザーデータを更新している箇所を探してみてください。
どうしても頻繁に更新したい場合は、無料のDevelopmentプランではなくプラン変更を検討した方が良さそうです。

私のケースは、このような音量スライダーで音量を変更したときに毎回保存するようにしていたのですが、スライダーを動かすたびにちょっとでも変更があるとセーブする処理が走ってしまうことが原因でした。

エラーログなどはPlayStream Monitor以外には表示されないため、気がつけませんでした……。
確定したら(画面を閉じたら)セーブするように変更したところ、異常な頻度で更新されてしまう問題は解決しました。

参考

title_exceeded_limit – PlayFab _ Microsoft Docs

We are having title_exceeded_limit warning, how do we focus on the calls causing it_ – Playfab Community