CS1.6ネットコード解説 by bds

schroet.comにbdsさんのネットコード解説コラム
Counter-Strike 1.6 Net Code Explained 』が
掲載されていたので読んでみました。

Explanation

ゲームプレーに致命的な影響を与えるchoke現象とネットコードの説明をはじめよう。

Choke

Chokeは以下のようにして測定される。

Current time + 1/cl_updaterate
Current time + (number of bytes just sent / rate setting)

したがって、高いcl_updaterate値でプレーしてあなたの帯域幅がそれを扱うことができない場合、
より多くのchokeを得ることになるだろう。
また、ゲーム世界の多くのプレーヤーから送られてくるパケットによっても
chokeを受け取ることになる(あなたの大域が処理できない場合)。
最後に低いrate設定でもまた、より多くのchokeを得るだろう。
chokeが有効である場合、サーバーはchokeがなくなるまで、1/cl_updaterateの倍数待って、
すべての構造上のクライアントにパケットをその後送ることができるかどうか確かめようとする。

Interpolation

Half-Lifeエンジンがinterpolationを使用する方法は位置と
それらの位置が正確であった時間を格納することである。
そのとき、それはhistoryを通じてベストの2つのポジションのためにex_correctを使用する。
(これが最後の2つのポジションでなければならないというわけでないことに注意)
これは、ex_interpの値がいかなる数値が使われてもその位置間に
同じ速度でプレーヤーが移動することを意味しする。
プレーヤーがより速く動くかもしれない唯一のケースは、巨大なパケット落ちがあった後、
もしくはプレーヤーがゲーム世界の後ろにいて、
現在の場所に速く移動しなければならないという遅れの元にいる場合である。

・cl_updaterate/cl_cmdrate

なぜデフォルトの値が比較的低く設定されているかというと、
このゲームはいろいろな回線のユーザーに対してスムーズに
インターネットを介したゲームをできるように設計してあるからである。
またHLDSは多くのPCで動かなければいけないし、
CPUを使いすぎてもいけない。

私の書いた前回のcl_updaeterate、cl_cmdrateのコラムのように、
cl_updaterate、cl_cmdrateはそれぞれserver-client、client-server間
のトラフィックの流れを調整する。
しかし低い値にしたからといって、不正確になるわけではなくない。
(これはclientが多くのパケットをロスしたときに起こる)
HLエンジンの動きと1対1の通信が必要なわけではない。

高すぎるcl_updaterateとcl_cmdrateを使ったとき、以下のような問題がある

あなたのclientの回線がトラフィックを処理しきれず、chokeを受け取ったとする
(前記で説明したとおり)
あなたのプレイしているサーバーに、大きな負荷が掛かり、
とても小さく、多くの動きがサーバーに送信され、計算されることで
CPUパワーを消費し、server-lagの原因ともなる。
重要なのは回線幅と、PCが実際に処理できる値に調整することである。
大会などLANにおいては、より整合性を取れるように高い値に設定すべきである。

・ex_interp
・ex_extrapmax
・ex_correct
・ex_maxerrordistance

1.6にex_の設定はないので割愛。

・sv_lan

CPLがNet Codeのポリシーをデフォルトのupdaterate、cmdrateから
高い値に変えたとき、LANの大会で多くのChokeが発生知ることに気づいた。
これはサーバーがsv_lan 1のとき、HLDSは強制的に全ての
クライアントのrateを10000にするからである
これは当初は上限ではなかったが、
クライアントのデフォルトの値を2500から10000に上げたら
LANでよりよく感じられた。
これはCounter-Strikeのバージョンで修正される。
しかしHLエンジンの上限はrate 20000なので
これ以上の値は無視される。

・sys_ticrate

この値はDedicated Serverのフレームレートの上限である。
値を高く設定すれば、より多くのパケットをクライアントに送ることができる。

・sv_maxupdaterate

この値はサーバーのupdaterateの上限である。
値を高く設定すれば、より多くのパケットをクライアントに送ることができる。
(もしサーバーで十分なフレームレートがでていれば)

コメント

Avatar POLYGON犬飼

このbdsって人は優秀だなあ

こんなゲームの攻略かけるライター日本にいるかな?

いくらか思い当たりますけど、実際書いてもユーザーはついてこれないから書きませんっていうだろうな・・

がんばってわかるようになるから書いてほしいですな。日本の攻略ライターたち!期待してます。