Cygames Research研究日誌 #2 ~Shadowverse Portalのデッキコードの秘密~

サイマガ読者のみなさま、こんにちは。
Cygames Research所長の倉林 修一です。Cygames Researchとは、最高のコンテンツを生み出すためにサイゲームスが設立した基礎技術研究所で、この連載記事では、当研究所での研究成果や活動をご紹介しています。連載第1回では、当研究所の設立の経緯や趣旨をご説明させていただきましたが、お楽しみいただけましたでしょうか。

連載2回目にあたる今回は、すでに世の中で広く使われている研究成果として、サイゲームスの企業内研究所 Cygames Researchが目指すものとは?でもご紹介した「Shadowverse Portal(シャドウバースポータル)」のデッキコードについてお話ししたいと思います。

技術的にはシンプルなものですが、ユーザーのみなさまに広く受け入れていただけた技術の代表として、また、誰でもわかる仕組みの技術として、最初に紹介させていただくことにしました。いきなりラムダ計算の話とかをしてドン引きされるのは、大学の授業だけで良いかな、と個人的には思っています。

少ない文字数で40枚のデッキ情報を表現
デッキコード誕生の背景と目指したゴール

さて、サイマガ読者のみなさまはご存知かとは思いますが、『Shadowverse(以下、シャドバ)』はスマートフォンやPCでプレイできる、対戦型オンラインTCGです。プレイヤーは、数多くのカードから、創意工夫して40枚を選び「デッキ」と呼ばれるカードの組み合わせを準備し、それを用いて他のユーザーと1対1のバトルを行います。デッキを準備するときの未来を見通す戦略と、対戦中にその場で判断する戦略の、二つの戦略が交差する熱さが対戦ゲームの魅力です。このようなTCGでは、「デッキを組む」という行為が、戦略上極めて重要な要素になっています。そのため、SNSなどでは、デッキ構築に関する情報が、ユーザーのみなさまの間で頻繁に交換されており、デッキ情報を効率的に流通させるための仕組みが求められていました。

▲「デッキコード」という単語のGoogleでの検索ボリュームの推移(出典:Google トレンド)。サービス開始以降、デッキコードの需要が高まっていることがわかります

また、スマートフォンの画面で40枚のカードを選ぶのは、結構大変です。PCやタブレットなどの大画面でデッキを構築した後に、それを即座にスマートフォン上のゲームアプリに転送する仕組みも必要でした。デッキの構築は、特にTCG初心者にとっては敷居が高く、「他の人が作成したデッキや、公式が用意したデッキをその場ですぐに試せる仕組みは、ゲームを盛り上げていく上で必要不可欠だ」と『シャドバ』開発チームは考えていました。

▲掲示されたデッキコードを見た人が認識できたり、同じ場にいるプレイヤー同士が伝えられたりといった仕組みが求められていました

シャドウバースポータルのサービス開始にあたり、私たちが直面していた課題は、次の2点に集約できます。

1.マルチプラットフォームで同じ操作性を担保すること
スマートフォンからスマートフォン、PCからPCだけでなく、PCからスマートフォンのような、異なるプラットフォームでも、統一的な方法でデッキを流通させる機能が必要。

2.オフラインでの情報流通性を担保すること
eスポーツ会場のような場所で、口頭でデッキ情報を伝えられるような仕組みが必要。

一言で言うと、「口頭で言える長さの文字で、40枚のデッキの組み合わせを表現する技術」を確立すること、が研究としての課題でした。

解決策の検討と発想の転換
「デッキ」ではなく「データを閲覧する行為」にIDを付与

しかしながら、仮に1000枚のカードから、無作為に40枚のカードを選ぶとき、重複の上限などを考えない単純計算では、1000の40乗(=1000 × 1000 × 1000 × …を40回繰り返した数)に近い数の組み合わせがあり、単純にカードの組み合わせにIDを振ることは不可能です。カード一つ一つに極力短いIDを付与して、そのIDを連結したものをデッキコード とする、という方法もありますが、それでは、デッキコード が最低でも40文字を超えてしまいます。
二次元バーコードを使用するのは良いアプローチですが、PCで二次元バーコードを読みとるのは難しく、マルチプラットフォームで同じ操作性を実現することができません。このように、デッキコード を、「口頭で言える長さにする」という目的は、なかなか一筋縄では達成できない課題なのです。

そこで、当研究所では、「デッキにIDを振るのをやめよう!」という、一見すると無茶苦茶とも言える決断をしました。数学的には極めて膨大な組み合わせを持つデッキにIDを付与していくと、長期間のサービス運用でデッキコードの数が破綻することは明らかなので、現実的ではないと判断したのです。代わりに、当研究所が開発した技術が「ポータルサイトにアクセスしているネットワーク接続そのものにIDを付与する」という技術です。

