「終わる瞬間」をギルドメンバー全員で共有するための通信技術
続いて、悦田氏からは最大15人で挑む最終レイド戦のデータ同期に関する知見が紹介された。悦田氏によると、実装にあたっては「ギルドメンバー全員が揃った状態で参加できるようになる」要素の追加と、「バトル前後に流れるシナリオの進行も同期させる」との要望が伝えられていた。
実装にあたっての課題は「どのようにして全員を同期させて開始させるか」と、「同時進行中にアプリ落ちしたユーザーが発生した場合にどのように復帰を行うか」であった。
そこで実装時には、最終レイド戦に参加するギルドメンバーの待機所を設置。『シノアリスだったナニカ』に情報を登録するまでの各段階を“フェーズ”として分け、アプリ落ちしたユーザーが発生した場合は進行中であったフェーズからやり直す形にしていたという。
開発時にはリアルタイムでのデータ同期や負荷への対策が容易なモバイルアプリ開発プラットフォーム「Firestore」を活用し、接続ユーザー数の増加への備えを想定していた。
また、データの読み込み時には「ギルド全体での進行フェーズ」と「ユーザー個々の進行フェーズ」を別々に記録し、どの時点から復帰するのかを細かく定義していたようだ。
一方、接続ユーザー数の増加については増加幅を予測できない点や、予算も考慮しながらログイン制限をかけなければならなかった。そこで『シノアリス』の最終レイド戦においては秒間のリクエスト数を参照し、しきい値を超えた際に新たなユーザーのログインのみを一時的にブロックする「リクエストレート制限」がとられた。
制限の対象については進行中のバトルを妨害しないようにログインのリクエストのみを対象としたほか、ギルドメンバーの誰かがプレイ中の場合に同じギルドのユーザーをログインできるようにする例外などの措置もとられているという。
事例の詳細について説明したのち、悦田氏はログイン制限の導入について「実現方法は様々あり、それぞれにできること・できないことがある」として、リアルタイム性や瞬間的なアクセス増加の懸念、条件設定を考慮に入れて選択するよう提案した。