【ACADEMY】世代間,プラットフォーム間でゲームの進行状況を共有する方法

AccelByteのRaymond Arifianto氏が,プラットフォームに依存しないクラウドセーブ機能の実装方法についての集中講義を提供している。

 ビデオゲームの基本的な,しかししばしば見落とされている機能は,プレイヤーの進行状況(progression)を追跡することだ。コントローラを置いて,別の時間や場所でゲームを中断したところから再開できることが,ビデオゲームの機能として期待されている。

 プレイヤーの進行状況を保存するには,ゲームがプレイヤーについて覚えておく必要があるすべてのことについて話す必要がある。これには,プレイヤーが最後に訪れた町,アバターのキャラクターレベル,プレイヤーが倒した(倒したままであるべき)敵の数などが含まれる。

 そして,何回剣を振ったか,何回ヘッドショットをしたか,ハーデスで全能の父を何回倒したか,自己ベストタイムなどといった,プレイヤーのデータがある。

【ACADEMY】世代間,プラットフォーム間でゲームの進行状況を共有する方法

 約10年前にさまざまなクラウドセーブ機能が実装され,プレイヤーはクラウド上に進捗状況を保存しておくことで,デバイスからデバイスへ移動した際にそれを再現できるという快適さを体感できるようになった。

 しかし,近年のクロスプラットフォーム化の流れの中で,ゲームがクロスプラットフォームで,あるいは世代を超えてクラウドセーブ機能を実装するための一貫した方法というものはなかった。

 The Witcher 3がクロスセーブに対応したと聞いてファンは大喜びだったが,それはかなり限定的なものであることが判明した。― SwitchユーザーはSteamやGOGを使って進捗をロードして保存できる。しかし現在のところ,XboxやPlayStationなどのほかのプラットフォームをサポートする予定はない。

【ACADEMY】世代間,プラットフォーム間でゲームの進行状況を共有する方法

 また,Overwatch 2のような続編ゲーム間のクロスプログレッションはどのような意味を持つのだろうか? Blizzardは,プレイヤーは2つのゲームでのクロスプレイに加えて, Overwatchからのすべての進歩を持ち運べるようになると約束している。

 この記事では,プラットフォームのクラウドセーブの基本と,プラットフォームにとらわれない機能をゲームにデザインして,プラットフォーム間,あるいは同じフランチャイズ内の異なるゲーム間のプレイヤーの進行を追跡する方法について説明する。


クラウドセーブ


 クラウドセーブは10年ほど前に導入され,SteamやXbox Liveで普及していた
―これにより,プレイヤーは1つのデバイスでゲームをプレイし,別のデバイスでゲームを続けることができるようになった。今日では,ほとんどのプラットフォームで,あるレベルのクラウドセーブが提供されている。誰でも無料なのか,それともプレミアム会員(PSNやNintendo Switch Onlineなど)の機能なのかといった違いはあるが。

【ACADEMY】世代間,プラットフォーム間でゲームの進行状況を共有する方法

●それはどのように動作するのか?
 ほとんどのプラットフォームでは,プラットフォームが提供するAPIを使用してローカルファイルの読み書きを行い,プラットフォームがファイルのアップロードとタイムスタンプの検証を行う。

 たとえば,これはSteam cloud saveの動作だ(参考URL)。「Steam Cloudは,ゲームのための簡単で透過的なリモートファイルストレージシステムを提供します。Auto-Cloud設定で指定されたファイル,またはCloud APIを使用してディスクに書き込まれたファイル(作成,変更,削除など)は,ゲーム終了後に自動的にSteamサーバーにレプリケートされます」

 「ユーザーがコンピュータを変更した場合,ゲーム起動前にファイルは自動的に新しいコンピュータにダウンロードされます。その後,ゲームは通常どおりCloud APIを介してファイルを読み込むか,ディスクから直接ファイルを読み込むことでファイルにアクセスできます。ビデオ設定などのマシン固有の設定は避けてください」

