Google Cloud Platform が支える、新感覚リアルタイム RPG ユニゾンリーグ - 株式会社エイチームの導入事例
2014年12月16日火曜日
スマートフォンでゲームをする人なら「レギオンウォー」や「ダークサマナー」というタイトルの RPG で、実際に遊んだことがある人、あるいは今も熱中している人も多いのではないでしょうか。
開発している 株式会社エイチーム (Ateam Inc.) は、名古屋に本社があり、エンターテインメント事業として、多くのスマートフォンやタブレット向けデジタル コンテンツの企画と開発を手がけ、一方でライフスタイルサポート事業として日常生活に密着した比較サイトや情報サイトの企画から開発、運営を行っています。
今回エイチームから、スマートフォン向けの新感覚リアルタイム RPG「ユニゾンリーグ」がリリースされました。複数のプレイヤーでリアルタイムに行われる、ギルドバトルとクエストバトル、そしてユニゾンアタック、仲間とリアルタイムにプレイすることの面白さが凝縮された RPG ユニゾンリーグ、そのバックエンドは Google Cloud Platform (GCP) で構築されています。担当された、エンターテインメント事業本部 安藤 加奈子さんにお話をお聞きしました。
今回リリースされた、ユニゾンリーグで、Google Cloud Platform を初めて利用されるそうですが、何か理由があったのですか
きっかけは、GCP の東京で行われたカンファレンス(4 月 22 日にグランドハイアット 東京で行われた Google Cloud Platform セッション)に参加したときです。そこで GCP は GCP のために作られたサーバ環境ではなくて、Google が自社のサービスのために作った環境を一般にも公開する形ではじめたサービスということと、バックボーンにあるグローバルのネットワーク帯域がかなり確保されていて、レイテンシが最小限であるという内容を聞きました。ユニゾンリーグは、日本と世界中で配信する予定のゲームでしたので、グローバルでのリージョン間の通信が速いところが魅力に感じて、使うのは初めてでしたけど、GCP を導入してみようと思ったんです。
初めてとなると困ることもあったと思いますが、どうやって進めていったのですか
あまり困った記憶はないです(笑)。インスタンスの生成とかも、コンソールから視覚的に直感的に触れるのであまり苦労しなくて、インスタンス立ち上げてしまえば普通のサーバで、好きなようにさわれますから。使いやすいのは、しばらく使わないと思ったら、そのインスタンスを削除して、また使いたくなったらスナップショットから立ち上げる。その細かい単位での使い回しがし易いことです。
リリース当初は、多くのユーザーの皆さんが利用することを想定していますが、想定よりも足りなかったときに、即座に対応できる体制は必要だと話していた中で、 同じ設定を展開する準備だけしておけば、すぐに同じサーバを追加できることはすごく魅力的です。そこはすごく大きいところです。
Google Compute Engine (GCE) インスタンス使い、どのようなアーキテクチャでユニゾンリーグは構築されたのですか
一般的な Web の、HTTP サーバがあるような構成ではなくて、WebSockets を使っています。ゲームをしている端末からHTTPのようにリクエストのたびにアクセスしにくるのではなくて、ゲームログイン時にアクセスすると、そのままずっとソケットを繋いだままにします。Java のプロセスが常時動いていて、そこに端末から直接接続しにくる形です。あとは一般的なデータベースを使っているくらいです。ロードバランサも使っておらず、ゲームにログインする前に振り分け用のプロセスに事前に接続先を問い合わせ、プロキシというよりは繋ぎ先を指示するような形で動いています。
このようなアーキテクチャは経験的なものなのですか?
エイチームは、フィーチャーフォンの時代から、フィーチャーフォン向けの MMORPG を 5 作くらい出しています。その経験があるため独自のパケットを TCP でやりとりして、リアルタイムに処理していくことには、ある程度ノウハウがあります。スケーリングに関しては当時のゲームでは、そこまで複雑なことはやっていませんでしたが、スマホのゲームでは、PCの MMO のように1 つのワールドに何百人も入るようなことをすると、そもそも画面の描画も追いつきません。そのため、従来のMMOと同じようにワールドを分けていくことになるのですが、ユニゾンリーグではワールドをユーザーには見せず、内部的に、閉じられたロビー空間というワールドに近いものを作り、どのロビー(ワールド)に行けばまだ空きがあるか、ということを動的にマッチングする方法をとりました。わりと素直な進化系なのかなと思います。ユーザーの皆さんが自分のログインするワールドを選ぶのではなく、自動的にマッチングしていく方式です。
開発プロセスだとかを含め、開発はどのように進めていかれたのですか
何かのアジャイルな開発手法を使って、だとかということはしてないです。だいたい毎週タスクミーティングといって、大きなロードマップとしていつまでにこういう機能ができている、という大きなロードマップから一週間毎のタスクに落としこんでいきます。それをこれは誰々にと担当者を割り振って進めてます。
プロジェクトごとに、プロデューサー、ディレクター、プランナー、サーバ開発者であるとか、プロジェクトに係わる人の席を近くにして、コミュケーション取りやすい環境にしているので、わりと現場手動で進めているところがあります。開発も、そのプロジェクトにいる間は変わったりしないですけど、もともと、バックエンドばっかりとか、フロントエンドばっかりというエンジニアが殆どいなくて、プロジェクト変わるたびに変わったりしているんですよ。なので両方の知識をだいたいのメンバーが持っていて、コミュケーションは取りやすいです。
今後 GCP の中で使っていきたいサービスはありますか
BigQuery は早期に導入していこうと思っています。他のタイトルも含め、常に利用状況だとかの様々な指標を分析しているのですが、それをもっと効果的に分析していけるようにしたいです。
名古屋全体が見渡せるオフィスでは、スタッフの皆さんとすれ違うたびに声をかけてくれて、理念に掲げている「みんなで幸せになれる会社」を体現しているようでした。
新感覚のリアルタイム RPG ユニゾンリーグ、Android と iOS で遊べます。
GCE も BigQueryも、GCP の全てを今なら 60 日間で $300 分のクレジットで試せます。
(ユニゾンリーグ公式ホームページはこちら: http://app.a-tm.co.jp/unisonleague/)
開発している 株式会社エイチーム (Ateam Inc.) は、名古屋に本社があり、エンターテインメント事業として、多くのスマートフォンやタブレット向けデジタル コンテンツの企画と開発を手がけ、一方でライフスタイルサポート事業として日常生活に密着した比較サイトや情報サイトの企画から開発、運営を行っています。
今回エイチームから、スマートフォン向けの新感覚リアルタイム RPG「ユニゾンリーグ」がリリースされました。複数のプレイヤーでリアルタイムに行われる、ギルドバトルとクエストバトル、そしてユニゾンアタック、仲間とリアルタイムにプレイすることの面白さが凝縮された RPG ユニゾンリーグ、そのバックエンドは Google Cloud Platform (GCP) で構築されています。担当された、エンターテインメント事業本部 安藤 加奈子さんにお話をお聞きしました。
今回リリースされた、ユニゾンリーグで、Google Cloud Platform を初めて利用されるそうですが、何か理由があったのですか
きっかけは、GCP の東京で行われたカンファレンス(4 月 22 日にグランドハイアット 東京で行われた Google Cloud Platform セッション)に参加したときです。そこで GCP は GCP のために作られたサーバ環境ではなくて、Google が自社のサービスのために作った環境を一般にも公開する形ではじめたサービスということと、バックボーンにあるグローバルのネットワーク帯域がかなり確保されていて、レイテンシが最小限であるという内容を聞きました。ユニゾンリーグは、日本と世界中で配信する予定のゲームでしたので、グローバルでのリージョン間の通信が速いところが魅力に感じて、使うのは初めてでしたけど、GCP を導入してみようと思ったんです。
初めてとなると困ることもあったと思いますが、どうやって進めていったのですか
あまり困った記憶はないです(笑)。インスタンスの生成とかも、コンソールから視覚的に直感的に触れるのであまり苦労しなくて、インスタンス立ち上げてしまえば普通のサーバで、好きなようにさわれますから。使いやすいのは、しばらく使わないと思ったら、そのインスタンスを削除して、また使いたくなったらスナップショットから立ち上げる。その細かい単位での使い回しがし易いことです。
リリース当初は、多くのユーザーの皆さんが利用することを想定していますが、想定よりも足りなかったときに、即座に対応できる体制は必要だと話していた中で、 同じ設定を展開する準備だけしておけば、すぐに同じサーバを追加できることはすごく魅力的です。そこはすごく大きいところです。
Google Compute Engine (GCE) インスタンス使い、どのようなアーキテクチャでユニゾンリーグは構築されたのですか
一般的な Web の、HTTP サーバがあるような構成ではなくて、WebSockets を使っています。ゲームをしている端末からHTTPのようにリクエストのたびにアクセスしにくるのではなくて、ゲームログイン時にアクセスすると、そのままずっとソケットを繋いだままにします。Java のプロセスが常時動いていて、そこに端末から直接接続しにくる形です。あとは一般的なデータベースを使っているくらいです。ロードバランサも使っておらず、ゲームにログインする前に振り分け用のプロセスに事前に接続先を問い合わせ、プロキシというよりは繋ぎ先を指示するような形で動いています。
このようなアーキテクチャは経験的なものなのですか?
エイチームは、フィーチャーフォンの時代から、フィーチャーフォン向けの MMORPG を 5 作くらい出しています。その経験があるため独自のパケットを TCP でやりとりして、リアルタイムに処理していくことには、ある程度ノウハウがあります。スケーリングに関しては当時のゲームでは、そこまで複雑なことはやっていませんでしたが、スマホのゲームでは、PCの MMO のように1 つのワールドに何百人も入るようなことをすると、そもそも画面の描画も追いつきません。そのため、従来のMMOと同じようにワールドを分けていくことになるのですが、ユニゾンリーグではワールドをユーザーには見せず、内部的に、閉じられたロビー空間というワールドに近いものを作り、どのロビー(ワールド)に行けばまだ空きがあるか、ということを動的にマッチングする方法をとりました。わりと素直な進化系なのかなと思います。ユーザーの皆さんが自分のログインするワールドを選ぶのではなく、自動的にマッチングしていく方式です。
開発プロセスだとかを含め、開発はどのように進めていかれたのですか
何かのアジャイルな開発手法を使って、だとかということはしてないです。だいたい毎週タスクミーティングといって、大きなロードマップとしていつまでにこういう機能ができている、という大きなロードマップから一週間毎のタスクに落としこんでいきます。それをこれは誰々にと担当者を割り振って進めてます。
プロジェクトごとに、プロデューサー、ディレクター、プランナー、サーバ開発者であるとか、プロジェクトに係わる人の席を近くにして、コミュケーション取りやすい環境にしているので、わりと現場手動で進めているところがあります。開発も、そのプロジェクトにいる間は変わったりしないですけど、もともと、バックエンドばっかりとか、フロントエンドばっかりというエンジニアが殆どいなくて、プロジェクト変わるたびに変わったりしているんですよ。なので両方の知識をだいたいのメンバーが持っていて、コミュケーションは取りやすいです。
今後 GCP の中で使っていきたいサービスはありますか
BigQuery は早期に導入していこうと思っています。他のタイトルも含め、常に利用状況だとかの様々な指標を分析しているのですが、それをもっと効果的に分析していけるようにしたいです。
名古屋全体が見渡せるオフィスでは、スタッフの皆さんとすれ違うたびに声をかけてくれて、理念に掲げている「みんなで幸せになれる会社」を体現しているようでした。
新感覚のリアルタイム RPG ユニゾンリーグ、Android と iOS で遊べます。
GCE も BigQueryも、GCP の全てを今なら 60 日間で $300 分のクレジットで試せます。
(ユニゾンリーグ公式ホームページはこちら: http://app.a-tm.co.jp/unisonleague/)
名古屋が誇るエイチームが世界に発信するために先取の精神にあふれている所が、同じ名古屋の人間として誇らしい!
返信削除