
激しいオンライン銃撃戦の真っ最中だ。クロスヘアを敵の頭部に完璧に狙い、引き金を引くと、満足げな赤い弾丸が飛び散る。しかし、敵は死なない。次の瞬間、あなたは死んでしまう。キルカメラには、あなたの弾丸が敵の体を無傷で貫通している様子が映し出されている。ゲーマーに広く嫌われるこの苛立たしい瞬間は、オンラインマルチプレイヤーゲームにおいて最も重要かつ複雑で、しばしば誤解されているシステムであるHit Registrationの欠陥と言える。
ヒットレジストレーションとは、ゲームサーバーがプレイヤーの攻撃(弾丸、剣の振り、呪文)がゲーム内の他のプレイヤーまたはオブジェクトに命中し、ダメージを与えたかどうかを判断するための総合的なプロセスです。これは1行のコードではなく、クライアント(PC、PlayStation、Xbox)、ゲームサーバー、そしてそれらを接続するネットワークの間で、数ミリ秒単位で行われる繊細なダンスです。このガイドでは、あらゆるショットの背後にある技術的なバレエを分かりやすく解説し、「ノーレジストレーション」(ノーレジストレーション)ヒットの一般的な原因を説明し、ping、ティックレート、ネットコードなどの要素が、あなたが伝説の射撃手になった気分になるか、それともデジタル世界の裏切りの犠牲者になった気分になるかをどのように左右するかを説明します。
Hit Registrationは、ネットワークの遅延とゲーム状態の調整を考慮して、クライアントが報告したショットまたは攻撃が、ショットが発射された瞬間にターゲットのヒットボックスと正常に交差したかどうかに関するサーバー側の権限の最終判定です。
要するに、ゲーム側はヒットしたと示唆します。サーバー側は、ゲームワールドの公式バージョンに基づいて、そのヒットが有効かどうかを判断します。「ヒット登録」の失敗は、サーバーがクライアントの示唆を拒否したことを意味します。
根本的な問題はレイテンシ(ping)です。これは、データがあなたのマシンとサーバー間で移動するのにかかる時間です。この遅延(例えば50ミリ秒)の間、誰もが動いています。クライアントの視点は、サーバーに対して常にわずかに過去のものとなります。これにより、2つの異なる視点が生まれます。
クライアントの視点:敵を発見したので、撃ちます。
サーバーの視点:サーバーは、数ミリ秒前に敵がどこにいたかを知っています。
ヒット登録システムの役割は、このギャップを埋め、公正な判定を下すことです。その方法はネットコードアーキテクチャによって異なります。
仕組み:クライアントはサーバーに「位置Xから時刻Tに方向Yに向かってショットを発射した」というメッセージを送信します。サーバーは自身のゲーム状態シミュレーションで時間を時刻Tまで巻き戻します。そして、その瞬間に、プレイヤーの位置からのレイキャストがサーバー上のターゲットのヒットボックスにヒットしていたかどうかを確認します。これはラグ補正、またはサーバーリワインドと呼ばれます。
利点:高pingのプレイヤーが非現実的なリードショットを打つことを防ぎます。サーバーが補正を行います。
デメリット:悪名高い「ピーカーズアドバンテージ」を引き起こし、プレイヤーがまるでカバーの後ろに隠れて撃たれたかのように感じさせる可能性があります。サーバーが巻き戻しすぎると、撃たれたプレイヤーにとって不公平に感じられる可能性があります。
仕組み:クライアントは、ショットがヒットしたかどうかを即座に判断し、サーバーに「プレイヤー Z に 50 のダメージを与えました」と伝え、サーバーは通常それを信頼します。
長所:射手にとって信じられないほど反応が良いと感じます。
短所:チート(エイムボット)に対して非常に脆弱であり、クライアントの古い「ヒット」判定が受け入れられるため、高pingのプレイヤーに大きなアドバンテージを与えます。これらの理由から、対戦ゲームではほとんど使用されません。
現代の競争的なゲームのほとんどは ( Valorant、Counter-Strike 2、Apex Legends )、ラグ補正を備えた高度なサーバー側ヒット登録を使用しています。
クリックからキルフィードまでの経緯は次のとおりです。
クライアントの入力と予測:
クリックすると射撃できます。クライアントは射撃アニメーションとサウンドを即座に再生し(クライアント側予測)、ゲームの応答性を高めます。
クライアント側のトレースを実行して、血液/ヒット マーカーを表示します (これは信頼できるものではありません)。
撮影データ(時間、撮影地、方向)をパケットにまとめてサーバーに送信します。
サーバー受信と時間巻き戻し:
サーバーはパケットを受信し、タイムスタンプと平均ping値(推定値)に基づいて、発射時刻を計算します。
世界の状態をその推定時間まで巻き戻します。
サーバーサイドレイキャストと検証:
サーバーは、巻き戻した位置からショットの方向に沿って独自の信頼できるレイキャストまたはヒットスキャン チェックを実行します。
巻き戻された位置にある他のプレイヤーのヒットボックスとの衝突をチェックします。
射撃の有効性を検証します。武器は本当に準備できていたのか?弾薬はあったのか?発射速度は妥当なものなのか?
損害賠償申請と和解:
有効な場合、サーバーはヒット場所 (頭、胴体、手足)、距離、武器の統計に基づいてダメージを計算します。
対象のプレイヤーにダメージを与え、体力を更新します。
「ヒット確認」メッセージをクライアントに返します。
クライアントの調整とフィードバック:
クライアントはサーバーの判定を受け取ります。
サーバーがヒットを確認した場合: クライアントは軽微な予測ミスを調整し、ヒット効果を確定することができます。
サーバーがヒットを否定した場合:クライアントは調整を行う必要があります。血しぶきを撤回したり、ヒットマーカーを付与しなかったり、敵の位置を微妙に巻き戻したりするかもしれません。このとき「ノー・レジスター」と表示されます。
概要:サーバーがゲームの状態を 1 秒あたり何回更新するか (例: 64 Hz = 64 回の更新/秒、128 Hz = 128 回の更新/秒)。
影響:ティックレートが高いほど、サーバーがプレイヤーの位置を「スナップショット」として取得する頻度と精度が向上します。これにより、ラグ補正の精度が向上し、ヒット判定も全体的に向上します。対戦ゲームでは、128ティックサーバーがよく使用されています(例:Valorant、*FaceIT/ESEA CS2*)。
補間:サーバーから受信した位置情報の更新情報をブレンドすることで、画面上の他のプレイヤーの動きを滑らかにします。補間が多すぎると、視覚的な遅延が発生します。
外挿:次のアップデートが届く前にプレイヤーがどこにいるかを予測します。外挿が不正確な場合、「ラバーバンド現象」が発生する可能性があります。
キャラクターモデルは、表示されるビジュアル スキンです。
ヒットボックスとは、衝突判定に使用される、目に見えない簡略化された幾何学的形状(カプセルやボックスなど)です。ヒットボックスとモデルの正確な位置合わせは必ずしも必要ではありません(例:はためくコートや髪の毛など)。ヒット判定を良好に行うには、ヒットボックスとモデルの正確な位置合わせが不可欠です。
Ping(レイテンシ):低いほど良い結果が得られます。Pingが高い(100ms以上)と、巻き戻しウィンドウが長くなり、判断の精度が低下します。
ジッター:不安定なping。20msから80msの間で変動するpingよりも、安定した50msのpingの方が優れています。ジッターは、サーバーが正確に時間を巻き戻す能力を損ないます。
パケットロス:ショットパケットや位置情報の更新が通信中に失われる。これにより、ショットが消えたり、敵がテレポートしたりする可能性があります。1~2%のパケットロスでも、命中精度に壊滅的な影響を与えます。
「私は隠れて彼を撃った!」
原因:相手の画面では、あなたが発砲する前に相手はカバーにたどり着いていました。サーバーは相手が露出した時点まで巻き戻し、あなたに命中判定を与えました。あなたはこれを「射手有利」と感じます。これは、射撃の確実性を高めるためのよくある設計上の選択です。
血が飛び散っていますが、損傷はありません。
原因:クライアントはローカル予測でヒット効果を示しましたが、サーバーは正式な検証でヒットを否定しました。サーバーの「いいえ」はクライアントの「はい」を上書きします。
敵を貫通する弾丸。
原因:重大なパケット損失 (ショット パケットが到着しない)、極端なサーバー ラグ、またはまれに発生するヒットボックス モデルの不整合バグ。
1 回のスプレーで一貫性のない登録。
原因:ネットワーク ジッターが一部のパケットに他のパケットよりも大きな影響を与えているか、サーバーのヒット検証システム (例: *Counter-Strike 2* のサブティック システム) が各弾丸のタイミングを異なる方法で解釈しています。
プレイヤーとしてできること:
有線接続(イーサネット)を使用する: Wi-Fiのジッターとパケットロスを排除します。これが一番の解決策です。
低い Ping のサーバーを選択する:常に地理的に最も近いサーバーに接続します。
ネットワークの監視:ツールを使用して、パケットロスやジッターの上昇がないか確認してください。問題が続く場合は、ISPにご連絡ください。
「射手有利」の原則を理解しよう:激しい決闘では、身を隠しながらも射撃を続けましょう。ネットコードによっては、遅いヒットが認められる場合があります。
ゲーム内設定: 「ネットワーク統計」オーバーレイを有効にすると、ping とパケット損失をリアルタイムで確認できます。
開発者が制御するもの(ネットコードの品質):
合理的な制限内で効率的な遅延補償を実装します。
高いティック レートを使用します。
正確で応答性の高いヒットボックスを作成します。
チート攻撃に対する堅牢なシステムの構築 (アンチチート)。
格闘ゲームコミュニティは、ロールバックネットコード(GGPO)の先駆者であり、今やゴールドスタンダードとなっています。1対1向けに設計されていますが、入力を積極的に予測し、修正が必要な場合はゲームフレームをロールバック/書き換えるというその原理は、他のジャンルにも影響を与えています。中程度のping値でも、驚くほど安定した低遅延のプレイ感覚を提供します。
Q: 「no reg」は単なるラグですか?
A:ほとんどの場合、ラグ (高 ping、ジッター、パケット損失)が原因です。ただし、これはラグが原因でサーバーがクライアントの要求を拒否していることを示しています。
Q: キルカメラの映像が、私が実際に見た映像と異なることがよくあるのはなぜですか?
A:キルカメラはサーバーデータからの再構成であり、自分の画面や対戦相手の画面を録画したものではありません。キルカメラはサーバー側の正式な映像を表示するため、ラグ補正されたクライアントの映像とは常に若干の差異が生じます。
Q: 高性能なPCやモニターを使えば、ヒットレジストレーションを「修正」できますか?
A:高性能なPCやモニターは、入力遅延とフレームレートの安定性を改善し、エイムと反応速度を向上させます。ただし、ネットワークベースのヒットレジストレーションの問題を直接修正するわけではありません。パケットロスが10%ある場合、360Hzモニターでも効果はありません。
Q: ヒットスキャンと弾丸の命中判定の違いは何ですか?
A:ヒットスキャン(例:Call of Dutyのライフル)は瞬時に計算されます。「この線上にターゲットはいるか?」と。一方、弾丸(例:ロケット、矢)には移動時間があります。サーバーは弾丸の軌跡を時間経過とともにシミュレートする必要があり、これはより複雑で、ラグによって感覚が変化する可能性があります。
Q: なぜ一部のゲームは他のゲームよりも「鮮明」に感じられるのでしょうか?
A:これは、ティックレート、補間設定、アニメーション品質、入力遅延、そしてネットコードの効率性といった要素が組み合わさった結果です。ValorantやOverwatch 2のようなゲームは、高いティックレートと洗練されたネットコードを用いて、この「鮮明さ」に力を入れています。
ヒットレジストレーションは、プレイヤーの知覚とサーバーの現実世界との間の脆い休戦協定です。これをマスターするには、オンラインゲームではプレイヤーを撃つのではなく、サーバーが遅延表示するプレイヤーを撃つのであり、その交戦ルールはネットコードによって定義されていることを理解する必要があります。
ヒットレジストレーションで最も記憶に残る瞬間は?良いものでも悪いものでも。ネットコードが非常に鮮明に表示されたゲーム、あるいはイライラするほど壊れているゲームに出会ったことはありますか?ぜひ下のコメント欄で、あなたの経験やネットワークのトラブルシューティングのヒントを共有してください。慢性的に「ヒットレジストレーションなし」に悩まされている場合は、設定についてご説明いただければ、原因を診断いたします。ティックレート、ピーカーアドバンテージ、ゲームに最適なネットワークの最適化など、さらに詳しく知りたい方は、ネットワークガイドシリーズをご覧ください。さあ、オンラインに接続して、pingに気をつけて、ヒットレジストレーションが正確に行われることを祈ります。