オンラインマルチプレイヤーゲームを開発しています。ローカルエリアネットワークでテストするとうまく機能しますが、リリースする前に、サーバーへの接続があまり良くない人のためにユーザーエクスペリエンスがどのように機能するかをテストしたいと思います。ローカル環境で、高遅延、低帯域幅、ジッター、および時折パケット損失が発生する悪いインターネット接続をどのようにシミュレートできますか?
オンラインマルチプレイヤーゲームを開発しています。ローカルエリアネットワークでテストするとうまく機能しますが、リリースする前に、サーバーへの接続があまり良くない人のためにユーザーエクスペリエンスがどのように機能するかをテストしたいと思います。ローカル環境で、高遅延、低帯域幅、ジッター、および時折パケット損失が発生する悪いインターネット接続をどのようにシミュレートできますか?
回答:
Dummynetはあなたが探しているものだと思います。Dummynetは、帯域幅の制限、遅延、パケット損失などをシミュレートできるネットワークエミュレーションツールです。インターセプトするトラフィックを簡単に選択し、制限を構成できます。たとえば、すべての着信TCPトラフィックを2Mbit / sに制限します
ipfw add pipe 2 in proto tcp
ipfw pipe 2 config bw 2Mbit/s
トラフィックの選択は既知のipfwファイアウォールによって行われ、パイプが制限機能を提供していることがわかります。
FreeBSD、Linux、およびWindowsで利用可能です。
Macを使用している場合は、ネットワークリンクコンディショナーを使用できます。
Edgeや3Gなど、インターネット接続の不良のさまざまなケースをシミュレートできます。
さらに、独自の設定で独自のプロファイルを作成できます。
Xcodeで無料でダウンロードできます(Xcode→開発者ツールを開く→その他の開発者ツールに移動して、XcodeのハードウェアIOツールをダウンロードします)。
Linuxを使用している場合は、netemを使用して、高遅延、低帯域幅、パケット損失など、ネットワークで起こりうるすべての問題をシミュレートできます。
NetLimiterと呼ばれるウィンドウ用のオプションがありますが、私はそれを使用していないので、それを保証することはできません。
SlowlyAppというMacアプリを見つけました。
Clumsy、Windows Vistaおよび7用。
ローカル環境で、高遅延、低帯域幅、ジッター、および時折パケット損失が発生する悪いインターネット接続をどのようにシミュレートできますか?
Windowsを使用している場合は、SoftPerfect Connection Emulatorを試すことができます。基本的には、選択されたNICのアプリケーションとネットワーク層(Wireshark / WinPCAPに類似)の間に自身を挿入し、限られた帯域幅、遅延、パケット損失などをシミュレートできるドライバーです。UIはシンプルで簡単です。
これは商用製品ですが、試用版を使用すると、このツールが希望どおりに動作するかどうかを判断するのに十分な30秒の「干渉」バーストを行うことができます。
別のクロスプラットフォームオプションはDummyNetです。これは(ipfwを介して)同様に動作しますが、使いやすさが少し劣ります。
サーバーへの接続がそれほど良好ではないユーザーに対して、ユーザーエクスペリエンスがどのように機能するかをテストしたいと思います。
質問のこの部分は、「アプリケーションのネットワーク遅延にどのように対処するのか」と言い換えることができると思います。一般的に使用される効果的な手法の1つは、推測航法です。リンクされた記事では、私よりもうまく説明できますが、基本的な考え方は、クライアントが各エンティティがどこにあり、アルゴリズムによって何をすべきかを「シミュレート」するというものです。エンティティがこのアルゴリズムから逸脱するたびに(プレイヤーの入力、サーバー側イベントなど)、各クライアントに更新を送信します。
しばらく使用していませんが、これをテストするためにCharlesを使用しました。これは、あなたが言及した問題のシミュレーションを含む、さまざまなネットワーク診断ツールを備えたアプリケーションです。「高遅延、低帯域幅、ジッター、時折のパケット損失を伴うインターネット接続不良」
Fiddlerに精通していて、HTTP / 1 のみに関心がある場合は、これをスクリプト化できます。
FiddlerはHTTP / 2をサポートしていません。これをインターセプトすると、すべてのHTTPトラフィックがHTTP / 1にダウングレードされます。