2009-04-11 5 views
4

ブラウザベースのネットワークゲームを作成したいと考えています。できるだけ多くの人が使用できるように、すべてのトラフィックを標準のHTTPパッケージに埋め込みたいと思っています。私は私のバックエンドとしてIISを使用すると仮定すると、待ち時間を最小限に抑えるために、IISを使用してHTTP経由でマルチプレーヤーのゲームデータをトンネリングする方法はありますか?

、どのように私は、待ち時間を最小化するためにこれをコーディングする必要がありますか?

は、メモリ内の共有状態を使用して(おそらくASP.NET MVC)いくつかの種類のASPアプリケーションで起動することが合理的ですか?または私は自分のIISプラグインのいくつかの種類を書くことから始めて計画する必要がありますか?それとも、私はIISを放棄して代わりにカスタムサーバーを作成する必要がありますか?

は、それが照会を繰り返し、各クライアントで起動することは合理的である、毎秒10回が言う、または私は、ストリームのような何らかの形で(およびので、どのようにする場合)のデータがもっと作るべき?

答えて

3

これはうまくいくかもしれませんが、あなたはあまり「従来の」ものを行う必要があります。

この作業を行うには、個々の要求を行わず、要求を開いたままにして、開いている接続でデータを送信してください。

あなたがBayeuxのようなプロトコルを使用して試みることができるが、ここではルールはありません。

Here's an example with ASP.NET using COMET

+0

まさに私が探していたもの...ありがとう! – Eric

2

ウェブサーバーを1秒間に10回叩くようにアプリを設計するのは良い考えではありません。 Webサーバーは、クライアント要求の頻度が低くなるように設計されており、おそらく処理時間と応答サイズが大きくなります。それは、Webサーバーが効率的なクライアントとサーバーのマッチングではないことだけに対処できないと言っているわけではありません。あなたが本当にかなり冗長であるHTTPプロトコルよりも軽く考えるべきで毎秒複数のパケットを必要とするアプリケーションのいずれかのタイプのために

。たとえば、ゲームがユーザーの戦艦の座標を登録するために4バイトを送信する必要がある場合、余分な数百バイトのHTTPヘッダーを送信する必要はありません。

Siverlight of Flashのようなブラウザプラグイン技術をお勧めします。どちらもTCPソケット接続をサポートしています。あなたは、TCPソケットの反対側に座るためにあなた自身のサーバーを書く必要があります。このアプローチでは、HTTPで必要とされるクライアントポーリングメカニズムに頼ることなく、クライアントにデータをプッシュできるという利点もあります。 AJAX。

1

標準のHTTPメッセージで直面する問題の1つは、ヘッダーデータのサイズ(および制御不能)です。

私は数百万の人々によって演奏されたフラッシュゲームの設計に関与していました。数秒ごとにサーバーと通信する必要があり、超軽量のJSONメッセージを使用して帯域幅を節約し、それを賢明に保ちました。 JSONメッセージの

サイズ:HTTPヘッダーの16バイト

サイズ:200 +バイト

HTTPは本当に高いトラフィック、低遅延の要件のために良いプロトコルではありません。それは、より大きな、より少ない頻度の要求/応答モデル用に設計されており、このような理由で304 Not Modifiedのようなステータスコードを持っています。

おそらく、カスタムTCP/IP実装にドロップしたいと思うでしょう。

関連する問題