ゲームのホストはオーソリティか、それとも別の愚かなクライアントでしょうか?


15

1人のプレイヤーがホストし、他のプレイヤーが接続するネットワークマルチプレイヤーゲームを設計するとき、私が知っている2つの戦略があります。

  • ホストプレーヤーのゲームをオーソリティにし、他のすべてのプレーヤーがダムクライアントとして現在のゲーム状態に追いつくようにします。コードでは、現在のプレーヤーがホストかどうかに応じて、多くの特別なケースが必要になります。
  • 別のスレッドで非表示の専用サーバーを実行することにより、ホストを他の全員と同様にダムクライアントにします。専用サーバーが権限となり、ホストは他のユーザーと同様に(localhostを介して)接続します。

これらのそれぞれの利点/欠点は何ですか?最もよく使用されるのはどれですか(またはゲームのタイプ/サイズによって異なりますか)?


最初に説明するケースは、P2Pネットワーキングの1つの形式(1つの信頼できるクライアントを使用)であり、通常ははるかに複雑で、実装と保守が困難です。
akaltar

回答:


13

ダムクライアントアプローチは、純粋な設計の観点から最適です。ホストとクライアント間で必要な異なるコードの量を大幅に制限し、サーバーを非同期で実行できます。欠点は、ホストのマシンが追加のリソースを必要とすることですが、私はそれが常に必要だったと思います。


8

これら2つのオプションの間では、DeadMGが言及している理由から、ダムクライアントアプローチが確かに最適です。

すべてのクライアントをオーソリティにする別のオプションがあり、すべてのピアが同じコードを共有するというダムクライアントの利点があります。もう1つの利点は、サーバーへの0ラグの利点がないため、適切なルールを設定すると、はるかに公平になる可能性があることです。

もちろん、これはゲームの種類によっては実装がかなり難しい場合があります。プロトコルは、おそらく何らかの種類の所有権スキームを使用して、ピア間の競合を解決する必要があります。2人のピアが同じゲームオブジェクトの所有権を主張する競合のみを残します。

グーグルPeer-2-Peerマルチプレイヤープロトコルを使用すると、このアプローチに関する詳細が得られる場合があります。



面白い。その投稿は、これが「ほとんどの戦略タイトル」がネットワーキングを実装する方法であると主張しています。これは本当ですか?これはどうですか。指揮統治スタークラフトは機能しますか?
BlueRaja-ダニーPflughoeft

@BlueRaja、これがスタークラフトの仕組みです、はい。Starcraftには権限がまったくありません。Warcraft IIIおよびStarcraft IIには、より集中化されたメッセージ交換モデル、遅延および切断処理がありますが、各クライアントが独自のゲーム状態をホストするという点で基本的に同じです。
ローター

このネットワークモデルのもう1つの利点は、最小限の同期トラフィックで大規模で一貫性のある共有ワールド状態をサポートできることです。
ローター

このモデルの最大の欠点は、「マップハッキング」に対する固有の脆弱性です。これは、プレーヤーが通常見ることができないゲーム状態データを明らかにすることです。
ローター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.