メインコンテンツまでスキップ

独自のマッチメイキングExtend Overrideアプリを作成する

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

概要

この記事では、マッチメイキング用のExtend Overrideアプリで使用されるAPIコントラクト(Protobuf)について説明します。

service MatchFunction {
rpc GetStatCodes(GetStatCodesRequest) returns (StatCodesResponse);
rpc EnrichTicket(EnrichTicketRequest) returns (EnrichTicketResponse);
rpc ValidateTicket(ValidateTicketRequest) returns (ValidateTicketResponse);
rpc BackfillMatches(stream BackfillMakeMatchesRequest) returns (stream BackfillResponse);
rpc MakeMatches(stream MakeMatchesRequest) returns (stream MatchResponse);
}

APIコントラクト

GetStatCodes

フローはGetStatCodeの呼び出しから始まり、AGS Storage Statisticsから関連する統計コードを取得します。これらのコードは、マッチメイキングの判断に必要なプレイヤー固有の統計情報を収集するために不可欠です。例えば、「mmr」の統計コードを取得することで、AGS Matchmakingは指定されたコードに基づいてプレイヤーの統計情報を収集できます。

アプリテンプレートでは、次の関数がsrc/master/src/AccelByte.PluginArch.Demo.Server/Services/MatchFunctionService.csにあります。

public override Task<StatCodesResponse> GetStatCodes(GetStatCodesRequest request, ServerCallContext context)
{
...
}

EnrichTicket

次に、EnrichTicketが呼び出され、マッチチケットに追加の属性やロジックが追加されます。このカスタマイズステップにより、後の段階で使用される特定の属性でチケットをカスタマイズできます。

アプリテンプレートでは、次の関数がsrc/master/src/AccelByte.PluginArch.Demo.Server/Services/MatchFunctionService.csにあります。

public override Task<EnrichTicketResponse> EnrichTicket(EnrichTicketRequest request, ServerCallContext context)
{
...
}

ValidateTicket

ValidateTicket関数は、定義されたルールセットに従って各マッチチケットを検証します。このステップにより、基準を満たすチケットのみがマッチメイキングに進むことが保証され、有効性を示すブール値が返されます。

アプリテンプレートでは、次の関数がsrc/master/src/AccelByte.PluginArch.Demo.Server/Services/MatchFunctionService.csにあります。

public override Task<ValidateTicketResponse> ValidateTicket(ValidateTicketRequest request, ServerCallContext context)
{
...
}

BackfillMatches

BackfillMatches – 検証後、システムはBackfillMatches関数を開始し、必要に応じて既存のゲームセッションにmatchTicketsを割り当てます。このステップは、ゲームセッションの基準に従ってセッション容量とリソース使用を最適化することを目的としています。

ヒント:

  • Backfillマッチでは、ticket.ExcludedSessionsbackfillTicket.MatchSessionIDを比較することで、ユーザーが以前のセッションにマッチングされるのを防ぐことができます。

アプリテンプレートでは、次の関数がsrc/master/src/AccelByte.PluginArch.Demo.Server/Services/MatchFunctionService.csにあります。

public override async Task BackfillMatches(IAsyncStreamReader<BackfillMakeMatchesRequest> requestStream, IServerStreamWriter<BackfillResponse> responseStream, ServerCallContext context)
{
...
}

MakeMatches

最後に、MakeMatches関数が既存のプレイヤーチケットに基づいて新しいマッチを作成することでプロセスを完了します。この関数は、最小および最大プレイヤー制限のバランスを取り、可能な限り効率的にマッチを埋めます。また、既存のゲームセッションへのバックフィルの基準を満たさない可能性のあるプレイヤーのマッチメイキング待機時間も考慮します。

アプリテンプレートでは、次の関数がsrc/master/src/AccelByte.PluginArch.Demo.Server/Services/MatchFunctionService.csにあります。

public override async Task MakeMatches(IAsyncStreamReader<MakeMatchesRequest> requestStream, IServerStreamWriter<MatchResponse> responseStream, ServerCallContext context)
{
...
}
備考

gRPCリクエスト処理の詳細については、こちらをご覧ください。