今回のお題はサーバ判定とクライアント判定
シューターゲームにおける様々な判定がどこで行われているのか
行われる場所によってどのような副作用があるのかを書いていきます
尚、私自身ゲーム会社に勤めたことはなく仲間内での開発経験しかないので業界の実態は知りません
表とか図とか色々準備しようと思ったけど面倒なのでやめます
本稿ではサーバ判定とクライアント判定は下記の通りとします
サーバ判定:当たり判定などの判定をサーバの処理で行っている
クライアント判定:判定を各クライアント毎の処理で行っている
判定ごとのタイトル例
通常のFPS/TPS(ApexやEFT等)はクライアント判定を行っているゲームが90%といっても過言ではないです
逆にサーバ判定を持っているゲームはWoT/WoWSくらいしか知りません
判定による動作差分
クライアント判定
大多数のゲームはこちらのパターンです
撃つ側のクライアントで弾丸の当たり判定を行うことが多いです
稀に撃たれた側のクライアントで当たり判定を行います
いずれも当たったという情報をサーバへフィードバックします
キャラクターの移動もクライアントが先行し、移動完了をサーバへフィードバックすることが多い印象です。実態は知りません。
サーバ判定
基本的に移動や弾丸の当たり判定全てがサーバ基準で行われます
移動開始をクライアントからサーバへフィードバックするようになります
弾丸も着弾地点をサーバへ送信し、着弾結果をサーバからクライアントが受け取るようになります
WG特有の隠蔽システムもサーバからクライアントへ見つかった後に敵艦艇の位置情報を送ります
各判定のメリットデメリット
クライアント判定のメリット・デメリット
- サーバの負荷が少ない
- アクション性の高いFPS等では見た目通りのダメージが出る
- オートエイムやウォールハックのチートが容易に作られやすい
- ラグイ敵から理不尽な挙動の影響を受けやすい
基本的にクライアント判定はサーバでの処理をクライアントが肩代わりする分、チートやクライアント環境の影響を他者が受けやすいというデメリットがあります
弾丸の判定もクライアントで行うが故にオートエイムなどの要因になったりもします。その反面、撃つ側の視点で当たった弾がしっかりとダメージが入ることが保証されるためラグを感じにくくなります。
サーバ判定のメリット・デメリット
- 圧倒的にチートが少ない
- クライアントの処理が比較的軽い
- サーバ負荷が高くなりがち
- 通信環境が不安定になると自キャラの操作すらままならなくなる
サーバで当たり判定からキャラ移動の判定を行うためクライアントでは描画に処理を集中できます
また弾道をクライアント側で制御できないため、弾が曲がるといったオートエイムは不可能になります
代償として、サーバ処理が増えるため負荷は高くなります。また通信環境が不安定だと自キャラの操作情報や弾の発射情報を送信することができなくなるため、何も操作できなくなります
さいごに
本当は描きたいことは多々ありますがまとまらないので大分端折りました
格ゲーやアクションゲームでは他人と自分で違うフレーム数のエフェクトを用意して、サーバ介して表示されるグラと自分のグラが微妙に違ったりします
こんな雑談も需要があればそのうち書きます