1

私は、プレイヤーが同時に質問され、答えを選ばなければならないマルチプレイヤーゲームを構築しています。彼らは答えるのに数秒あり、時間がなくなるか、全員が答えたときに次の質問をされます。

サーバー側でJava(または新しいフレームワークを学びたい場合はnodeJS)を使用し、クライアント側でJS(jQueryおよびjQuery Mobile)を使用することを計画しています。後でネイティブアプリを作成する可能性もあるので、オプションを開いたままにしておきます。

私の質問は、どのサーバー通信プロトコルを提案しますか?

レイテンシーは実際には問題ではないので、私は通常のTCP(HTTP with Ajax)呼び出しを考えていましたが、別の方法を提案した場合は、この選択を確認する準備ができています。

あなたの助けをどうもありがとう

4

3 に答える 3

3

UDPを使用する場合、再試行と輻輳制御を実装する負担はあなたにかかります。したがって、切り替える特別な理由があるまで、信頼性が高く簡単なTCPを使用することをお勧めします。レイテンシーが許容できないことが判明した場合(あなたの場合は疑わしいですが)、UDPに切り替えることができます。

于 2012-04-20T13:44:56.337 に答える
1

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

于 2012-04-30T07:32:36.283 に答える
1

TCP/IPを介したHTTPストリーミングとWebSocketが最善の方法です。HTTPとWebSocketを活用するLightstreamerは、TCPを使用しますが、遅延の削減(説明したゲームにとって重要と思われる)と帯域幅の最適化のためのいくつかのスマートアルゴリズムを使用して、その制限の一部を克服しようとします。したがって、あらゆる複雑さのマルチプレイヤーゲーム(MMORPGなど)に大きなメリットをもたらします。一見すると、要件を満たすことができるように見えます。また、2番目のステップでネイティブアプリを開発することも計画している場合は、優れたソリューションになる可能性があります。

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

この最近の記事(Webを介したマルチプレイヤー3Dゲーム同期の最適化)をご覧ください。Lightstreamerがリアルタイム同期用に統合されたシンプルなマルチプレイヤー3Dワールドのオンラインデモをウォークスルーできます。

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

[完全開示:私はLightstreamerで働いています]

于 2013-11-19T15:55:41.583 に答える