SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

イベントレポート

グリーCTOが語る、大規模ソーシャルゲーム開発の舞台裏

携帯ソーシャルゲームを支えるサーバーサイド技術の工夫

  • このエントリーをはてなブックマークに追加

 9月1日、ゲーム開発者向けカンファレンス「CEDEC 2010」において、SNS「GREE」を運営するグリー株式会社(以下 グリー)が『大規模ソーシャルゲームのつくりかた ~60分でわかるサーバサイド技術~』と題するセッションを講演した。一日あたり億単位のトラフィックス捌くインフラはどうなっているのか。技術者2名によって解説されたインフラ構築のノウハウや、ソーシャルゲームと一般のオンラインゲームとの違いについて紹介する。

  • このエントリーをはてなブックマークに追加

 9月1日、ゲーム開発者向けカンファレンス「CEDEC 2010」において、SNS「GREE」を運営するグリー株式会社(以下 グリー)が『大規模ソーシャルゲームのつくりかた ~60分でわかるサーバサイド技術~』と題するセッションを講演した。

 一日あたり億単位のトラフィックを捌くインフラはどうなっているのか。技術者2名が解説したインフラ構築のノウハウや、ソーシャルゲームと一般のオンラインゲームとの違いについて紹介する。

オンラインゲームとソーシャルゲームとの違い

 最近テレビCMでも目にする機会が多くなってきたSNS(ソーシャルネットワーキングサービス)の「GREE(グリー)」。2010年6月時点の数字で、会員数2059万人、月間353億ページビューという言わずとしれた大人気サイトだ。中でも携帯電話向けソーシャルゲームが特徴的で、専用機向けのゲームと比べるとコアゲーマー以外のプレイヤーも多く、利用規模の爆発につながりやすい。実際、サーバー台数は数千台規模、ピーク時の最大同時接続数は画像を除いて1万を超えるという。

 セッション前半では同社の増山和幸氏が、現在稼動中のアプリを題材にコンシュマー向けオンラインゲーム(ここではサーバー常時接続型)と携帯ソーシャルゲームとの比較を行い、大規模ソーシャルゲームのシステム構築に考慮すべきポイントを総括した。

グリー株式会社 プラットフォーム開発本部 リーダー 増山和幸 氏:
以前大手ゲーム会社でゲームサーバーのプログラミングを担当していた経験がある
グリー株式会社 プラットフォーム開発本部 リーダー 増山和幸 氏:以前大手ゲーム会社でゲームサーバーのプログラミングを担当していた経験がある

システムの構成はほぼ同じだが、いくつか特徴が異なる

 まずシステム構成についてはオンラインゲームとソーシャルゲームで大きな差異はないと述べ、アクセスの非同期/同期、ステートフル/ステートレス、世界の境界のあり/なし(オンラインゲームでは接続するサーバーでユーザーが区分けされることが多い)、要求されるレイテンシの度合いといった両者の違いを説明した。

 アクセスはどちらも夜から深夜にかけて増える傾向があるが、ソーシャルゲームではさらに朝8時、昼12時前といった通勤通学、昼休みの時間帯も伸びる傾向があるようだ。

構成の違い(左:オンラインゲーム、右:ソーシャルゲーム):
クライアント(Webブラウザ)、プロキシ、フロントエンドサーバー(Webサーバー)、バックエンドサーバー(DBサーバー)、と大きな違いはない
構成の違い(左:オンラインゲーム、右:ソーシャルゲーム):クライアント(Webブラウザ)、プロキシ、フロントエンドサーバー(Webサーバー)、バックエンドサーバー(DBサーバー)、と大きな違いはない
特徴の比較(左:オンラインゲーム、右:ソーシャルゲーム)
特徴の比較(左:オンラインゲーム、右:ソーシャルゲーム)

オンラインゲームの特徴は「リアルタイム性」

 続いて「釣り★スタ」というアプリを例に、より具体的な違いが解説された。釣り★スタは、3名のエンジニアで作成し2007年5月にリリースしたFlash Lite製の釣りゲームで、最大同時プレイヤー数は25万人。釣り場が分かれている、レベルが上がると釣り場の選択肢が増える、釣果に応じたポイント取得やランキング更新がある、といったゲーム性を有している。

 これをオンラインゲームとして作る場合、まず釣り場ごとにフロントエンドサーバーを用意し、ユーザーのプレイ開始から終了までプロキシーサーバーはクライアントおよびフロントエンドサーバーと常時接続する。ログイン時には、バックエンドサーバーから必要なデータをフロントエンドサーバーのメモリーにロード(ソーシャルゲームと一番異なる部分)。釣り上げに成功したらメモリー上でデータを更新。ランキングなどの全体に関わるデータだけ先にバックエンドサーバーに送信して、結果をフロントエンドサーバーにプッシュして戻し、クライアントにも状態変化を伝える。即時性が必要のないデータは後からバックエンドサーバーに反映する、といった一連の処理が行われる。

 このシステムの最大の特徴は「リアルタイム性」にあり、同じサーバーに接続しているプレイヤーどうしでチャットや協力プレイが行える。一方、一台あたりのサーバーリソースに限界があるため、同じ釣り場(サーバー)で遊べる人数の制限や、異なるフロントエンドサーバーに所属するユーザー間の隔たり、といった問題を抱えている。

コンシュマー向けオンラインゲームで作る場合の構成例:
プレイヤーは特定のフロントエンドサーバーに接続する
コンシュマー向けオンラインゲームで作る場合の構成例:プレイヤーは特定のフロントエンドサーバーに接続する

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
ソーシャルゲームはデータアクセス対策が要

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
イベントレポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5433 2010/09/13 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング