「2015/01/18-01」の編集履歴(バックアップ)一覧はこちら
「2015/01/18-01」(2015/02/14 (土) 18:13:30) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
**Hit Srv (前編)
お問い合わせが相次ぎましたが...
----
この機能が搭載された時期は失念致しましたが、
Battlefield4のオプション設定にてネットワークに関する
リアルタイムなステータスを画面で確認する機能が追加されました。
ちなみにBattlefield4のインストールディレクトリ(*1)に&b(){user.cfg}なるテキストファイルを作り、
NetworkPerfOverlay.DrawGraph 1
と記述するとゲーム画面の右下にグラフなどが表示されるようになります。
&b(){Hit Srv ... ゲームサーバが判定した敵への命中回数}
&b(){Cli Srv ... プレイヤーのPCが判定した敵への命中回数}
クライアントとサーバそれぞれで命中判定を行っていますが、
結果が異なる場合、サーバ側が優先されるため命中した回数が異なることがあります。
そのため Hit Srv < Hit Cli であれば、
プレイヤーは命中弾を与えているように見えても、
サーバはそのように判定していないケースが発生していることを意味します。
(*1)ディフォルトでは&b(){C:\Program Files (x86)\Origin Games\Battlefield 4}となっています。
----
***■Hit Srv < Hit Cliになるのはなぜか?
多くの方が&b(){Hit Srv ≒ Hit Cli * 70%}程度となっているとのことで、
30%程命中弾が失われているのではないかとのこと。
このようなお問い合わせを頂いた原因は、
&b(){&color(red){Hit Srv = Hit Cli にならないと命中判定にて損得が生じているとの疑念がある}}からだと思います。
&s(){でも、敵の弾も30%失われれば平等になりますので気にするのはやめましょう。}
----
***■まずは例外から
&image(HitSrv_20150118_01.png)
&b(){Hit Srv > Hit Cli となっています。}
特殊なケースでは...
&image(HitSrv_20150118_02.png)
&b(){55回全てが無効になっています。}
この2つの例は意図的に作り出した特殊な状況で発生していますが、
状況によって結果が大きく変化することを意味します。
----
***■いきなり結論
&b(){&color(red){Hit Srv ≠ Hit Cli}になる原因の多くは、}
&b(){プレイヤーが見ている状態(画像)とサーバ内の状態が一致していないためと考えられます。}
&b(){具体例.1}
移動中の敵に対して発射した弾が敵に命中した(ように見えた)。 → Hit Cliは1増加
しかし、サーバ内では敵は別の場所に居る(ことになっている)ため命中とは判定されなかった。 → Hit Srvは変化せず
&b(){具体例.2}
移動中の敵に対して発射した弾が敵に命中しなかった(ように見えた)。 → Hit Cliは変化せず
しかし、サーバ内では敵は別の場所に居る(ことになっている)おり、たまたま命中したと判定された。 → Hit Srvは1増加
&b(){具体例.3}
至近距離の敵と大量の銃弾を浴びせあったが、最後の命中弾を与えた(ように見えた)とき、サーバ内の状態では敵が既に死んでいた。
(サーバ内部の状況としては、死体を撃っていたことになる)
最後の命中弾は無効になるため、Hit Cliだけ1増えます。
&b(){具体例.4}
至近距離の敵と大量の銃弾を浴びせあったが、最後の命中弾を与えた(ように見えた)とき、サーバ内の状態では自分が既に死んでいた。
(サーバ内部の状況としては、死体が弾を撃つことはあり得ないため、恐らく弾の発射情報は無視されている)
最後の命中弾は無効になるため、Hit Cliだけ1増えます。
----
命中判定をサーバ側優先で行っているが故に起こる問題ですが、
クライアント側優先(またはクライアント側のみ)の仕様にすると、
命中判定がHighPingさんの影響を受けることやチートの問題など
様々なデメリットも生ずることから十分に納得出来るトレードオフだと考えられます。
(サーバ側の命中判定は自分のPing値(Latency)しか影響しません)
Battlefield3のOperationMetroにて、壁の裏に隠れた後で何発も被弾した経験のある方も多いでしょう。
Battlefield4ではこのような減少は皆無になったはずです。
(後編につづく)
(&Counter())
**Hit Srv
お問い合わせが相次ぎましたが...
----
この機能が搭載された時期は失念致しましたが、
Battlefield4のオプション設定にてネットワークに関する
リアルタイムなステータスを画面で確認する機能が追加されました。
ちなみにBattlefield4のインストールディレクトリ(*1)に&b(){user.cfg}なるテキストファイルを作り、
NetworkPerfOverlay.DrawGraph 1
と記述するとゲーム画面の右下にグラフなどが表示されるようになります。
&b(){Hit Srv ... ゲームサーバが判定した敵への命中回数}
&b(){Cli Srv ... プレイヤーのPCが判定した敵への命中回数}
クライアントとサーバそれぞれで命中判定を行っていますが、
結果が異なる場合、サーバ側が優先されるため命中した回数が異なることがあります。
そのため Hit Srv < Hit Cli であれば、
プレイヤーは命中弾を与えているように見えても、
サーバはそのように判定していないケースが発生していることを意味します。
(*1)ディフォルトでは&b(){C:\Program Files (x86)\Origin Games\Battlefield 4}となっています。
----
***■Hit Srv < Hit Cliになるのはなぜか?
多くの方が&b(){Hit Srv ≒ Hit Cli * 70%}程度となっているとのことで、
30%程命中弾が失われているのではないかとのこと。
このようなお問い合わせを頂いた原因は、
&b(){&color(red){Hit Srv = Hit Cli にならないと命中判定にて損得が生じているとの疑念がある}}からだと思います。
&s(){でも、敵の弾も30%失われれば平等になりますので気にするのはやめましょう。}
----
***■まずは例外から
&image(HitSrv_20150118_01.png)
&b(){Hit Srv > Hit Cli となっています。}
特殊なケースでは...
&image(HitSrv_20150118_02.png)
&b(){55回全てが無効になっています。}
この2つの例は意図的に作り出した特殊な状況で発生していますが、
状況によって結果が大きく変化することを意味します。
----
***■いきなり結論
&b(){&color(red){Hit Srv ≠ Hit Cli}になる原因の多くは、}
&b(){プレイヤーが見ている状態(画像)とサーバ内の状態が一致していないためと考えられます。}
&b(){具体例.1}
移動中の敵に対して発射した弾が敵に命中した(ように見えた)。 → Hit Cliは1増加
しかし、サーバ内では敵は別の場所に居る(ことになっている)ため命中とは判定されなかった。 → Hit Srvは変化せず
&b(){具体例.2}
移動中の敵に対して発射した弾が敵に命中しなかった(ように見えた)。 → Hit Cliは変化せず
しかし、サーバ内では敵は別の場所に居る(ことになっている)おり、たまたま命中したと判定された。 → Hit Srvは1増加
&b(){具体例.3}
至近距離の敵と大量の銃弾を浴びせあったが、最後の命中弾を与えた(ように見えた)とき、サーバ内の状態では敵が既に死んでいた。
(サーバ内部の状況としては、死体を撃っていたことになる)
最後の命中弾は無効になるため、Hit Cliだけ1増えます。
&b(){具体例.4}
至近距離の敵と大量の銃弾を浴びせあったが、最後の命中弾を与えた(ように見えた)とき、サーバ内の状態では自分が既に死んでいた。
(サーバ内部の状況としては、死体が弾を撃つことはあり得ないため、恐らく弾の発射情報は無視されている)
最後の命中弾は無効になるため、Hit Cliだけ1増えます。
----
命中判定をサーバ側優先で行っているが故に起こる問題ですが、
クライアント側優先(またはクライアント側のみ)の仕様にすると、
命中判定がHighPingさんの影響を受けることやチートの問題など
様々なデメリットも生ずることから十分に納得出来るトレードオフだと考えられます。
(サーバ側の命中判定は自分のPing値(Latency)しか影響しません)
Battlefield3のOperationMetroにて、壁の裏に隠れた後で何発も被弾した経験のある方も多いでしょう。
Battlefield4ではこのような現象は皆無になったはずです。
(&Counter())
表示オプション
横に並べて表示:
変化行の前後のみ表示: