2009-03-12 18 views
4

オンラインマルチプレイヤーソーシャルゲームの開発を考えています。ソーシャルマルチプレイヤーブラウザゲームのアーキテクチャ(バックエンドの選択+フロントエンドの選択[フラッシュ/シルバーライト])

サーバー上の
  1. 速いゲームエンジン(例えばC++)といくつかのフロントエンド言語(PHP/Pythonの/ルビー):潜在的な解決策があるように見えるので、世界の共有状態は、バックエンドで高速な何かを必要とします(ねじれ又はスタックレスのpythonを使用して)Pythonで+フラッシュ

  2. 全体スタック+フラッシュ

  3. .NET(asp.netまたはasp.netのMVC)+フラッシュ

  4. .NET +シルバー

最初のものは、ビューの生産性の点から、過剰(3異質層)

Nr個であってもよいです。図4は、プログラマの天(すべてのレイヤー上の共通の環境)かもしれませんが、:そのような事は今までのSilverlightで構築されていない

  • 、多分コーナー
  • の周りに隠れて、いくつかの致命があるSilverlightを見つけるのは難しいかもしれデザイナー
  • SLフルOOアーキテクチャーと比較してFlashムービー/クリップモデルが批判されているにもかかわらず、外部デザイナーによって仮想世界の余分な部分をデザインすることには利点はありませんか?彼らは単に.swfを準備することができます。 4フレームのアイテムの4つの視点 - SLでは難しくないでしょうか?
  • Silvelightが明らかに(衝突検出など)いくつかのゲームの特徴に欠ける

あなたはどう思いますか?

[編集]ゲーム自体はより大きなポータルの一部になります。そのため、エンジンといくつかのWebフレームワークを統合するのが良いでしょう。

+0

大文字で文章を始めることができますか?最後に句読点を使用して再フォーマットしてください。博覧会に続き、あなたの質問を見つけることができますか?これはTwitterではなく、非常にはっきりと書くのに役立ちます。 –

+0

[多数の編集を適用し、2種類の箇条書きを質問に挿入した後に]はいはい! – aaimnr

答えて

3

オプション2 - スタックレスPythonを使用する - Eve Onlineが使用するものです。

http://support.eve-online.com/Pages/KB/Article.aspx?id=128


編集

あなたは実際のソフトウェアを持ってまで、もちろん、それが合理的に実行アーキテクチャを作成することは不可能です。だから、ここでの判断は単に空想的な推測です。

しかし、以下を考慮してください。

  1. 静的コンテンツ(.jsファイル、.css、.pngなど)は、ネットワーク帯域幅を支配する傾向があります。これを処理するには、リバースプロキシサーバー(例:squid)を使用する必要があります。

  2. イカはどこかからコンテンツを取得する必要があります。軽量のファイルサーバーが静的なコンテンツをsquidに提供したい場合。 Nginxまたはlighttpdまたは何か。 Apacheはこのためには動作しますが、ある程度は過度の動作になるかもしれません。

  3. あなたの動的コンテンツは、2つの形式で表示されます。

    • ゲームをサポートするJSON。

    • ポータルをサポートするHTML。

    これは、mod_wsgiエンジンで最も幸せになるでしょう。 Apacheは確かにこれを行います。 ngingnxとlighttpdも機能するかもしれません。

    • あなたのJSONのものは1組のURIである必要があります。 RESTは良いデザインパターンです。 mod_wsgiを通じて、これらはゲーム指向のサーバに接続します。必要に応じてスタックレスのPythonを使用します。フロントエンド(Apacheなど)には、これらのURIをフィルタリングしてゲームに役立つmod_wsgiデーモンにルーティングする場所、ディレクトリ、または仮想ホストがあります。これを構築するにはWekzeugを見てください。

    • あなたのHTMLのものは別のURIのセットです。 mod_wsgiを通して、これらは従来のPythonを実行するDjangoサーバに接続します。フロントエンド(Apacheなど)には、これらのURIをフィルタリングしてmod_wsgiデーモンにルーティングする場所、ディレクトリ、または仮想ホストがあります。

