砲弾と銃弾の同期

最近行われたアップデートで、クライアントとサーバー間の砲(弾)同期を大幅に改善しました。




『War Thunder』は、ひとつのバトルでお互いに1000キロ以上離れた位置から戦うオンラインゲームです。
皆様は99.9%の割合で気づいたことがないと思いますが、ゲームがこのような仕様になったのは、
単独でゲームをプレイする時に、お使いの兵器でスムーズにプレイできるようにするためです。


『War Thunder』のネットコードについては、こちら(※英語の記事となります)の記事に詳細が書かれていますのでご覧ください。
主に航空機に生じ、空中戦と混合戦の両方で対戦相手との動作に影響を与えていた、
このコードに施した具体的な改善についてお伝えしたいと思います。


直近で行われたアップデートでは、敵との直接的な相互作用である、
クライアントとサーバー間の砲(弾)同期を大幅に改善する変更を実施しました。


砲(弾)の軌道計算は、サーバーとクライアントが同じ物理モデルを使用している時に開始していました。
しかし今後は、同じ時間にサンプル・レートを使用した時にも、同期が起こります。
これはつまり、クライアントの砲(弾)の軌道がサーバー上でほぼ同等になるだけではなく、
99%のケースで完全に一致し、さらにクライアントの軌道計算はゲーム内にある
クライアントのFPS(第一者視点のゲーム)に依存することはなくなります。







これらの変更により、ネット同期モデルで、
クライアントで登録したプレイヤーを確認することはできても、
サーバーでカウントされていないという事象が発生することを最小限へと減少しました。
しかし、サーバーは砲弾が発射されたかということを知る必要があり、
クライアントに表示されている画像と、実際にサーバー上に表示されている画像との関連性に
高pingが影響しているため、不安定な接続(不安定なping、パケットロス)によって
問題が発生する可能性はあるということは覚えていておいてください。


コンピューターゲームでは、機関銃や機関砲によって発射される全ての兵器を同期し、
計算することは不可能だという通説が未だに存在していますが、これは間違いです。
なぜなら、私たちはこれまでの戦争に関連しているすべてのプロジェクトで、
常に火力や口径に頼っていないすべての砲(7mmの機関銃や30mmの機関砲であっても関係ありません)を計算してきたからです。
時には、何十万というたくさんの銃弾が同時に空を飛び交っていることがあります。




The War Thunder Team