私はゲームサーバーとクライアントを作成しています。サーバーは世界を生成し、さまざまなプレーヤーのクライアントまで提供します。大規模なマルチプレイヤーではありません。専用サーバー対クライアント/サーバーの複合?
クライアントは(少なくとも今のところ)かなり要求の厳しいソフトウェアレンダラーを実行するだけでなく、標準のクライアント側のシミュレーションを実行します(これは権限のあるサーバーの承認を必要とします)。良い。
サーバはまた、プロセッサを集中すること、およびプロジェクトの性質を与えられますが、プロジェクトが進むにつれてより多くのようになるだけに可能性があります。世界は手続き的であり、そのうちのいくつかはの間に行われます。の再生中です。世界のオプションは、ゲームが開始される前に、その時のシステム能力に基づいて設定されます(理想的には、最小限の外部プロセスが実行されていることが理想的です)。したがって、ハードウェアスレッド数のスケーラビリティは、サーバにとって絶対必要です。
また、MMOではなく、であるため、プレイヤーはすべてクライアントとサーバーの両方にアクセスできるため、独自のサーバーをセットアップできます。多くのプレイヤーは、友人と遊ぶことができるように、サーバーをホストしてクライアントを実行するマシンを1台しか持たないでしょう。この事実に基づいて、私はより良いサービスを提供するでしょうか?
- 組み合わせ、クライアントとサーバプロセス
- 別々のクライアントとサーバが
を処理...なぜ?
PS。上記の複雑さのうちのいくつかが後で過ぎ去ったとしても、私はできるだけ早くアーキテクチャを(この点で)適切にする必要があります。
私はあなたのポイント1〜3を特に洞察力があると感じる、これらのためにあなたに感謝します。 4については、厳密にはそうではありません。クライアントを組み込んだサーバーを作成し、単にクライアントのアスペクトをオフにすることができます。 5つは潜在的ですが、もちろんあなたのポストの始めに示唆するように、クライアントとサーバーの間にロジックが重複しています。ただし、同じボックスで両方を実行している場合は、クライアント対サーバーの調整は扱いません。私が純粋なクライアント/サーバーにならないようにする唯一のことは、この懸念です。 –
私が最初に示そうとしていたことは、単にコードの重複を排除するのではなく、実際の実行の冗長性を取り除くことでした。クライアントとサーバーの両方が何かをしなければならないという意味、つまり。いくつかの物理計算 - とクライアントとサーバーの間で結果を共有することができます、それは1つのプロセスでそれらを持って、結果を共有する意味があります。しかし、これの効率は、主にどのくらいの作業を共有できるか、そして共有を実現するのがどれほど難しいかによって決まります。 – Fox
この問題は、サーバーが権威を持っていることに気付きました。サーバーのセキュリティをある程度の危険にさらすことなく、そのロジックを組み合わせることはできません。純粋なクライアントサーバーへのさらに別のポインタ。 –