eスポーツ、FPS、MOBA、ゲーミングデバイスの最新情報を紹介する個人ニュースサイト

クライアントのネットワーク設定

cl_updaterate

クライアントがサーバーにデータを要求する頻度。
単位はper second、デフォルトでは20となっている。 単純に考えると

1000 / 20 = 50ms

最大で50msの待ち時間が考えられる。平均値を取って約25ms。 最大値の100にすれば

1000 / 100 =10 ms

と理論上はLatencyを減らすことができる。しかしサーバーによってはChokeが発生する原因ともなる。

これをあげるとnet_graph 3での
Inの値のレートが大きくなっていることに気づく。
標準ではsv_maxupdaterate 60とサーバー側の
上限があるので60以上も意味がないかもしれない。
とりあえず20はISDNやモデムの設定、とのことらしいので
20 – 60程度の間で適当に決めるのがいいかもしれない。
ただしChokeが出るようだったら 下げたほうがいいだろう。

cl_cmdrate

クライアントがサーバーに送るコマンド(操作全般)の頻度。
単位はper second、デフォルトでは30となっている。
これをあげるとnet_graph 3でのOutの値のレートが
大きくなっていることに気づく。
cl_cmdrateが低すぎると送信するコマンドが多いときにラグを感じる。

具体的にはcl_cmdrate 10
武器をカチャカチャ切り替えながら走ってみればわかる。
これも大きすぎるとサーバーに負荷がかかる。
これも30 – 60程度の間で適当に。

rate

転送速度の設定。単位は Byte/S。単純に考えると6000だと6Kbyte/s、48Kbps必要な計算になる。
rateだけを上げてもあまり意味がない。この設定を転送量が超えるとchokeとなる。
試しにrate 1000cl_updaterate
100
、にしてみればChokeが100ぐらいになり、Latencyが 大幅に増えるのがわかるはず。

ただしローカルで試す場合はサーバーを
sv_lan 0にしないとクライアントのrateが無視されるようだ。
サーバー側ではsv_maxratesv_minrate
で上下限が決められている。あまり上げてもサーバーに負荷がかかる。
ADSL以上の回線ならなら6000以上はあった方がいい。
LANなら25000ぐらいにしといて問題ない。

また、サーバーがsv_lan 1の場合、rateは適切な値に設定される。

実際の転送速度はrateを基準に

  • rate < sv_minrate のとき
    sv_minrate
  • rate > sv_maxrate のとき
    sv_maxrate
  • sv_minrate < rate < sv_maxrate
    のとき rate

    が採用される。

    fps_max

    fpsの上限。HLエンジンの仕様で100が上限。
    Vsyncをオンに設定している場合は、Refresh rateの制限もつく。
    ネットワークに関わらず、スペックがあるなら100にしておくべき。
    通信はクライアント、サーバーのfpsにも基づいている。
    よってfpsが低いとかなりLatencyが高くなる。
    試しにfps_max 20程度に設定してみれば
    Latencyがかなり増えることがわかるはず。

    1000 / 100 =10 ms

    fps100でも1フレーム10msなので、50切ってるようだったらLatencyよりまずは新しいPCを買うべき。

    fps_modem

    オンラインでのfpsの制限。 0にしておかないと、そのfpsに制限されてしまう。

    LAN上のLatencyと設定の対応表

    pingboost

    cl_updaterate

    cl_cmdrate

    fps_max

    latency(ms)

    in(k/s)

    out(k/s)

    in

    out
    0

    20

    30

    100

    12

    1.52

    1.78

    57

    36
    0

    30

    40

    100

    9

    1.7

    1.85

    39

    30
    0

    60

    60

    100

    18

    3.39

    3.12

    34

    27
    0

    100

    100

    100

    18

    3.67

    5

    34

    24
    0

    100

    100

    20

    28

    1.7

    1.18

    34

    24
    0

    10

    100

    100

    29

    0.98

    4.49

    34

    25
    0

    100

    10

    100

    18

    1.2

    0.85

    34

    51
    2

    20

    30

    100

    14

    1.39

    1.65

    39

    34
    2

    30

    40

    100

    7

    1.7

    1.83

    34

    30
    2

    50

    40

    100

    6

    2.25

    2.15

    39

    30
    2

    60

    60

    100

    7

    2.7

    2.7

    39

    29
    2

    100

    100

    100

    8

    3.85

    5.49

    34

    24
    2

    100

    100

    20

    23

    1.78

    1.31

    34

    25
    2

    10

    100

    100

    15

    1.01

    4.72

    34

    28

    LAN上でのLatencyと設定の対応表を作ってみた。
    サーバーはLAN内にあってPen!!!800 / RAM 256MB / Linux hlds_l_3110。
    オプションは

    -game cstrike +maxplayers 20
    +map de_aztec -nomaster +sv_lan 1 -pingboost 2

    0の方は-pipngboost無しで起動。
    +showscoresで最も安定したLatencyを書いた。

    In-Outは静止した状態でのnet_graph 3の値を書いた。
    実際のゲームではもっと多くの数値になる。
    サーバーはsys_ticrate 100。fpsは常に100出てると思う。
    sv_lan 1なのでrateは制限されない。
    クライアントもfps_maxの値は常に出る。
    Latency自体あまり安定しなく、不正確なので表もけっこう不正確。

    まずfps_max 20においては、Latencyがかなりあがる。

    またcl_updateratecl_cmdrate
    が100であるにもかかわらずIn-Outは、
    cl_updaterate 20
    cl_cmdrate 30
    値より小さくなっている。
    もしかするとfps以上の送受信は行われないのかもしれない。
    Pingboostを使用した場合は、明らかにLatencyが小さくなる。
    やはりサーバー側のfpsの影響が高いことがわかる。 標準よりLatencyが10ほど低くなる。
    updaterate
    cmdrateは100にすればいい、というわけではないようだ。

    100にしておくとrateが足りなくて、多くのサーバーでchokeが発生する。
    実際にサーバーにつないで最適な値を見つけるのがいいかもしれない。

  • この記事を書いた人
    Negitaku.org 運営者(2002年より)。CS:GO、Dota 2が大好きです。 ラーメン、ランニング(60km完走)、カメラが趣味です。 じゃがいも、誤字脱字を見つけるのが苦手です。

    https://twitter.com/YossyFPS/
    SNSでフォローする
    YouTube

    取材動画、ポッドキャスト等配信中。チャンネル登録をお願いします!