【CEDEC 2012】『シェルノサージュ』はどのようにクラウドサービスを導入したのか | GameBusiness.jp

【CEDEC 2012】『シェルノサージュ』はどのようにクラウドサービスを導入したのか

今年4月に発売されたPlayStation Vitaソフト『Ciel nosurge 〜失われた星へ捧ぐ詩〜』、PS Vitaの性能を生かしたシステムが話題を呼びました。CEDEC2012の2日目にゲーム内でのクラウドの活用法と、実際の運用についてのセッションが開かれました。

その他 その他
今年4月に発売されたPlayStation Vitaソフト『Ciel nosurge 〜失われた星へ捧ぐ詩〜』、PS Vitaの性能を生かしたシステムが話題を呼びました。CEDEC2012の2日目にゲーム内でのクラウドの活用法と、実際の運用についてのセッションが開かれました。
  • 今年4月に発売されたPlayStation Vitaソフト『Ciel nosurge 〜失われた星へ捧ぐ詩〜』、PS Vitaの性能を生かしたシステムが話題を呼びました。CEDEC2012の2日目にゲーム内でのクラウドの活用法と、実際の運用についてのセッションが開かれました。
  • 今年4月に発売されたPlayStation Vitaソフト『Ciel nosurge 〜失われた星へ捧ぐ詩〜』、PS Vitaの性能を生かしたシステムが話題を呼びました。CEDEC2012の2日目にゲーム内でのクラウドの活用法と、実際の運用についてのセッションが開かれました。
  • 今年4月に発売されたPlayStation Vitaソフト『Ciel nosurge 〜失われた星へ捧ぐ詩〜』、PS Vitaの性能を生かしたシステムが話題を呼びました。CEDEC2012の2日目にゲーム内でのクラウドの活用法と、実際の運用についてのセッションが開かれました。
  • 今年4月に発売されたPlayStation Vitaソフト『Ciel nosurge 〜失われた星へ捧ぐ詩〜』、PS Vitaの性能を生かしたシステムが話題を呼びました。CEDEC2012の2日目にゲーム内でのクラウドの活用法と、実際の運用についてのセッションが開かれました。
  • 今年4月に発売されたPlayStation Vitaソフト『Ciel nosurge 〜失われた星へ捧ぐ詩〜』、PS Vitaの性能を生かしたシステムが話題を呼びました。CEDEC2012の2日目にゲーム内でのクラウドの活用法と、実際の運用についてのセッションが開かれました。
  • 今年4月に発売されたPlayStation Vitaソフト『Ciel nosurge 〜失われた星へ捧ぐ詩〜』、PS Vitaの性能を生かしたシステムが話題を呼びました。CEDEC2012の2日目にゲーム内でのクラウドの活用法と、実際の運用についてのセッションが開かれました。
  • 今年4月に発売されたPlayStation Vitaソフト『Ciel nosurge 〜失われた星へ捧ぐ詩〜』、PS Vitaの性能を生かしたシステムが話題を呼びました。CEDEC2012の2日目にゲーム内でのクラウドの活用法と、実際の運用についてのセッションが開かれました。
  • 今年4月に発売されたPlayStation Vitaソフト『Ciel nosurge 〜失われた星へ捧ぐ詩〜』、PS Vitaの性能を生かしたシステムが話題を呼びました。CEDEC2012の2日目にゲーム内でのクラウドの活用法と、実際の運用についてのセッションが開かれました。
今年4月に発売されたPlayStation Vitaソフト『Ciel nosurge 〜失われた星へ捧ぐ詩〜』、PS Vitaの性能を生かしたシステムが話題を呼びました。CEDEC2012の2日目にゲーム内でのクラウドの活用法と、実際の運用についてのセッションが開かれました。

最初に登壇したCRI・ミドルウェア研究開発部の佐藤修氏は『シェルノサージュ』と同社のミドルウェアの関わりについて説明しました。本作ではADX2、Sofdec2、ファイルマジックPRO、GT2に加え、ネットワーク関連では本作のために制作されたCRI Saveboxを使用しているとのことです。

続いては、本作ディレクターでもあるガストの土屋暁氏により、実際のクラウド活用例について解説が行われました。『シェルノサージュ』のゲームの大きな特徴の1つとして、ネットワークを有効活用しているという点があげられます。シナリオパートでは章仕立てでDLCの配信が行われ、交流パートのコミュニティではユーザー同士の交流も簡単に行えるようになっています。

そして、今回クラウドの導入例としてとりあげられているコミュニケーションパートでは、ヒロインの情報、アイテム情報、イベント情報がクラウドサーバに送信されています。こうした情報はPS Vitaのローカル内にも保存されていますが、クラウドサーバーと常時同期をしているとのことです。実機でのデモも行われましたが、PS Vitaで服を着せ替えると、すぐにPC上からも服を変更したことが分かるようになっています。

土屋氏は、こうして送信されたデータを用いれば、ジャンルやプラットフォームが異なっていても、1つの世界を共有できるとしています。例えば、PS Vitaではコミュニケーションゲームとして手に入れたアイテムが、スマートフォン版のアイテム調合ゲームで素材にできるなど、制作者の想像次第で、いくらでも有効に活用が可能だということです。

実際に『シェルノサージュ』では、ユーザーが発生させたイベントと選択肢情報がクラウドされ、ウェブサービスと連動し、その情報によってボイスメールが届くような仕組みになっています。

