ニュース

【CEDEC 2014】「剣と魔法のログレス いにしえの女神 ~スマホ時代の MMORPG を支える技術」セッションレポート

「LINEみたいなグループチャットを作って」というプランナーに答えた方法とは?

9月2日~4日開催予定

会場:パシフィコ横浜

受講料:15,000円(デイリーパス)~

 9月2日よりパシフィコ横浜にて、CEDEC 2014が開催されている。その中から今回は「剣と魔法のログレス いにしえの女神 ~スマホ時代の MMORPG を支える技術」のセッションレポートをお送りする。

 「剣と魔法のログレス いにしえの女神」は“スマホで本格MMORPGを実現”をコンセプトに開発されたスマートフォン向けのMMORPG。ドットで描かれた多彩な装備(アバター)、チャットやエモーションといったコミュニケーション機能、他のプレーヤーとのリアルタイム戦闘など、PCなどでプレイできるMMORPGに負けず劣らずの本格的なゲーム体験が楽しめる。

 実際にユーザーからも高い評価を得ており、累計300万ダウンロードを突破、「Google Play」、「App Store」の両マーケットでランキング上位を維持している人気タイトルだ。

 今回は開発を担当している株式会社Aimingから神部公輔氏、山藤智之氏、西村哲弥氏氏が登壇し、本作のクライアント、サーバーの両面から開発や運用について講演を行なったのでその内容をレポートしよう。

2Dゲームとの相性の良さからフレームワークは「Cocos2d-x」に決定

Aimingの神部公輔氏
Aimingの山藤智之氏
Aimingの西村哲弥氏

 本作はまず「スマートフォンでMMORPGを動かしたい、それもなるべく早く」という要件からスタートしたのだという。

 当初は「ブラウザ版の『剣と魔法のログレス』を使いまわすことで短期間での開発が可能では?」と考えたそうだが、仮にサーバーは使いまわせたとしてもクライアントは完全に新規開発する必要があった。

 クライアントの開発にはiOS、Androidをターゲットとしたクロスプラットフォーム開発が可能で、ブラウザ版の「剣と魔法のログレス」で作成された大量の2Dオブジェクトを表示でき、なおかつ快適にプレイできるというクライアントを作成できるフレームワークが求められたという。

 当初は「Unity」も候補に挙がったそうだが、開発が始まった2012年冬当時の「Unity」は2Dゲームの作成にはそれほど向いていなかったこと、社内のノウハウの有無などの理由もあり、開発当時に2Dゲームと相性が良かった「Cocos2d-x」が採用されたという。

 「Cocos2d-x」のメリットは2Dゲームを作るための機能が多くブラウザ版のリソースを使い安かった点と、フレームワーク自体がオープンソースという2点だという。もし技術的な問題が発生した場合でも、ソースが公開されているので原因究明や改善が容易だからだ。

 ただ言語がObjective-Cベースなので、C++系の言語とは文化が違うこと、UIのサポートが弱いというデメリットもあった。ただ「どうしてもMMORPGが作れない」といった致命的な問題はなく、コストや時間をかければ解消できたという。

 クライアントの開発時にはいくつかのオリジナル機能が追加され、差分をダウンロードするパッチシステムや、リアルタイム通信を可能にするネットワークライブラリなどが追加された。

「剣と魔法のログレス いにしえの女神」ではスマートフォンで本格的なMMORPGが楽しめる
「Cocos2d-x」のメリットとデメリット。いくつかのフレームをワークを比較した結果採用されたという

