-
Notifications
You must be signed in to change notification settings - Fork 0
Description
java editionで開発されたラグ補償の必要がなくなる新しいアンチチートシステムらしいので、
導入してみようと思ったのですがTCPでパケットの順序が保証されることを利用したものらしく
UDPのmcbeで使用できるかわからないです(UDPはパケットの順序が保証されない)
詳細(hypixel):
https://hypixel.net/threads/tldr-why-reach-is-harder-to-detect-than-you-think-how-to-detect-it.4878543/
さて、サーバーがクライアントにパケットを送信してから、クライアントが実際にそれを受信するまでに遅延があることは分かっています。この遅延は大規模な非同期を引き起こし、偽旗を立てずに生の距離を取得することが不可能になります。
これを解決するために、賢いアンチチートの開発者は「トランザクションペアリング」または「トランザクションサンドウィッチング」と呼ばれるシステムを使うことにしました。「トランザクション」とは、単に同期確認パケットで、メインスレッドで送られ、クライアントに何か(テレポート先、速度測定、レンダーエンティティなど)するように伝えるのではなく、単に同様の情報をパケットで返信するように伝えることを意味します。
トランザクションのペアリングが機能する方法は、各ティック開始時と終了時にトランザクションパケットを送信することです。サーバーが両方のトランザクションを受信すると、素晴らしい! これがペアリングです。トランザクションは同期で、Minecraft は TCP プロトコルを使用しているので、パケットの順番が保証されています。つまり、2つのトランザクションの間に送信されたすべてのパケットが受信されたと論理的に仮定することができるのです。つまり、クライアントバインドのパケットがいつクライアントに到着したかを正確に知ることができるのです。クライアントからサーバーへの遅延は、何も混乱しないし、プレイヤーの行動を変更するような他のパケットを持っていないため、関係ありません。
トランザクションが分割された場合はどうなりますか?これは少し複雑ですが、通常、前トランザクションだけを受け取り、後トランザクションを受け取らない場合、免除したり、2つの可能な場所からレイトレースしたり、その他の寛容さを追加することができます。また、いくつかの分割されたトランザクションが近くにある場合、そして確かに順序を無視して送信されたトランザクションをキックするかもしれない(これは高いパケットロスでのみ発生し、他のチェックで偽陽性を引き起こす可能性がある。ほとんどのbadpacketsチェックは、パケット順序が知られていて強制されているという仮定で作られている。)。
より正確なリーチチェックは、攻撃クライアントがターゲットエンティティを見た場所を正確に特定するために、補間と呼ばれるプロセスに加えてトランザクションペアリングを使用します。
(deeplで翻訳しました)