マッチング処理

RoomModule と Room

マッチング処理をカスタマイズする場合は、Room, RoomModule を継承して実装する。

両者は一体的に機能を果たすが、おおまかにいえば Room がデータで RoomModule がアルゴリズムである。

なお、MatchingModule ではなく RoomModule という名前なのは、マッチングサーバー全体と区別するためである。


class SampleRoom: public Room
{
  ...
};
class SampleRoomModule: public RoomModule
{
  ...
};

Room クラスの指定

ルーム情報は Room というクラスに格納される。拡張したい場合は、Room を継承したクラスを自分で定義する。

実際のルームオブジェクトは RoomModule::createAccount() で生成する。 この実装に自分の使うルームクラスのインスタンスを生成して返せば良い。


Room* SampleRoomModule::createRoom(uint16_t id)
{
   SampleRoom* p = new SampleRoom();
   p->init(id);
   return p;
}

createRoom の引数 id は、ルームオブジェクトのドメイン内でユニークな ID である。この情報は Room オブジェクトが知っていた方が良い。

ベースクラスの Room に init() という関数がある。これは id を受け取ってメンバ変数にセットするようになっているので、これを使えば良い。