2

私は自分のマルチプレイヤーゲームサーバー(おそらくnodejsで)を作成しようとしていますが、データを転送するためにどのプロトコルを使用すべきか疑問に思っていましたか?データグラムは情報を送信するための標準ですか(プロトコルの上に書き込むことができるHTTPのような配信を確認していないことに気づきました)?パフォーマンスが証明されたシステムの提案は、本当に助けになります。

データ転送を迅速かつ効果的に処理するための成功した手法を探していると思います(サーバー上の状態の維持とスケーリングは、私がしっかりと理解している別の問題です)。

最初はデスクトップ/モバイルゲーム(MacOS、iOS、Android)をサポートしたいと思っています。

4

4 に答える 4

5

すべてのプロトコルのニーズについては、socketIOをご覧ください。

基本的に、最善の解決策は、TCPソケットであるWebSocketに依存することです。socketIOは、クロスブラウザーに準拠した優れた抽象化です。

標準のロングプルテクニックまたはhtml5WebSocketを使用します。ブラウザ<->サーバーのUDPへのアクセスはありません。

于 2011-02-25T18:32:01.860 に答える
1

アドビが最新バージョンのFlash(Flash 10)で導入したRTMFPと呼ばれるテクノロジーがあります。これにより、P2P接続を実行し、サーバーを経由せずにクライアントから他のクライアントにデータを直接転送できます。その上、UDPを使用してデータを転送しています。これはもともとビデオとオーディオのストリーミングを行うために設計されたと思いますが、データを渡すために使用できます。

ただし、このテクノロジーの主な欠点は、ほとんどがFlashをサポートしていないため、モバイルです。この場合、Socket.IOを使用し、フォールバックとしてサーバーを情報のルーターとして使用できます。

アプリケーションをJavascriptでビルドする場合でも、機能をJavascriptにブリッジすることでアプリケーションを使用できます。ブリッジの単純なバージョンを確認したい場合は、このgithubプロジェクトを確認できます(私は作成者です)。

于 2011-02-25T19:56:53.223 に答える
0

10年間のMassiveMultiplayerゲームのC++開発者として、私が関わったゲーム(Legends Of Kesmai、Magic:The Gathering Online、Airwarrior II、AVP、NTN Trivaなど)など、より高度なゲームのほとんどをお伝えできます。 )いくつか例を挙げると、データがクライアントから受信されたことを確認するためにACK / NACKが必要であるという理由だけで、ほとんどの通信にTCPが使用されます。それはUDPがその場所を持っていないということではありません。Legendsでは、データの帯域幅外配信にUDPを使用するプロトコルコードを記述しました。これは、データが適切なパケット順序で受信され、完全であることが必須ではありませんでした。ユーザーの再生中にバックグラウンドでグラフィックファイルを更新するなどの操作を行う場合は、UDPを使用します。このタイプの配信は、このような目的でよく使用され、サーバーの必要に応じてTCPパケットを到着させることができます。

于 2013-09-30T20:42:14.140 に答える
-1

Raynosが推奨するようにソケットを確認することをお勧めします。このビデオを見て、すぐに始めましょう。データグラムも見てください。

次に、これら2つのビデオを見てください。これらは、ステージ上でライブのゲームクライアント/サーバーを作成している素晴らしいノードの人たちです。

そして、もしあなたがこれらのビデオを楽しんだなら、ここでそれらすべてをチェックしてください

編集:クライアントについては、[http://www.limejs.com/](lime js)をチェックしてください。リリースされたばかりなので、遊んでいません。

ここここでクライアント開発に関する興味深い読み物。

注:個人的には、これに対する100%JavaScriptソリューション(前面と背面)は非常に上品だと思います。そのため、JavaとCsharpsを使用して、不信者に反対票を投じてください。

于 2011-02-25T19:11:06.907 に答える