LINE風のチャットシステムはサーバー側での一工夫で実現

 続いてバックエンドのサーバー群について紹介に移った。

 「剣と魔法のログレス いにしえの女神」には多くのサーバーが使用されているが、おおまかに役割を分担すると、ユーザーアカウントを管理する「Account」サーバー、ゲームデータを保存する「Database」サーバー、フロント - エンド間のデータ同期をする「back-end」サーバー、ゲームサーバー間のデータ転送に使用する「Zone」サーバー、ゲームサーバー「Game」サーバー、大容量ファイルの転送時などに使用する「WebAPI」サーバーの6タイプから構成されている。

 よくあるオンラインゲームの構成では「Game」サーバーと「WebAPI」サーバーは同じ役割に分類されることが多いそうだが、本作では少し特殊な通信方法を採用しているので敢えて分けて表現しているのだという。

 まず「Game」サーバーはクライアントと常にセッションを張り、ゲームデータのやりとりをする。クライアント側ではマップ移動時の経路探索を、「Game」サーバーでは実際の移動の制御や、キャラクターの当たり判定、バトルデータなどを計算しクライアントにデータが送る。

 要するに重要な計算は全てサーバー側で処理をし、もしデータの改竄などでクライアントとサーバーで矛盾が発生した場合は、サーバーを常に「正」としてクライアントのデータを上書きする仕組みだ。

 そして「WebAPI」サーバーは大容量データの転送が必要な時にのみ、セッションが張られデータをやりとりする、という役割になっているという。

 なお「Account」サーバー以外はほぼ全て冗長化構成になっており、ユーザーが増えるなどの理由で負荷が高くなった際は、サーバーを平行に増やすことで負荷を分散できるような構成になっている。「可能な限り冗長化するが、技術的に困難な場合や無理なところは諦める」というスタンスだという。

 と説明してきたが、ここまでは他のオンラインゲームでも採用されている構成によく似ているスタンダードな構成だ。本作がユニークなのはここからだ。

 本作では他のプレーヤーとグループを組んでチャットをする機能があるのだが、その機能に関してプランナーから開発チームに「LINEみたいに自分がオフラインの時のグループチャットのログも取得できるようにして欲しい」という要望があったのだという。通常のMMORPGの場合はそんな機能はなく、オフラインの時のチャットログを見ることはできない。

 それでは本作はどのようにしてその要件をクリアしたのだろうか。答えは「1ヶ月程度のチャットのログを『Database』サーバーに保管する、という方法だ。全ての発言が「Database」サーバーに保管されているので、オフラインの時のチャットログもそこから参照することができるというわけだ。

 それでは具体的に発言の流れを見ていこう。プレーヤーが発言するとそのデータはまず「Game」サーバーに送られ、そこから「back-end」サーバーに転送される。そして「back-end」サーバーから全ての「Game」サーバーに発言内容が転送され、リアルタイムにログインしているユーザーには吹き出しで発言が表示される。

 上記と並行して、「back-end」サーバーに転送された発言は「Database」サーバーに保存される。そして「WebAPI」サーバー経由で「Database」サーバーに保存されている発言内容がクライアントへ送信され、その部分はチャットログとして表示される。この仕組みによりオフラインの間でもグループチャットの内容がログに表示することができる。

 こうして、クライアントは新規開発、サーバー側はブラウザ版「剣と魔法のログレス」のノウハウを一部流用という方法を用いて、「剣と魔法のログレス いにしえの女神」はサービスインした。サーバーに関しては過去資産を使いまわしたところ予想以上の負荷がかかってしまったというトラブルは発生したものの、サーバー台数を増やしスケールアウトすることで対処できたという。

 他にもクライアントの安定化や、パフォーマンスのチューニングなど、数年先を見越して今後もサービスの改善に取り組んでいくとのことだ。

 可能な部分は流用しつつ、必要な部分は新しく作り、そして“難題”とも言える「『LINE』風のグループチャットを作って欲しい」という要望にも答え、スマートフォンで遊べる本格的なMMORPGを完成させた株式会社Aimingの開発チーム。このノウハウはこれからスマートフォンでオンラインゲームを作ろう、という開発者には大きく参考になるのではないだろうか。

役割別に分けられたサーバー群
「可能な限り冗長化する」というスタンスで構成されている。負荷がかかりそうなサーバーはほぼ全て冗長化されているという
リアルタイムに表示される発言は「Game」サーバーから各クライアントへ、ログ部分の表示は「Database」サーバーから「WebAPI」サーバーを経由して各クライアントへ送られる

(八橋亜機)