8

専用の Java サーバーと iphone クライアント、および Java デスクトップ クライアントを使用して構築されたリアルタイム ゲームの構築を検討しています。リアルタイムのマルチプレイヤー ゲーム開発に使用できる、Java および iPhone (特に信頼性の高い UDP) 用の高性能ネットワーク トランスポート ライブラリはどれですか?

ほとんどのリアルタイム アクション ベースのゲーム (Counter-Strike、Left4Dead、Quake III) に対する一般的なアドバイスは、UDP/IP トランスポート プロトコルを使用してメッセージを「信頼できない」パケットとして送信し、TCP の「保証された」配信を優先することです (問題があるため)。簡単に制御できない再送信と遅延の問題がある場合)。

  • Half-Life ソース エンジン ネットワークの概要
  • Quake III Networking もう 1 つのアドバイスは、UDP パケットの配信を「オプションで」保証できる信頼性の高い UDP プロトコルを構築することです (ただし、ゲームが順不同で処理できる限り、TCP ストリームなどの配信順序を保証することはできません)。パケット)。

Project Darkstarは、C++ バインディングを備えた Java MMO サーバーです (一般的なマルチプレイヤー ゲーム用の軽量リアルタイム ネットワーク ライブラリとしては少し重い)。

信頼できるUDPのためにCで書かれたライブラリを見てきました: - Enet - 信頼できるUDPライブラリ - Cocoa AsyncSocket

4

3 に答える 3

8

Kryo とそれに関連する通信ライブラリKryoNetをご覧ください。

まさにこの種のアプリケーション (高性能ネットワーク トランスポート) 向けに設計されています。Objective-C バインディングがあるかどうかはまだわかりませんが、ない場合でも、フレームワークがどれだけうまく設計されているかを確認するだけでも一見の価値があります。

于 2010-06-23T18:22:03.820 に答える
5

あなたがUDPに言及したので。これは、UDP と TCP の両方のサポートを提供するJava ゲーム サーバーライブラリ (えーと... 私が書いたものです!) です。信頼できる UDP は TCP であることがわかります。UDP の上に独自のカスタム ack ロジックを記述できますが、一般的には、サーバーに到達する必要があるものには TCP を使用し、それ以外のすべてには UDP を使用することをお勧めします。

jetserver では、同じセッションが UDP と TCP の両方を使用して通信します。ネットワーク メッセージは、配信保証、Reliable = TCP、FAST = UDP で送信できます。

于 2012-05-27T12:42:43.657 に答える
-2

「特に信頼できるUDP」

UDP は、その設計上、信頼できません。古い (電子メールではない) メールを送るようなものです。手紙を封筒に入れ、住所を書き、切手を貼って、郵便受けに投函します。転送されている可能性がありますが、確実ではありません。UDP は、正確さよりも速度が重要な状況向けに設計されています (「私のアプリでは、すべてをビット単位で正しく転送する必要がある」などの正確さ)。

たとえば、スカイプのビデオチャットのようなアプリケーションは、より多くの帯域幅とより少ないレイテンシーを必要とします。一部の失われたビットは、アプリケーション レベルで修正できます (UDP を使用するため)。それまでの間、テキストベースのチャットは必要な帯域幅が少なくなり、はるかに長い待ち時間に耐えますが、より正確さが必要です (この文字列をどのように知ることができますか: fsdfdsfsd は正しく転送されますか? どの言語で? など)、TCP が必要です。そして実際、それがスカイプでの仕組みです。

于 2013-07-23T13:11:34.670 に答える