3

数か月前に Windows Phone でリアルタイムのペースの速いシューティング ゲームを開発し、そのゲームを Windows にも移植しました。

現在、ゲームをマルチプレイヤー対応にすることを考えていますが、これまでやったことがないので、いくつか質問があります。

シューティングゲームであるため、多くの弾丸、あらゆるタイプのゲームオブジェクト、プレイヤー/モブの動​​きなどがあることを考慮すると... :

  • この状況で非同期ソケットを十分に高速に使用できますか?(Windows プレーヤーを使用する WP プレーヤーまたは WP を使用する WP または Windows を使用する Windows)
    • 注: プレイヤーは、集中型ソケット サーバーを介して通信します。
  • Windows Phone Sockets のパフォーマンスは十分ですか?(3G/4G、Wifi)
  • TCPまたはUDP、またはその両方を使用する必要があります(たとえば、オブジェクト/アクションにはUDP、チャットにはTCP)
  • データの送信方法、送信するデータの種類、送信頻度は?

よろしくお願いします!:)

4

4 に答える 4

3

一般に、シューティング ゲームは UDP を使用してショットを含むパケットを送信しますが、100% の確率でパケットを送信することについてはあまり考えていません。しかし、最初に TCP を試し、問題が発生した場合は後で UDP に切り替えてみませんか?

于 2012-07-11T22:05:36.243 に答える
1

私は他のゲームから良いアイデアを頼んだり、借りたり、盗んだりします。idSoftwareのQuake3は、そのネットワークソースを開いており、多くの人々がそれを分析しています。今日のほとんどのFPSゲームは、時間に敏感なデータをタイムリーに配信するためにUDPを使用しています。ドロップされた古いデータは、新しいパケットを必要としないはずです。

Quake 3は、最後の既知の正常なスナップショットIDがクライアントからの各パケットで送信され、サーバーが各スナップショットでIDを内部的に送信する戦略を使用します。この時点で、クライアントはデータをドロップし、最後の既知の正常なIDを送信し続け、サーバーはスナップショットのバッファーから差分を送信します。

TCPを使用している場合は、古いデータが各クライアントによって確認応答されるのを待つ必要があります。これにより、ファーストパーソンシューティングゲームには耐えられない人為的な遅延が追加されます。

于 2012-07-12T01:11:24.750 に答える
1

一般的な推奨事項は、世界の状態ではなく、一般にユーザー入力になる傾向がある最低限の情報を送信することです。

例: ゲーム開始から 142 秒後に、ユーザー A が発射ボタンを押しました。145 秒で、ユーザー B は左に移動し始めました。

(ユーザー入力から、各クライアントが世界の状態を再作成することが可能です...通常。ランダムな要素がある場合、これはそれらをキャッチしてデザインで再考する良い方法です。)

プロトコルの選択に関しては、HTTP から始めて、そこから「ダウン」することをお勧めします。これにより、最大の「組み込み」機能 (NAT トラバーサルやプロキシなど) が提供され、ネットワーク ロジックの問題 (予測アルゴリズムがプレーヤーのゲームプレイ スタイルにかなり近いかどうかなど) が早期に明らかになることを願っています。 'ing はクライアントで発生しますが、「スナップバック」は煩わしくありません)。

HTTP が重すぎる/遅すぎると判断した場合は、何を達成する必要があるかを把握して、UDP などに交換できます。

于 2012-07-12T01:03:44.957 に答える
0

混合: 認証、ログイン、またはサーバー/クライアント情報の変更には TCP を使用しますが、ほとんどのデータがケーブルで移動するゲーム内では UDP を使用します。TCP は接続指向の操作であるため、待ち時間が長くなります。

于 2012-07-17T08:03:19.147 に答える