10

私のゲーム エンジンは現在、動作するシングルプレイヤー パーツで構成されています。私は今、マルチプレイヤーの部分をどのように行うかについて考え始めています.

多くのゲームには実際のシングルプレイヤー モードがないことがわかりましたが、1 人でプレイしているときは、実際にはローカル サーバーもホストしており、ほとんどすべてがマルチプレイヤーであるかのように実行されます (ただし、データ パケットを渡すことができる場合を除きます)。パフォーマンスを向上させるための代替ルートを介して)

このモデルに適応するには、私のエンジンを大幅にリファクタリングする必要があります。可能なモードは 3 つあります。専用クライアント、専用サーバー、クライアント サーバー (リッスン モード) です。

  • リッスン サーバー モデルは、ゲーム業界でどのくらいの頻度で使用されていますか?
  • それの(欠点)利点は何ですか?
  • 他にどのようなオプションがありますか?
4

1 に答える 1

30

これにできる限り答えることができるかどうかを確認します。

リッスン サーバー モデルは、ゲーム業界でどのくらいの頻度で使用されていますか?

ほとんどのオンラインゲームに関しては、ゲームの大部分がクライアントサーバーアーキテクチャを使用していることがわかりますが、常にあなたの考え方ではありません。たとえば、任意のソースゲームを取ります。ほとんどの人は、マスターサーバーアーキテクチャを備えた標準のクライアントサーバーを使用します(利用可能なゲームをリストするために)。

ただし、Left 4 Dead、League of Legends、一部の XBox Live ゲームなど、少し異なるアプローチを取るゲームやサービスがあります。これらはすべて、制御サーバーを備えたクライアント/サーバー アーキテクチャを使用します。ここでの主なアイデアは、誰かがゲームを「実行」していない専用サーバーを作成するということです。制御サーバーは一種の「ロビー」を作成し、ゲームが開始されると、制御サーバーはそれらをキューに追加し、そのロビーの番になると、一致する専用サーバーを選択します (場所/速度、可用性、さまざまな要素) を選択し、プレーヤーをそのサーバーに割り当てます。そうして初めて、サーバーは実際にゲームを「実行」します。同じ考え方ですが、クライアントがサーバーを「選択」する必要がないため、少し単純化されています。

もちろん、最大のクライアント サーバー モデルは MMO モデルです。このモデルでは、1 つまたは複数のサーバーが、ほぼすべてのデータとロジックを処理する永続的な世界を実行します。このモデルを使用した有名なゲームには、World of Warcraft、Everquest などがあります。

では、リッスン サーバーはどこに適合するのでしょうか。正直なところ、それほどうまくはありませんが、それでも多くのゲームで使用されています。たとえば、ほとんどの Source ゲームではリッスン サーバーを作成でき、多くの XBox Live ゲームでも作成できます (かなり前のことですが、Counter Strike や Quake 4 などは作成できたと思います)。ただし、一般的には、クライアント/サーバー モデルの利点のために嫌われているように思われます。

それの(欠点)利点は何ですか?

何よりもまず:パフォーマンス. クライアント サーバー モデルでは、クライアントはゲームの各サイクルでローカルの変更 (入力、グラフィック、サウンドなど) を処理します。サイクルの最後に、関連データ (プレイヤーが移動したか? 移動した場合、どこに移動したか? 移動速度は? 発砲したか? 発砲した場合は、弾丸に関する情報など) をまとめます。など)、それをサーバーに送信して処理します。サーバーはこのデータを取得し、ユーザーがハッキングを示す方法で移動しているか (詳細は後述)、移動が有効か (途中で何か?)、プレイヤーからの弾丸が当たったかなど、すべてが有効かどうかを判断します。 1 ヒット プレーヤー 2? など。次に、サーバーはこれをパッケージ化してクライアントに送信します。クライアントは、プレイヤーが撃たれた場合はヘルスを調整したり、ハッキングしていると判断された場合はプレイヤーを蹴ったりするなど、必要なものを更新します。

ただし、リッスン サーバーは、これらすべてを同時に処理する必要があります。あなたはプログラミングに精通していると思いますので、ゲーム、特に設計が不十分なゲームがコンピューターからどれだけの力を奪うことができるかをおそらく理解しているでしょう。クライアントのゲームだけでなく、ネットワーク処理、セキュリティ処理などを追加すると、少なくとも標準的な処理に関する限り、パフォーマンスが深刻な打撃を受ける場所がわかります。さらに、ほとんどのサーバーは高速ネットワーク上で実行され、ネットワーク トラフィックに耐えるように設計されたサーバーです。リッスン サーバーのネットワークが遅いと、ゲーム全体が影響を受けます。