次に、実装方法について説明が行われました。まず、通信は機密性を高めるためにhttpsniよって行われます。また、通常の通信はフォアグラウンド処理ですが、クラウドサーバーとの通信はバックグラウンド処理が行われています。送信データは5000bytesでバイナリとして送られます。なお、エラー時にはオートリトライで、再度同期処理が行われます。

データの流れとしては、ローカル上のデータに更新があれば、自動的にSaveboxにコールし、ブロックバスターのACHttpというネットワークモジュールを使って、実際のクラウドサーバとの連携を行っています。

ここで、土屋氏は降壇し、壇上にはブラックロックバスター開発部取締役の渡邉幸氏が登壇しました。ここからは、同社が作成したネットワークモジュール「ACHHttp」について解説をしました。

実装にあたっては、セキュアな通信を確保するために、Http+SSLでの通信にしたとのことです。また、msgpackを利用することで、通信データを圧縮し通信時間が短縮されました。さらにゲーム内の通信全てをハンドリングすることで、開発自体の効率化と問題発生箇所の集約化を図ったそうです。

なお、シナリオとSNSのタスクについては、CNetCeilが橋渡しとなり、クラウドタスクに関しては、直接ACHHttpを介してサーバーまでデータのやりとりが行われています。

渡邉氏によれば、「HttpはAPI、SDKともにそろっているので、実装にあまり時間がかからない」「Http リクエストはTemplate/Connectionの2段階に分れて管理されるので、Connectionを別のスレッドで作成するような設計にすると、複数のスレッドから同時に複数のHttp通信が可能になる。とのことです。

そして、最後にCRI・ミドルウェアの佐藤修氏が再登場し、同社の「CRI Savebox」について詳しい説明がありました。そもそも「CRI Savebox」とは、『シェルノサージュ』向けに開発された「ゲームデータの同期通信モジュール」になります。こちらを使用することで、今回クラウド化が実現しました。

主な特徴として、以下があげられていました。

・API(関数仕様)が簡単
・無駄なネットワークアクセスを制限(データ変更時のみ通信、通信は一定間隔)
・データ保護機構の充実(ダブルバッファ化と排他制御)・・・更新途中のデータはアプリ側には扱わせないように設定
・エラーレス(エラーが発生しても、リトライを繰り返す)
・アプリケーションへの負荷軽減
・下位ネットワークモジュールを共通化し、システム全体のメンテナンスリスクを低減・・・ブロックバスターと協力し、ネットワークモジュールを利用可能に

佐藤氏は「Saveboxは、ユーザーストレスを与えないクラウド環境を創造し、自然なゲーム間連動を実現」し、「常時接続、どこでも接続が可能な時代だからこそハードウェアの垣根を越えたゲームを」とまとめました。

実際に運営していると色々な問題が起こるようで、そうした問題の原因と解決方法がTipsとしてまとめられていたのでご紹介したいと思います。

【データベースの処理速度が追いつかないためサーバダウン】
解決策:DBサーバを用途、不可に応じて4台に分割

JOINしているテーブルや関連テーブルは同一サーバに置き、処理が重いテーブルが入っているサーバはテーブル数を減らしたとのことです。

【データベースから取得するレコード数が増大しサーバダウン】
解決策:取得数に必ずリミットをつける

レコード全体の操作は極力SQLにやらせるようにし、不可能な場合はcronなどで定期処理タスクにしていきました。ただし、countを取得するときだけなら問題ないとのことです。なお、テスト時に、ある程度の負荷をかけていても、実稼働時にテスト時を大幅に上回るレコードになると、全く状況は変わってしまうそうです。

【スクリプトの負荷増大によるサーバダウン】
解決策:永久ループを極力回避するスクリプトを組む

while文などはミスを起こしやすいので、使用は避けた方がいいとのことです。phpならばfor,foreach文を使用するようにします。もしwhile文を使用する場合は、カウント変数などを使った強制離脱処理を入れるようにすればいいとのことでした。

多くの問題を解決していくなかで、サーバ負荷の低減はDBの処理方法次第であると気付いたそうです。特に大量レコード取得(=select)は極端な処理時間増大につながりやすいということです。「1件の処理時間÷サーバ同時処理数>平均アクセス間隔」というサーバーダウンの法則も明らかになりました。

最後に、これから運営を開始しようと思っている方にさらなるアドバイスもありました。

・DBには適切なインデックスを付ける(検索カラムにインデックスを付けるだけで、処理が4秒→0.1秒に)
・フレームワークはDBアクセス回数を調べる
・1回のレコード取得数は極力減らす
・Apacheの同時接続数、コネクションタイムの調整をする
・クラウド業者選択時には24時間サポートしてくれる業者を選ぶ(ゲームAPIで1時間のダウンは致命的、深夜でも早期復旧が可能な業者を選択するべき)
・サーバリソースをけちらない(最初だけでもスクリプト処理サーバは考え得るMAX、DBサーバも1テーブル1サーバ用意できればよい。)

今後にも期待の高いゲームのクラウド活用ですが、貴重なアドバイスやTipsが発表され、大きな拍手に包まれセッションは終了しました。
《宮崎紘輔》

この記事の感想は?

  • いいね
  • 大好き
  • 驚いた
  • つまらない
  • かなしい
【注目の記事】[PR]

関連ニュース

特集

人気ニュースランキングや特集をお届け…メルマガ会員はこちら