サーバー別の意義

Nez氏が多くのMMORPGでキャラ選択>サーバー選択にすればいいのにと
つぶやいていたので、一般的なMMOで何故それが出来ないかを考えてみた。
まず、データの問題。キャラデータをどこで管理するかによるが、サーバー別に
DBを分けてキャラデータもそちらに格納する場合、これを集約したらデータ量が
ものすごいことになると考えられる。サーバー別ならキャラ数は万単位で済むが、
20鯖あるゲームで1つにしたら100万データ。データの母数に応じて検索速度も
遅くなるから定常的にラグが発生する原因にもなりえる。ラグと言うか各アクション
ごとのレスポンスが悪くなる。今チョンゲなどでチャンネル管理できているゲームは
殆どがプレイヤー総数が大したことのないゲームで、死にキャラ含めてもせいぜい
万に届くかどうかのものが多いだろう。その程度ならキャラを一元管理しても
痛くない。FF14レベルだとFFXIVProで作りたてのキャラの全鯖順位をを見れば
分かるがすごいことになっている。まあ、キャラの頭文字でDB保存振り分け先を
変えるとか一定数に達したら振り分け先を変えるとか工夫すればいけるかもしれんが
一般的なDB設計とは外れる。あまりデータ管理を煩雑にしたく無いと言うのはあるだろう。
 
というわけでどれくらいの人口を想定するかで鯖別かチャンネル方式かは違ってくる。
プレイヤーサーチシステムも人口で大幅にレスポンスが変わるな。FF11とか鯖別でも
特にひどかった。リアルタイムに更新されないのは当たり前。昔は一元管理のゲームで
他のパーティーのチャットが聞こえるとかログインしたら他の人のキャラになったとか
unkな事件も多かったな。どのゲームとは言わんがw
 
キャラデータのみならず、オブジェクトの問題もあり、ハウジングシステムなど
あるゲームだと1鯖管理では土地の取り合いなど激化する原因にもなる。UOでも
鯖を分けていても揉めていたのに一元管理したら不満続出は免れない。無論キャラデータ
同様、オブジェクトデータの量の問題も発生する。他にも、トランザクションごとに
増えていく競売履歴のようなデータは規模によっては億単位のレコード数になるので
馬鹿にならない。宅配・メールなどもキャラデータ×いくつとなるので、下手すると
次元の狭間にデータが消えるかもしれない。それは鯖単位の管理のゲームですら起こっている。
 
そしてデータ以外の問題としては一局集中の問題。パーティー募集は人口が多いところに
人が集まるのは必然で、例えばコンチェルトゲートではパーティー募集チャンネルが
暗黙の了解になっていた。そこでは画面に表示できないほどの人が集まって、パーティに
入りたいのにラグで募集が見えない、間違って別の人をクリックなんてのは日常茶飯事だった。
狩場に移るときはチャンネルを変えるのが当たり前だったが、まずパーティ募集が1つの
関門だったと言える。ゲームによっては人集まりすぎによるエリアダウンもあるだろう。
なので、せっかくチャンネル分割用にサーバーをある程度用意しても思ったようには
人口が平準分布せず、人が多いところと過疎は明確に分かれる。それは鯖別にしても
同じことは言えるが、チャンネル化でより動的に明確になるように感じる。
アクティブプレイヤーが数千人のゲームでもチャンネル制で集中の問題が起きているので、
その10倍、100倍になるとどうなるか想像も付かない。ちなみにパーティ募集だけじゃなく
露店も1チャンネルに集中することを付け加えておく。
 
以上のことを踏まえると、常にラグの無い快適なサービスを提供するに当たって
サーバーごとにデータを管理すべきかどうかは一概には語れないように思える。
それぞれにメリット・デメリットがあるので、ゲームの規模を考えてデータ設計するのが
妥当だろう。小規模ならチャンネル制にしない手はないし、過疎っても鯖を減らして
余った機器を別のゲームで使い回せるというメリットもある。そういえばログイン鯖だけ
共通にするゲームも多いけど、よくログイン鯖が落ちて阿鼻叫喚になるよな。。。
 
大規模(数十万-数百万)・・・鯖別にデータ分割
中規模(数万)・・・状況に応じて異なる
小規模(数百-数千)・・・データ一元管理でチャンネル制
斜め上にクライアントでデータ管理・・・チートで終了(モンハン・PSO系)