2011-01-12 15 views
8

Travianに似たオンライン戦略ゲームのアイデアがあります。私がまだ理解していないコンテンツや、私がまだ知らない他のいくつかの課題があります。ブラウザベースのオンラインゲームのプラットフォームとしてRuby on Railsを選択する

これは非常に大きなプロジェクトであり、熟練したWeb開発者ではない(まだ)1人にとって重すぎるかもしれません。私はまだそれを打つことを望むだろうが、私はプラットフォームを選ぶのに困っている。最近では、世界の "スケール"がたくさん投げられ、Ruby on Railsがスケールされていないので、私はここに来て答えを得ました。

私はRubyとRailsの両方のRuby on Railsが好きです。私は確かにそれで専門家ではないが、私はそれを扱うことが大好きです。私も以前にPython + Djangoを使って作業していましたが、PHPを使って作業しています(私は好きではありません)。

理想的には、ゲームは1サーバーあたり7000人のプレイヤー、 。 RoRはまだ実行可能なプラットフォームですか?

この質問があいまいな場合は申し訳ありませんが、私は "RoR is fine、go at it!"を探しています。答えの一種。追加したいことがあれば何でもいいです。

ありがとうございます!

+6

スケーラビリティを心配する前に、7000人のプレイヤーがゲームをプレイするようにしてください。 – elmt

+0

もちろんelmt。私は、理想的に言えば、今から1年か5年後にはこれが成功すると思っていたということです。 ;) –

+0

@elmt "スケーラビリティについての心配"については同意しますが、それでも有効な質問です。 – Oddmund

答えて

6

だから私がnode.jsのようなノンブロッキングサーバーを探しているのは、長い間多くの接続を開いておくのに適しているからです。これはゲームで何をする必要があるのか​​、従来のWebサーバーと比較して

あなたはWebアプリケーションのスケーリングされたときに心配する3つの主なものがあります

言われていること。メモリ、実行速度、およびio(hdおよびネットワーク)の順に表示されます。

メモリのために、以前よりもはるかに優れています。 Phusion Passengerは、コピーオンライトを使用して作業者をフォークしているため、レール環境は特定のスライス上のすべてのワーカー間で共有されます。これはかなり重要です。 Rubyが "暗い時"に比べてメモリを管理する方法にも大きな改善がありました。もしあなたが1.8.7を使用しているなら、あなたはRuby Enterprise Editionを構成するパッチを使用したいでしょう(その違いは夜と同じです) 。 1.9.xは、ランタイムの完全な書き換えであったため、もしあなたがそれを使用しているのであれば、ルビは既に対処されていたメモリ問題です。

実行速度については、少なくともガベージコレクション設定を調整した後は1.8.7が「十分に速い」ことが一般的です。 1.9.2は、実際にはPythonとほぼ同じ速度です。これは、インタープリター言語のより速い部分に置きます。この点の重要性は、アプリケーションの性質によって決まります。

最後の点はIOですが、これは実際にはレールの懸念事項ではありませんが、永続化戦略の詳細です。 Rubyistsは新しいことを愛する傾向があるので、あなたはredisやmongodbのようなもののためのファーストクラスのサポートを見つけるでしょう。あなたがいたら私はmongoを調べ、耐久性のトレードオフが許容できるかどうかを見ます。

私はjava /にいました。あなたがインフラストラクチャのためのより多くを支払うつもりですが、その量は、あなたが開発時に保存することによって完全に小さくなります。

+0

これは私が聞きたい答えのようなものです。いくつかの一般的な意見やヒント。本当にありがとう! =) –

+0

"Phusion Passengerはコピーオンライトを使用して作業者をフォークしているので、レール環境は特定のスライス上のすべてのワーカー間で共有されます。しかし、コピーオンライトは、Ruby Enterprise Editionでは1.9.2では不可能です。ではない? –

1

あなた自身が言ったように、あなたはすでに答えを持っており、勇気づける言葉を探しているだけです:)。私はRoRの専門家ではありませんが、スケーラビリティはまだこのプラットフォーム上で大きな問題ではないと思います。私はあなたにアーキテクチャのスパイク(XPの用語)をするよう助言します。作成する予定のものと同様の操作を実行する7000のクライアントとメソッドを持つテストを作成します。たとえば、ファイルを読み込んだり、ビューをレンダリングしたり、待っていたりすることもあります。重要なのは、気になるものだけをテストすることです。がんばろう!

6

これをRailsでビルドし、Heroku.comでホストしてください。それがどのように機能するのか心配する必要がなく、非常に人身売買されたFacebookアプリをたくさんホストしているので、それを処理する以上のことができます。

+0

ニース。 Herokuについて知りませんでした。 –

+0

私はHerokuについて知っていましたが、そこに私のアプリをホスティングすることは決して考えませんでした。先端に感謝します。 –

+0

スケーラビリティに関する豊富な経験がない新しい開発者として、あなたのボトルネックはあなた自身のコードから来ていることがわかります:冗長なリクエスト、必要なときにモデルをメモリにロードする、add_indexを忘れるなどより多くの経験を積むにつれてリファクタリングすることを学ぶこと。多くのユーザーがいれば、データベースのIOは次のボトルネックになりますし、使用しているフレームワークに関係なく問題になります。私もHerokuをお勧めします。あなたのスケーリングをアウトソースして、開発に時間を費やすことができます。スケーリングを自動化することもできます:https://github.com/ddollar/heroku-autoscale – danneu

0

これは、レールがあなたがしたいことに適しているかどうかを知るために、あなたがやろうとしていることについてさらに多くのことが必要になるため、答えが不可能な質問です。情報がない場合に私が与えることができる最高のアドバイスは、railslab scaling videosをチェックして自分で解決することです。

関連する問題