ユーザーの方はデッキの中身を確認せずにデッキコードを入力することはなく、また、同じようにデッキの中身を確認するときにはサイトを見ているはずです。したがって、そのサイトを閲覧しているネットワーク接続そのものにIDを付与するだけなら、英数4文字でデッキを識別できる、と気付いたのです。また、サイト閲覧中は、ネットワーク接続を維持するように特別な実装をしてあるので、ユーザーがデッキを閲覧している間はずっとデッキコードを維持することもできます。

▲デッキコードの仕組みを簡易的な図にしたもの

このような、ネットワーク接続にIDを付与するという仕組みが、現在のシャドウバースポータルのデッキコード の基礎になっています。当研究所では、Cygamesのサーバーサイド (みなさまのスマートフォンやPCから接続している、ネットワークの向こう側にあるコンピューターのことです)を徹底的に調査・研究したときの知見があったため、ネットワーク接続を識別する仕組みを導入することは容易だと判断することができました。

技術的に正確に記述すると、ちょっと込み入った表現になるのですが、次のようにデッキコードを定義できます。(技術的な中身に興味のない方は読み飛ばしていただいて全く問題ないです)

・デッキコードは、ゲーム内のデータを様々なメディア上で流通させる際に用いる識別子(コンテントベーストID)と、データをゲームアプリに読み込ませるときに用いる識別子(コネクションベーストID)を独立させ、この2つの識別子の対応関係を動的に管理する2段階ID管理方式により、情報の表現能力と入力の容易性を併せ持つデータ流通・入力を実現する。

・具体的には、デッキを識別する、すなわち、ゲーム内の状態を一意に識別するIDを、URL文字列内にエンコードしたものを流通用の識別子として用いる。このIDを、コンテントベーストIDと呼ぶ。コンテントベーストIDは、内容依存の一意性を有し、異なるユーザが作成したデータであっても、ゲーム内の状態が同一の場合は、必ず同一のIDになる。そして、ゲーム内の状態が異なる場合は、必ず異なるIDが生成される。なお、このURLは永続的なので、二次元コードなどに変換しても良い。また、印刷物などのさまざまな媒体に掲載することもできる。

・ユーザーがこのコンテントベーストIDのURLをWebブラウザなどで閲覧し、コネクションが成立している期間だけ、すなわち、当該のデッキがWebで閲覧されている期間のみ有効な一時的な識別子を、4文字程度の文字列として生成し、コンテントベーストIDと紐づけ、ユーザーに提示する。この、閲覧中だけ生成される識別子を、コネクションベーストIDと呼ぶ。このコネクションベーストIDは、口頭で表現できる程度に短く単純であるため、ユーザーは、口頭やチャットで即座に共有し、ゲーム内で入力するだけで、対応するゲームデータを取得することができる。なお、複数のユーザーが、同一のデッキを閲覧している場合は、システムは同一のコネクションベーストIDを複数のユーザーに提示して良い。

・ユーザーがブラウザなどを閉じて、URLへのアクセスをやめると、コネクションベーストIDとコンテントベーストIDとの関連付けを解除する。複数のユーザーがコネクションベーストIDを共有している場合は、参照カウントというメカニズムでコネクションベーストIDの寿命を管理する。これにより、4文字の識別子を再利用することができる。

こんな感じの技術です。ネットワーク接続にIDを付与するという仕組みにより、当社のデッキコードは、高いスケーラビリティと拡張性、そして、何よりも、口頭でデッキを伝えることができる、という大きなアドバンテージをユーザーのみなさまにご提供できています。

これまでご説明したように、デッキコードは、デッキという複雑な情報を簡単にやり取りするための基盤的な技術になっているのです。この技術の普及は、研究者の想像を超えたデッキコードの使われ方を生み出しており、適当にランダムなデッキコード を4文字入れて、そこで出てきたデッキでバトルするなどの、一風変わった遊び方で楽しんでくださっているユーザーの方もいらっしゃるようです。なお、この仕組みは、当社独自の技術として特許化されています。世界中のユーザーのみなさまが、デッキコードを毎日活用してくださっているようなので、私としても、大変うれしく思っています。みなさまの日々のプレイに感謝申し上げます。


さて、若干、技術的な話も入ってきましたが、いかがでしたでしょうか。
デッキコード のように単純そうに見える仕組みの背後にも、意外と込み入った技術があることを感じていただけたでしょうか。
当研究所の目的は、込み入った技術を開発することではなくて、「すぐに覚えて入力できる4文字程度でデッキを伝えたい」というようなシンプルな思いを、さまざまな技術を駆使して実現することにあります。全ては、ユーザーのみなさまが、より快適に、そして、より楽しくゲームをプレイしていただけるようにするためです。研究はそのための手段でしかありませんが、手段もたまには中身を覗いてみると、面白い要素があるかもしれません。

さて、次回は、当社での研究がどのように行われているのか、特に、ゲーム開発の現場と研究所がどのように連携しているかというチームワークについてお話しできればと思います。お楽しみに。