2つ目のセキュリティについては、前述のとおり、サーバーが行う主な処理の 1 つは、プレイヤーがゲームを悪用しているかどうかを判断することです。これらを Punkbuster や VAC などと見なしたことがあるかもしれません。これらのプログラムを実行する一連の非常に複雑なルールがあります。たとえば、ハッカーと非常に優れたプレイヤーとの違いを判断します。ハッカーを捕まえることができなければゲームにとって非常に悪いことですが、虚偽の告発を受けたハッカーに対して行動を起こすとさらに悪いことになります.

通常、リッスン サーバーは、クライアントのゲーム、サーバー処理、およびハッキング検出を処理できません。また、ほとんどの場合、Punkbuster のような検出器をリッスン サーバーで実行することは、不可能ではないにしても非常に困難です。通常、ゲームロジックはセキュリティよりも優先されるため、必要な処理能力がなければ正しく機能することは難しく、検出器が 1 フレームの処理を許可されていない場合、誰かを有罪とするために必要なデータを失う可能性があります。

最後に、ゲームプレイ。サーバーの最大の利点は永続的であることです。つまり、全員が離れてもサーバーは稼働し続けます。これは、夜間にあまり活動がない人気のあるサーバーを使用している場合に便利です。人々は、プレイする準備ができたときに参加することができ、オンラインに戻るのを待つ必要はありません.

リッスン サーバーの主な欠点は、リッスン サーバーをホストしているクライアントが離れるとすぐに、ゲームを別のプレイヤーに転送するか (場合によっては数分間続く可能性のあるゲーム内の小休止を作成する)、ゲームを完全に終了する必要があることです。 . これは大規模なサーバーでは好ましくありません。ホストはオンラインのままにしておくか (サーバーのスロットとコンピューターの能力を浪費し、ゲームの速度が低下する可能性もあります)、全員のゲームを終了する必要があるためです。

ただし、これらの問題にもかかわらず、リッスン サーバーにはいくつかの利点があります。

セットアップが簡単: ほとんどのリッスン サーバーは、「新しいゲーム」を押して人々を参加させるだけです。これは、友達とプレイしたいだけで、空の専用サーバーを探したり、他の人とプレイしたりしたくない人にとっては簡単です。

テストに適しています: 専用サーバーを所有していて、その構成を変更したい場合は、一般的にテストすることをお勧めします最初に構成。ユーザーは、専用サーバーのバックアップを作成し、やみくもに変更に入る必要があります。唯一のオプションは、問題が発生した場合にロールバックするか、新しい専用サーバーを作成してテストするか、単純なリッスン サーバーを作成することです。それらをテストします。ポイント 1 では、これらは通常、起動と構成が簡単です。ほとんどの専用サーバーは管理者が直接アクセスできないため、これは特に当てはまります (ほとんどの専用サーバーはリモート ロケーションからレンタルされます)。管理者が現在使用しているマシンよりも、構成の変更や再起動のコマンドなどをリモートの場所にプッシュするには、はるかに長い時間がかかります。

少ないリソース: ほとんどの専用サーバーでは、同じ IP を持つユーザーは専用サーバーに接続できません (つまり、クライアントはサーバーをホストするか、プレイする必要があります。両方を行うことはできません)。クライアントが自分のサーバーでプレイしたい場合は、通常、サーバーをホストするための 2 台目のマシンが必要になるか、実際にそのサーバーでプレイできるように専用サーバーを購入またはレンタルする必要があります。リッスン サーバーに必要なマシンは 1 つだけです。これは、クライアントが使用できる唯一のものである可能性があります。

いずれの場合も、どちらにも長所と短所があり、設計および実装する内容と比較検討する必要があります。私の経験から、リッスン サーバーを実装する場合、友達と遊んだり、設定をテストしたりしたい少数のユーザーのためだけに使用されると思います。

最後に:

他にどのようなオプションがありますか?

これはワームの工業用缶です。実際には、あらゆるタイプのネットワーク アーキテクチャをビデオ ゲームに適用できます。しかし、私が見たところ、ほとんどのインターネット通信と同様に、ほとんどの場合、何らかの形のクライアント サーバー モデルに要約されます。

私があなたの質問に答えていない場合、または何か拡張が必要な​​場合はお知らせください。できることを確認します。

于 2011-02-27T17:57:18.593 に答える