【ACADEMY】世代間,プラットフォーム間でゲームの進行状況を共有する方法

 セーブゲームの利点は,デバイス上のローカルファイルであるため,オフラインのシングルプレイヤーゲームに最適に動作することだ。

 しかし,クライアント側のセーブゲームを持つことには制限がある。

  1. セキュリティと改竄: 独自の暗号化メカニズムをロールアウトできるが,ローカルのセーブゲームはクライアント側の改ざんの傾向がある。つまり,実際にはパワーレベル,ELOレーティング,プレミアム通貨などの重要なマルチプレイヤーデータをローカルセーブに保存することはできない
  2. ほとんどの(すべてではないにしても)プラットフォームでは,タイトルID/アプリIDごとにクラウドセーブを扱う。つまり,ゲームの続編をリリースした場合,それは別のゲームとみなされ,別のタイトルID/アプリIDを持つことになる。また,1つのゲームが別のゲームのクラウドセーブを照会したり管理したりすることはできないため,2つのゲームでゲーム進行を共有することはできない

 これらの制限を回避するために,多くのゲームでは,ローカルセーブに加えてゲームバックエンドにもプレイヤーデータを保存している。

 これにより,特定のプレイヤーデータ(ゲームサーバーのみが書き込み可能なもの)は安全に保たれ,たとえばELOレーティングのように,公平なマッチメイキングに使用される。明らかな欠点は,プレイヤーが値を取得するためにオンラインでなければならないことだ。

【ACADEMY】世代間,プラットフォーム間でゲームの進行状況を共有する方法


プレイヤーの進行を保存するプラットフォームにとらわれないようにする方法


 バックエンド側にプレイヤーデータを保存する基本的なことはお分かりいただけたと思うが,これを拡張して,クロスプラットフォーム,クロスジェネレーション,さらにはクロスタイトルをサポートできる。重要なのは,プラットフォームにとらわれないソリューションを構築することだ。

 プレイヤーが使用しているプラットフォームやデバイス,さらにはタイトルIDに関係なく,プレイヤーを識別できれば,クロスプログレッションを可能にするためのマッピングロジックをバックエンドに構築できる。これについては,GamesIndustry.biz ACADEMYで取り上げられた(関連英文記事)2020年のGDCの講演で説明した(参考URL)。

 アカウント連携と呼ばれる技術を使用することで,バックエンド上に統合されたアカウントを作成して,Steam,PS4,PS5,Xbox One,Series X,Switchなどでプレイしているかどうかに関わらず,ゲームをプレイしているすべてのプレイヤーを識別できる。

 この情報があれば,プラットフォームごとにプレイヤーストレージを分離するか,より統一された戦略を選択するかを決めることができる。

【ACADEMY】世代間,プラットフォーム間でゲームの進行状況を共有する方法

 これにより,ゲーム間のプロモーションやゲームの進行をサポートするための工夫も可能になる。

 これを実現する1つの方法は,複数のゲームで共有されるべきプレイヤーデータを,複数のゲームが読み書きできる独自のパーティションに格納するためにデータを分離することだ。

 一言だけアドバイス:複数のプラットフォームやタイトルにまたがって同じプレイヤーのために統一されたストレージを有効にしたい場合は,バックエンドシステムにSPOP (Single Point of Presence)を実装することを検討する必要がある。

 SPOPとは,ユーザーが一度に1台のデバイスでしかアカウントにログインできず,1台にログインするともう1台がログアウトしてしまうというものだ。これにより,すべての書き込みおよび読み取り操作が安全であることが保証され,同時に異なる場所からプレイヤーの状態を操作するプレイヤーの非決定論的な動作を扱うことはない。

 まとめると,さまざまなプラットフォームが,ゲームが利用できる素晴らしいクオリティオブライフのクラウドセーブ機能を提供している。クロスプラットフォームのゲーム時代に突入した今,さまざまなプラットフォームの制限を回避するために,プレイヤーの進行状況を保存する方法を設計できる,プラットフォームにとらわれないクラウドセーブシステムが必要になることに気づくだろう。


Raymond Arifianto氏は,Xbox,Lionhead,EA,Ubisoftで15年以上にわたってオンラインゲームやプラットフォームの開発に携わっていた。現在は,ライブゲームサービスのワンストップショップであるAccelByteの技術担当副社長を務めている。

GamesINdustry.biz ACADEMY関連翻訳記事一覧

※本記事はGamesIndustry.bizとのライセンス契約のもとで翻訳されています(元記事はこちら