セキュリティ
CS2 Fog Of War: CS2サーバー向けのサーバーサイド壁ハック対策オクルージョンカリング
CS2 Fog Of War: Server-sided anti-wallhack occlusion culling for CS2 servers (github.com)
要約
CS2FOW(Counter-Strike 2 Fog Of War)は、Counter-Strike 2コミュニティサーバー向けのサーバーサイドの壁ハック対策プラグインです。敵がマップのジオメトリの背後に完全に隠れている場合、CS2FOWはその敵のライブエンティティデータをクライアントへの送信を停止できます。クライアントが隠された敵の位置を受信しなければ、壁ハックは描画するための有用なデータが少なくなります。これは、サーバー側で動作し、どの敵エンティティを各クライアントに送信するかを制御します。Valveの公式マッチメイキングでは動作しませんが、チートの主なデータソースを削減し、チェートを不可能にするわけではありません。
全文翻訳
[CS2FOW] (Counter-Strike 2 Fog Of War) CS2サーバー向けのサーバーサイド壁ハック対策オクルージョンカリング
FAQ
このFAQは、Reddit、Discord、GitHub、およびライブサーバーテストからの繰り返し寄せられる質問に答えます。
CS2FOWとは何ですか?
CS2FOWは、Counter-Strike 2コミュニティサーバー向けのサーバーサイドの壁ハック対策プラグインです。
敵がマップのジオメトリの背後に完全に隠れている場合、CS2FOWはその敵のライブエンティティデータをクライアントへの送信を停止できます。
クライアントが隠された敵の位置を受信しなければ、壁ハックは描画するための有用なデータが少なくなります。
これはビジュアルフィルターですか?
いいえ。
CS2FOWはプレイヤーのPC上の何もぼかしたり、隠したり、変更したりしません。
サーバー上で実行され、どの敵エンティティを各クライアントに送信するかを制御します。
これはValveのマッチメイキングで動作しますか?
いいえ。
CS2FOWはコミュニティおよび専用サーバー向けのMetamodサーバープラグインです。
プレイヤーはこれをインストールする必要はなく、Valveがゲーム内に同様のものを実装しない限り、Valveの公式マッチメイキングで使用することはできません。
CS2FOWサーバーに参加したプレイヤーはVAC banされますか?
CS2FOW自体による予期されるリスクはありません。
サーバー上で実行されます。
クライアントファイルを変更したり、クライアントにインジェクトしたり、プレイヤーに何かをインストールするように求めたりしません。
チートはこれを回避できますか?
通常の「チートを更新する」方法ではありません。
サーバーが敵の位置を送信する場合、チートはそれらを読み取ることができます。
サーバーが隠された敵の位置を送信しない場合、チートは受信しなかった正確なライブデータを回復できません。
チートは、サウンドイベント、最後に知られた位置、一般的なプリファイヤースポット、チームメイトの情報、またはゲームセンスなどのより弱い信号を引き続き使用できます。
CS2FOWは主な壁ハックデータソースを削減しますが、チートを不可能にするわけではありません。
これはプレイヤーをサーバーから削除しますか?
いいえ。
敵はサーバー上で通常通り存在します。
ヒット登録、弾丸貫通、ダメージ、移動、ゲームルールはすべてサーバーサイドで発生します。
CS2FOWは、その敵エンティティが特定のクライアントに送信されるかどうかを変更するだけです。
隠された敵を壁抜きできますか?
はい。
壁やドアを正しく撃つ場合、サーバーはヒットを登録できます。
サーバーが弾丸を処理するために、クライアントが敵の正確な位置を知る必要はありません。
具体的に何が隠されますか?
現在のプレビューでは、CS2FOWは生きている敵のポーンとその現在持っている武器を、生きているT/CT受信者からフィルタリングします。
チームメイト、自分自身、死亡したプレイヤー、観戦者、HLTV、発射物、ドロップしたワールドアイテム、パーティクル、エフェクト、またはサウンドはフィルタリングしません。
ボットは影響を受けますか?
はい、それらが生きている敵のポーンである場合です。
ボットは、可視性計算のために通常のプレイヤーとして扱われます。
死亡したボット、観戦中のプレイヤー、チームメイト、観戦者はフィルタリングされません。
なぜ観戦者はまだすべてを見ることができるのですか?
設計によるものです。
CS2FOWは、生きているT/CTプレイヤーに対してのみフィルタリングします。
死亡したプレイヤー、観戦者、HLTVはフィルタリングされません。これは、観戦者の動作がライブゲームプレイとは異なり、壊れやすいためです。
レーダーチートをブロックしますか?
部分的に。
レーダーチートがサーバーから送信される敵エンティティの位置に依存している場合、CS2FOWはそのデータも削減します。
隠された敵は送信されないため、描画されるライブ位置データが少なくなります。
サウンドイベント、チームメイトの情報、爆弾情報、または考えられるすべてのワールドのヒントは、現在隠しません。
サウンドESPと足音はどうですか?
サウンドはプレイヤーエンティティとは別です。
プレイヤーの位置はエンティティデータです。
足音、銃声、その他のオーディオキューはサウンドイベントです。
CS2FOWは現在、エンティティの可視性に焦点を当てており、サウンドをランダム化したり削除したりしません。
サウンドフィルタリングは慎重な設計が必要です。なぜなら、サーバーは誰がチートしているかを知らないからです。
サウンドの変更はすべて、正規のプレイヤーにも影響を与え、足音はCSのコアメカニックです。
煙はどうですか?
現在のプレビューでは、煙をオクルーダーとして使用していません。
CS2FOWは静的なマップジオメトリを使用します。
煙は動的であり、異なる処理が必要です。
単純な将来のバージョンでは、アクティブな煙をボリュームで近似できますが、実際の煙の動作は通常のゲームプレイを壊さないように、さらなる研究が必要です。
ドア、破壊可能なオブジェクト、小道具、または移動するブロッカーはどうですか?
現在のプレビューではカバーされていません。
CS2FOWは静的にベイクされたマップジオメトリを使用します。
ドア、破壊可能なオブジェクト、小道具、煙、パーティクル、発射物などの動的なオクルーダーは、現時点では意図的にスコープ外です。
ドロップされた武器はどうですか?
ドロップされた武器は実際の情報漏洩であり、後で処理されるべきです。
これらは継続的なプレイヤーESPではありませんが、クラッチ状況で意思決定情報が漏洩する可能性があります。
例えば、武器が出現したり、消えたり、移動したりすると、プレイヤーがどこにローテーションしたかを示唆する可能性があります。
クリーンな将来の修正は、ドロップされた武器エンティティも可視性フィルタリングすることです。
なぜ武器のマズルが角の周りにポップインしたのですか?
プレビューはプレイヤーの体周りのポイントをチェックしており、すべての持っている武器のマズルをチェックしているわけではありません。
体がまだ見えない状態で銃が角の周りに突き出ている場合、プレイヤーが送信されるときに武器がポップインすることがあります。
可能性のある修正は、武器のマズルまたは武器の境界の可視性サンプルを追加して、持っている武器が見えるようになるとプレイヤーが早期に明らかになるようにすることです。
可視性チェックの精度はどのくらいですか?
空間的には、手作りのマップではなく、実際のCS2マップの物理リソースを使用します。
ベーカーは、マウントされたマップから静的なワールド衝突三角形を抽出し、BVH8アクセラレーション構造を構築し、ランタイムは複数のオブザーバーおよびターゲットポイントをそのジオメトリに対してチェックします。
これは、固い静的な壁、床、角、および通常のマップカバーに対して正確です。
これは、すべての動的なゲームオブジェクトの完全なシミュレーションではありません。
ピーク時にポップインが発生しますか?
目標は早期の表示であり、正確な最後のミリ秒の表示ではありません。
CS2FOWは移動とpingを使用して予測し、敵を正確な可視性よりわずかに早く表示し、表示された敵を短時間表示し続けます。
これは意図的に、コーナー近くの小さなウィンドウを漏らして、遅いポップインを避けます。
プレビューは、エッジケースのために実際のサーバーテストをまだ必要としています。
CS2FOWはどのくらいのレイテンシを使用しますか?
サーバーフレーム時間ではなく、プレイヤーのネットワークレイテンシです。
CS2FOWは、受信者のRTT/pingとワーカーの更新間隔を使用して、どれだけ早く表示するかを決定します。
高pingのプレイヤーは、設定でキャップされた、より大きな早期表示バッファを受け取ることができます。
高pingはこれを悪化させますか?
高pingは、少し早く表示することで処理されます。
これによりネットワーキングが完璧になるわけではありませんが、CS2FOWはクライアントが「壁をクリアした」と言うのを待ちません。
サーバーはすでにプレイヤーの位置とマップジオメトリを知っています。
CS2FOWは毎ティック可視性チェックを実行しますか?
いいえ。
ワーカー スレッドが一定間隔で可視性マトリックスをリフレッシュします。
デフォルトは10ミリ秒です。
CheckTransmitは完了したマトリックスを読み取るだけで、BVHトラバーサル、レイ数学、ファイルIO、ロック、またはベーキングを実行しません。
これはサーバーに負荷がかかりますか?
テストでは、意味のあるオーバーヘッドは観察されませんでした。
コストのかかるマップ作業は事前に、または低優先度のバックグラウンドベークで実行されます。
ランタイムチェックは、エンジンTraceRayスパムの代わりに、事前にベークされたBVH8データとAVX数学を使用します。
テストされた12v12の最悪ケースシナリオでは、古いトレースベースのアプローチは約60ミリ秒に達する可能性がありました。
CS2FOWは平均約1ミリ秒で、最悪ケースは約8ミリ秒でした。
32人プレイのデスマッチはどうですか?
最悪ケースは、特に全員が敵である場合、より方向性の高い敵のペアです。
CS2FOWはそのような作業形状のために設計されました:事前にベークされたマップデータ、BVH8トラバーサル、AVXパケット数学、ワーカー スレッド、早期終了、およびキャッシュされた三角形パケット。
サーバー所有者は、cs2fow_statusを使用して、独自のマップとプレイヤー数でテストする必要があります。
なぜ速いのですか?
エンジンにすべてのセグメントをトレースさせるわけではないからです。
ベーカーはマップジオメトリをランタイム準備完了のBVH8に変換します。
ランタイムでは、AVXは複数の子バウンドまたは三角形を並列でチェックします。
ほとんどの可視性チェックは、1つのクリアなセグメントが敵が表示されるべきであることを証明するとすぐに早期終了します。
なぜAVX2ではなくAVXなのですか?
AVXはランタイムのベースラインであり、より多くのサーバーがそれを実行できるようにします。
BVH8フォーマットは依然として8幅の浮動小数点ベクトルを使用します。
これはCS2FOWがあまり依存していないAVXで動作します。
AVX2は、CS2FOWが現在のトラバーサルパスでそれほど重く依存しない整数/ベクトル操作に主に役立ちます。
プレビューにはスカラーフォールバックはありません。
私のVDSはAVXが欠落していると表示するのはなぜですか?
一部のVDSプロバイダーは、CPU機能を仮想マシンから隠しています。
phy