1

2Dゲーム/エンジンを作り始めていますが、サーバー側のクライアントを処理するのに最適なスレッドアーキテクチャがわかりません。

当初、私はユーザーごとのスレッドではなく、マップごとのスレッドの設計を考えていました。しかし、別の理想的な方法がありますか?

マップスレッディングの私のコンセプトでは、スレッドはマップ上のプレーヤーの入り口でのみ作成され、空になるとすぐに破棄されます。ただし、この概念では、プレーヤーが多すぎるマップ(プレーヤーストアなど)により、大きな遅延が発生する可能性があります。

ユーザースレッドアプローチでは、スレッドの数が多くなるため、メモリの割り当てが多くなります。

それで、これを行う別のより良い方法がありますか?

4

2 に答える 2

0

サーバーに複数のCPUコアがある場合、マルチスレッドアーチからいくつかの利点があります。したがって、ゲームアーチが純粋なイベント駆動型である場合(イベントハンドラーで何も待つことはありません)、最高のパフォーマンスは、CPUコア数と等しいスレッド数で得られます。

于 2012-07-16T15:13:52.857 に答える
0

あなたの質問に対する答えは、1つのスレッドを使用して多くのゲームインスタンスをシミュレートすることです。ゲームプログラミングの複雑さと、意味のある/安全な/有益な方法でメモリアクセスを分割することが難しいため、ゲームがマルチスレッドの恩恵を受けるケースはほとんどありません。あなたが聞いたことがある最大のゲームのサーバーでさえ、ゲームロジック全体でシングルスレッドです。たとえば、Diabloスタイルのゲームには、コアごとに1つのスレッドがあり、各スレッドは、ゲームをスピンアップするための小さなクロススレッド(実際にはクロスマシン)ロジックを備えた数百のゲームを担当します。

于 2012-07-18T01:50:28.187 に答える