オンラインRPG「Gladiators」を作りました

昨年12月30日に上の記事を公開して「Gladiators」の運営をスタートし、1ヶ月経ちました。ものすごくユーザ数が多いというわけではないですが、登録ユーザの定着率は高く、何百時間とプレイしてくれているユーザもいてそれなりに順調です。

現在の高レベルプレイヤーランキングはこんな感じです。



早くもレベル100を超えるプレイヤーが出てしまったのは想定外でしたが、たまに1時間ぐらい遊ぶプレイヤーもいれば、毎日5時間、休日は10時間とか遊んでくれるプレイヤーもいるわけで、前者がその1時間で2、3レベルぐらいは上がるようなゲームバランスにしてしまえば、後者はすぐにレベル100ぐらい行っちゃうということですね……。普通のRPGなら他のプレイヤーとの絡みはないので、レベル格差が生じたところで気にする必要はないんですが、オンラインRPGではのんびりプレイする人とやり込む人が同じ世界で遊ぶことになるので難しいところです。時間による格差を埋めようと思ったら、やはり以前に書いた記事みたいなゲームシステムが必要になるのかも知れません。

glaさて、運営初日にまず直面したのは「アクセス過多で死ぬほど重くなる」という問題でした。酷いときはページが表示されるまで常に10秒はかかる有様です。

以前ブログに1日1万ぐらいのアクセスがあったことは2度ほどあったんですが、その時のサーバ負荷は何ということはありませんでした。考えてみれば、1日1万なんてのは1時間あたりで見れば400ちょっとでしかありません。これは1分あたりだと6、7回なので、つまり10秒に1回ぐらいです。

Gladiatorsのサーバは何の変哲もない普通のパソコンですが、今日のパソコンと家庭用光回線なら10秒に1度アクセスがあったぐらいではびくともしないであろうことは自明の理です。もっとも、実際のアクセスは均等には分布しないので、多いときは1秒に1回とかいったアクセスが来たこともあったかも知れませんが、その程度ならなんということはありません。

しかし、オンラインRPGのアクセスはこんな甘っちょろいものじゃありませんでした。Gladiatorsではプレイヤーはゲームをしている時は5秒に1回ぐらいアクセスをするので、ユーザがたった一人でも、ブログに1日1万アクセスあった時と変わらないぐらい負荷がかかります。しかも、初日から良いペースでアクセスがあり、最初の24時間で登録ユーザ数がほぼ200に達し、中には10時間以上ぶっ続けで遊んでくれているようなユーザもちらほらいたので、最終的に初日のページビューは67,766(※)も行ってしまいました。これは月間200万ページビューに達するペースです。

(※)正確には、12/30 22:30 〜 12/31 24:00 までの25時間半のページビュー。Google Analyticsによる計測なので、クローラーのアクセスなどは含んでいないため、サーバへのアクセスという意味ではもっと多かったはずですが、そこは統計を取っていないので不明。ついでにその他のGoogle Analyticsのデータを開示すると、セッション数928、平均ページビュー73、平均滞在時間23分、直帰率22%でした。

このアクセス過多によりGladiatorsは初日から死ぬほど重いサービスになってしまいました。なんとか解決できないかと色々試してみましたが、最終的に効果があったのは「取得するレコード数を減らすこと」「検索条件、ソート条件にインデックスのついているカラムを使用すること」でした(これは運営を手伝ってくれている友人のアドバイスで試してみたものです。持つべきものは良い友人ですね)。ひとりでテストをやっている時はデータ量が少ないので何ともなかったんですが、多くなってくるとデータベースの使い方のまずさが露呈しますね。

ちなみに、Gladiatorsは「Ruby on Rails」で作られています。国産プログラミング言語「Ruby」を使ったWebアプリケーションフレームワークです。「twitter」もこのRailsで作られているようですが、速度の問題があって、今はフロントエンドだけがRailsで、後ろではScalaを使っているとかいう話ですね。RailsでオンラインRPGを作ったというのはたぶん珍しいと思うんですが、世の中広いですから他にもあるんでしょうか?もしご存じの方がいたら教えて下さい。

その他の環境としては、OSはUbuntuサーバ版なんですが、実はVMware上で動かしていて、ホストOSはWindows XP Professionalです。たぶんユーザが増えてくると耐えられなくなると思うので、早いうちに仮想OSではなく普通のOSの上で動かすようにしたいと思います。既にサーバは秋葉のソフマップで調達したので、さっさとセットアップしたいところです。

今日はさきほど新マップ、新モンスター、新アイテムを投入し、モンスターの攻撃パターンを多数追加するアップデートをしました。実装はちゃくちゃくと進んではいるんですが、まだ肝心の携帯電話対応ができていないので(iPhoneでプレイしている方はいます)そろそろ着手したいなーという感じです。

このGladiatorsは、ブラウザでのテキストベースのオンラインRPGというものが成立し得るのか、という根本的なところから実験的なゲームですが、現在のところそれなりに上手く行っています。まだまだ問題は山積みですが、携帯でもPCでも(もっと言えばiPhone、iPad、DS、Wiiでも)プレイできるマルチプラットフォームなオンラインRPGとして、たくさんのユーザにプレイしてもらえるよう地道に開発を続けて行きたいと思います。