Bean Network Tester

ゲームのラグとパケットロスを再現する

ネットコードは1 msのpingのローカル接続で書かれ、ホテルのWi-Fiにいるプレイヤーによってテストされます。このツールは、そのギャップを手元のマシンで、ゲームのプロセスだけを対象に埋めます。コンピューターのほかの部分は使えるままです。

ここから始める

ゲームクライアントを狙い、現実的な悪い回線を与え、5分後に自動で止まるようにします:

BeanNetworkTester.exe --latency 120 --jitter 60 --loss 3 --target mygame.exe --duration 300

このための用意済みタイムラインもあります。scenarios フォルダーの overloaded-game-server.json は、接続を輻輳に追い込み、そこから回復させるので、変化の両方向をクライアントがどう扱うか見られます。時間で変わるシナリオを参照してください。

ブラウザでは見えないパケットロスが、ゲームでは見えるのはなぜか

ゲームの通信の大半はUDPで、UDPにはパケットロスを隠す仕組みがありません。TCPのWebページは黙って再送し、時間がかかるだけです。そのため、5%のパケットロスでもブラウザは快適に感じられる一方、同じ5%の対戦ではカクつき、巻き戻され、同期がずれます。

だからゲームは、パケットロスを正直にテストできる場です。設定した値が、そのままクライアントの体験になります。

何を設定し、何を調べるか

設定試す値何が露わになるか
遅延80から250 ms予測と補間。撃ったあとにキャラクターが引き戻されませんか?
ジッター40から100 msバッファリング。一定の200 msは、動き続けるpingよりも隠しやすいものです。
パケットロス2から10%状態更新の欠落と、クライアントが回復するのか、ずれていくのか。
スパイク1秒、まれに基地局のハンドオーバーが起こす停止。たいてい最も見苦しいものです。
回線のオン・オフ10秒周期、30%を断に再接続と再参加。

ジッターは平均ではなく、95パーセンタイルと中央値の差として測ってください。ジッターは平均をほとんど動かさないため、実行が書面上は同じに見えても、遊んでみると違うのです。

2つのビルドを比べるにはシードが必要

ランダムなパケットロスでは2回の実行が異なるため、「新しいビルドのほうが悪く感じる」は証拠になりません。同じシードなら同じパケットロスと同じジッターが再生されるので、感覚が比較に変わります:

BeanNetworkTester.exe --latency 120 --jitter 60 --loss 5 --seed 42 --target mygame.exe --duration 180

できないこと

これが整形するのはあなたのマシンの通信です。サーバーを遅くすることも、ティックレートを変えることも、他のプレイヤーを悪い回線に置くこともありません。つまりテストできるのは、悪い回線に対するクライアントであって、負荷がかかったサーバーではありません。サーバー側には負荷テストが、悪い接続だらけのロビーには複数台のマシンが必要です。

次のステップ

自分のネットワークを、わざと壊してみませんか?

Windows版をダウンロード