【CEDEC2017】Cygames Researchが語る「サーバサイド技術」とは…ゲームシステムと連動した“ビジュアルチェックイン”サービスを紹介

一般社団法人コンピュータエンターテインメント協会(CESA)が、8月30日~9月1日までパシフィコ横浜にて開催した、国内最大のゲーム開発者向けカンファレンス「コンピュータ・エンターテインメント・デベロッパーズ・カンファレンス 2017」(CEDEC 2017)。 

本稿では、9月1日に実施された講演「ゲームシステムと連動した大規模なコンテンツ・プロモーションを可能にするサーバサイド技術」についてのレポートをお届けしていく。 本セッションでは、株式会社Cygamesの取締役CTO・芦原栄登士氏、技術顧問兼Cygames Research所長・倉林修一氏が登壇。ユーザーがアニメ番組の放送中にテレビ画面を動画として撮影をすると、ゲーム内で使用できるアイテムを獲得できる“ビジュアルチェックイン”サービスの技術紹介が行われた。


▲株式会社Cygamesの取締役CTO・芦原氏。大手コンシューマーゲーム会社で開発に従事しながら、MBAを取得。ネットワークゲーム開発を主として経験を重ね、開発会社技術部部長就任。社内技術共通化、ミドルウェア選定ほかマネジメント全般を統括。現在は、5000万人のユーザーを抱えるCygames 取締役CTOとしてインフラからゲーム開発までを主導する。


▲株式会社Cygamesの技術顧問兼Cygames Research所長・倉林氏。慶應義塾大学 環境情報学部 専任講師を経たのち、2015年よりCygames技術顧問。2016年、Cygames Research設立に伴い所長に就任。専門は、ビッグデータ処理技術、データベースエンジン技術、情報検索用UI技術。


本セッションでは、まず芦原氏が挨拶として自社を簡単に紹介。昨今、日本のゲーム業界は世界に抜かれている印象があるため、もう一度世界から「日本のゲームは凄い」と言わせたい。その先頭にCygamesが立っていたらいいとコメント。今回の講演では、基礎技術開発の体制強化を目的とした研究所「Cygames Research」(以下、Research)の新技術について発表を行い、業界全体がより良い物を作れるようにと語った。

その後、Cygames Research所長・倉林氏が登壇。前置きとして、コンパニオンアプリ『グランブルーファンタジー スカイコンパス』を実現するうえで、Researchの開発技術がどのように活かされているか。また、ゲームコンテンツをプロモーションしていくために、どのようなサーバサイド、クライアントサイドの技術が有効であったかを伝え、コンパニオンアプリ等を用いたコンテンツ、ゲーム本体のプロモーションを他社、他チームでも検討・共有してほしいと話した。

 

▲Researchの概要。現在も様々な研究が進められている。

研究発表の前に、まずResearchが研究するターゲッティングを解説。Researchでは、実際に組織が抱える課題を明らかにすることと、その課題の解決が普遍的な価値を持つことの両方が必要だと考え、現実の問題を解くために新しい議論を構築する“パスツール型研究”にフォーカスしている。普遍性をもった技術の体系化と、社内外の技術課題の解決に取り組んでいるという。



▲Researchの3つの行動原則、および価値観。



▲論文として体系化することで、社内・国内だけで通用する技術から脱却し、グローバルに評価される技術水準への到達を目指している。

発表は本題へ。倉林氏は、ゲームサービスと連動したプロモーション施策の実現例として、ユーザーがアニメ番組の放送中にテレビ画面を動画として撮影すると、ゲーム内で使用できるアイテムを獲得できる“ビジュアルチェックイン”サービスの実装技術を紹介した。実際に、2017年4月~6月に放送されたアニメ「GRANBLUE FANTASY The Animation」と連動した結果、極めて高いプロモーション&リテンション効果を得られたという。

本サービスは、二次元バーコードを用いずに、TV放送コンテンツそのものを認識し、チェックインするというもの。使用法を簡単に説明すると、対象のアプリで放送中のアニメを撮影すると、“あなたは確かにこのアニメを見ています”と判定され、ゲーム側にポイントが付与される。そのポイントを集めると、例えばSSレアのガチャチケットなどが貰えるという仕組みだ。特徴は、TV放送時の大規模な展開に対応可能なスケーラビリティと、様々な視聴環境における光学的異種性を吸収する映像処理技術である。

