【AWS】Amazon GameLiftのFlexMatch単体で使ってみた 接続編
投稿 2024年3月31日
最終更新 2024年3月31日
専門用語多め
前置き
前回、AWSのGameLiftを調べてみて、AWS側はなんとなくわかったので、
今度は本題のプログラム側からAWSに接続してみたいと思います。
まだよくわかってないですが、今わかっていることだけでも…。
2024年2月24日
やりたいこと
JavaからGameLiftのサービスに接続してみたい。
ただし、まだ詳しい処理はわからない。
とりあえず、接続できるところまで…。
AWSの設定
タイマン(1対1)のマッチングを作ってみました。
条件としては、同じレベルの2人がマッチングする感じです。
※作っただけなので、間違っている可能性あります。
{
"name": "two-players-no-rule-match-test",
"ruleLanguageVersion": "1.0",
"playerAttributes": [
{
"name": "playerLevel",
"type": "number",
"default": 1
}
],
"teams": [
{
"name": "battle",
"maxPlayers": 2,
"minPlayers": 2
}
],
"rules": [
{
"name": "EqualPlayerLevel",
"description": "同じレベルでマッチング",
"type": "comparison",
"measurements": [
"flatten(teams[*].players.attributes[playerLevel])"
],
"operation": "="
}
]
}
接続方法
Gradle
build.gradle.ktsのdependenciesに、下記を追加します。
build.gradle.kts
// https://mvnrepository.com/artifact/software.amazon.awssdk/bom
runtimeOnly("software.amazon.awssdk:bom:2.23.17")
// https://mvnrepository.com/artifact/software.amazon.awssdk/aws-sdk-java
implementation("software.amazon.awssdk:aws-sdk-java:2.23.17")
Java
import java.net.http.HttpResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import software.amazon.awssdk.services.gamelift.GameLiftClient;
import software.amazon.awssdk.services.gamelift.model.AttributeValue;
import software.amazon.awssdk.services.gamelift.model.Player;
import software.amazon.awssdk.services.gamelift.model.StartMatchmakingRequest;
import software.amazon.awssdk.services.gamelift.model.StartMatchmakingResponse;
public class FlexMatch {
public static void main(String[] args) {
// プレイヤーID
String playerId = "1001";
// プレイヤー属性
HashMap<String, AttributeValue> playerAttributes = new HashMap<>() {
{
put("playerLevel", AttributeValue.builder().n(15.0).build());
}
};
// プレイヤーリスト
Collection<Player> players = Collections.singletonList(
Player.builder()
.playerId(playerId)
.playerAttributes(playerAttributes)
.build()
);
// リクエストをビルド
StartMatchmakingRequest startMatchmakingRequest = StartMatchmakingRequest.builder()
.configurationName("two-players-no-rule-match-config-test")
.players(players)
.build();
// リクエスト送信してレスポンス取得
StartMatchmakingResponse response = flexMatchClient.startMatchmaking(startMatchmakingRequest);
System.out.println("チケット:" + response.matchmakingTicket());
}
}
出力結果
チケット:MatchmakingTicket(TicketId=87420214-ab01-3a8a-f209-54b38e812468,ConfigurationName=two-players-no-rule-match-config-test, ConfigurationArn=arn:aws:gamelift:ap-northeast-1:123456789012:matchmakingconfiguration/two-players-no-rule-match-config-test, Status=QUEUED,StartTime=2024-03-30T14:12:13.504Z,Players=[Player(PlayerId=*** Sensitive Data Redacted ***, PlayerAttributes={playerLevel=AttributeValue(N=15.0)})])
まとめ
AWSのGameLiftのFlexMatchにJavaで接続してみました。
ひとまず無事接続できて、設定名を取得できました。
記事が全然ないので、手あたり次第試してみるしかない現状は変わらず…。
もっとAWS勉強して使いこなせるようになりたいです。
以上、ここまで見ていただきありがとうございます。
皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。