GS2-Matchmaking SDK API リファレンス
モデル
Namespace
ネームスペース
ネームスペースは一つのプロジェクトで同じサービスを異なる用途で複数利用できるようにするための仕組みです。 GS2 のサービスは基本的にネームスペースというレイヤーがあり、ネームスペースが異なれば同じサービスでもまったく別のデータ空間として取り扱われます。
そのため、各サービスの利用を開始するにあたってネームスペースを作成する必要があります。
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
namespaceId | string | ✓ | ~ 1024文字 | ネームスペースGRN | ||
name | string | ✓ | ~ 128文字 | ネームスペース名 | ||
description | string | ~ 1024文字 | 説明文 | |||
enableRating | bool | ✓ | false | レーティング計算機能を使用するか | ||
enableDisconnectDetection | enum [ “disable”, “enable” ] | ✓ | “disable” | ~ 128文字 | マッチメイキング中プレイヤーの切断検知 | |
disconnectDetectionTimeoutSeconds | int | {enableDisconnectDetection} == “enable” | ✓ | 15 ~ 600 | マッチメイキング中にプレイヤーを切断と見なすまでの待機時間(秒) | |
createGatheringTriggerType | enum [ “none”, “gs2_realtime”, “gs2_script” ] | ✓ | ~ 128文字 | ギャザリング新規作成時のアクション | ||
createGatheringTriggerRealtimeNamespaceId | string | {createGatheringTriggerType} == “gs2_realtime” | ✓ | ~ 1024文字 | ギャザリング作成時にルームを作成する GS2-Realtime のネームスペース | |
createGatheringTriggerScriptId | string | {createGatheringTriggerType} == “gs2_script” | ✓ | ~ 1024文字 | ギャザリング作成時に実行される GS2-Script のスクリプト | |
completeMatchmakingTriggerType | enum [ “none”, “gs2_realtime”, “gs2_script” ] | ✓ | ~ 128文字 | マッチメイキング完了時のアクション | ||
completeMatchmakingTriggerRealtimeNamespaceId | string | {completeMatchmakingTriggerType} == “gs2_realtime” | ✓ | ~ 1024文字 | マッチメイキング完了時にルームを作成する GS2-Realtime のネームスペース | |
completeMatchmakingTriggerScriptId | string | {completeMatchmakingTriggerType} == “gs2_script” | ✓ | ~ 1024文字 | マッチメイキング完了時に実行される GS2-Script のスクリプト | |
enableCollaborateSeasonRating | enum [ “enable”, “disable” ] | ✓ | “disable” | ~ 128文字 | GS2-SeasonRating との連携を有効にするか | |
collaborateSeasonRatingNamespaceId | string | {enableCollaborateSeasonRating} == “enable” | ✓ | ~ 1024文字 | マッチメイキング完了時にセッションを作成する GS2-SeasonRating のネームスペース | |
collaborateSeasonRatingTtl | int | {enableCollaborateSeasonRating} == “enable” | ✓ | 60 | 60 ~ 7200 | GS2-SeasonRating の結果を受け付ける最大時間(秒) |
changeRatingScript | ScriptSetting | レーティング値が変化した時に実行するスクリプト | ||||
joinNotification | NotificationSetting | ギャザリングに新規プレイヤーが参加したときのプッシュ通知 | ||||
leaveNotification | NotificationSetting | ギャザリングからプレイヤーが離脱したときのプッシュ通知 | ||||
completeNotification | NotificationSetting | マッチメイキングが完了したときのプッシュ通知 | ||||
changeRatingNotification | NotificationSetting | レーティングの値が変動したときのプッシュ通知 | ||||
logSetting | LogSetting | ログの出力設定 | ||||
createdAt | long | ✓ | 作成日時 | |||
updatedAt | long | ✓ | 最終更新日時 | |||
revision | long | 0 | ~ 9223372036854775805 | リビジョン |
Gathering
ギャザリング
マッチメイキングによって集められたゲームプレイヤーグループを表すエンティティです。 マッチメイキング用のパラメータを複数持っており、パラメータを総合的に判断してプレイヤーをグルーピングします。
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
gatheringId | string | ✓ | ~ 1024文字 | ギャザリングGRN | ||
name | string | ✓ | UUID | ~ 128文字 | ギャザリング名 | |
attributeRanges | List<AttributeRange> | [] | ~ 5 items | 募集条件 | ||
capacityOfRoles | List<CapacityOfRole> | ✓ | [] | 1 ~ 5 items | 募集枠 | |
allowUserIds | List<string> | [] | ~ 100 items | 参加を許可するユーザ | ||
metadata | string | ~ 1024文字 | メタデータ | |||
expiresAt | long | ギャザリングの有効期限 | ||||
createdAt | long | ✓ | 作成日時 | |||
updatedAt | long | ✓ | 最終更新日時 | |||
revision | long | 0 | ~ 9223372036854775805 | リビジョン |
RatingModelMaster
レーティングモデルマスター
GS2 ではレーティングアルゴリズムとして Glicko-2 を採用しています。 Glicko-2 には複数のパラメータがありますが、GS2-Matchmaking ではそれらを総合的に表す ボラティリティ という1つのパラメータに集約しています。 ボラティリティ は変化の大きさを表すパラメータで、値が大きいほどレーティングの値の変動量が大きくなります。
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
ratingModelId | string | ✓ | ~ 1024文字 | レーティングモデルマスターGRN | ||
name | string | ✓ | ~ 128文字 | レーティングモデル名 | ||
metadata | string | ~ 128文字 | メタデータ | |||
description | string | ~ 1024文字 | 説明文 | |||
initialValue | int | ✓ | 1500 | 100 ~ 10000 | レート値の初期値 | |
volatility | int | ✓ | 100 | 1 ~ 20000 | レート値の変動の大きさ | |
createdAt | long | ✓ | 作成日時 | |||
updatedAt | long | ✓ | 最終更新日時 | |||
revision | long | 0 | ~ 9223372036854775805 | リビジョン |
RatingModel
レーティングモデル
GS2 ではレーティングアルゴリズムとして Glicko-2 を採用しています。 Glicko-2 には複数のパラメータがありますが、GS2-Matchmaking ではそれらを総合的に表す ボラティリティ という1つのパラメータに集約しています。 ボラティリティ は変化の大きさを表すパラメータで、値が大きいほどレーティングの値の変動量が大きくなります。
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
ratingModelId | string | ✓ | ~ 1024文字 | レーティングモデルGRN | ||
name | string | ✓ | ~ 128文字 | レーティングモデル名 | ||
metadata | string | ~ 128文字 | メタデータ | |||
initialValue | int | ✓ | 1500 | 100 ~ 10000 | レート値の初期値 | |
volatility | int | ✓ | 100 | 1 ~ 20000 | レート値の変動の大きさ |
CurrentModelMaster
現在有効なマスターデータ
GS2ではマスターデータの管理にJSON形式のファイルを使用します。 ファイルをアップロードすることで、実際にサーバーに設定を反映することができます。
JSONファイルを作成する方法として、マネージメントコンソール上でのマスターデータエディタを提供していますが よりゲームの運営に相応しいツールを作成し、適切なフォーマットのJSONファイルを書き出すことでもサービスを利用可能です。
JSONファイルの形式についてはドキュメントを参照ください。
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
namespaceId | string | ✓ | ~ 1024文字 | 現在有効なマスターGRN | ||
settings | string | ✓ | ~ 5242880文字 | マスターデータ |
SeasonModel
シーズンモデルマスター
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
seasonModelId | string | ✓ | ~ 1024文字 | レーティングモデルGRN | ||
name | string | ✓ | ~ 128文字 | シーズンモデル名 | ||
metadata | string | ~ 128文字 | メタデータ | |||
maximumParticipants | int | ✓ | 2 ~ 1000 | 最大参加人数 | ||
experienceModelId | string | ~ 1024文字 | ティアーを保持する GS2-Experience の経験値モデル | |||
challengePeriodEventId | string | ✓ | ~ 1024文字 | シーズンの期間を設定した GS2-Schedule イベントGRN |
SeasonModelMaster
シーズンモデルマスター
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
seasonModelId | string | ✓ | ~ 1024文字 | レーティングモデルマスターGRN | ||
name | string | ✓ | ~ 128文字 | シーズンモデル名 | ||
metadata | string | ~ 128文字 | メタデータ | |||
description | string | ~ 1024文字 | 説明文 | |||
maximumParticipants | int | ✓ | 2 ~ 1000 | 最大参加人数 | ||
experienceModelId | string | ~ 1024文字 | ティアーを保持する GS2-Experience の経験値モデル | |||
challengePeriodEventId | string | ✓ | ~ 1024文字 | シーズンの期間を設定した GS2-Schedule イベントGRN | ||
createdAt | long | ✓ | 作成日時 | |||
updatedAt | long | ✓ | 最終更新日時 | |||
revision | long | 0 | ~ 9223372036854775805 | リビジョン |
SeasonGathering
シーズンギャザリング
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
seasonGatheringId | string | ✓ | ~ 1024文字 | シーズンギャザリングGRN | ||
seasonName | string | ✓ | ~ 128文字 | シーズンモデル名 | ||
season | long | ✓ | ~ 9223372036854775805 | シーズン | ||
tier | long | ✓ | ~ 9223372036854775805 | ティアー | ||
name | string | ✓ | UUID | ~ 128文字 | ギャザリング名 | |
participants | List<string> | [] | ~ 1000 items | 参加者のユーザーIDリスト | ||
createdAt | long | ✓ | 作成日時 | |||
revision | long | 0 | ~ 9223372036854775805 | リビジョン |
JoinedSeasonGathering
参加中のシーズンギャザリング
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
joinedSeasonGatheringId | string | ✓ | ~ 1024文字 | 参加中のシーズンギャザリングGRN | ||
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
seasonName | string | ✓ | ~ 128文字 | シーズンモデル名 | ||
season | long | ✓ | ~ 9223372036854775805 | シーズン | ||
tier | long | ✓ | ~ 9223372036854775805 | ティアー | ||
seasonGatheringName | string | ✓ | ~ 128文字 | ギャザリング名 | ||
createdAt | long | ✓ | 作成日時 |
ScriptSetting
スクリプト設定
GS2 ではマイクロサービスのイベントに関連づけて、カスタムスクリプトを実行することができます。 このモデルは、スクリプトの実行をトリガーするための設定を保持します。
スクリプトの実行方式は大きく2種類あり、それは「同期実行」と「非同期実行」です。 同期実行は、スクリプトの実行が完了するまで処理がブロックされます。 かわりに、スクリプトの実行結果を使ってAPIの実行を止めたり、APIの結果を改ざんすることができます。
一方、非同期実行は、スクリプトの実行が完了するまで処理がブロックされません。 かわりに、スクリプトの実行結果を使ってAPIの実行を止めたり、APIの結果を改ざんすることはできません。 しかし、非同期実行は、スクリプトの実行が完了するまで処理がブロックされないため、APIの応答に影響を与えないため、原則非同期実行を使用することをおすすめします。
非同期実行には実行方式が2種類あり、GS2-Script と Amazon EventBridge があります。 Amazon EventBridge を使用することで、Lua 以外の言語で処理を記述することができます。
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
triggerScriptId | string | ~ 1024文字 | スクリプトGRN | |||
doneTriggerTargetType | enum [ “none”, “gs2_script”, “aws” ] | ✓ | “none” | ~ 128文字 | 完了通知の通知先 | |
doneTriggerScriptId | string | {doneTriggerTargetType} == “gs2_script” | ~ 1024文字 | スクリプトGRN | ||
doneTriggerQueueNamespaceId | string | {doneTriggerTargetType} == “gs2_script” | ~ 1024文字 | ネームスペースGRN |
NotificationSetting
プッシュ通知に関する設定
GS2 のマイクロサービス内で何らかのイベントが発生した際に、プッシュ通知を送信するための設定です。 ここでいうプッシュ通知は GS2-Gateway の提供する WebSocket インターフェースを経由した処理であり、スマートフォンのプッシュ通知とは性質が異なります。 たとえば、マッチメイキングが完了した時やフレンドリクエストが届いた時など、ゲームクライアントの操作とは関係なく状態が変化した際に GS2-Gateway を経由してプッシュ通知をすることで、ゲームクライアントは状態の変化を検知することができます。
GS2-Gateway のプッシュ通知は通知先のデバイスがオフラインだった時に追加の処理としてモバイルプッシュ通知を送信できます。 モバイルプッシュ通知をうまく利用すれば、マッチメイキング中にゲームを終了しても、モバイルプッシュ通知を使用してプレイヤーに通知し、ゲームに戻ってくるフローを実現できる可能性があります。
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
gatewayNamespaceId | string | ✓ | “grn:gs2:{region}:{ownerId}:gateway:default” | ~ 1024文字 | プッシュ通知に使用する GS2-Gateway のネームスペース | |
enableTransferMobileNotification | bool? | false | モバイルプッシュ通知へ転送するか | |||
sound | string | {enableTransferMobileNotification} == true | ~ 1024文字 | モバイルプッシュ通知で使用するサウンドファイル名 |
LogSetting
ログの書き出し設定
ログデータの書き出し設定を管理します。この型は、ログデータを書き出すために使用されるログ名前空間の識別子(Namespace ID)を保持します。 ログ名前空間IDは、ログデータを集約し、保存する対象の GS2-Log の名前空間を指定します。 この設定を通じて、この名前空間以下のAPIリクエスト・レスポンスログデータが対象の GS2-Log へ出力されるようになります。 GS2-Log にはリアルタイムでログが提供され、システムの監視や分析、デバッグなどに利用できます。
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
loggingNamespaceId | string | ✓ | ~ 1024文字 | ネームスペースGRN |
GitHubCheckoutSetting
GitHubからマスターデータをチェックアウトする設定
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
apiKeyId | string | ✓ | ~ 1024文字 | GitHub のAPIキーGRN | ||
repositoryName | string | ✓ | ~ 1024文字 | リポジトリ名 | ||
sourcePath | string | ✓ | ~ 1024文字 | ソースコードのファイルパス | ||
referenceType | enum [ “commit_hash”, “branch”, “tag” ] | ✓ | ~ 128文字 | コードの取得元 | ||
commitHash | string | {referenceType} == “commit_hash” | ✓ | ~ 1024文字 | コミットハッシュ | |
branchName | string | {referenceType} == “branch” | ✓ | ~ 1024文字 | ブランチ名 | |
tagName | string | {referenceType} == “tag” | ✓ | ~ 1024文字 | タグ名 |
AttributeRange
募集条件
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
name | string | ✓ | ~ 128文字 | 属性名 | ||
min | int | ✓ | 0 | ~ 2147483646 | ギャザリング参加可能な属性値の最小値 | |
max | int | ✓ | 0 | ~ 2147483646 | ギャザリング参加可能な属性値の最大値 |
CapacityOfRole
募集枠
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
roleName | string | ✓ | “default” | ~ 128文字 | ロール名 | |
roleAliases | List<string> | [] | ~ 9 items | ロール名の別名リスト | ||
capacity | int | ✓ | 1 ~ 256 | 募集人数 | ||
participants | List<Player> | [] | ~ 1000 items | 参加者のプレイヤー情報リスト |
Attribute
属性値
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
name | string | ✓ | ~ 128文字 | 属性名 | ||
value | int | ✓ | 0 | ~ 2147483646 | 属性値 |
Player
参加者のプレイヤー情報
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
attributes | List<Attribute> | [] | ~ 5 items | 属性値のリスト | ||
roleName | string | ✓ | “default” | ~ 128文字 | ロール名 | |
denyUserIds | List<string> | [] | ~ 100 items | 参加を拒否するユーザIDリスト | ||
createdAt | long | ✓ | 作成日時 |
Rating
レーティング
ゲームプレイヤー毎の現在のレーティングの値を保持するエンティティです。
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
ratingId | string | ✓ | ~ 1024文字 | レーティングGRN | ||
name | string | ✓ | ~ 128文字 | レーティング名 | ||
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
rateValue | float | ✓ | 1500.0 | ~ 65535.0 | ||
createdAt | long | ✓ | 作成日時 | |||
updatedAt | long | ✓ | 最終更新日時 | |||
revision | long | 0 | ~ 9223372036854775805 | リビジョン |
GameResult
対戦結果
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
rank | int | ✓ | ~ 2147483646 | 順位 | ||
userId | string | ✓ | ~ 128文字 | ユーザーID |
Ballot
投票用紙
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
ratingName | string | ✓ | ~ 128文字 | レーティング計算に使用するレーティング名 | ||
gatheringName | string | ✓ | ~ 128文字 | 投票対象のギャザリング名 | ||
numberOfPlayer | int | ✓ | 2 ~ 10 | 参加人数 |
SignedBallot
署名付の投票用紙
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
body | string | ✓ | ~ 1024文字 | 投票用紙の署名対象のデータ | ||
signature | string | ✓ | ~ 256文字 | 投票用紙の署名 |
WrittenBallot
投票用紙
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
ballot | Ballot | ✓ | 投票用紙 | |||
gameResults | List<GameResult> | ~ 10 items | 投票内容。対戦結果のリスト |
Vote
投票状況
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
voteId | string | ✓ | ~ 1024文字 | 投票状況GRN | ||
ratingName | string | ✓ | ~ 128文字 | レーティングモデル名 | ||
gatheringName | string | ✓ | UUID | ~ 128文字 | ギャザリング名 | |
writtenBallots | List<WrittenBallot> | [] | ~ 10 items | 投票用紙のリスト | ||
createdAt | long | ✓ | 作成日時 | |||
updatedAt | long | ✓ | 最終更新日時 |
TimeSpan
時間間隔
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
days | int | ✓ | 0 | ~ 365 | 現在時刻からの日数 | |
hours | int | ✓ | 0 | ~ 24 | 現在時刻からの時間 | |
minutes | int | ✓ | 0 | ~ 60 | 現在時刻からの分 |
メソッド
describeNamespaces
ネームスペースの一覧を取得
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | |||
limit | int | ✓ | 30 | 1 ~ 1000 | データの取得件数 |
Result
型 | 説明 | |
---|---|---|
items | List<Namespace> | ネームスペースのリスト |
nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.DescribeNamespaces(
&matchmaking.DescribeNamespacesRequest {
PageToken: nil,
Limit: nil,
}
)
if err != nil {
panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageToken
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\DescribeNamespacesRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->describeNamespaces(
(new DescribeNamespacesRequest())
->withPageToken(null)
->withLimit(null)
);
$items = $result->getItems();
$nextPageToken = $result->getNextPageToken();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.DescribeNamespacesRequest;
import io.gs2.matchmaking.result.DescribeNamespacesResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
DescribeNamespacesResult result = client.describeNamespaces(
new DescribeNamespacesRequest()
.withPageToken(null)
.withLimit(null)
);
List<Namespace> items = result.getItems();
String nextPageToken = result.getNextPageToken();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.DescribeNamespacesRequest;
using Gs2.Gs2Matchmaking.Result.DescribeNamespacesResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.DescribeNamespacesResult> asyncResult = null;
yield return client.DescribeNamespaces(
new Gs2.Gs2Matchmaking.Request.DescribeNamespacesRequest()
.WithPageToken(null)
.WithLimit(null),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var items = result.Items;
var nextPageToken = result.NextPageToken;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.describeNamespaces(
new Gs2Matchmaking.DescribeNamespacesRequest()
.withPageToken(null)
.withLimit(null)
);
const items = result.getItems();
const nextPageToken = result.getNextPageToken();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.describe_namespaces(
matchmaking.DescribeNamespacesRequest()
.with_page_token(None)
.with_limit(None)
)
items = result.items
next_page_token = result.next_page_token
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.describe_namespaces({
pageToken=nil,
limit=nil,
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;
createNamespace
ネームスペースを新規作成
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
name | string | ✓ | ~ 128文字 | ネームスペース名 | ||
description | string | ~ 1024文字 | 説明文 | |||
enableRating | bool | ✓ | false | レーティング計算機能を使用するか | ||
enableDisconnectDetection | enum [ “disable”, “enable” ] | ✓ | “disable” | ~ 128文字 | マッチメイキング中プレイヤーの切断検知 | |
disconnectDetectionTimeoutSeconds | int | {enableDisconnectDetection} == “enable” | ✓ | 15 ~ 600 | マッチメイキング中にプレイヤーを切断と見なすまでの待機時間(秒) | |
createGatheringTriggerType | enum [ “none”, “gs2_realtime”, “gs2_script” ] | ✓ | ~ 128文字 | ギャザリング新規作成時のアクション | ||
createGatheringTriggerRealtimeNamespaceId | string | {createGatheringTriggerType} == “gs2_realtime” | ✓ | ~ 1024文字 | ギャザリング作成時にルームを作成する GS2-Realtime のネームスペース | |
createGatheringTriggerScriptId | string | {createGatheringTriggerType} == “gs2_script” | ✓ | ~ 1024文字 | ギャザリング作成時に実行される GS2-Script のスクリプト | |
completeMatchmakingTriggerType | enum [ “none”, “gs2_realtime”, “gs2_script” ] | ✓ | ~ 128文字 | マッチメイキング完了時のアクション | ||
completeMatchmakingTriggerRealtimeNamespaceId | string | {completeMatchmakingTriggerType} == “gs2_realtime” | ✓ | ~ 1024文字 | マッチメイキング完了時にルームを作成する GS2-Realtime のネームスペース | |
completeMatchmakingTriggerScriptId | string | {completeMatchmakingTriggerType} == “gs2_script” | ✓ | ~ 1024文字 | マッチメイキング完了時に実行される GS2-Script のスクリプト | |
enableCollaborateSeasonRating | enum [ “enable”, “disable” ] | ✓ | “disable” | ~ 128文字 | GS2-SeasonRating との連携を有効にするか | |
collaborateSeasonRatingNamespaceId | string | {enableCollaborateSeasonRating} == “enable” | ✓ | ~ 1024文字 | マッチメイキング完了時にセッションを作成する GS2-SeasonRating のネームスペース | |
collaborateSeasonRatingTtl | int | {enableCollaborateSeasonRating} == “enable” | ✓ | 60 | 60 ~ 7200 | GS2-SeasonRating の結果を受け付ける最大時間(秒) |
changeRatingScript | ScriptSetting | レーティング値が変化した時に実行するスクリプト | ||||
joinNotification | NotificationSetting | ギャザリングに新規プレイヤーが参加したときのプッシュ通知 | ||||
leaveNotification | NotificationSetting | ギャザリングからプレイヤーが離脱したときのプッシュ通知 | ||||
completeNotification | NotificationSetting | マッチメイキングが完了したときのプッシュ通知 | ||||
changeRatingNotification | NotificationSetting | レーティングの値が変動したときのプッシュ通知 | ||||
logSetting | LogSetting | ログの出力設定 |
Result
型 | 説明 | |
---|---|---|
item | Namespace | 作成したネームスペース |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.CreateNamespace(
&matchmaking.CreateNamespaceRequest {
Name: pointy.String("namespace1"),
Description: nil,
EnableRating: pointy.Bool(true),
EnableDisconnectDetection: nil,
DisconnectDetectionTimeoutSeconds: nil,
CreateGatheringTriggerType: pointy.String("none"),
CreateGatheringTriggerRealtimeNamespaceId: nil,
CreateGatheringTriggerScriptId: nil,
CompleteMatchmakingTriggerType: pointy.String("none"),
CompleteMatchmakingTriggerRealtimeNamespaceId: nil,
CompleteMatchmakingTriggerScriptId: nil,
EnableCollaborateSeasonRating: pointy.String("disable"),
CollaborateSeasonRatingNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001"),
CollaborateSeasonRatingTtl: pointy.Int32(60),
ChangeRatingScript: nil,
JoinNotification: nil,
LeaveNotification: nil,
CompleteNotification: nil,
ChangeRatingNotification: nil,
LogSetting: &matchmaking.LogSetting{
LoggingNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"),
},
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\CreateNamespaceRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->createNamespace(
(new CreateNamespaceRequest())
->withName(self::namespace1)
->withDescription(null)
->withEnableRating(True)
->withEnableDisconnectDetection(null)
->withDisconnectDetectionTimeoutSeconds(null)
->withCreateGatheringTriggerType("none")
->withCreateGatheringTriggerRealtimeNamespaceId(null)
->withCreateGatheringTriggerScriptId(null)
->withCompleteMatchmakingTriggerType("none")
->withCompleteMatchmakingTriggerRealtimeNamespaceId(null)
->withCompleteMatchmakingTriggerScriptId(null)
->withEnableCollaborateSeasonRating("disable")
->withCollaborateSeasonRatingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001")
->withCollaborateSeasonRatingTtl(60)
->withChangeRatingScript(null)
->withJoinNotification(null)
->withLeaveNotification(null)
->withCompleteNotification(null)
->withChangeRatingNotification(null)
->withLogSetting((new \Gs2\Matchmaking\Model\LogSetting())
->withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"))
);
$item = $result->getItem();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.CreateNamespaceRequest;
import io.gs2.matchmaking.result.CreateNamespaceResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
CreateNamespaceResult result = client.createNamespace(
new CreateNamespaceRequest()
.withName("namespace1")
.withDescription(null)
.withEnableRating(true)
.withEnableDisconnectDetection(null)
.withDisconnectDetectionTimeoutSeconds(null)
.withCreateGatheringTriggerType("none")
.withCreateGatheringTriggerRealtimeNamespaceId(null)
.withCreateGatheringTriggerScriptId(null)
.withCompleteMatchmakingTriggerType("none")
.withCompleteMatchmakingTriggerRealtimeNamespaceId(null)
.withCompleteMatchmakingTriggerScriptId(null)
.withEnableCollaborateSeasonRating("disable")
.withCollaborateSeasonRatingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001")
.withCollaborateSeasonRatingTtl(60)
.withChangeRatingScript(null)
.withJoinNotification(null)
.withLeaveNotification(null)
.withCompleteNotification(null)
.withChangeRatingNotification(null)
.withLogSetting(new io.gs2.matchmaking.model.LogSetting()
.withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"))
);
Namespace item = result.getItem();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.CreateNamespaceRequest;
using Gs2.Gs2Matchmaking.Result.CreateNamespaceResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.CreateNamespaceResult> asyncResult = null;
yield return client.CreateNamespace(
new Gs2.Gs2Matchmaking.Request.CreateNamespaceRequest()
.WithName("namespace1")
.WithDescription(null)
.WithEnableRating(true)
.WithEnableDisconnectDetection(null)
.WithDisconnectDetectionTimeoutSeconds(null)
.WithCreateGatheringTriggerType("none")
.WithCreateGatheringTriggerRealtimeNamespaceId(null)
.WithCreateGatheringTriggerScriptId(null)
.WithCompleteMatchmakingTriggerType("none")
.WithCompleteMatchmakingTriggerRealtimeNamespaceId(null)
.WithCompleteMatchmakingTriggerScriptId(null)
.WithEnableCollaborateSeasonRating("disable")
.WithCollaborateSeasonRatingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001")
.WithCollaborateSeasonRatingTtl(60)
.WithChangeRatingScript(null)
.WithJoinNotification(null)
.WithLeaveNotification(null)
.WithCompleteNotification(null)
.WithChangeRatingNotification(null)
.WithLogSetting(new Gs2.Gs2Matchmaking.Model.LogSetting()
.WithLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001")),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.createNamespace(
new Gs2Matchmaking.CreateNamespaceRequest()
.withName("namespace1")
.withDescription(null)
.withEnableRating(true)
.withEnableDisconnectDetection(null)
.withDisconnectDetectionTimeoutSeconds(null)
.withCreateGatheringTriggerType("none")
.withCreateGatheringTriggerRealtimeNamespaceId(null)
.withCreateGatheringTriggerScriptId(null)
.withCompleteMatchmakingTriggerType("none")
.withCompleteMatchmakingTriggerRealtimeNamespaceId(null)
.withCompleteMatchmakingTriggerScriptId(null)
.withEnableCollaborateSeasonRating("disable")
.withCollaborateSeasonRatingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001")
.withCollaborateSeasonRatingTtl(60)
.withChangeRatingScript(null)
.withJoinNotification(null)
.withLeaveNotification(null)
.withCompleteNotification(null)
.withChangeRatingNotification(null)
.withLogSetting(new Gs2Matchmaking.model.LogSetting()
.withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"))
);
const item = result.getItem();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.create_namespace(
matchmaking.CreateNamespaceRequest()
.with_name(self.hash1)
.with_description(None)
.with_enable_rating(True)
.with_enable_disconnect_detection(None)
.with_disconnect_detection_timeout_seconds(None)
.with_create_gathering_trigger_type('none')
.with_create_gathering_trigger_realtime_namespace_id(None)
.with_create_gathering_trigger_script_id(None)
.with_complete_matchmaking_trigger_type('none')
.with_complete_matchmaking_trigger_realtime_namespace_id(None)
.with_complete_matchmaking_trigger_script_id(None)
.with_enable_collaborate_season_rating('disable')
.with_collaborate_season_rating_namespace_id('grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001')
.with_collaborate_season_rating_ttl(60)
.with_change_rating_script(None)
.with_join_notification(None)
.with_leave_notification(None)
.with_complete_notification(None)
.with_change_rating_notification(None)
.with_log_setting(
matchmaking.LogSetting()
.with_logging_namespace_id('grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001'))
)
item = result.item
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.create_namespace({
name="namespace1",
description=nil,
enableRating=true,
enableDisconnectDetection=nil,
disconnectDetectionTimeoutSeconds=nil,
createGatheringTriggerType="none",
createGatheringTriggerRealtimeNamespaceId=nil,
createGatheringTriggerScriptId=nil,
completeMatchmakingTriggerType="none",
completeMatchmakingTriggerRealtimeNamespaceId=nil,
completeMatchmakingTriggerScriptId=nil,
enableCollaborateSeasonRating="disable",
collaborateSeasonRatingNamespaceId="grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001",
collaborateSeasonRatingTtl=60,
changeRatingScript=nil,
joinNotification=nil,
leaveNotification=nil,
completeNotification=nil,
changeRatingNotification=nil,
logSetting={
loggingNamespaceId="grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001",
},
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
item = result.item;
getNamespaceStatus
ネームスペースの状態を取得
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 |
Result
型 | 説明 | |
---|---|---|
status | string |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.GetNamespaceStatus(
&matchmaking.GetNamespaceStatusRequest {
NamespaceName: pointy.String("namespace1"),
}
)
if err != nil {
panic("error occurred")
}
status := result.Status
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\GetNamespaceStatusRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->getNamespaceStatus(
(new GetNamespaceStatusRequest())
->withNamespaceName(self::namespace1)
);
$status = $result->getStatus();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.GetNamespaceStatusRequest;
import io.gs2.matchmaking.result.GetNamespaceStatusResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
GetNamespaceStatusResult result = client.getNamespaceStatus(
new GetNamespaceStatusRequest()
.withNamespaceName("namespace1")
);
String status = result.getStatus();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.GetNamespaceStatusRequest;
using Gs2.Gs2Matchmaking.Result.GetNamespaceStatusResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.GetNamespaceStatusResult> asyncResult = null;
yield return client.GetNamespaceStatus(
new Gs2.Gs2Matchmaking.Request.GetNamespaceStatusRequest()
.WithNamespaceName("namespace1"),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var status = result.Status;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.getNamespaceStatus(
new Gs2Matchmaking.GetNamespaceStatusRequest()
.withNamespaceName("namespace1")
);
const status = result.getStatus();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.get_namespace_status(
matchmaking.GetNamespaceStatusRequest()
.with_namespace_name(self.hash1)
)
status = result.status
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.get_namespace_status({
namespaceName="namespace1",
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
status = result.status;
getNamespace
ネームスペースを取得
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 |
Result
型 | 説明 | |
---|---|---|
item | Namespace | ネームスペース |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.GetNamespace(
&matchmaking.GetNamespaceRequest {
NamespaceName: pointy.String("namespace1"),
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\GetNamespaceRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->getNamespace(
(new GetNamespaceRequest())
->withNamespaceName(self::namespace1)
);
$item = $result->getItem();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.GetNamespaceRequest;
import io.gs2.matchmaking.result.GetNamespaceResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
GetNamespaceResult result = client.getNamespace(
new GetNamespaceRequest()
.withNamespaceName("namespace1")
);
Namespace item = result.getItem();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.GetNamespaceRequest;
using Gs2.Gs2Matchmaking.Result.GetNamespaceResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.GetNamespaceResult> asyncResult = null;
yield return client.GetNamespace(
new Gs2.Gs2Matchmaking.Request.GetNamespaceRequest()
.WithNamespaceName("namespace1"),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.getNamespace(
new Gs2Matchmaking.GetNamespaceRequest()
.withNamespaceName("namespace1")
);
const item = result.getItem();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.get_namespace(
matchmaking.GetNamespaceRequest()
.with_namespace_name(self.hash1)
)
item = result.item
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.get_namespace({
namespaceName="namespace1",
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
item = result.item;
updateNamespace
ネームスペースを更新
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | ||
description | string | ~ 1024文字 | 説明文 | |||
enableRating | bool | ✓ | false | レーティング計算機能を使用するか | ||
enableDisconnectDetection | enum [ “disable”, “enable” ] | ✓ | “disable” | ~ 128文字 | マッチメイキング中プレイヤーの切断検知 | |
disconnectDetectionTimeoutSeconds | int | {enableDisconnectDetection} == “enable” | ✓ | 15 ~ 600 | マッチメイキング中にプレイヤーを切断と見なすまでの待機時間(秒) | |
createGatheringTriggerType | enum [ “none”, “gs2_realtime”, “gs2_script” ] | ✓ | ~ 128文字 | ギャザリング新規作成時のアクション | ||
createGatheringTriggerRealtimeNamespaceId | string | {createGatheringTriggerType} == “gs2_realtime” | ✓ | ~ 1024文字 | ギャザリング作成時にルームを作成する GS2-Realtime のネームスペース | |
createGatheringTriggerScriptId | string | {createGatheringTriggerType} == “gs2_script” | ✓ | ~ 1024文字 | ギャザリング作成時に実行される GS2-Script のスクリプト | |
completeMatchmakingTriggerType | enum [ “none”, “gs2_realtime”, “gs2_script” ] | ✓ | ~ 128文字 | マッチメイキング完了時のアクション | ||
completeMatchmakingTriggerRealtimeNamespaceId | string | {completeMatchmakingTriggerType} == “gs2_realtime” | ✓ | ~ 1024文字 | マッチメイキング完了時にルームを作成する GS2-Realtime のネームスペース | |
completeMatchmakingTriggerScriptId | string | {completeMatchmakingTriggerType} == “gs2_script” | ✓ | ~ 1024文字 | マッチメイキング完了時に実行される GS2-Script のスクリプト | |
enableCollaborateSeasonRating | enum [ “enable”, “disable” ] | ✓ | “disable” | ~ 128文字 | GS2-SeasonRating との連携を有効にするか | |
collaborateSeasonRatingNamespaceId | string | {enableCollaborateSeasonRating} == “enable” | ✓ | ~ 1024文字 | マッチメイキング完了時にセッションを作成する GS2-SeasonRating のネームスペース | |
collaborateSeasonRatingTtl | int | {enableCollaborateSeasonRating} == “enable” | ✓ | 60 | 60 ~ 7200 | GS2-SeasonRating の結果を受け付ける最大時間(秒) |
changeRatingScript | ScriptSetting | レーティング値が変化した時に実行するスクリプト | ||||
joinNotification | NotificationSetting | ギャザリングに新規プレイヤーが参加したときのプッシュ通知 | ||||
leaveNotification | NotificationSetting | ギャザリングからプレイヤーが離脱したときのプッシュ通知 | ||||
completeNotification | NotificationSetting | マッチメイキングが完了したときのプッシュ通知 | ||||
changeRatingNotification | NotificationSetting | レーティングの値が変動したときのプッシュ通知 | ||||
logSetting | LogSetting | ログの出力設定 |
Result
型 | 説明 | |
---|---|---|
item | Namespace | 更新したネームスペース |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.UpdateNamespace(
&matchmaking.UpdateNamespaceRequest {
NamespaceName: pointy.String("namespace1"),
Description: pointy.String("description1"),
EnableRating: pointy.Bool(true),
EnableDisconnectDetection: nil,
DisconnectDetectionTimeoutSeconds: nil,
CreateGatheringTriggerType: pointy.String("none"),
CreateGatheringTriggerRealtimeNamespaceId: nil,
CreateGatheringTriggerScriptId: nil,
CompleteMatchmakingTriggerType: pointy.String("none"),
CompleteMatchmakingTriggerRealtimeNamespaceId: nil,
CompleteMatchmakingTriggerScriptId: nil,
EnableCollaborateSeasonRating: pointy.String("enable"),
CollaborateSeasonRatingNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001"),
CollaborateSeasonRatingTtl: pointy.Int32(60),
ChangeRatingScript: nil,
JoinNotification: nil,
LeaveNotification: nil,
CompleteNotification: nil,
ChangeRatingNotification: nil,
LogSetting: &matchmaking.LogSetting{
LoggingNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"),
},
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\UpdateNamespaceRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->updateNamespace(
(new UpdateNamespaceRequest())
->withNamespaceName(self::namespace1)
->withDescription("description1")
->withEnableRating(True)
->withEnableDisconnectDetection(null)
->withDisconnectDetectionTimeoutSeconds(null)
->withCreateGatheringTriggerType("none")
->withCreateGatheringTriggerRealtimeNamespaceId(null)
->withCreateGatheringTriggerScriptId(null)
->withCompleteMatchmakingTriggerType("none")
->withCompleteMatchmakingTriggerRealtimeNamespaceId(null)
->withCompleteMatchmakingTriggerScriptId(null)
->withEnableCollaborateSeasonRating("enable")
->withCollaborateSeasonRatingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001")
->withCollaborateSeasonRatingTtl(60)
->withChangeRatingScript(null)
->withJoinNotification(null)
->withLeaveNotification(null)
->withCompleteNotification(null)
->withChangeRatingNotification(null)
->withLogSetting((new \Gs2\Matchmaking\Model\LogSetting())
->withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"))
);
$item = $result->getItem();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.UpdateNamespaceRequest;
import io.gs2.matchmaking.result.UpdateNamespaceResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
UpdateNamespaceResult result = client.updateNamespace(
new UpdateNamespaceRequest()
.withNamespaceName("namespace1")
.withDescription("description1")
.withEnableRating(true)
.withEnableDisconnectDetection(null)
.withDisconnectDetectionTimeoutSeconds(null)
.withCreateGatheringTriggerType("none")
.withCreateGatheringTriggerRealtimeNamespaceId(null)
.withCreateGatheringTriggerScriptId(null)
.withCompleteMatchmakingTriggerType("none")
.withCompleteMatchmakingTriggerRealtimeNamespaceId(null)
.withCompleteMatchmakingTriggerScriptId(null)
.withEnableCollaborateSeasonRating("enable")
.withCollaborateSeasonRatingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001")
.withCollaborateSeasonRatingTtl(60)
.withChangeRatingScript(null)
.withJoinNotification(null)
.withLeaveNotification(null)
.withCompleteNotification(null)
.withChangeRatingNotification(null)
.withLogSetting(new io.gs2.matchmaking.model.LogSetting()
.withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"))
);
Namespace item = result.getItem();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.UpdateNamespaceRequest;
using Gs2.Gs2Matchmaking.Result.UpdateNamespaceResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.UpdateNamespaceResult> asyncResult = null;
yield return client.UpdateNamespace(
new Gs2.Gs2Matchmaking.Request.UpdateNamespaceRequest()
.WithNamespaceName("namespace1")
.WithDescription("description1")
.WithEnableRating(true)
.WithEnableDisconnectDetection(null)
.WithDisconnectDetectionTimeoutSeconds(null)
.WithCreateGatheringTriggerType("none")
.WithCreateGatheringTriggerRealtimeNamespaceId(null)
.WithCreateGatheringTriggerScriptId(null)
.WithCompleteMatchmakingTriggerType("none")
.WithCompleteMatchmakingTriggerRealtimeNamespaceId(null)
.WithCompleteMatchmakingTriggerScriptId(null)
.WithEnableCollaborateSeasonRating("enable")
.WithCollaborateSeasonRatingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001")
.WithCollaborateSeasonRatingTtl(60)
.WithChangeRatingScript(null)
.WithJoinNotification(null)
.WithLeaveNotification(null)
.WithCompleteNotification(null)
.WithChangeRatingNotification(null)
.WithLogSetting(new Gs2.Gs2Matchmaking.Model.LogSetting()
.WithLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001")),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.updateNamespace(
new Gs2Matchmaking.UpdateNamespaceRequest()
.withNamespaceName("namespace1")
.withDescription("description1")
.withEnableRating(true)
.withEnableDisconnectDetection(null)
.withDisconnectDetectionTimeoutSeconds(null)
.withCreateGatheringTriggerType("none")
.withCreateGatheringTriggerRealtimeNamespaceId(null)
.withCreateGatheringTriggerScriptId(null)
.withCompleteMatchmakingTriggerType("none")
.withCompleteMatchmakingTriggerRealtimeNamespaceId(null)
.withCompleteMatchmakingTriggerScriptId(null)
.withEnableCollaborateSeasonRating("enable")
.withCollaborateSeasonRatingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001")
.withCollaborateSeasonRatingTtl(60)
.withChangeRatingScript(null)
.withJoinNotification(null)
.withLeaveNotification(null)
.withCompleteNotification(null)
.withChangeRatingNotification(null)
.withLogSetting(new Gs2Matchmaking.model.LogSetting()
.withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"))
);
const item = result.getItem();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.update_namespace(
matchmaking.UpdateNamespaceRequest()
.with_namespace_name(self.hash1)
.with_description('description1')
.with_enable_rating(True)
.with_enable_disconnect_detection(None)
.with_disconnect_detection_timeout_seconds(None)
.with_create_gathering_trigger_type('none')
.with_create_gathering_trigger_realtime_namespace_id(None)
.with_create_gathering_trigger_script_id(None)
.with_complete_matchmaking_trigger_type('none')
.with_complete_matchmaking_trigger_realtime_namespace_id(None)
.with_complete_matchmaking_trigger_script_id(None)
.with_enable_collaborate_season_rating('enable')
.with_collaborate_season_rating_namespace_id('grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001')
.with_collaborate_season_rating_ttl(60)
.with_change_rating_script(None)
.with_join_notification(None)
.with_leave_notification(None)
.with_complete_notification(None)
.with_change_rating_notification(None)
.with_log_setting(
matchmaking.LogSetting()
.with_logging_namespace_id('grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001'))
)
item = result.item
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.update_namespace({
namespaceName="namespace1",
description="description1",
enableRating=true,
enableDisconnectDetection=nil,
disconnectDetectionTimeoutSeconds=nil,
createGatheringTriggerType="none",
createGatheringTriggerRealtimeNamespaceId=nil,
createGatheringTriggerScriptId=nil,
completeMatchmakingTriggerType="none",
completeMatchmakingTriggerRealtimeNamespaceId=nil,
completeMatchmakingTriggerScriptId=nil,
enableCollaborateSeasonRating="enable",
collaborateSeasonRatingNamespaceId="grn:gs2:ap-northeast-1:YourOwnerId:experience:namespace-0001",
collaborateSeasonRatingTtl=60,
changeRatingScript=nil,
joinNotification=nil,
leaveNotification=nil,
completeNotification=nil,
changeRatingNotification=nil,
logSetting={
loggingNamespaceId="grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001",
},
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
item = result.item;
deleteNamespace
ネームスペースを削除
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 |
Result
型 | 説明 | |
---|---|---|
item | Namespace | 削除したネームスペース |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.DeleteNamespace(
&matchmaking.DeleteNamespaceRequest {
NamespaceName: pointy.String("namespace1"),
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\DeleteNamespaceRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->deleteNamespace(
(new DeleteNamespaceRequest())
->withNamespaceName(self::namespace1)
);
$item = $result->getItem();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.DeleteNamespaceRequest;
import io.gs2.matchmaking.result.DeleteNamespaceResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
DeleteNamespaceResult result = client.deleteNamespace(
new DeleteNamespaceRequest()
.withNamespaceName("namespace1")
);
Namespace item = result.getItem();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.DeleteNamespaceRequest;
using Gs2.Gs2Matchmaking.Result.DeleteNamespaceResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.DeleteNamespaceResult> asyncResult = null;
yield return client.DeleteNamespace(
new Gs2.Gs2Matchmaking.Request.DeleteNamespaceRequest()
.WithNamespaceName("namespace1"),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.deleteNamespace(
new Gs2Matchmaking.DeleteNamespaceRequest()
.withNamespaceName("namespace1")
);
const item = result.getItem();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.delete_namespace(
matchmaking.DeleteNamespaceRequest()
.with_namespace_name(self.hash1)
)
item = result.item
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.delete_namespace({
namespaceName="namespace1",
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
item = result.item;
dumpUserDataByUserId
指定したユーザーIDに紐づくデータのダンプを取得
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
型 | 説明 |
---|
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.DumpUserDataByUserId(
&matchmaking.DumpUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\DumpUserDataByUserIdRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->dumpUserDataByUserId(
(new DumpUserDataByUserIdRequest())
->withUserId("user-0001")
->withTimeOffsetToken(null)
);
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.DumpUserDataByUserIdRequest;
import io.gs2.matchmaking.result.DumpUserDataByUserIdResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
DumpUserDataByUserIdResult result = client.dumpUserDataByUserId(
new DumpUserDataByUserIdRequest()
.withUserId("user-0001")
.withTimeOffsetToken(null)
);
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.DumpUserDataByUserIdRequest;
using Gs2.Gs2Matchmaking.Result.DumpUserDataByUserIdResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.DumpUserDataByUserIdResult> asyncResult = null;
yield return client.DumpUserDataByUserId(
new Gs2.Gs2Matchmaking.Request.DumpUserDataByUserIdRequest()
.WithUserId("user-0001")
.WithTimeOffsetToken(null),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.dumpUserDataByUserId(
new Gs2Matchmaking.DumpUserDataByUserIdRequest()
.withUserId("user-0001")
.withTimeOffsetToken(null)
);
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.dump_user_data_by_user_id(
matchmaking.DumpUserDataByUserIdRequest()
.with_user_id('user-0001')
.with_time_offset_token(None)
)
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.dump_user_data_by_user_id({
userId="user-0001",
timeOffsetToken=nil,
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
checkDumpUserDataByUserId
指定したユーザーIDに紐づくデータのダンプが完了しているか確認
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
型 | 説明 | |
---|---|---|
url | string | 出力データのURL |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.CheckDumpUserDataByUserId(
&matchmaking.CheckDumpUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
url := result.Url
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\CheckDumpUserDataByUserIdRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->checkDumpUserDataByUserId(
(new CheckDumpUserDataByUserIdRequest())
->withUserId("user-0001")
->withTimeOffsetToken(null)
);
$url = $result->getUrl();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.CheckDumpUserDataByUserIdRequest;
import io.gs2.matchmaking.result.CheckDumpUserDataByUserIdResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
CheckDumpUserDataByUserIdResult result = client.checkDumpUserDataByUserId(
new CheckDumpUserDataByUserIdRequest()
.withUserId("user-0001")
.withTimeOffsetToken(null)
);
String url = result.getUrl();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.CheckDumpUserDataByUserIdRequest;
using Gs2.Gs2Matchmaking.Result.CheckDumpUserDataByUserIdResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.CheckDumpUserDataByUserIdResult> asyncResult = null;
yield return client.CheckDumpUserDataByUserId(
new Gs2.Gs2Matchmaking.Request.CheckDumpUserDataByUserIdRequest()
.WithUserId("user-0001")
.WithTimeOffsetToken(null),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var url = result.Url;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.checkDumpUserDataByUserId(
new Gs2Matchmaking.CheckDumpUserDataByUserIdRequest()
.withUserId("user-0001")
.withTimeOffsetToken(null)
);
const url = result.getUrl();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.check_dump_user_data_by_user_id(
matchmaking.CheckDumpUserDataByUserIdRequest()
.with_user_id('user-0001')
.with_time_offset_token(None)
)
url = result.url
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.check_dump_user_data_by_user_id({
userId="user-0001",
timeOffsetToken=nil,
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
url = result.url;
cleanUserDataByUserId
指定したユーザーIDに紐づくデータのダンプを取得
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
型 | 説明 |
---|
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.CleanUserDataByUserId(
&matchmaking.CleanUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\CleanUserDataByUserIdRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->cleanUserDataByUserId(
(new CleanUserDataByUserIdRequest())
->withUserId("user-0001")
->withTimeOffsetToken(null)
);
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.CleanUserDataByUserIdRequest;
import io.gs2.matchmaking.result.CleanUserDataByUserIdResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
CleanUserDataByUserIdResult result = client.cleanUserDataByUserId(
new CleanUserDataByUserIdRequest()
.withUserId("user-0001")
.withTimeOffsetToken(null)
);
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.CleanUserDataByUserIdRequest;
using Gs2.Gs2Matchmaking.Result.CleanUserDataByUserIdResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.CleanUserDataByUserIdResult> asyncResult = null;
yield return client.CleanUserDataByUserId(
new Gs2.Gs2Matchmaking.Request.CleanUserDataByUserIdRequest()
.WithUserId("user-0001")
.WithTimeOffsetToken(null),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.cleanUserDataByUserId(
new Gs2Matchmaking.CleanUserDataByUserIdRequest()
.withUserId("user-0001")
.withTimeOffsetToken(null)
);
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.clean_user_data_by_user_id(
matchmaking.CleanUserDataByUserIdRequest()
.with_user_id('user-0001')
.with_time_offset_token(None)
)
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.clean_user_data_by_user_id({
userId="user-0001",
timeOffsetToken=nil,
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
checkCleanUserDataByUserId
指定したユーザーIDに紐づくデータのダンプが完了しているか確認
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
型 | 説明 |
---|
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.CheckCleanUserDataByUserId(
&matchmaking.CheckCleanUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\CheckCleanUserDataByUserIdRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->checkCleanUserDataByUserId(
(new CheckCleanUserDataByUserIdRequest())
->withUserId("user-0001")
->withTimeOffsetToken(null)
);
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.CheckCleanUserDataByUserIdRequest;
import io.gs2.matchmaking.result.CheckCleanUserDataByUserIdResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
CheckCleanUserDataByUserIdResult result = client.checkCleanUserDataByUserId(
new CheckCleanUserDataByUserIdRequest()
.withUserId("user-0001")
.withTimeOffsetToken(null)
);
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.CheckCleanUserDataByUserIdRequest;
using Gs2.Gs2Matchmaking.Result.CheckCleanUserDataByUserIdResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.CheckCleanUserDataByUserIdResult> asyncResult = null;
yield return client.CheckCleanUserDataByUserId(
new Gs2.Gs2Matchmaking.Request.CheckCleanUserDataByUserIdRequest()
.WithUserId("user-0001")
.WithTimeOffsetToken(null),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.checkCleanUserDataByUserId(
new Gs2Matchmaking.CheckCleanUserDataByUserIdRequest()
.withUserId("user-0001")
.withTimeOffsetToken(null)
);
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.check_clean_user_data_by_user_id(
matchmaking.CheckCleanUserDataByUserIdRequest()
.with_user_id('user-0001')
.with_time_offset_token(None)
)
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.check_clean_user_data_by_user_id({
userId="user-0001",
timeOffsetToken=nil,
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
prepareImportUserDataByUserId
指定したユーザーIDに紐づくデータのインポートを開始
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
型 | 説明 | |
---|---|---|
uploadToken | string | アップロード後に結果を反映する際に使用するトークン |
uploadUrl | string | ユーザーデータアップロード処理の実行に使用するURL |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.PrepareImportUserDataByUserId(
&matchmaking.PrepareImportUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
uploadToken := result.UploadToken
uploadUrl := result.UploadUrl
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\PrepareImportUserDataByUserIdRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->prepareImportUserDataByUserId(
(new PrepareImportUserDataByUserIdRequest())
->withUserId("user-0001")
->withTimeOffsetToken(null)
);
$uploadToken = $result->getUploadToken();
$uploadUrl = $result->getUploadUrl();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.PrepareImportUserDataByUserIdRequest;
import io.gs2.matchmaking.result.PrepareImportUserDataByUserIdResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
PrepareImportUserDataByUserIdResult result = client.prepareImportUserDataByUserId(
new PrepareImportUserDataByUserIdRequest()
.withUserId("user-0001")
.withTimeOffsetToken(null)
);
String uploadToken = result.getUploadToken();
String uploadUrl = result.getUploadUrl();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.PrepareImportUserDataByUserIdRequest;
using Gs2.Gs2Matchmaking.Result.PrepareImportUserDataByUserIdResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.PrepareImportUserDataByUserIdResult> asyncResult = null;
yield return client.PrepareImportUserDataByUserId(
new Gs2.Gs2Matchmaking.Request.PrepareImportUserDataByUserIdRequest()
.WithUserId("user-0001")
.WithTimeOffsetToken(null),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var uploadToken = result.UploadToken;
var uploadUrl = result.UploadUrl;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.prepareImportUserDataByUserId(
new Gs2Matchmaking.PrepareImportUserDataByUserIdRequest()
.withUserId("user-0001")
.withTimeOffsetToken(null)
);
const uploadToken = result.getUploadToken();
const uploadUrl = result.getUploadUrl();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.prepare_import_user_data_by_user_id(
matchmaking.PrepareImportUserDataByUserIdRequest()
.with_user_id('user-0001')
.with_time_offset_token(None)
)
upload_token = result.upload_token
upload_url = result.upload_url
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.prepare_import_user_data_by_user_id({
userId="user-0001",
timeOffsetToken=nil,
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
uploadToken = result.uploadToken;
uploadUrl = result.uploadUrl;
importUserDataByUserId
指定したユーザーIDに紐づくデータのインポートを開始
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
uploadToken | string | ✓ | ~ 1024文字 | アップロード準備で受け取ったトークン | ||
timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
型 | 説明 |
---|
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.ImportUserDataByUserId(
&matchmaking.ImportUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
UploadToken: pointy.String("upload-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\ImportUserDataByUserIdRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->importUserDataByUserId(
(new ImportUserDataByUserIdRequest())
->withUserId("user-0001")
->withUploadToken("upload-0001")
->withTimeOffsetToken(null)
);
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.ImportUserDataByUserIdRequest;
import io.gs2.matchmaking.result.ImportUserDataByUserIdResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
ImportUserDataByUserIdResult result = client.importUserDataByUserId(
new ImportUserDataByUserIdRequest()
.withUserId("user-0001")
.withUploadToken("upload-0001")
.withTimeOffsetToken(null)
);
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.ImportUserDataByUserIdRequest;
using Gs2.Gs2Matchmaking.Result.ImportUserDataByUserIdResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.ImportUserDataByUserIdResult> asyncResult = null;
yield return client.ImportUserDataByUserId(
new Gs2.Gs2Matchmaking.Request.ImportUserDataByUserIdRequest()
.WithUserId("user-0001")
.WithUploadToken("upload-0001")
.WithTimeOffsetToken(null),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.importUserDataByUserId(
new Gs2Matchmaking.ImportUserDataByUserIdRequest()
.withUserId("user-0001")
.withUploadToken("upload-0001")
.withTimeOffsetToken(null)
);
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.import_user_data_by_user_id(
matchmaking.ImportUserDataByUserIdRequest()
.with_user_id('user-0001')
.with_upload_token('upload-0001')
.with_time_offset_token(None)
)
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.import_user_data_by_user_id({
userId="user-0001",
uploadToken="upload-0001",
timeOffsetToken=nil,
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
checkImportUserDataByUserId
指定したユーザーIDに紐づくデータのインポートが完了しているか確認
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
uploadToken | string | ✓ | ~ 1024文字 | アップロード準備で受け取ったトークン | ||
timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
型 | 説明 | |
---|---|---|
url | string | 出力ログのURL |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.CheckImportUserDataByUserId(
&matchmaking.CheckImportUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
UploadToken: pointy.String("upload-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
url := result.Url
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\CheckImportUserDataByUserIdRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->checkImportUserDataByUserId(
(new CheckImportUserDataByUserIdRequest())
->withUserId("user-0001")
->withUploadToken("upload-0001")
->withTimeOffsetToken(null)
);
$url = $result->getUrl();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.CheckImportUserDataByUserIdRequest;
import io.gs2.matchmaking.result.CheckImportUserDataByUserIdResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
CheckImportUserDataByUserIdResult result = client.checkImportUserDataByUserId(
new CheckImportUserDataByUserIdRequest()
.withUserId("user-0001")
.withUploadToken("upload-0001")
.withTimeOffsetToken(null)
);
String url = result.getUrl();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.CheckImportUserDataByUserIdRequest;
using Gs2.Gs2Matchmaking.Result.CheckImportUserDataByUserIdResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.CheckImportUserDataByUserIdResult> asyncResult = null;
yield return client.CheckImportUserDataByUserId(
new Gs2.Gs2Matchmaking.Request.CheckImportUserDataByUserIdRequest()
.WithUserId("user-0001")
.WithUploadToken("upload-0001")
.WithTimeOffsetToken(null),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var url = result.Url;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.checkImportUserDataByUserId(
new Gs2Matchmaking.CheckImportUserDataByUserIdRequest()
.withUserId("user-0001")
.withUploadToken("upload-0001")
.withTimeOffsetToken(null)
);
const url = result.getUrl();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.check_import_user_data_by_user_id(
matchmaking.CheckImportUserDataByUserIdRequest()
.with_user_id('user-0001')
.with_upload_token('upload-0001')
.with_time_offset_token(None)
)
url = result.url
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.check_import_user_data_by_user_id({
userId="user-0001",
uploadToken="upload-0001",
timeOffsetToken=nil,
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
url = result.url;
describeGatherings
ギャザリングの一覧を取得
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | ||
pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | |||
limit | int | ✓ | 30 | 1 ~ 1000 | データの取得件数 |
Result
型 | 説明 | |
---|---|---|
items | List<Gathering> | ギャザリングのリスト |
nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.DescribeGatherings(
&matchmaking.DescribeGatheringsRequest {
NamespaceName: pointy.String("namespace1"),
PageToken: nil,
Limit: nil,
}
)
if err != nil {
panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageToken
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\DescribeGatheringsRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->describeGatherings(
(new DescribeGatheringsRequest())
->withNamespaceName(self::namespace1)
->withPageToken(null)
->withLimit(null)
);
$items = $result->getItems();
$nextPageToken = $result->getNextPageToken();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.DescribeGatheringsRequest;
import io.gs2.matchmaking.result.DescribeGatheringsResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
DescribeGatheringsResult result = client.describeGatherings(
new DescribeGatheringsRequest()
.withNamespaceName("namespace1")
.withPageToken(null)
.withLimit(null)
);
List<Gathering> items = result.getItems();
String nextPageToken = result.getNextPageToken();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.DescribeGatheringsRequest;
using Gs2.Gs2Matchmaking.Result.DescribeGatheringsResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.DescribeGatheringsResult> asyncResult = null;
yield return client.DescribeGatherings(
new Gs2.Gs2Matchmaking.Request.DescribeGatheringsRequest()
.WithNamespaceName("namespace1")
.WithPageToken(null)
.WithLimit(null),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var items = result.Items;
var nextPageToken = result.NextPageToken;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.describeGatherings(
new Gs2Matchmaking.DescribeGatheringsRequest()
.withNamespaceName("namespace1")
.withPageToken(null)
.withLimit(null)
);
const items = result.getItems();
const nextPageToken = result.getNextPageToken();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.describe_gatherings(
matchmaking.DescribeGatheringsRequest()
.with_namespace_name(self.hash1)
.with_page_token(None)
.with_limit(None)
)
items = result.items
next_page_token = result.next_page_token
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.describe_gatherings({
namespaceName="namespace1",
pageToken=nil,
limit=nil,
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;
createGathering
ギャザリングを作成して募集を開始
募集条件
には、作成したギャザリングに参加を許可する各属性値の範囲を指定します。
たとえば、同一ゲームモードを希望するプレイヤーを募集したい場合は、ゲームモードに対応した属性値が完全一致する参加条件プレイヤーとマッチメイキングするように
属性名:ゲームモード
属性最小値: ゲームモードを表す数値
属性最大値: ゲームモードを表す数値
とすることで、同一ゲームモードを希望するプレイヤー同士をマッチメイキングできます。
他にレーティングをベースにしたマッチメイキングを実施したい場合は、
ルーム作成者のレーティング値を中心とした属性値の範囲を指定することで、レーティング値の近いプレイヤー同士をマッチメイキングできます。
この 募集条件
はあとで更新することができますので、徐々に条件を緩和していくことができます。
ロール とは 盾役1人・回復役1人・攻撃役2人 などの役割ごとに募集人数を設定したい場合に使用します。
ロールにはエイリアスを指定できます。
たとえば、盾役は パラディン と ナイト の2種類の ジョブ
に更に分類できるとします。
この場合、ロール名 に 盾役
エイリアス に パラディン
ナイト
として募集を出すようにゲームを実装します。
そして、プレイヤーは自分自身の ジョブ
を自身のプレイヤー情報のロールに指定します。
こうすることで、募集条件が 盾役
になっているギャザリングには パラディン
も ナイト
も参加できます。
一方で、ギャザリングを作成するときに、 パラディン
だけ募集したくて、 ナイト
を募集したくない場合は、
募集するロール名に パラディン
を直接指定したり、エイリアスに ナイト
を含めないようにすることで実現できます。
参加者
の 募集人数
はプレイヤーの募集人数を指定します。ロール名を指定することで、ロール名ごとの募集人数を設定できます。
参加者
の 参加者のプレイヤー情報リスト
には事前にプレイヤー間でパーティを構築している場合や、参加者が離脱したあとの追加募集で使用します。
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | ||
accessToken | string | ✓ | ~ 128文字 | ユーザーID | ||
player | Player | ✓ | 自身のプレイヤー情報 | |||
attributeRanges | List<AttributeRange> | [] | ~ 5 items | 募集条件 | ||
capacityOfRoles | List<CapacityOfRole> | ✓ | [] | 1 ~ 5 items | 募集枠 | |
allowUserIds | List<string> | [] | ~ 100 items | 参加を許可するユーザ | ||
expiresAt | long | ギャザリングの有効期限 | ||||
expiresAtTimeSpan | TimeSpan | 有効期限までの時間 |
Result
型 | 説明 | |
---|---|---|
item | Gathering | 作成したギャザリング |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.CreateGathering(
&matchmaking.CreateGatheringRequest {
NamespaceName: pointy.String("namespace1"),
AccessToken: pointy.String("accessToken-0001"),
Player: &matchmaking.Player{
Attributes: []matchmaking.Attribute{
matchmaking.Attribute{
Name: pointy.String("stage"),
Value: pointy.Int32(1),
},
matchmaking.Attribute{
Name: pointy.String("level"),
Value: pointy.Int32(10),
},
},
},
AttributeRanges: []matchmaking.AttributeRange{
matchmaking.AttributeRange{
Name: pointy.String("stage"),
Min: pointy.Int32(1),
Max: pointy.Int32(1),
},
matchmaking.AttributeRange{
Name: pointy.String("level"),
Min: pointy.Int32(0),
Max: pointy.Int32(10),
},
},
CapacityOfRoles: []matchmaking.CapacityOfRole{
matchmaking.CapacityOfRole{
RoleName: pointy.String("default"),
Capacity: pointy.Int32(4),
},
},
AllowUserIds: nil,
ExpiresAt: nil,
ExpiresAtTimeSpan: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\CreateGatheringRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->createGathering(
(new CreateGatheringRequest())
->withNamespaceName(self::namespace1)
->withAccessToken(self::$accessToken0001)
->withPlayer((new \Gs2\Matchmaking\Model\Player())
->withAttributes([
(new \Gs2\Matchmaking\Model\Attribute())
->withName("stage")
->withValue(1),
(new \Gs2\Matchmaking\Model\Attribute())
->withName("level")
->withValue(10),
]))
->withAttributeRanges([
(new \Gs2\Matchmaking\Model\AttributeRange())
->withName("stage")
->withMin(1)
->withMax(1),
(new \Gs2\Matchmaking\Model\AttributeRange())
->withName("level")
->withMin(0)
->withMax(10),
])
->withCapacityOfRoles([
(new \Gs2\Matchmaking\Model\CapacityOfRole())
->withRoleName("default")
->withCapacity(4),
])
->withAllowUserIds(null)
->withExpiresAt(null)
->withExpiresAtTimeSpan(null)
);
$item = $result->getItem();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.CreateGatheringRequest;
import io.gs2.matchmaking.result.CreateGatheringResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
CreateGatheringResult result = client.createGathering(
new CreateGatheringRequest()
.withNamespaceName("namespace1")
.withAccessToken("accessToken-0001")
.withPlayer(new io.gs2.matchmaking.model.Player()
.withAttributes(Arrays.asList(
new io.gs2.matchmaking.model.Attribute()
.withName("stage")
.withValue(1),
new io.gs2.matchmaking.model.Attribute()
.withName("level")
.withValue(10)
)))
.withAttributeRanges(Arrays.asList(
new io.gs2.matchmaking.model.AttributeRange()
.withName("stage")
.withMin(1)
.withMax(1),
new io.gs2.matchmaking.model.AttributeRange()
.withName("level")
.withMin(0)
.withMax(10)
))
.withCapacityOfRoles(Arrays.asList(
new io.gs2.matchmaking.model.CapacityOfRole()
.withRoleName("default")
.withCapacity(4)
))
.withAllowUserIds(null)
.withExpiresAt(null)
.withExpiresAtTimeSpan(null)
);
Gathering item = result.getItem();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.CreateGatheringRequest;
using Gs2.Gs2Matchmaking.Result.CreateGatheringResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.CreateGatheringResult> asyncResult = null;
yield return client.CreateGathering(
new Gs2.Gs2Matchmaking.Request.CreateGatheringRequest()
.WithNamespaceName("namespace1")
.WithAccessToken("accessToken-0001")
.WithPlayer(new Gs2.Gs2Matchmaking.Model.Player()
.WithAttributes(new Gs2.Gs2Matchmaking.Model.Attribute_[] {
new Gs2.Gs2Matchmaking.Model.Attribute_()
.WithName("stage")
.WithValue(1),
new Gs2.Gs2Matchmaking.Model.Attribute_()
.WithName("level")
.WithValue(10),
}))
.WithAttributeRanges(new Gs2.Gs2Matchmaking.Model.AttributeRange[] {
new Gs2.Gs2Matchmaking.Model.AttributeRange()
.WithName("stage")
.WithMin(1)
.WithMax(1),
new Gs2.Gs2Matchmaking.Model.AttributeRange()
.WithName("level")
.WithMin(0)
.WithMax(10),
})
.WithCapacityOfRoles(new Gs2.Gs2Matchmaking.Model.CapacityOfRole[] {
new Gs2.Gs2Matchmaking.Model.CapacityOfRole()
.WithRoleName("default")
.WithCapacity(4),
})
.WithAllowUserIds(null)
.WithExpiresAt(null)
.WithExpiresAtTimeSpan(null),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.createGathering(
new Gs2Matchmaking.CreateGatheringRequest()
.withNamespaceName("namespace1")
.withAccessToken("accessToken-0001")
.withPlayer(new Gs2Matchmaking.model.Player()
.withAttributes([
new Gs2Matchmaking.model.Attribute()
.withName("stage")
.withValue(1),
new Gs2Matchmaking.model.Attribute()
.withName("level")
.withValue(10),
]))
.withAttributeRanges([
new Gs2Matchmaking.model.AttributeRange()
.withName("stage")
.withMin(1)
.withMax(1),
new Gs2Matchmaking.model.AttributeRange()
.withName("level")
.withMin(0)
.withMax(10),
])
.withCapacityOfRoles([
new Gs2Matchmaking.model.CapacityOfRole()
.withRoleName("default")
.withCapacity(4),
])
.withAllowUserIds(null)
.withExpiresAt(null)
.withExpiresAtTimeSpan(null)
);
const item = result.getItem();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.create_gathering(
matchmaking.CreateGatheringRequest()
.with_namespace_name(self.hash1)
.with_access_token(self.access_token_0001)
.with_player(
matchmaking.Player()
.with_attributes([
matchmaking.Attribute()
.with_name('stage')
.with_value(1),
matchmaking.Attribute()
.with_name('level')
.with_value(10),
]))
.with_attribute_ranges([
matchmaking.AttributeRange()
.with_name('stage')
.with_min(1)
.with_max(1),
matchmaking.AttributeRange()
.with_name('level')
.with_min(0)
.with_max(10),
])
.with_capacity_of_roles([
matchmaking.CapacityOfRole()
.with_role_name('default')
.with_capacity(4),
])
.with_allow_user_ids(None)
.with_expires_at(None)
.with_expires_at_time_span(None)
)
item = result.item
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.create_gathering({
namespaceName="namespace1",
accessToken="accessToken-0001",
player={
attributes={
{
name="stage",
value=1,
},
{
name="level",
value=10,
}
},
},
attributeRanges={
{
name="stage",
min=1,
max=1,
},
{
name="level",
min=0,
max=10,
}
},
capacityOfRoles={
{
roleName="default",
capacity=4,
}
},
allowUserIds=nil,
expiresAt=nil,
expiresAtTimeSpan=nil,
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
item = result.item;
createGatheringByUserId
ユーザーIDを指定してギャザリングを作成して募集を開始
募集条件
には、作成したギャザリングに参加を許可する各属性値の範囲を指定します。
たとえば、同一ゲームモードを希望するプレイヤーを募集したい場合は、ゲームモードに対応した属性値が完全一致する参加条件プレイヤーとマッチメイキングするように
属性名:ゲームモード
属性最小値: ゲームモードを表す数値
属性最大値: ゲームモードを表す数値
とすることで、同一ゲームモードを希望するプレイヤー同士をマッチメイキングできます。
他にレーティングをベースにしたマッチメイキングを実施したい場合は、
ルーム作成者のレーティング値を中心とした属性値の範囲を指定することで、レーティング値の近いプレイヤー同士をマッチメイキングできます。
この 募集条件
はあとで更新することができますので、徐々に条件を緩和していくことができます。
ロール とは 盾役1人・回復役1人・攻撃役2人 などの役割ごとに募集人数を設定したい場合に使用します。
ロールにはエイリアスを指定できます。
たとえば、盾役は パラディン と ナイト の2種類の ジョブ
に更に分類できるとします。
この場合、ロール名 に 盾役
エイリアス に パラディン
ナイト
として募集を出すようにゲームを実装します。
そして、プレイヤーは自分自身の ジョブ
を自身のプレイヤー情報のロールに指定します。
こうすることで、募集条件が 盾役
になっているギャザリングには パラディン
も ナイト
も参加できます。
一方で、ギャザリングを作成するときに、 パラディン
だけ募集したくて、 ナイト
を募集したくない場合は、
募集するロール名に パラディン
を直接指定したり、エイリアスに ナイト
を含めないようにすることで実現できます。
参加者
の 募集人数
はプレイヤーの募集人数を指定します。ロール名を指定することで、ロール名ごとの募集人数を設定できます。
参加者
の 参加者のプレイヤー情報リスト
には事前にプレイヤー間でパーティを構築している場合や、参加者が離脱したあとの追加募集で使用します。
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | ||
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
player | Player | ✓ | 自身のプレイヤー情報 | |||
attributeRanges | List<AttributeRange> | [] | ~ 5 items | 募集条件 | ||
capacityOfRoles | List<CapacityOfRole> | ✓ | [] | 1 ~ 5 items | 募集枠 | |
allowUserIds | List<string> | [] | ~ 100 items | 参加を許可するユーザ | ||
expiresAt | long | ギャザリングの有効期限 | ||||
expiresAtTimeSpan | TimeSpan | 有効期限までの時間 | ||||
timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
型 | 説明 | |
---|---|---|
item | Gathering | 作成したギャザリング |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.CreateGatheringByUserId(
&matchmaking.CreateGatheringByUserIdRequest {
NamespaceName: pointy.String("namespace1"),
UserId: pointy.String("user-0001"),
Player: &matchmaking.Player{
UserId: pointy.String("user-0001"),
Attributes: []Matchmaking.Attribute{
Matchmaking.Attribute{
Name: pointy.String("attr1"),
Value: 1,
}
Matchmaking.Attribute{
Name: pointy.String("attr2"),
Value: 1,
}
},
},
AttributeRanges: []matchmaking.AttributeRange{
matchmaking.AttributeRange{
Name: pointy.String("stage"),
Min: pointy.Int32(1),
Max: pointy.Int32(2),
},
matchmaking.AttributeRange{
Name: pointy.String("level"),
Min: pointy.Int32(3),
Max: pointy.Int32(5),
},
},
CapacityOfRoles: []matchmaking.CapacityOfRole{
matchmaking.CapacityOfRole{
Capacity: pointy.Int32(4),
},
},
AllowUserIds: nil,
ExpiresAt: nil,
ExpiresAtTimeSpan: nil,
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\CreateGatheringByUserIdRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->createGatheringByUserId(
(new CreateGatheringByUserIdRequest())
->withNamespaceName(self::namespace1)
->withUserId("user-0001")
->withPlayer((new Player())
->withUserId("user-0001")
->withAttributes([
(new \Gs2\Matchmaking\Model\Attribute())
->withName("attr1")
->withValue(1)
(new \Gs2\Matchmaking\Model\Attribute())
->withName("attr2")
->withValue(1)
]))
->withAttributeRanges([
(new AttributeRange())
->withName("stage")
->withMin(1)
->withMax(2),
(new AttributeRange())
->withName("level")
->withMin(3)
->withMax(5),
])
->withCapacityOfRoles([
(new CapacityOfRole())
->withCapacity(4),
])
->withAllowUserIds(null)
->withExpiresAt(null)
->withExpiresAtTimeSpan(null)
->withTimeOffsetToken(null)
);
$item = $result->getItem();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.CreateGatheringByUserIdRequest;
import io.gs2.matchmaking.result.CreateGatheringByUserIdResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
CreateGatheringByUserIdResult result = client.createGatheringByUserId(
new CreateGatheringByUserIdRequest()
.withNamespaceName("namespace1")
.withUserId("user-0001")
.withPlayer(new Player()
.withUserId("user-0001")
.withAttributes(Arrays.asList(
new io.gs2.matchmaking.model.Attribute()
.withName("attr1")
.withValue(1)
new io.gs2.matchmaking.model.Attribute()
.withName("attr2")
.withValue(1),
))
.withAttributeRanges(Arrays.asList(
new AttributeRange()
.withName("stage")
.withMin(1)
.withMax(2),
new AttributeRange()
.withName("level")
.withMin(3)
.withMax(5)
))
.withCapacityOfRoles(Arrays.asList(
new CapacityOfRole()
.withCapacity(4)
))
.withAllowUserIds(null)
.withExpiresAt(null)
.withExpiresAtTimeSpan(null)
.withTimeOffsetToken(null)
);
Gathering item = result.getItem();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.CreateGatheringByUserIdRequest;
using Gs2.Gs2Matchmaking.Result.CreateGatheringByUserIdResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.CreateGatheringByUserIdResult> asyncResult = null;
yield return client.CreateGatheringByUserId(
new Gs2.Gs2Matchmaking.Request.CreateGatheringByUserIdRequest()
.WithNamespaceName("namespace1")
.WithUserId("user-0001")
.WithPlayer(new Gs2.Gs2Matchmaking.Model.Player()
.WithUserId("user-0001")
.WithAttributes(new Gs2.Gs2Matchmaking.Model.Attribute[] {
.WithName("attr1")
.WithValue(1)
.WithName("attr2")
.WithValue(1)
}))
.WithAttributeRanges(new Gs2.Gs2Matchmaking.Model.AttributeRange[] {
new Gs2.Gs2Matchmaking.Model.AttributeRange()
.WithName("stage")
.WithMin(1)
.WithMax(2),
new Gs2.Gs2Matchmaking.Model.AttributeRange()
.WithName("level")
.WithMin(3)
.WithMax(5),
})
.WithCapacityOfRoles(new Gs2.Gs2Matchmaking.Model.CapacityOfRole[] {
new Gs2.Gs2Matchmaking.Model.CapacityOfRole()
.WithCapacity(4),
})
.WithAllowUserIds(null)
.WithExpiresAt(null)
.WithExpiresAtTimeSpan(null)
.WithTimeOffsetToken(null),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.createGatheringByUserId(
new Gs2Matchmaking.CreateGatheringByUserIdRequest()
.withNamespaceName("namespace1")
.withUserId("user-0001")
.withPlayer(new Gs2Matchmaking.model.Player()
.withUserId("user-0001")
.withAttributes([
new Gs2Matchmaking.model.Attribute()
.withName("attr1")
.withValue(1)
new Gs2Matchmaking.model.Attribute()
.withName("attr2")
.withValue(1)
]))
.withAttributeRanges([
new Gs2Matchmaking.model.AttributeRange()
.withName("stage")
.withMin(1)
.withMax(2),
new Gs2Matchmaking.model.AttributeRange()
.withName("level")
.withMin(3)
.withMax(5),
])
.withCapacityOfRoles([
new Gs2Matchmaking.model.CapacityOfRole()
.withCapacity(4),
])
.withAllowUserIds(null)
.withExpiresAt(null)
.withExpiresAtTimeSpan(null)
.withTimeOffsetToken(null)
);
const item = result.getItem();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.create_gathering_by_user_id(
matchmaking.CreateGatheringByUserIdRequest()
.with_namespace_name(self.hash1)
.with_user_id('user-0001')
.with_player(matchmaking.Player()
.with_user_id('user-0001')
.with_attributes([
matchmaking.attribute()
.with_name('attr1')
.with_value(1),
matchmaking.attribute()
.with_name('attr2')
.with_value(1),
]))
.with_attribute_ranges([
matchmaking.AttributeRange()
.with_name('stage')
.with_min(1)
.with_max(2),
matchmaking.AttributeRange()
.with_name('level')
.with_min(3)
.with_max(5),
])
.with_capacity_of_roles([
matchmaking.CapacityOfRole()
.with_capacity(4),
])
.with_allow_user_ids(None)
.with_expires_at(None)
.with_expires_at_time_span(None)
.with_time_offset_token(None)
)
item = result.item
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.create_gathering_by_user_id({
namespaceName="namespace1",
userId="user-0001",
player={
user_id="user-0001",
attributes={
attribute={
name="attr1",
value=1,
}attribute={
name="attr2",
value=1,
}
},
},
attributeRanges={
{
name="stage",
min=1,
max=2,
},
{
name="level",
min=3,
max=5,
}
},
capacityOfRoles={
{
capacity=4,
}
},
allowUserIds=nil,
expiresAt=nil,
expiresAtTimeSpan=nil,
timeOffsetToken=nil,
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
item = result.item;
updateGathering
ギャザリングを更新
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | ||
gatheringName | string | ✓ | UUID | ~ 128文字 | ギャザリング名 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID | ||
attributeRanges | List<AttributeRange> | [] | ~ 5 items | 募集条件 |
Result
型 | 説明 | |
---|---|---|
item | Gathering | 更新したギャザリング |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.UpdateGathering(
&matchmaking.UpdateGatheringRequest {
NamespaceName: pointy.String("namespace1"),
GatheringName: pointy.String("gathering-0001"),
AccessToken: pointy.String("accessToken-0001"),
AttributeRanges: []matchmaking.AttributeRange{
matchmaking.AttributeRange{
Name: pointy.String("stage"),
Min: pointy.Int32(1),
Max: pointy.Int32(1),
},
matchmaking.AttributeRange{
Name: pointy.String("level"),
Min: pointy.Int32(0),
Max: pointy.Int32(50),
},
},
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\UpdateGatheringRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->updateGathering(
(new UpdateGatheringRequest())
->withNamespaceName(self::namespace1)
->withGatheringName(self::gathering-0001)
->withAccessToken(self::$accessToken0001)
->withAttributeRanges([
(new \Gs2\Matchmaking\Model\AttributeRange())
->withName("stage")
->withMin(1)
->withMax(1),
(new \Gs2\Matchmaking\Model\AttributeRange())
->withName("level")
->withMin(0)
->withMax(50),
])
);
$item = $result->getItem();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.UpdateGatheringRequest;
import io.gs2.matchmaking.result.UpdateGatheringResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
UpdateGatheringResult result = client.updateGathering(
new UpdateGatheringRequest()
.withNamespaceName("namespace1")
.withGatheringName("gathering-0001")
.withAccessToken("accessToken-0001")
.withAttributeRanges(Arrays.asList(
new io.gs2.matchmaking.model.AttributeRange()
.withName("stage")
.withMin(1)
.withMax(1),
new io.gs2.matchmaking.model.AttributeRange()
.withName("level")
.withMin(0)
.withMax(50)
))
);
Gathering item = result.getItem();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.UpdateGatheringRequest;
using Gs2.Gs2Matchmaking.Result.UpdateGatheringResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.UpdateGatheringResult> asyncResult = null;
yield return client.UpdateGathering(
new Gs2.Gs2Matchmaking.Request.UpdateGatheringRequest()
.WithNamespaceName("namespace1")
.WithGatheringName("gathering-0001")
.WithAccessToken("accessToken-0001")
.WithAttributeRanges(new Gs2.Gs2Matchmaking.Model.AttributeRange[] {
new Gs2.Gs2Matchmaking.Model.AttributeRange()
.WithName("stage")
.WithMin(1)
.WithMax(1),
new Gs2.Gs2Matchmaking.Model.AttributeRange()
.WithName("level")
.WithMin(0)
.WithMax(50),
}),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.updateGathering(
new Gs2Matchmaking.UpdateGatheringRequest()
.withNamespaceName("namespace1")
.withGatheringName("gathering-0001")
.withAccessToken("accessToken-0001")
.withAttributeRanges([
new Gs2Matchmaking.model.AttributeRange()
.withName("stage")
.withMin(1)
.withMax(1),
new Gs2Matchmaking.model.AttributeRange()
.withName("level")
.withMin(0)
.withMax(50),
])
);
const item = result.getItem();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.update_gathering(
matchmaking.UpdateGatheringRequest()
.with_namespace_name(self.hash1)
.with_gathering_name(self.gathering1.name)
.with_access_token(self.access_token_0001)
.with_attribute_ranges([
matchmaking.AttributeRange()
.with_name('stage')
.with_min(1)
.with_max(1),
matchmaking.AttributeRange()
.with_name('level')
.with_min(0)
.with_max(50),
])
)
item = result.item
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.update_gathering({
namespaceName="namespace1",
gatheringName="gathering-0001",
accessToken="accessToken-0001",
attributeRanges={
{
name="stage",
min=1,
max=1,
},
{
name="level",
min=0,
max=50,
}
},
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
item = result.item;
updateGatheringByUserId
ユーザーIDを指定してギャザリングを更新
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | ||
gatheringName | string | ✓ | UUID | ~ 128文字 | ギャザリング名 | |
userId | string | ✓ | ~ 128文字 | ユーザーID | ||
attributeRanges | List<AttributeRange> | [] | ~ 5 items | 募集条件 | ||
timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
型 | 説明 | |
---|---|---|
item | Gathering | 更新したギャザリング |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.UpdateGatheringByUserId(
&matchmaking.UpdateGatheringByUserIdRequest {
NamespaceName: pointy.String("namespace1"),
GatheringName: pointy.String("gathering-0001"),
UserId: pointy.String("user-0001"),
AttributeRanges: []matchmaking.AttributeRange{
matchmaking.AttributeRange{
Name: pointy.String("stage"),
Min: pointy.Int32(1),
Max: pointy.Int32(2),
},
matchmaking.AttributeRange{
Name: pointy.String("level"),
Min: pointy.Int32(3),
Max: pointy.Int32(5),
},
},
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\UpdateGatheringByUserIdRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1
);
$session->open();
$client = new Gs2AccountRestClient(
$session
);
try {
$result = $client->updateGatheringByUserId(
(new UpdateGatheringByUserIdRequest())
->withNamespaceName(self::namespace1)
->withGatheringName("gathering-0001")
->withUserId("user-0001")
->withAttributeRanges([
(new AttributeRange())
->withName("stage")
->withMin(1)
->withMax(2),
(new AttributeRange())
->withName("level")
->withMin(3)
->withMax(5),
])
->withTimeOffsetToken(null)
);
$item = $result->getItem();
} catch (Gs2Exception $e) {
exit("error occurred")
}
import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.matchmaking.rest.Gs2MatchmakingRestClient;
import io.gs2.matchmaking.request.UpdateGatheringByUserIdRequest;
import io.gs2.matchmaking.result.UpdateGatheringByUserIdResult;
Gs2RestSession session = new Gs2RestSession(
Region.AP_NORTHEAST_1,
new BasicGs2Credential(
'your client id',
'your client secret'
)
);
session.connect();
Gs2MatchmakingRestClient client = new Gs2MatchmakingRestClient(session);
try {
UpdateGatheringByUserIdResult result = client.updateGatheringByUserId(
new UpdateGatheringByUserIdRequest()
.withNamespaceName("namespace1")
.withGatheringName("gathering-0001")
.withUserId("user-0001")
.withAttributeRanges(Arrays.asList(
new AttributeRange()
.withName("stage")
.withMin(1)
.withMax(2),
new AttributeRange()
.withName("level")
.withMin(3)
.withMax(5)
))
.withTimeOffsetToken(null)
);
Gathering item = result.getItem();
} catch (Gs2Exception e) {
System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Matchmaking.Gs2MatchmakingRestClient;
using Gs2.Gs2Matchmaking.Request.UpdateGatheringByUserIdRequest;
using Gs2.Gs2Matchmaking.Result.UpdateGatheringByUserIdResult;
var session = new Gs2RestSession(
new BasicGs2Credential(
'your client id',
'your client secret'
),
Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2MatchmakingRestClient(session);
AsyncResult<Gs2.Gs2Matchmaking.Result.UpdateGatheringByUserIdResult> asyncResult = null;
yield return client.UpdateGatheringByUserId(
new Gs2.Gs2Matchmaking.Request.UpdateGatheringByUserIdRequest()
.WithNamespaceName("namespace1")
.WithGatheringName("gathering-0001")
.WithUserId("user-0001")
.WithAttributeRanges(new Gs2.Gs2Matchmaking.Model.AttributeRange[] {
new Gs2.Gs2Matchmaking.Model.AttributeRange()
.WithName("stage")
.WithMin(1)
.WithMax(2),
new Gs2.Gs2Matchmaking.Model.AttributeRange()
.WithName("level")
.WithMin(3)
.WithMax(5),
})
.WithTimeOffsetToken(null),
r => asyncResult = r
);
if (asyncResult.Error != null) {
throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Matchmaking from '@/gs2/matchmaking';
const session = new Gs2Core.Gs2RestSession(
"ap-northeast-1",
new Gs2Core.BasicGs2Credential(
'your client id',
'your client secret'
)
);
await session.connect();
const client = new Gs2Matchmaking.Gs2MatchmakingRestClient(session);
try {
const result = await client.updateGatheringByUserId(
new Gs2Matchmaking.UpdateGatheringByUserIdRequest()
.withNamespaceName("namespace1")
.withGatheringName("gathering-0001")
.withUserId("user-0001")
.withAttributeRanges([
new Gs2Matchmaking.model.AttributeRange()
.withName("stage")
.withMin(1)
.withMax(2),
new Gs2Matchmaking.model.AttributeRange()
.withName("level")
.withMin(3)
.withMax(5),
])
.withTimeOffsetToken(null)
);
const item = result.getItem();
} catch (e) {
process.exit(1);
}
from gs2 import core
from gs2 import matchmaking
session = core.Gs2RestSession(
core.BasicGs2Credential(
'your client id',
'your client secret'
),
"ap-northeast-1",
)
session.connect()
client = matchmaking.Gs2MatchmakingRestClient(session)
try:
result = client.update_gathering_by_user_id(
matchmaking.UpdateGatheringByUserIdRequest()
.with_namespace_name(self.hash1)
.with_gathering_name('gathering-0001')
.with_user_id('user-0001')
.with_attribute_ranges([
matchmaking.AttributeRange()
.with_name('stage')
.with_min(1)
.with_max(2),
matchmaking.AttributeRange()
.with_name('level')
.with_min(3)
.with_max(5),
])
.with_time_offset_token(None)
)
item = result.item
except core.Gs2Exception as e:
exit(1)
client = gs2('matchmaking')
api_result = client.update_gathering_by_user_id({
namespaceName="namespace1",
gatheringName="gathering-0001",
userId="user-0001",
attributeRanges={
{
name="stage",
min=1,
max=2,
},
{
name="level",
min=3,
max=5,
}
},
timeOffsetToken=nil,
})
if(api_result.isError) then
-- When error occurs
fail(api_result['statusCode'], api_result['message'])
end
result = api_result.result
item = result.item;
doMatchmakingByPlayer
Player が参加できるギャザリングを探して参加する
一定時間 検索を行い、対象が見つからなかったときには マッチメイキングの状態を保持するトークン
を返す。
次回 マッチメイキングの状態を保持するトークン
をつけて再度リクエストを出すことで、前回の続きから検索処理を再開できる。
すべてのギャザリングを検索したが、参加できるギャザリングが存在しなかった場合はギャザリングもトークンもどちらも null が応答される。
Request
型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | ||
player | Player | ✓ | プレイヤー情報 | |||
matchmakingContextToken | string | ~ 5120文字 | 検索の再開に使用する マッチメイキングの状態を保持するトークン |
Result
型 | 説明 | |
---|---|---|
item | Gathering | 参加したギャザリング |
matchmakingContextToken | string | マッチメイキングの状態を保持するトークン |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/matchmaking"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := matchmaking.Gs2MatchmakingRestClient{
Session: &session,
}
result, err := client.DoMatchmakingByPlayer(
&matchmaking.DoMatchmakingByPlayerRequest {
NamespaceName: pointy.String("namespace1"),
Player: &matchmaking.Player{
UserId: pointy.String("user-0001"),
Attributes: []Matchmaking.Attribute{
Matchmaking.Attribute{
Name: pointy.String("attr1"),
Value: 1,
}
Matchmaking.Attribute{
Name: pointy.String("attr2"),
Value: 1,
}
},
},
MatchmakingContextToken: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
matchmakingContextToken := result.MatchmakingContextToken
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Matchmaking\Gs2MatchmakingRestClient;
use Gs2\Matchmaking\Request\DoMatchmakingByPlayerRequest;
$session = new Gs2RestSession(
new BasicGs2Credential(
"your client id",
"your client secret"
),
Region::AP_NORTHEAST_1<