この文書では、先に構成情報(Config)の登録で説明した「サービス」について説明します。
一つのサービスは固有のサービスIDとサービス名を持ち、GameNodeとSupportNodeは実装によって様々な種類のサービスとして登録できます。 つまり、サービスはGameNodeまたはSupportNodeの役割を定義すると言えます。
例えば、「RPSGame」サービスは、そのサーバーに実装された「RPS」というゲームコンテンツに対するサービス用途です。 つまり、ゲームコンテンツを提供する役割を意味します。同様に、「RPSChat」サービスを追加して、そのサーバーに実装されたチャットコンテンツに対するサービスを定義することもできます。
これは、ゲームサーバーに二つのGameNodeが次の疑似コードのようにその役割に合わせて別々に実装されていることを意味します。このコードで、任意のサービス名を対応するGameNodeの実装に接続するために使用したアノテーションを注意深く見てください。
// ゲームコンテンツを実装したGameNode
@ServiceName("RpsGame")
MyGameNode extends gameanvil.GameNode {
...
}
// チャットコンテンツを実装したGameNode
@ServiceName("RpsChat")
MyChatNode extends gameanvil.GameNode {
...
}
ServiceNameアノテーションに登録したサービス名は、サーバーを構成する際に使用したサービス名と一致しなければなりません。 このようなサービス名は、人が読むには便利ですが、サーバープログラムが読むには不必要に長くて大きな値なので、構成情報(Config)で各サービス名に固有の整数であるサービスIDをマッピングしました。サービスIDは必ず0より大きい整数値でなければなりません。 詳しい情報はサーバーの実装文書で確認できます。
チャンネルは一つのサービスを論理的に分割する方法を提供します。例えば、RPSGameサービスを「初心者」、「中級者」、「上級者」チャンネルなどに分けることができます。ただし、GameNodeに限り使用可能で、チャンネル名は任意の文字列を使用できます。詳細はGame > GameAnvil > サーバー開発ガイド > チャンネルを参照してください。