私ができる限りこれに答えられるかどうかを確認します。
ゲーム業界でリッスンサーバーモデルはどのくらいの頻度で使用されますか?
ほとんどのオンラインゲームについて言えば、大多数のゲームがクライアント/サーバーアーキテクチャを使用していることがわかりますが、常にあなたが考える方法ではありません。たとえば、任意のソースゲームを取ります。ほとんどは、マスターサーバーアーキテクチャを備えた標準のクライアントサーバーを使用し(利用可能なゲームを一覧表示するため)、1人のユーザーが専用サーバーをホストし、クライアントを持つ誰もがそれに参加できます。
ただし、いくつかのゲームとサービスがあります。たとえば、Left 4 Dead、League of Legends、Xbox Liveゲームなど、少し異なるアプローチを取ります。これらはすべて、制御サーバーでクライアントサーバーアーキテクチャを使用します。ここでの主なアイデアは、誰かがゲームを「実行」していない専用サーバーを作成することです。制御サーバーは種類の「ロビー」を作成し、ゲームが開始されると、制御サーバーはそれらをキューに追加し、ロビーの順番になると、一致する専用サーバーを選択します(場所/速度、可用性、多数の要因)、そしてプレーヤーをそのサーバーに割り当てます。そうして初めて、サーバーは実際にゲームを「実行」します。同じ考え方ですが、クライアントがサーバーを「選択」する必要がないため、少し単純化されています。
もちろん、最大のクライアントサーバーモデルはMMOモデルで、1つまたは複数のサーバーが、ほぼすべてのデータとロジックを処理する永続的な世界を実行します。このモデルを使用した有名なゲームには、World of Warcraft、Everquestなどがあります。
では、リッスンサーバーはどこに収まるのでしょうか。正直なところ、それほどよくはありませんが、それを使用するゲームはまだたくさんあります。たとえば、ほとんどのソースゲームではリッスンサーバーの作成が許可されており、多くのXBox Liveゲームでは作成できます(久しぶりですが、Counter StrikeやQuake 4など)。ただし、一般的には、クライアント/サーバーモデルの利点により、次のポイントに進むため、不満を感じるようです。
それの(不)利点は何ですか?
何よりもまず:パフォーマンス。クライアント/サーバーモデルでは、クライアントはゲームの各サイクルでローカルの変更(入力、グラフィックス、サウンドなど)を処理します。サイクルの最後に、関連データ(プレーヤーが移動したか、移動したか、移動したか、現在どこを見ているか?速度?撃ったか?移動した場合、弾丸に関する情報など)がパッケージ化されます。など)、それをサーバーに送信して処理します。サーバーはこのデータを受け取り、ハッキングを示す方法でユーザーが移動しているか(後で詳しく説明します)、移動は有効か(何か邪魔ですか)、プレーヤーからの弾丸を実行したかなど、すべてが有効かどうかを判断します1ヒットプレイヤー2?など。次に、サーバーはこれをパッケージ化し、クライアントに送信します。クライアントは、プレーヤーが撃たれた場合のヘルスの調整、ハッキングされていると判断された場合のプレーヤーのキックなど、必要に応じて更新します。
ただし、待機サーバーは、これらすべてを同時に処理する必要があります。あなたはプログラミングに精通していると思いますので、おそらくゲームがコンピューターからどれほどのパワーを奪うことができるかを理解しているでしょう。ネットワーク処理、セキュリティ処理に追加し、より多くのだけでなく、単に標準的な処理が進むにつれて、パフォーマンスは、少なくともこれまでのように、深刻な打撃を受けるだろう場所をクライアントのゲーム、あなたが見ることができます。さらに、ほとんどのサーバーは高速ネットワークで実行され、ネットワークトラフィックに耐えるように設計されたサーバーです。リッスンサーバーのネットワークが遅い場合、ゲーム全体が影響を受けます。
第二に、セキュリティは先に述べたように、サーバが行います主なものの一つは、プレイヤーがゲームを悪用されているかどうかです。これらをPunkbuster、VACなどと見たことがあるかもしれません。これらのプログラムを実行する非常に複雑なルールのセットがあります。たとえば、ハッカーと非常に優れたプレーヤーとの違いを決定します。ハッカーを捕まえることができなければ、ゲームにとって非常に悪いことになりますが、誤って非難されたものに対してアクションを実行した場合はさらに悪いことになります。
リッスンサーバーは通常、クライアントのゲーム、サーバー処理、およびハック検出を処理できません。ほとんどの場合、Punkbusterなどのディテクターは、リッスンサーバーで実行することが不可能ではないにしても、非常に困難です。通常、ゲームロジックはセキュリティよりも優先されるため、必要な処理能力がないと正しく機能しません。検出器が1フレームの処理を許可されていない場合、有罪判決に必要なデータを失う可能性があります。
最後に、ゲームプレイ。サーバーの最大の特徴は、サーバーが永続的であることです。つまり、全員が離れても、サーバーは引き続き実行されます。これは、夜間に活動が少ない人気のあるサーバーがある場合に役立ちます。人々は、プレーの準備ができてもオンラインに戻るのを待つ必要がなくても参加できます。
リッスンサーバーでの主な欠点は、リッスンサーバーをホストしているクライアントが離れるとすぐに、ゲームを別のプレーヤーに転送する(場合によっては数分間続く可能性のあるゲームを作成する)か、完全に終了する必要があることです。ホストはオンラインのままであるか(サーバーのスロットと彼/彼女のコンピューターの電源を浪費しているため、ゲームが遅くなる可能性があります)、またはすべてのユーザーのゲームを終了する必要があるため、これは大きなサーバーでは望ましくありません。
ただし、これらの問題にもかかわらず、待機サーバーにはいくつかの利点があります。
設定が簡単:ほとんどのリッスンサーバーは、「新しいゲーム」にアクセスして参加を許可するだけです。これは、友達と遊んだいだけで、空の専用サーバーを探したり、他の人と遊んだりしたくない人にとっては簡単です。
テストに最適:専用サーバーを所有していて、その構成を変更したい場合は、通常、テストすることをお勧めします最初の構成。ユーザーは専用サーバーのバックアップを作成し、盲目的に変更に入る必要があります。唯一のオプションは、何か問題が発生した場合にロールバックし、新しい専用サーバーを作成してテストするか、単純なリッスンサーバーを作成するだけです。それらをテストします。そして、ポイント1では、これらの方が一般に起動と構成が簡単です。これは特に当てはまります。ほとんどの専用サーバーは管理者のすぐにアクセスできないためです(ほとんどの専用サーバーはリモートの場所からレンタルされます)。管理者が現在使用しているマシンよりも、構成の変更や再起動用のコマンドなどをリモートの場所にプッシュするのに、はるかに長い時間がかかります。
リソースが少ない:ほとんどの専用サーバーでは、同じIPを持つユーザーは専用サーバーに接続できません(つまり、クライアントはサーバーをホストするか、再生する必要があります。両方を行うことはできません)。クライアントが自分のサーバーでプレイする場合は、通常、サーバーをホストする2台目のマシンが必要です。または、実際にプレイできるように専用サーバーを購入またはレンタルする必要があります。リッスンサーバーに必要なマシンは1つだけです。これが、クライアントが使用できる唯一のマシンである場合があります。
どちらの場合も、どちらにも長所と短所があり、それらを設計および実装したいものと比較検討する必要があります。私の経験から、リッスンサーバーを実装すると、友人と遊んだり、設定をテストしたい数人のユーザーにしか使用されないと思われます。
最後に:
他にどのようなオプションがありますか?
これはワームの産業用缶です。実際には、あらゆるタイプのネットワークアーキテクチャをビデオゲームに適用できます。ただし、私が見てきたことから、ほとんどのインターネット通信と同様に、ほとんどは何らかの形のクライアント/サーバーモデルに要約されます。
私があなたの質問に答えなかった場合、または何か拡張する必要がある場合は、私に知らせてください。そうすれば、私ができることを確認します。