システムのアーキテクチャ概要は以下の通り。前述通り、ユーザーはアプリを起動し、TVを撮影するとチェックインが行われる。

(1)ユーザーは、個別の「色リスト」を受け取り、その色リストを用いて、カメラで撮影したTV画面の特徴を分析
(2)TV画面の特徴は、色を横軸、時間を縦軸にしたマトリクスとして表現される
(3)マトリクスをサーバに送ると、正解となるマトリクスと照合され、正解ならチェックイン完了


テレビ放送と連動する。言うのは簡単だが、様々な視聴環境における光学的異種性、つまりテレビやスマートフォンのデバイス、さらには光源もユーザーによって異なる。また、放送開始と同時に全国から一斉に来るトラフィックをリアルタイムに処理しなければならない。


▲課題は光学的異種性(クライアントサイドの問題)と、スケーラビリティ(サーバサイドの問題)になる。

まず、問題1となるユーザー環境の異種性について。TV映像にチェックインするアプリケーションでは、テレビの種類×スマホの種類×光源の種類、これらの数のバリエーションを扱う。この光学的異種性を吸収するメカニズムが必要だった。ここで採用したのが、HSV(Hue:色相、Saturation:彩度、Value:明度)の色空間から、モノクロ色を削除し、彩度をもつ色を均等に120色程度選択する独自の色空間である。

 
▲カメラから得られるすべての色を、上記の色群にマッピングすることにより、光学的異種性を吸収した。

限定された色空間を用いることで、カメラ特性や光源特性の影響を最小化。スマートフォンでオートホワイトバランスとオートフォーカスを有効化した場合は、極めて有効に色の正規化を行うことが可能だという。


▲元画像と色の正規化を行った後の画像の比較。


▲まずRGB空間をHSV空間にマッピング。元画像の各ピクセルの色と120の代表色それぞれの距離を、HSV空間上の“色差関数”で計算し、マッピングする。

本システムでは、すべての色彩要素は、ユーザー毎に定義される色彩リストの固定色を要素とする“ヒストグラム”として表現される。これにより、動画中の各フレームを固定長配列として扱えるようになり高速化に寄与するとともに、ユーザー環境の違いにより発生する、光学的異種性を一定程度正規化することが可能になる。



▲1回の放送話の映像の特徴を、色数(e.g.120)*フレーム数(n)のマトリクスとして表現。

色彩分析は並列性が高いプロセスであるため、クライアント側のマルチコアCPUを有効活用した実装が可能。アプリ版に加え、WebWorker+WebRTCでブラウザでリアルタイム動画分析するシステムも実装済みだという。

なぜソースが見えるWeb版で、クライアント側に映像分析させながらチェックインシステムを実装できるのか。これは、映像分析のための“色リスト”がある種の暗号キーのような役割を果たしているからである。TV放送直後にならないと、この色リストが配布されず、かつその色リストが個人ごとに異なるため、チェックインデータを他ユーザーと共有したり、チェックインデータを自動生成することができない。

次に、スケーラビリティ(サーバサイドの問題)について。TV放送と同期するシステムでは、リクエスト負荷が特定時間に必ず集中する。『GRANBLUE FANTASY The Animation』の場合は、日本全国の視聴者が、土曜24時の放送に合わせて一斉にチェックインしていた。



▲アニメ放送時の負荷の見積もりと、TV放送時間内における1秒あたりのリクエスト数。

このシステムを構築するにあたっての課題は、大きく分けて「レスポンス速度」「スケーラビリティ」「一貫性」の3つ。「レスポンス速度」に関しては、コンテンツの視聴を妨げないように、高負荷時においても50ms以内にレスポンスを返すべきである。また、「スケーラビリティ」は、30台以下のサーバ数で、ピーク時の3,000req/sec以上の負荷に対応可能に。「一貫性」に関しては1ユーザーにつき、1種類のコンテンツで1回のポイントを取得し、多重のポイント付与が行われないよう管理する必要がある。なお、これらは実際の運用の際にすべて実現し、レスポンス速度に関しては10msの性能を達成したという。

