VARENA赛事平台上,刀塔游廊自走棋匹配是如何实现自动建房的?

VARENA赛事平台上,刀塔游廊自走棋匹配是如何实现自动建房的?

最近一段时间,各种自走棋玩法的游戏非常多。VPGAME第一时间在我们自己的平台VARENA上提供了自动建房,匹配等等相关服务。

下面以游廊自走棋的自动建房为例,介绍下我们在开发相关功能的一些经验。

首先我们需要创建steam以及dota2相关的对象

初始化完成之后,我们需要用steam帐号进行登录

当登录steam成功之后, client 对象会接收到 logged_on 事件。我们可以注册对应的事件处理函数,在处理函数中,启动dota2客户端

启动dota2客户端成功之后, dota2 对象会接收到 ready 事件,我们可以注册对应的事件处理函数,在处理函数中,发送创建房间的请求

其中,我们需要注意的是,游廊自走棋属于dota2游廊中的游戏, 所以对应的 game_mode 必须是 DOTA_GameMode.DOTA_GAMEMODE_CUSTOM, 即自定义游戏。相应的必须设置相关的 custom_game_mode, custom_game_id, custom_map_name 。

同时由于自走棋中没有观战位的功能,为了机器人能够一直控制房间,且防止房间8个人就自动启动,所以在创建房间的时候,我们设置的 custom_max_player 为0, 这样游戏就不会自动启动。等到房间中除了机器人外的合法人数达到8个人,我们再设置 custom_max_player 为8来启动游戏。

在房间创建成功的事件处理函数中,我们可以保存相关的房间信息,并开始邀请玩家进入房间

邀请玩家之后,我们需要监听房间的状态变化,包括玩家进入或退出房间。当有非法玩家进入时,我们需要将其踢出。如果合法玩家数量达到8个,则开始游戏,同时机器人自己退出房间。

根据以上步骤,我们便可以开发一个具有基本功能的建房机器人。当然还有其他很多可以丰富的地方,比如失败处理,超时,消息延迟处理等等,大家可以根据需要进一步的完善。

对于创建房间等操作需要的参数值,我们可以通过 NetHook2 和 NetHookAnalyzer2 抓取实际dota2客户端里面,在进行相关操作时,所发送出去的protobuf协议信息。

从github下载 NetHook2后,解压,会得到一个NetHook2.dll。之后我们启动steam客户端并启动dota2游戏,然后在windows 的cmd下运行 rundll32 path/to/NetHoo2.dll, Inject命令,没有错误的话,此时收发的protobuf协议信息就会被抓取,并保存在steam安装目录下的nethook目录下。

通过NetHook2抓取的协议信息,由于是二进制的文件,不方便查看和分析,我们可以使用NetHookAnalyzer2以可视化的方式查看。 从github下载 NetHookAnalyzer2后,解压,运行其中的NetHookAnalyzer2.exe. 然后打开NetHook2保存的那个目录,就可以看到各个消息的相关参数信息。

steam使用的相关protobuf协议,我们可以在Github查看。

最后发个招聘帖(●'◡'●),VPGAME目前在招JAVA开发工程师、数据开发工程师、前端开发工程师等,岗位JD如下:https://hr.lagou.com/company/gongsi/j50576.html

欢迎有兴趣的同学TP简历至邮箱: hr@vpgame.cn (ง •_•)ง