title: 构建无服务器 FlexMatch url: /flexmatch/lab25 weight: 60 pre: “2-5. ”
在本实验中,我们将基于无服务器架构启动 FlexMatch 匹配。
使用 FlexMatch,我们可以轻松实现基于会话的匹配器,而无需为其配置服务器。 要使用 FlexMatch,我们需要在游戏服务器或游戏客户端调用 FlexMatch API 或 SDK。 在本实验中,我们使用 Lambda。这种方法可以在游戏服务器后端实现成本效益高的无服务器模型。
我们将使用 GameLift 队列进行匹配。
接下来,我们为 FlexMatch 创建规则。点击"创建匹配规则集"按钮。
按照我们的意愿设置规则集名称,并在"规则集框"中放入以下规则集策略。规则集在给定源代码的 rootFolder/Ruleset 目录下的 GomokuRuleSet.json 文件中提供。复制代码并粘贴到控制台框中。
{
"ruleLanguageVersion" : "1.0",
"playerAttributes" :
[
{
"name" : "score",
"type" : "number",
"default" : 1000
}
],
"teams" :
[
{
"name" : "blue",
"maxPlayers" : 1,
"minPlayers" : 1
},
{
"name" : "red",
"maxPlayers" : 1,
"minPlayers" : 1
}
],
"rules" :
[
{ "name": "EqualTeamSizes",
"type": "comparison",
"measurements": [ "count(teams[red].players)" ],
"referenceValue": "count(teams[blue].players)",
"operation": "="
},
{
"name" : "FairTeamSkill",
"type" : "distance",
"measurements" : [ "avg(teams[*].players.attributes[score])" ],
"referenceValue" : "avg(flatten(teams[*].players.attributes[score]))",
"maxDistance" : 300
}
],
"expansions" :
[
{
"target" : "rules[FairTeamSkill].maxDistance",
"steps" :
[
{
"waitTimeSeconds" : 10,
"value" : 500
},
{
"waitTimeSeconds" : 20,
"value" : 800
},
{
"waitTimeSeconds" : 30,
"value" : 1000
}
]
}
]
}
此规则匹配分数差异在300以下的玩家,如果匹配无法及时接受,则放宽匹配规则并寻找玩家!
点击"验证规则集”,检查规则集是否正确。然后点击"创建规则集”。
如果我们部署了 CloudFormation 堆栈,Lambda 函数已经创建好了。我们只需要放入这些资源所需的部分。
GameLift FlexMatch 配置已完成!
下一步是构建 Lambda 函数和 API Gateway,供游戏客户端请求 FlexMatch。
在本实验中,我们将创建两个 Lambda 函数。第一个处理来自客户端的匹配请求,第二个检查匹配结果。
让我们创建第一个 Lambda 函数。这并不难!
转到 Lambda 控制台。https://console.aws.amazon.com/lambda
点击"创建函数"按钮。
选择"从头开始创作”。
将函数名称设为"game-match-request”。
选择 Python 3.9 作为运行时。
在权限选项卡中选择角色。选择"使用现有角色"并选择"Gomok-game-match-request"作为 IAM 角色。点击"创建函数"按钮。
点击"保存"按钮并创建函数。此函数接收来自游戏客户端的匹配请求,从 DynamoDB 读取用户数据并向 GameLift 发送匹配请求。
点击"创建函数"按钮,让我们创建第二个函数。
选择"从头开始创作"并从空函数开始。
将名称设为"game-match-status”,并选择 Python 3.9 作为运行时。
在权限选项卡中选择角色。选择"使用现有角色"并选择"Gomok-game-match-status"作为 IAM 角色。点击"创建函数"按钮。
在源代码中找到 Lambda/MatchStatus.py。复制源代码并粘贴到 Lambda 代码文本框中。
请检查 Lambda 函数的 Handler。Lambda 函数执行时可以访问此处理程序。
让我们为这些 Lambda 函数创建 API。
转到 API Gateway 控制台。(https://console.aws.amazon.com/apigateway)
选择已经创建的 API Gateway,并点击"创建资源"按钮。
为此资源创建新方法。点击"操作"按钮和"创建方法”。为"POST"方法创建 API。
选择与 Lambda 函数的集成类型,并检查正确的区域。选择 game-match-request 作为 Lambda 函数并点击"保存"按钮。
为第二个 Lambda 函数创建第二个 API。在根路径上点击"操作"和"创建资源”。
按照我们之前的方式创建 API。资源名称将是 matchstatus 并启用 API Gateway CORS。
创建 POST 方法,并与 game-match-status Lambda 函数集成。点击"保存"按钮。
现在我们完成了为 Lambda 函数创建 API。让我们部署这个 API。点击"操作"按钮和"部署 API”。
© 2020 Amazon Web Services, Inc. 或其附属公司,保留所有权利。