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

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

Last updated on July 14, 2026

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

Overview

この記事では、マッチメイキング用の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関数が既存のプレイヤーチケットに基づいて新しいマッチを作成し、プロセスを完了させます。この関数は、プレイヤー人数の最小・最大の制限のバランスを取りながら、できるだけ効率的にマッチを成立させます。また、既存のゲームセッションへのbackfillの基準を満たさない可能性があるプレイヤーのマッチメイキング待機時間も考慮します。

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

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

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