2012-04-20 8 views
1

私は、プレイヤーが同時に質問をし、答えを選ぶ必要があるマルチプレイヤーゲームを構築しています。彼らは答えに数秒を要し、次の質問に時間がなくなるか、誰もが答えたときに尋ねられます。単純なマルチプレイヤーゲームのためのTCP/IP上のUDPまたはHTTP

私は、サーバー側でJava(または新しいフレームワークを学習したいと思えばnodeJS)、クライアント側でJS(jQueryとjQuery Mobile)を使用する予定です。後でネイティブアプリをビルドするかもしれないので、オプションを開いたままにしておきたい。

私の質問は次のとおりです。どのサーバー通信プロトコルをお勧めしますか?

レイテンシは問題ではないので、私は通常のTCP(HTTP with Ajax)コールを考えていましたが、そうしないとお勧めするなら、この選択肢を検討する準備は整っています。 UDPを使用する場合は

答えて

3

再試行および輻輳制御を実装するための負担があなたに分類されますあなたの助けを

どうもありがとうございました。したがって、スイッチする特別な理由があるまで、信頼性の高い簡単なTCPを使用することをお勧めします。私があなたのケースで疑うレイテンシが許容できないことが判明した場合は、UDPに切り替えることができます。

+0

ありがとうございました!私はUDPがそのような低レイテンシのアプリの過度のものであることを期待していましたが、私は確信していました。あなたは私に完全に納得した。 –

1

モバイルデバイスでゲームを作成していて3G経由で接続しているプレイヤーを失いたくない場合は、標準ポートを使用してサーバー側に接続していることを確認する必要があります。それ以外の場合はオペレータが切断します。

+0

ありがとう、それは確かに知って良いです! –

1

TCP/IPを介したHTTPストリーミングとWebSocketsが最善の方法です。 Lightstreamerは、HTTPとWebSocketを活用してTCPを使用しますが、レイテンシを削減するためのいくつかのスマートなアルゴリズム(説明したゲームでは重要と思われる)と帯域幅の最適化によって限界を克服しようとします。したがって、任意の複雑さのマルチプレイヤーゲーム(MMORPGを含む)に大きな利点をもたらすことができます。一見すると、それはあなたの要件を満たすことができるようであり、第二のステップでネイティブアプリを開発する予定がある場合は、良い解決策になるかもしれません。

Lightstreamerはパブリッシュ/サブスクライブモデルに基づいています。パブリッシュ/サブスクライブモデルでは、すべての項目が時間とともに変化するフィールドセット(ミリ秒単位)によって定義されます。これらは、任意のユーザ(例えば、ゲームのカウントダウン、最初のレスポンダー)に加入し、リアルタイムで配信される「一般的なアイテム」を含むことができる。このように、ゲームロジックの基礎となるデータ配信メカニズムはLightstreamerで実装するのが非常に簡単です。

最近の記事(Optimizing Multiplayer 3D Game Synchronization Over the Web)をご覧ください。 Lightstreamerがリアルタイム同期のために統合された単純なマルチプレイヤー3D世界のオンラインデモを見て回ることができます。

デモでは、実際の帯域幅の消費量を確認しながら、シナリオの各パラメータを調整し、データ配信の味をシミュレートすることができます。もちろん、完全なソースコードはGitHubで無料で入手できます。あなたはそれを試すことができます。助けが必要な場合はお知らせください:)

[全開示:Lightstreamerの仕事]

関連する問題