强化学习AI构建实战 - 基于“黄金点”游戏(二)

服务端接口

为了让大家的AI可以顺利地进行游戏,并验证我们对策略和AI的一些实现,我们需要一些基础设施来帮助我们完成一些工作。这些工作包括游戏回合的控制、参与者之间的数据同步、游戏数据的储存等功能。

为了简化这些基础工作,以便大家可以更好地集中于AI本身的设计和实现,我们搭建了一个服务器提供了一些基本的接口。使用这些接口,AI可以做到简单的调用REST API接口实现游戏回合时间同步、获取历史数据、提交预测数据等功能。

下图描述了服务器如何驱动游戏一回合接着一回合的运转,同时指出了AI或客户端应何时与服务器交互。

当AI或客户端进入游戏后,应立即向服务器请求获取当前回合的状态,此时可以知道服务器上正在进行的游戏回合的编号,以及本回合还有多长时间结束。AI或客户端可以按照返回的回合编号向服务器提交预测值,并且可以根据本回合剩余时间,设定一个定时器,在下一回合开始时,再次执行获取回合状态的接口,来取得下一回合的状态。这样依次轮转下去,AI或客户端就可以一直参与在游戏中。 同时,AI或客户端还可以在每回合开始时,调用获取历史数据的接口,来得到前几回合的比赛数据。这样可以知道自己在上一回合是否得分胜出,并可以根据历史数据来指导当前回合的预测值。

接口概述

服务器地址是https://goldennumber.aiedu.msra.cn,提供RESTful API接口。所有请求需要的参数都拼装在URL中,并且需要对值进行URL编码。所有的响应报文内容都是JSON格式。如果服务器响应代码不是2**或3**,表示该次请求失败。失败的响应报文至少包含一个message属性:

属性名 数据类型 备注
message String 出错的具体信息

服务端REST接口提供了Swagger描述文档: swagger.json 中文版 英文版

可以参考该API文档直接来调用服务器接口,也可以借助第三方工具从swagger文档生成所需语言的SDK来使用。比如,可以借助SwaggerEditor来生成各种语言版本的客户端SDK,可以极大的方便开发。

另外,服务端也提供了API试用页面,可以方便直接的在线试验API接口。

下面是各个接口的详细描述:

新建玩家

请求方式:GET

路径:/api/NewUser

客户端使用该接口可以新建一个玩家。

请求需要用到的参数:

参数名 数据类型 是否必需 备注
nickName String 可选 用户昵称
如果长度超过20,将被截断
建议设置昵称,昵称相对于标识有更好的辨识度

响应报文内容中的属性:

属性名 数据类型 备注
userId String 用户标识,格式为Guid格式
nickName String 用户昵称

设置用户昵称

请求方式:POST

路径:/api/NickName

使用该接口可以用来修改用户的昵称,昵称相对于标识来说,有更佳的辩识度。

请求需要用到的参数:

参数名 数据类型 是否必需 备注
uid String 必需 用户标识
nickname String 必需 用户昵称,长度大于20会被截断

获取新游戏房间

请求方式:GET

路径:/api/NewRoom

使用该接口创建一个新的游戏房间并获取对应的编号。

请求需要用到的参数:

参数名 数据类型 是否必需 备注
uid string 必需 房间创建者的标识
numbers Int 可选 设置游戏支持的每个玩家可以提交的预测值的个数,目前支持提交1个或2个数
默认是1,表示每个玩家可以提交一个数
duration Int 可选 设置游戏中每回合的间隔时间
默认值是60秒,取值范围在10~200之间
userCount int 可选 设置游戏房间中允许的最大玩家数
默认值是0,表示没有限制
有玩家数量限制的房间,当所有玩家都提交预测值后,会立即计算本回合结果,并开始下一轮
注意:这里的玩家数量限制是针对房间的,不是针对一个回合,只要玩家在房间内任一回合提交过预测值,则认为该玩家始终在房间内
roundCount int 可选 设置比赛总回合数
默认值是0,表示没有限制
如果某一回合没有玩家提交数据,认为该回合无效,不计在回合数内
如果有效回合数达到设置的总回合数,游戏结束,不再允许提交数据
manuallyStart Int 可选 是否手动开始游戏
默认值0,表示创建完房间后,游戏自动开始
如果是1,表示需要由创建者手动开始游戏

响应报文内容中的属性:

属性名 数据类型 备注
roomId Int 游戏房间编号

开始游戏

请求方式:GET

路径:/api/StartGame

如果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值