# 创建帧同步游戏房间

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

接口英文名：lock-step.createGameRoom

第三方后台创建帧同步游戏房间

## 1. 调用方式

### HTTPS 调用

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

### 云调用

- 调用方法：lockstep.createGameRoom

- 出入参和 HTTPS 调用相同，调用方式可查看 [云调用](/doc/oplatform/developers/dev/cloudCall.md) 说明文档。

### 第三方调用

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

## 2. 请求参数

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

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

### 请求体 `Request Payload`

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

## 3. 返回参数

### 返回体 `Response Payload`

```json
[
  {
    "参数名": "errcode",
    "类型": "number",
    "说明": "错误码"
  },
  {
    "参数名": "errmsg",
    "类型": "string",
    "说明": "错误提示信息"
  },
  {
    "参数名": "data",
    "类型": "object",
    "说明": "房间/对局访问凭证数据"
  }
]
```

### Res.data `Object Payload`

房间/对局访问凭证数据

```json
[
  {
    "参数名": "access_info",
    "类型": "string",
    "说明": "房间/对局访问凭证"
  }
]
```

## 4. 注意事项

本接口无特殊注意事项

## 5. 代码示例

请求示例

```json
{
    "game_tick": 0,
    "udp_reliability_strategy": 0,
    "start_percent": 0,
    "need_user_info": false,
    "game_last_time": 0,
    "room_ext_info": "",
    "need_game_seed": false
}
```

返回示例

```json
{
    "errcode": 0,
    "errmsg": "",
    "data": {
        "access_info": ""
    }
}
```

## 6. 错误码

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

```json
[
  {
    "错误码": "-1",
    "错误描述": "系统繁忙，此时请开发者稍候再试"
  },
  {
    "错误码": "0",
    "错误描述": "请求成功"
  },
  {
    "错误码": "4003",
    "错误描述": "非法的请求数据"
  },
  {
    "错误码": "4013",
    "错误描述": "自定义的房间信息超过指定大小"
  }
]
```

## 7. 适用范围

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