![]() | ![]() | ![]() |
Amitt Mahajan氏 | FarmVille | 2つの目標 |
『FarmVille』は僅か5週間という開発期間の中で、11名のスタッフによって制作されました。プログラマーが6人、アーティストが2人、プロデューサー/デザイナーが3名という構成です。そんな『FARMVILLE』は運営開始から24時間で1万8000人のユーザーを集め、4日後には早くも100万ユーザーを突破しました。今日ではインストール数では1億1000万人以上、3100万人が毎日遊ぶというゲームになりました。
このような急成長の影には多くの困難があったのは想像に難くありません。Zyngaのチームでは、ゲームの開発にかける時間を極力短くする、何百万人のユーザーにも提供可能なスケーラビリティを実現する、という2点に腐心したそうです。
まずゲーム開発のスピードを上げるという点では、サーバー側にPHP、クライアント側にフラッシュを採用。この2つは多くの開発者が使いこなす事の出来るメジャーな言語です。また、デザインには余りこだわらないことでスピードを上げました。さらに、XMLを使ってデザイナーでもゲームをデザインできるような仕組みを設け、プログラマーが関わる部分を減らし、効率化を図っています。
スケーラビリティの実現では、クライアント側とサーバー側の双方にネットワークレイヤーを置き、複数のリクエストを一度に送信できるようにすることでロード時間を約50%削減しています。また、Facebook APIの使用を専用のソーシャルネットワークラッパーで行うようにして負荷を抑えています。また、そうすることで他のプラットフォームへの移植を容易にしています。ウェブサーバーはクラウド側に置き、負荷に応じてすぐに増強できる構成になっています。
![]() | ![]() | ![]() |
サーバー構成 | ネットワークレイヤー | ソーシャルネットワークラッパー |
ロード時間の短縮にはリモートコールの徹底した排除や、ソーシャルネットワークラッパーの中の遅いFacebook APIの呼び出しや、DBラッパーの中のSQLなどをキャッシュすることで対処しています。
これらの工夫を重ねたとしても負荷が高まりサーバーが落ちてしまう事態は考えられます。ZyngaではNagiosやMuninを使って常にサーバーの負荷を監視しています。ロード時間/トラフィックのグラフ、Memcacheの解放回数などをチェックしているようです。
講演内容は基本的な方法論をきちんと実践しているという印象で、世界最大のソーシャルゲームであっても、対処の仕方は普通のソーシャルゲームと変わらないようです。スケールできるサーバー構成にする、キャッシュするなどして負荷を減らす、それでも落ちたら迅速に反応できる監視体制を作る。絶えず地道な改善をすることこそ多くのユーザーを抱えるゲームに必要なものなのかもしれません。
Mahajan氏は最後に「ソーシャルゲームは短距離走ではなくマラソンです。長い勝負になります。ロンチの前日はしっかり寝て備えるようにしましょう」と笑いを取りながら講演を締めくくりました。