# 创建对局匹配规则

> 接口应在服务器端调用，不可在前端（小程序、网页、APP等）直接调用，具体可参考[接口调用指南](/doc/oplatform/developers/dev/guide.md)。

接口英文名：gamematch.createMatchRule

小游戏创建对局匹配规则，并返回一个 matchid。

每个小游戏可以创建多个 matchid 对应不同的匹配规则。小游戏持有的 matchid 数量上限为 20。

## 1. 调用方式

### HTTPS 调用

```bash
POST https://api.weixin.qq.com/wxa/business/gamematch/creatematchrule?access_token=ACCESS_TOKEN
```

### 云调用

- 本接口不支持云调用。

### 第三方调用

- 本接口不支持第三方平台调用。

## 2. 请求参数

### 查询参数 `Query String Parameters`

```json
[
  {
    "参数名": "access_token",
    "类型": "string",
    "必填": "是",
    "示例": "ACCESS_TOKEN",
    "说明": "接口调用凭证，可使用 [access_token](/minigame/dev/api-backend/access-token/api_getaccesstoken)"
  }
]
```

### 请求体 `Request Payload`

```json
[
  {
    "参数名": "team_count",
    "类型": "number",
    "必填": "是",
    "说明": "[匹配结果](/minigame/dev/api/game-server-manager/GameServerManager.onMatch.md)中的队伍数量"
  },
  {
    "参数名": "team_member_count",
    "类型": "number",
    "必填": "是",
    "说明": "[匹配结果](/minigame/dev/api/game-server-manager/GameServerManager.onMatch.md)每个队伍对应的成员数量"
  },
  {
    "参数名": "need_room_service_info",
    "类型": "number",
    "必填": "否",
    "说明": "是否需要在下发[匹配结果](/minigame/dev/api/game-server-manager/GameServerManager.onMatch.md)时同步创建帧同步房间。0:不需要，1:需要。如果填 1，则会在下发对局[匹配结果](/minigame/dev/api/game-server-manager/GameServerManager.onMatch.md)时携带[accessInfo](/minigame/dev/api/game-server-manager/GameServerManager.joinRoom.md)，用于加入帧同步房间。 要求 team_count * team_member_count 不超过 10 人才可以使用该项。"
  },
  {
    "参数名": "game_room_info",
    "类型": "object",
    "必填": "否",
    "说明": "[创建帧同步房间](/minigame/dev/api-backend/lock-step/api_lock-step.creategameroom)时的房间信息。在 need_room_service_info 为 1 时有效。"
  }
]
```

### Body.game_room_info `Object Payload`

[创建帧同步房间](/minigame/dev/api-backend/lock-step/api_lock-step.creategameroom)时的房间信息。在 need_room_service_info 为 1 时有效。

```json
[
  {
    "参数名": "game_tick",
    "类型": "number",
    "必填": "是",
    "说明": "后台下发游戏逻辑帧的周期，单位 ms，最小不得小于 33ms"
  },
  {
    "参数名": "start_percent",
    "类型": "number",
    "必填": "是",
    "说明": "不填或者填 0 代表微信后台只要收到一次“开始游戏”指令就会开始游戏，否则微信后台会统计发送“开始游戏”指令的玩家数达到规定的百分比后才能启动游戏，填 50 表征 50%"
  },
  {
    "参数名": "udp_reliability_strategy",
    "类型": "number",
    "必填": "是",
    "说明": "使用的 UDP 可靠性策略，N：固定冗余 N 帧。建议值：3"
  },
  {
    "参数名": "need_user_info",
    "类型": "boolean",
    "必填": "否",
    "说明": "房间是否需要用户的头像昵称——如果填 True，微信后台会去校验用户是否授权该应用获取其头像昵称的权限。如果房间需要头像昵称但是用户未授权，则用户后续加入房间的请求会返回失败；如果 need_user_info 为 False，后续用户的加入房间操作会成功，但微信后台不会在房间信息中下发用户的头像昵称。"
  },
  {
    "参数名": "game_last_time",
    "类型": "number",
    "必填": "否",
    "说明": "游戏对局时长，单位 s，不得超过微信后台最大限制 1 个小时，如果不填或填 0 则默认为 20 分钟"
  },
  {
    "参数名": "need_game_seed",
    "类型": "boolean",
    "必填": "否",
    "说明": "是否需要在创建房间时同时生成一个随机的游戏种子"
  }
]
```

## 3. 返回参数

### 返回体 `Response Payload`

```json
[
  {
    "参数名": "errcode",
    "类型": "number",
    "说明": "错误码"
  },
  {
    "参数名": "errmsg",
    "类型": "string",
    "说明": "错误提示信息"
  },
  {
    "参数名": "match_id",
    "类型": "string",
    "说明": "匹配池对应的 id，[加入匹配](/minigame/dev/api/game-server-manager/GameServerManager.startMatch.md)时需要携带 matchid 以加入对应的匹配池"
  }
]
```

## 4. 注意事项

本接口无特殊注意事项

## 5. 代码示例

请求示例

```json
{
  "team_count": 2,
  "team_member_count": 1,
  "need_room_service_info":1, 
  "game_room_info":{
      "game_tick": 30, 
      "udp_reliability_strategy": 3,
      "start_percent": 100,
      "need_user_info": true,
      "game_last_time": 1800,
      "need_game_seed": true
  }
}
```

返回示例

```json
{
  "errcode": 0,
  "errmsg": "ok",
  "match_id": "FD0PT4rKguEdK-L83RaJgdbchUCW8wjhSwgCku4CLQk"
}
```

## 6. 错误码

以下是本接口的错误码列表，其他错误码可参考 [通用错误码](/doc/oplatform/developers/errCode/README.md)；调用接口遇到报错，可使用官方提供的 [API 诊断工具](https://developers.weixin.qq.com/console/devtools/debug?utm_source=api_errcode) 辅助定位和分析问题。

```json
[
  {
    "错误码": "-1",
    "错误描述": "系统繁忙，此时请开发者稍候再试"
  },
  {
    "错误码": "0",
    "错误描述": "请求成功"
  },
  {
    "错误码": "200000",
    "错误描述": "无效的请求数据"
  },
  {
    "错误码": "500008",
    "错误描述": "每个对局需要的玩家数量超过[房间服务](/minigame/dev/api/game-server-manager/GameServerManager.joinRoom.md)人数上限"
  },
  {
    "错误码": "500014",
    "错误描述": "小程序拥有的 matchid 数量超过上限"
  }
]
```

## 7. 适用范围

本接口支持「小游戏」账号类型调用。其他账号类型如无特殊说明，均不可调用。
