何やら難しい単語が出てきました。
ですが内容は簡単な事です。
まずオフゲから…。
古いPCの場合、CPUは名実ともに1個です。
すべてが同じCPUで処理されるため、CPUにかかる負荷は分散しようがありません。
強いて言えばグラフィイクカードが負荷分散と言えるかもしれません。
画面表示機能に特化したカードを追加する事によって、
今までCPUで行ってきた描画処理をGPUが処理するようになります。
CPUは描画処理から開放されますから、その分他の処理にパワーを回せ動作が軽くなります。
グラフィックのキレイなゲームがグラフィックカード必須なのは、このような理由からです。
最近のCPUの場合、1個であってもコアが複数組み込まれています。
4コアのCPUでは、最低限同時に4つのプログラムを実行できますから、
並列処理が可能であればCPU負荷は分散されます。
ただ注意しなければならないのは、ゲームなどアプリがスレッド処理などの
マルチCPU対応でない場合には負荷分散としての意味を持ちません。
なぜならCPUが扱えるのは1度に1タスクだからです。
たとえ1つのゲームであっても内部的に複数のタスク(この場合はスレッドと呼びます)があれば
他のCPUで処理させることで負荷分散が可能になるからです。
アプリがマルチCPUに対応していない場合は、複数のCPUがあっても使われるのは
その中の1個にすぎません。 これでは負荷分散の意味はないわけです。
次にネトゲの場合を考えてみます。
ネトゲはサーバとクライアントで構成され、クライアント側につきましてはオフゲと同じ扱いなのです。
サーバ側の仕事は、入力に対してその入力を加工して返す事なのです。
このサーバを1個のCPUで動作する構造として単純化すると、
処理する件数が増えると処理時間も増えるのです。
処理件数が2件 ⇒ 処理時間が2倍
処理件数が3件 ⇒ 処理時間が3倍
処理件数が4件 ⇒ 処理時間が4倍
…………
処理件数がn件 ⇒ 処理時間がn倍
こんな感じですね。
ネトゲにはタイムラグは付き物です。 そしてラグの許容範囲というものがあります。
処理時間が増えるという事はラグが大きくなる事を意味します。
許容範囲を超えてしまうとゲームにならない という意味なのです。
こういう事態を緩和するために並列処理を行います。
具体的に言うと、複数のサーバを用意して、それぞれ同じコードを実行します。
こうする事によって負荷分散が実現されています。
こうして負荷分散しているから、多くのユーザーを扱う事ができるのです。
ゲームプレイヤーの皆様は サーバというものを単体として1台のイメージで見ることが多いです。
ですが、ユーザー数の規模で必要なサーバ台数は変化します。
決して1台ではありません。
複数台で負荷分散しているからこそ、多くのユーザーがネットゲームが楽しめるという訳です。
次回は負荷分散から発展して「ゲームのマップ構成」について考えてみたいと思います。
|