そもそも、ゲームサーバの負荷の規模はどれぐらいか。モバイルゲームは、利用者がゲーム内でアクションを起こすたびに、データベースを更新する必要がある。そのため、従来の高頻度トランザクションシステムや、SNSとの比較においても、極めて高い頻度でのデータベース書き込みを必要とする。これがゲームシステムのバックエンドとなっている。



▲従来のゲーム用スケーラブルWebアーキテクチャとサーバシステムの最小構成単位。

従来の作り方では実現不可能であるため、専用のシステムが必要になる。そこで考案されたのが「Closure-Link CGI」というCGIの作り方と、「Separeation of Exec/Write」という“実行と書き込みの分離”を実現するアーキテクチャだった。3つの課題に対する取り組みは下記の通り。

(1)レスポンス速度
Closure-Link CGIを用いた、SIMD命令の活用、二次キャッシュの効率利用による、CPU利用の高効果率

(2)スケーラビリティ
Closure-Like CGIを用いたシェアード・ナッシング・アーキテクチャによるAmazon EC2インスタンスの柔軟な増減
Amazon SQSのキューイングによる、リクエスト実行処理とDBへの反映処理の分離(Separation of Exec/Write)

(3)一貫性
Amazon Kinesis FirehoseとAmazon SQSを用いた非同期ポイント付与処理(結果整合性)


▲通常のサーバアーキテクチャとは異なり、各ノードが何も共有しないで、完全並列で動く“シェアードナッシング”を採用。

「Closure-Link CGI」とは、実行に必要なデータをすべて定数値(const)としてバイナリ内に埋め込んだ、C++で書かれた完全単独動作可能なCGIのこと。クライアントから送信されるチェックイン情報を照合するために必要なすべてのデータを、放送話毎にC++ソースとして自動生成し、CGI実行ファイルとしてコンパイル。結果出力時には、O_APPENDフラグを付けて結果ファイルを開く、アトミックなファイル書き込みのシステムコールを用いる。

「Closure-Link CGI」のメリットは2つ。1つはマルチコアCPU/SIMDを用いた場合の並列性が高いこと。C++で記述されているため、SIMD命令の活用、二次キャッシュの効率利用によるCPU利用の高効率化。本システムでは、Apache Prefork MPMによるマルチコアCPUの活用と、256bitのSIMD命令であるIntel AVX2を用いたシングルプロセスの並列化を活用している。2つ目は全CGIプロセス間でシームレスな共有メモリを実現できること。UNIXのメモリ管理におけるCopy-On-Writeの仕組みにより、実行中の同一CGIプロセスは、そのほどんどのメモリを他のプロセスと共有できる。



▲共有メモリの仕組みを解説。

CGIと聞いた際、遅いと思う方も多いだろうと倉林氏。しかし、最近のCPUは以前よりもコンテクストスイッチの性能が向上しているため、prefork multi-processは現実的な選択肢の1つだと語った。


▲全体のアーキテクチャ。

「Separeation of Exec/Write」、つまり実行と書き込みの分離とは、リクエストへの対応に必要な計算処理と、DBへの書き込み処理を完全に分離させ、非同期的に実行する方式のこと。なぜ、分離させる必要があるのか。それは、ゲームの外側の付加的なプロモーションサービスを起点に発生するDB書き込みが、ゲーム本体を止めてはいけないからである。「チェックインの可否そのものを決定する処理フロー」と、「チェックイン結果をゲーム内に反映させるフロー」を独立させ、キューイングシステムで非同期に疎結合している点も挙げられる。


▲SIMD命令を用いて並列化。512個のfloatのデータ配列を処理する際、SIMD命令では64回のループで完了する。


▲「Closure-Link CGI」と「Separeation of Exec/Write」のまとめ。

急激に成長するビジネスの現場においては、スケーラビリティの達成方法をサービスのモデルに合わせて柔軟に構築する、“システム・アーキテクチャ設計”が最も重要なファクターとなる。Cygamesは、今後も最先端技術を活用し、最高のコンテンツを安定したプレイ環境で、グローバルに提供していくと倉林氏。さらに、Cygames Researchは、そのコンテンツ開発を支えるための次世代の技術開発を大学・企業と連携しながら推進していきたいと語り、本セッションを閉めた。

 
(文・長戸勲)