+0

Djangoスタックとのアプリケーションの潜在的な統合についてどう思いますか?互換性の問題があると思いますか? – aaimnr

+0

Djangoと何が関係していますか? Djangoが考慮される場合は、あなたの質問を更新してください。 –

+0

これはちょうど付加価値になります。ウェブフレームワークが世界の状態に簡単にアクセスして、フラッシュとは別のウェブサイトのさまざまな部分にデータを表示できるのは素晴らしいことです。また、フラッシュバックエンド通信は、Django MVCを使用して編成できます。 – aaimnr

5

ツイストが成功を収めて、この目的のために使用されてきました。非同期呼び出しに基づいているため、永続接続が必要なアプリケーションでは非常に効率的です。また、それはフラッシュで使用するための素敵なRTMP実装を持っています。 chessparkをチェックし、それはツイストで構築されています:

http://www.chesspark.com/

プラスのゲームエンジンは本当にC/C++である必要はありません。ゲームの複雑さと種類によって異なります。しかし、かなり良いpygameライブラリもあります。

個人的には、私は銀色の使用をお勧めしません。フラッシュプラグインははるかによく採用されており、特にms以外のオペレーティングシステムでは今後も引き続き利用されます。これを心に留めてはいけませんが、あなたのゲームを見るために銀色をインストールしません。

6

私は、Silverlightは、このために非常に適してい

(開発を簡素化するために、私は実際にSilverlightでIronPythonのを使用)バックエンドのためのフロントエンドとPython用のSilverlightを使って多人数参加型オンラインゲームに取り組んで年を過ごしました私は他の何ものでも真剣なオンラインゲームをしません。すでに市場の35%を占めています。開発を完了するまでには、これ以上問題にならないほど十分に高くなければなりません。深刻なゲームの場合、ほとんどの人は4MBのブラウザプラグインをインストールすることに本当に気をつけません。ちょっと小惑星のクローンが必要な場合は、フラッシュを使用してください。

もし私がそれをやらなければならないのなら、それは私が最も熟練したサーバー技術であるため、私はPythonをサーバーに保つと思うが、私はフロントエンドでC#を使い、データ。

私はあなたを与えることができる最高のアドバイスは次のとおりです。

  1. 既存のライブラリやコードを利用する限り
  2. できるだけ早すぎるパフォーマンスについて考えてはいけない

過酷な部分がありますゲームを仕上げて、あなたがよく知っている技術を使用し、コードではなくあなたの時間を最適化します。うまくいけば、私はできなかっ行うことができます - いまいましいゲームを終了:)

編集

を、私はそれを上にしなければならなかった場合、私はC#のを使用したい理由について:

IronPythonのは、それが長所だ持っていたし、欠点。サーバーとクライアント間でコードファイル(定数、モデルなど)を共有できることは素晴らしいことでした。変更を加えてブラウザをリフレッシュして見てみました。デバッギングはC#ほど親切ではありませんでした。

しかし、いくつかの点ではC#の2番目の市民であり、データバインディングが機能せず、xamlでIronPythonクラスを使用できません。読み込み時間は問題だったので、私は実際に高速化のためにバックグラウンドスレッドで並行して読み込みを設定するために多大な努力を払っていました。 xamlが関係する第二の市民的地位のために、xamlをhtmlのように生成するためにテンプレート言語を使用しましたが、実際にはデータバインディングよりもうまく機能しましたが、Pythonのテンプレート言語はIronPythonでは機能しませんでした。別の時間シンク)

共有モデルを有効にするには、自分でORMを作成する必要がありました。それは十分に簡単でした。しかし、それらを転送するために、私はJSONを渡し、代わりにIronPythonとPythonの間で最適化されたバイナリ形式を作成しました。それは別の時間のシンクでした。

私は、すべてのウサギの道に気を取られてはいけません。

+0

あなたはC#がフロントエンドにもっと適していると思いましたか? DLRの問題? – aaimnr

関連する問題