cl_interpとは?CS:GOのエンティティ補間について

cl_interpとは?CS:GOのエンティティ補間について

CS:GOでは、ネットワーク状況があまりよくない状態でもスムーズなゲームプレイを実現するため、様々な技術が用いられています。今回はそのうちの1つである エンティティ補間 という技術と、そのコマンドについて解説します。

エンティティ補間とは?

CS:GO は クライアント/サーバモデル という技術を使って、プレイヤーのPC(以下クライアント)とサーバー間の通信を行っています。クライアントとサーバーは常時相互に通信を行っていて、クライアント側で行った動きはサーバーに転送され、サーバーはそれを認証し、接続している各クライアントにその情報を再転送します。

サーバーは tickrate という数値に基づいて、情報を計算しています。CS:GOは多くのサーバーが tickrate 128 で動いているので、1秒間に128回の情報を計算しているということになります。

しかしながら、クライアント側がサーバーから受け取った情報を正確にそのまま表示するだけだと、動くオブジェクトの表示が不規則でガクガクになってしまいます。

表示がガクガクになっている例

これを防ぐために、CS:GOではわざと最新の情報ではなく1つ前の情報をクライアントに表示し、最新の情報と照らし合わせて間の情報を補間、アニメーションとして表示することで、スムーズなゲームプレイを行えるようになっています。これは cl_interpolate というコマンドで制御されており、デフォルトではON(値は1)になっています。

表示が滑らかにアニメーションされている例

情報を補間する間隔は cl_interp というコマンドで制御されます。cl_interp の値はサーバーに入った段階で cl_interp_ratiocl_updaterate の数値に基づいて自動的に決定されます。実際に cl_interp の値が決定するプロセスは以下の通りです。

cl_interp_ratio / cl_updaterate = cl_interp

つまり簡単にいうと、cl_interp_ratio はエンティティ補間を行う上で、何tick情報を遅らせて画面に表示するかを設定できるコマンドになります。なので、最適な設定は遅延を最小限にできる「1」 になります。cl_interp_ratio はサーバーに接続してプレイ中は変更できないので、一度観戦枠に入るか、サーバーから切断してから変更しましょう。

もし高い ping のサーバーに接続した場合、エンティティ補間が間に合わず、他のプレイヤーの動きが不規則でガクガクになってしまう場合があります。一度サーバーから切断した上で cl_interp_ratio "2" にして再度接続するとアニメーションが滑らかになりプレイしやすくなるでしょう。Demoを見ている時に同様の状態になっても、cl_interp_ratio "2" にすると改善されます。

cl_interp に関する補足

cl_interp はプレイヤー側でも設定でき、一部のプロのcfgでは cl_interp "0.031" と設定されていることもありますが、これはつまり 0.031秒かけてエンティティ補間を行う という意味で、端的に言うと0.031秒(31ms)の遅延が入る ということです。

もちろんその分アニメーションはスムーズで滑らかになりますが、極端な例だと相手プレイヤーが物陰から出てきた瞬間に自分を撃ってくる(決め撃ちしてくる)といった状況の時に、アニメーション描写の遅れにより 自分が撃たれて死んだ後に相手のプレイヤーモデルが物陰から出てくる ということが頻繁に起こるようになってしまいます。

なので、cl_interp の値は 基本的に「0」(=自動)にすることを推奨 します。そうすることによって、最低限必要なエンティティ補間の間隔をゲーム側が自動的に設定してくれるので、アニメーション描写の遅れも最小限に止めることができます。

飛び出し有利

エンティティ補間技術はつまるところ、プレイヤーモデルの描写を最低1tick遅延させて、アニメーションを滑らかに見せる技術です。つまり、サーバーに繋いでいるプレイヤーはどれだけ回線状況が良くとも 最低限必ず0.0078125秒(約8ms)の表示遅延がある ということになります。

これはつまり、物陰から決め撃ちするシチュエーションの時 8ms以内に決め撃ちして倒せば相手は、自分のプレイヤーモデルを見ることがないまま死ぬ ということになります。

最適な設定まとめ

上記のように autoexec.cfg に設定すれば、最も表示遅延を小さくし、かつ滑らかなアニメーションでゲームをプレイすることができます。

参考:Source Multiplayer Networking