首页> 中国专利> 机器人系统及其实现方法、客户端、服务器以及游戏系统

机器人系统及其实现方法、客户端、服务器以及游戏系统

摘要

本发明公开了一种机器人系统,包括:机器人服务器管理中心,与所述机器人服务器管理中心连接的至少一个机器人服务器以及与每一所述机器人服务器连接的至少一个机器人客户端,其中,每一所述机器人服务器通过所述机器人服务器管理中心连接游戏服务器;至少一个机器人玩家通过所述机器人客户端创建以实现与所述游戏服务器通信;所述机器人玩家用于进入游戏执行指定的操作。本发明实施例还公开了一种机器人系统的实现方法、机器人客户端、机器人服务器及游戏系统。

著录项

  • 公开/公告号CN105704166A

    专利类型发明专利

  • 公开/公告日2016-06-22

    原文格式PDF

  • 申请/专利权人 网易(杭州)网络有限公司;

    申请/专利号CN201610273513.9

  • 发明设计人 仇俊伟;徐圆;叶均杰;

    申请日2016-04-27

  • 分类号H04L29/06(20060101);H04L29/08(20060101);

  • 代理机构44202 广州三环专利代理有限公司;

  • 代理人梁顺宜;郝传鑫

  • 地址 310052 浙江省杭州市滨江区长河街道网商路599号4幢7层

  • 入库时间 2023-12-18 15:37:03

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-12-31

    授权

    授权

  • 2016-07-20

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20160427

    实质审查的生效

  • 2016-06-22

    公开

    公开

说明书

技术领域

本发明涉及游戏对象控制领域,尤其涉及一种机器人系统及其实现方法、机器人客户端、机器人服务器以及游戏系统。

背景技术

游戏管理员(GM)又称网络管理员,是网络游戏中主持游戏或监管玩家行为并维护游戏环境的负责人。游戏管理员在实施管理时,一般都是通过特定的GM命令进行操作。另外,游戏在开发过程中,测试人员也可以通过GM命令对游戏进行各种测试。

GM指令是指面向游戏管理员开发的一些快捷指令,其本质就是一些可供调用的函数,一般会提前编写好一些常用的GM指令,需要用到的时候直接在命令行调用。GM指令根据作用目标可以分为服务端GM指令和客户端GM指令。

在现有游戏系统中,通过在游戏服务器中建立一个监控账号(GM指令工具),用于监控实际游戏运营时服务器上玩家的各种行为。具体的,就是在该监控账号中新建一个不可见的角色进入游戏服务器,实时监控服务器上真实玩家的发言,并且可以控制该角色移动到地图不同位置观察真实玩家的各种行为。

另外,在现有游戏系统中,为了保障游戏的正常运行,通过需要对游戏服务器进行压力测试。压力测试是指模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行游戏,来测试被测系统的性能、可靠性、稳定性等。

传统的压力测试方法为手动创建真实玩家账号登入同一台服务器并进行某项操作,或者使用脚本模拟客户端向服务器发送登录请求等操作,从而测试该服务器相应操作的能力。

发明内容

经工程测试研究发现,现有的游戏系统通过设置一个不可见的游戏角色来监控真实玩家的行为及游戏过程,每次只能修改一项数据,不能批量修改数据,效率较低;且该游戏角色不可见,无法实现真实玩家可以做的操作,例如攻击、使用道具等,也无法测试客户端/服务器端在玩家较多场景下的性能。另外,现有的游戏系统通过手动操作来实现压力测试,不能很好的模拟多个客户端同时向服务器发出请求的情况,而脚本批量请求不能完全还原玩家真实的登录、移动、战斗等操作,导致压力测试结果并不真实,准确度不高。

为实现更好的GM指令执行效果和压力测试效果,我们提出了一种机器人系统,通过该机器人系统创建多个机器人玩家,并使每个机器人玩家连接现有游戏系统的游戏服务器以进入游戏中执行自动操作。这样,通过机器人玩家来执行预设的AI操作或/和执行GM指令所对应的操作以对游戏服务器进行对应的压力测试,不仅能够实现批量的游戏数据修改,提高效率;而且能够完全还原玩家真实的登录、移动、战斗等操作,测试结果真实且准确。

为实现上述目的,本发明提供一种机器人系统及其实现方法、机器人客户端、机器人服务器及游戏系统,能够通过机器人玩家来执行预设的AI操作或/和执行GM指令所对应的操作以对游戏服务器进行对应的压力测试,提高测试效率和准确度。。

本发明实施例提供了一种机器人系统,包括:

机器人服务器管理中心;

与所述机器人服务器管理中心连接的至少一个机器人服务器,每一所述机器人服务器通过所述机器人服务器管理中心连接游戏服务器;

与每一所述机器人服务器连接的至少一个机器人客户端,至少一个机器人玩家通过所述机器人客户端创建以实现与所述游戏服务器通信;所述机器人玩家用于进入游戏执行指定的操作。

本发明实施例还提供了一种机器人系统的实现方法,包括:

配置机器人服务器管理中心;

配置与所述机器人服务器管理中心连接的至少一个机器人服务器,每一所述机器人服务器通过所述机器人服务器管理中心连接游戏服务器;

配置与每一所述机器人服务器连接的至少一个机器人客户端,至少一个机器人玩家通过所述机器人客户端创建以实现与所述游戏服务器通信;所述机器人玩家用于进入游戏执行指定的操作。

本发明实施例还提供了一种机器人客户端,包括:

通信模块,用于连接机器人服务器;其中,每一所述机器人服务器通过机器人服务器管理中心连接游戏服务器;

机器人玩家创建模块,用于创建至少一个机器人玩家以实现与所述游戏服务器通信;所述机器人玩家用于进入游戏执行指定的操作。

本发明实施例还提供一种机器人服务器,包括第一通信模块和第二通信模块,其中:

第一通信模块,用于连接机器人服务器管理中心,将经由所述机器人服务器管理中心发送的游戏服务器的下行数据,通过所述第二通信模块发送给机器人客户端;其中,所述机器人服务器管理中心连接游戏服务器;

第二通信模块,用于连接至少一个机器人客户端,将所述机器人客户端上传的机器人玩家的数据,通过所述第一通信模块发送给所述机器人服务器管理中心,由所述机器人服务器管理中心上传给对应连接的游戏服务器;其中,每一所述机器人客户端创建至少一个机器人玩家以实现与所述游戏服务器通信;所述机器人玩家用于进入游戏执行指定的操作。

本发明实施例还提供了一种游戏系统,包括如上所述的机器人系统、与所述机器人系统连接的游戏服务器以及连接所述游戏服务器的至少一个游戏客户端,真实玩家通过所述游戏客户端登陆游戏服务器以与所述机器人玩家一起游戏。

与现有技术相比,本发明实施例公开的机器人系统及其实现方法、机器人客户端、机器人服务器及游戏系统,通过机器人系统来创建多个角色可见的机器人玩家,并使机器人玩家能够与游戏系统的游戏服务器进行通信以进入游戏中执行自动操作,与真实玩家共同游戏。这样,通过机器人玩家来执行预设的AI操作或/和执行GM指令所对应的操作以对游戏服务器进行对应的压力测试,不仅能够实现批量的游戏数据修改,提高效率;而且能够完全还原玩家真实的登录、移动、战斗等操作,测试结果真实且准确。

附图说明

图1是本发明实施例一种机器人系统的结构框图。

图2是本发明实施例一种机器人系统的机器人玩家启动及初始化流程图。

图3是本发明实施例一种机器人系统的机器人玩家向游戏服务器发起数据通信的示意图。

图4是本发明实施例一种机器人系统的游戏服务器向机器人玩家发起数据通信的示意图。

图5是本发明实施例一种机器人系统所创建的战斗对照表的示意图。

图6是本发明实施例一种机器人系统所设定的GM指令与机器人玩家操作间的对应关系的示意图。

图7是本发明实施例一种机器人系统中通过UI界面进行录入GM指令的示意图。

图8是利用本发明实施例提供的一种机器人系统进行压力测试前的预备工作流程图。

图9是本发明实施例一种机器人系统中的机器人服务器增加机器人客户端连接数的流程图。

图10是本发明实施例一种机器人系统中的机器人服务器删除机器人客户端连接数的流程图。

图11是本发明实施例一种机器人系统执行断线重连机制的流程图。

图12是利用本发明实施例一种机器人系统进行游戏服务器的用户登录压力测试的实例流程图。

图13是利用本发明实施例一种机器人系统进行游戏服务器的用户其他操作压力测试的实例流程图。

图14是本发明实施例一种机器人系统的实现方法的流程图。

图15是本发明实施例一种机器人客户端的结构框图。

图16是本发明实施例一种机器人服务器的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,是本发明实施例提供的一种机器人系统的结构示意图。本实施例的机器人系统(Qarobot系统)通过创建机器人玩家(Qarobot玩家)以与真实的游戏服务器进行通信,从而与真实玩家共同游戏。其中,通过本实施例的Qarobot系统创建的机器人玩家能够进入游戏,执行预设的AI操作或/和执行GM指令所对应的操作。

需要说明一下,在本实施例中,机器人玩家是指可以用简单命令控制,实现自动进入游戏、在游戏中自动完成一些动作的模拟角色,其与真实玩家相对。但是,对于游戏服务器来说,机器人玩家和真实玩家都是可见的,游戏服务器并不能区分哪些是机器人玩家,哪些是真实玩家,游戏服务器会依据真实的流程与机器人玩家交互数据。GM指令具体指游戏管理员(GameManager)指令。AI操作具体指的是人工智能(ArtificialIntelligence)操作。

如图1所示,本实施例公开的Qarobot系统1包括机器人服务器管理中心11、与所述机器人服务器管理中心11连接的至少一个机器人服务器12以及与每一所述机器人服务器12连接的至少一个机器人客户端13,其中,每一所述机器人服务器12通过所述机器人服务器管理中心11连接真实的游戏系统2中的游戏服务器21;而至少一个机器人玩家14通过所述机器人客户端13创建以实现与所述游戏服务器21通信。

本实施例的Qarobot系统通过机器人服务器管理中心(QaServerManager)11连接真实的游戏服务器(GameServer)21,一般网络版的游戏会存在多个游戏服务器待选,本实施例的Qarobot系统可以指定之中的一个,或者重载服务器连接协议,通过策略选服。本实施例的Qarobot系统通过机器人服务器(QarobotServer)12与游戏服务器21对接,机器人服务器12符合游戏服务器的网络协议接口,能够与游戏服务器21无阻碍的正常通信。

具体的,本实施例的机器人服务器(QarobotServer)12具有以下功能:

1)网络初始化:建立tcp连接并监听socket;

2)维护客户端列表,依据情况向其中添加或移除机器人客户端;

3)为机器人客户端维护lua数据流表,适时建立和断开数据流;

4)建立客户端重连接池,使用排队论向其中添加连接对象,并定期维护连接池容量。

与机器人服务器(QarobotServer)12相对应的是机器人客户端(QarobotClient)13,机器人客户端13实现了客户端协议,此协议与机器人服务器12对应,多数情况下被重载,和游戏中真实的客户端协议关系不大。机器人客户端13具有以下功能:

1)建立并维护机器人玩家元表(Qarobot元表)。元表中保存每个机器人玩家(Qarobot玩家)14的IP和端口,以及聊天队列,通过读取元表即可读取各个IP和端口,聊天队列用于存储向Qarobot玩家发送的指令;

其中,IP和端口是机器人玩家14所在机器(即机器人客户端13)的网络IP和端口。

2)读取Qarobot玩家当前账号的ID,用指令控制机器人客户端13登录时,会向机器人客户端13发送登录指令;

其中,账号ID是游戏中的账号,Qarobot玩家使用该账号ID登录游戏。一个IP(机器人客户端IP)下可以有多个Qarobot玩家(即多个ID),但一个ID只能对应一个IP。

3)读取当前服务器信息;

4)根据指令格式解析或封装聊天内容。

每个机器人客户端13下可以产生多个机器人玩家(Qarobot玩家)14,他们与真实玩家相对应。机器人玩家14是实质是一个能够自动实现真实玩家对应操作/功能的应用程序,且启动后能够根据设定的程序自动执行相应的功能;同时,机器人玩家14也可以实时接受由游戏管理员发送的机器人指令(即,GM指令)。

Qarobot玩家分为两种场景,一种由本地客户端(QarobotClient)131控制,一种Telnet客户端(TelnetClient)132控制,两种模式下均可帮助Qarobot玩家完成简单的AI功能,并实时接收游戏管理员下发的GM指令,实现游戏管理员实时控制的功能。这两种场景都受一个公共的机器人客户端13管理。机器人服务器12、机器人客户端13和机器人玩家14一起,实现了对机器人玩家14的简单AI操作的功能。Qarobot玩家14完成以下功能:

1)维护了一个游戏服务器列表(ServerList),该表定义在机器人服务器管理中心(QaServerManager)11的配置文件(config)中,在机器人玩家启动前会初始化该游戏服务器列表以设置游戏服务器名、host数量、游戏服务器的IP以及端口;

需要说明的是,由于每个机器人都维护有这样一个服务器列表,如果服务器列表中有多个游戏服务器名,机器人玩家就可以连到每个在列表中的游戏服务器。也就是说,同一个机器人客户端所创建的多个机器人玩家可以连接不同的游戏服务器。

2)读取并响应QarobotServer发来指令的消息的函数。

下面,通过详细的描述以进一步说明本实施例的Qarobot系统中的机器人服务器管理中心11、机器人服务器12、机器人客户端13和机器人玩家14各自的功能及相互之间的关系。

(一)Qarobot系统启动并初始化机器人玩家

参考图2,图2显示了机器人玩家与游戏服务器建立连接的过程。为了能够正常和游戏服务器交互,Qarobot系统需要读取服务器协议代码。Qarobot系统启动后,根据配置文件加载所需文件,运行脚本,初始化各方数据。之后启动机器人服务器管理中心11和机器人服务器12,能够响应游戏服务器推送的各类指令。机器人客户端13(包括QarobotClient和TelnetClient)随后启动,并创建机器人玩家14(在创建后并同时初始化各个机器人玩家,包括依次启动各个机器人玩家的AI模块)使各类指令有了接收方,并用于监听游戏管理员发出的GM指令。至此,Qarobot系统已经建立完全。机器人玩家14可以依据设定完成简单的AI,如,机器人玩家14通过网络模块连接服务器,通过登陆模块完成登陆流程,通过奖励领取模块完成每日登陆奖励的领取等,这些AI模块具有高度可扩展性,用户可根据自身的游戏定制不同的AI模块。

在机器人玩家启动后,管理员可以通过游戏管理员交互模块(设于机器人服务器12或机器人客户端13均可)进行干预,向全体或者指定的机器人玩家发送GM指令,以控制机器人玩家。

(二)Qarobot玩家与游戏服务器间的数据通信

(1)Qarobot玩家向游戏服务器通信

如图3所示,是Qarobot玩家14向游戏服务器21发起数据通信的流程。在Qarobot玩家14向游戏服务器21发送上行数据时,由Qarobot玩家14根据设定或者指令将请求告知机器人客户端13,由机器人客户端13对该请求进行信息整理后,上传至机器人服务器12。机器人服务器12通过socket方式获取由所述机器人客户端13上传的数据,将其按照服务器协议将所述数据打包,然后通过机器人服务器管理中心11发送至机器人玩家14所连接的游戏服务器21,由所述游戏服务器21根据服务器协议进行数据解包,得到机器人玩家14的该请求。

例如,Qarobot玩家希望领取奖励,于是Qarobot玩家将领取奖励的请求告知QarobotClient,QarobotClient整理Qarobot玩家的信息,上传至QarobotServer。QarobotServer将其按照服务端协议整理好数据包,通过QaServerManager上传至Qarobot玩家连接的游戏服务器。游戏服务器依据服务端协议解包,知道玩家希望领取奖励。

(2)游戏服务器向Qarobot玩家通信

如图4所示,是游戏服务器21向Qarobot玩家14发起数据通信的流程。在游戏服务器21向Qarobot玩家14发送下行数据时,由游戏服务器21生成对应控制指令或回复指令并根据服务器协议进行数据打包,并通过机器人服务器管理中心11推送到指定的机器人服务器12。由机器人服务器12根据服务器协议进行数据解包后,通过机器人客户端13发送给对应的机器人玩家14。对于回复请求的指令,若是本地客户端131发出的请求,则通过本地客户端131反馈至相应的机器人玩家14;若是Telnet客户端132发出的请求,则通过Telnet客户端132发送回相应的机器人玩家14。

例如,接上文,若游戏服务器21经过校验,决定同意机器人玩家领取奖励的请求并发放奖励。那么,游戏服务器21根据服务端协议拟定回复,通过QaServerManager推送到指定的QarobotServer。如果是QarobotClient发出的请求,则通过QarobotClient反馈至相应的Qarobot玩家。如果是TelnetClient发出的请求,则通过TelnetClient发送回相应的Qarobot玩家。

(三)机器人玩家的AI操作

本发明实施例的机器人系统所创建的机器人玩家14,在启动后能够根据设定或GM命令执行相应的AI操作。具体的,由机器人客户端13来根据设定或GM命令对创建后的每一所述机器人玩家执行相应的AI操作,并将相应的请求通过机器人服务器12发送到对应的游戏服务器21。

其中,在机器人客户端13中为每个机器人玩家14设定了对应的AI操作模块。本实施例的机器人玩家的AI操作主要包括以下几个方面:

1、登录操作

1)配置文件(config)中的机器人玩家列表URS_TABLE={}里面内容是用户资料,用于跟下位的机器人连接客户端,cur是从第几个位置的用户进行登录;

2)定义了断线重连,可通过执行断开连接函数调用客户端网络连接模块断开与服务器的连接,并执行重连接,在重连接表中添加重连接计划;

3)定义了顶号登录方式,可以在账号已被登录时重复登录测试顶号功能;

4)登录方式有RC4校验登录、RSA校验登录、将军令校验登录等多种登录方式,可以对多种加密方式的密码进行解码。

2、自动聊天操作

1)聊天窗口信息:用两个表(table)保存聊天频道的中文名称与对应ID;通过表的索引即可实现聊天频道名与ID转换。

2)聊天窗口状态:建立元表(metatable)保存每个聊天频道的打开关闭状态,每当新建一个频道时,即建立该频道ID与该频道打开状态的索引,通过表的索引即可实现查询、修改频道状态。

3)发送聊天信息:定义了一个先进先出的聊天队列,并定义了一个参数用于记录当前队列的长度。有信息需要输入时,会将消息存入队列中,并且队列长度累加,输入结束需要发送时,发送最先存入队列的消息,并且队列长度递减。这样就可以保证所输入的信息以正确的顺序被发送出去。清空所输入的信息的做法就是清空队列,并将队列长度清零。查询聊天信息是否为空以及聊天信息长度时就读取队列长度这个参数。

3、移动操作

机器人系统维护Path表,其中存放9999条移动路径,当机器人玩家接收到移动指令时,如果接收的命令校验正确,则会先移动到预先设置好的一个随机起始点,然后向服务器同步目标地点,并向目标地点移动。

4、战斗操作

通过预先建立的战斗对照表来控制机器人玩家执行与GM指令相应的操作;其中,所述战斗对照表预存GM指令与机器人玩家操作之间的映射关系。

其中,战斗对照表如图5所示,图5仅显示了战斗对照表中的部分映射关系。

例如,当机器人客户端13接收到GM指令时,首先会在聊天窗口发送收到指令的信息,然后改变战斗状态参数。GM指令的接收以及聊天信息的发送定义在用户聊天功能中。然后当机器人玩家获取当前战斗状态,根据战斗状态参数执行相应的战斗动作。这些战斗动作的执行方式定义在用户战斗指令处理模块中。

(四)GM指令的执行

本发明实施例的机器人系统所创建的机器人玩家14是可以执行GM指令的。具体的,由游戏管理员通过本实施例的机器人系统(具体可以通过机器人服务器或机器人客户端预设的管理员交互模块)可以向Qarobot玩家发送GM指令以实现控制机器人玩家的效果。机器人玩家在游戏中接受GM指令,并根据GM指令进行聊天、巡逻、以及战斗等操作。机器人玩家进入游戏后,默认进入自动战斗状态,通过指令还可以控制机器人玩家执行对应的战斗操作,实现的指令如图6所示。

所述GM指令用于控制机器人玩家执行对应操作或获取机器人玩家当前状态;其中,用于控制机器人玩家执行对应操作的指令包括登录指令以及游戏中指令,登录指令至少包括以下其中之一:选择账号、删除账号、登录服务器或退出登录指令,游戏中指令至少包括以下其中之一:移动、聊天、战斗指令;获取机器人玩家当前状态至少包括以下其中之一:获取机器人客户端的IP、端口、机器人玩家ID、当前登录状态或当前游戏中状态。

具体的,Qarobot系统可以通过两种方式向Qarobot玩家发送GM指令,一是QarobotClient,一种是TelnetClient。前者通过UI界面(如图7所示)录入并执行GM指令,后者通过建立Telnet连接的方式,接收并执行GM指令。UI客户端人机交互更加友好,而Telnet应用场景具有一般性。

而所述机器人客户端在接收到所述GM指令时,根据所述GM指令执行作用于机器人玩家的相应操作,并将相应的请求通过机器人服务器发送到对应的游戏服务器。具体实施时,通过机器人玩家在聊天频道自动读取GM指令,该GM指令可为广播指令,用于控制指定的或者全部的机器人玩家执行对应的操作。

(五)压力测试

本发明实施例的Qarobot系统能够创建众多可控的Qarobot玩家,进行压力测试十分方便。首先,Qarobot系统可以创建多个QarobotClient/TelnetClient,每个QarobotClient/TelnetClient又能创建多个Qarobot玩家。

有了机器人玩家后,尽可能多的控制机器人玩家登陆同一个游戏服务器,从而可以对游戏服务器进行各种压力测试。

本发明实施例的Qarobot系统可以通过GM指令批量控制机器人完成选择账号、登录同一台服务器等操作,当同时控制的机器人数量足够大时即可测试服务器能承受的登录压力。此外,Qarobot系统还带有断线重连技术,可以保证服务器压测稳定可靠。

本发明实施例的Qarobot系统也可以不通过GM指令来控制Qarobot玩家根据设定完成登陆和游戏中的AI操作,然后利用服务器协议进行游戏服务器的压力测试。

例如,可以使用本发明实施例的Qarobot系统进行诸如有消息服务器最大连接数、一个屏幕最多支持的玩家个数等压测。

需要说明的是,游戏服务器是一般意义上的游戏服务器,无需特殊处理。对于游戏服务器而言,它并不能区分哪些是机器人玩家,哪些是真实玩家。游戏服务器会依据正常的流程与机器人玩家交互数据。这也是能够通过QarobotClient创建机器人玩家,完成游戏服务器压力测试的理论基础。在机器人客户端中,需要配置游戏服务器的ip、端口,以明确机器人玩家连接哪个游戏服务器。

通常,游戏中的压力测试需要一个干净的环境来保证测试结果的准确性。因此,在利用本发明实施例的Qarobot系统进行游戏服务器的压力测试时,需要在Qarobot系统中配置并指定唯一的登录服务器,并关联纯净的测试数据库。配置目标游戏服务器时,需要指定服务器端口号、ip、客户端最大连接个数。在本实施例中,为了方便多游戏服务器操作,每个机器人玩家在不同的游戏服务器下都有自己的ID。选定一个游戏服务器做压测时,需要先取消每个机器人玩家(urs)和多游戏服务器的关联,并重新创建机器人玩家与指定的游戏服务器之间的关联表。在完成这些工作后,才启动机器人系统以进行相应的压力测试。压力测试的预备操作流程如图8所示。

启动机器人系统(即启动机器人玩家)之后,可以用以下两种方式模拟大量玩家普通操作:

1)机器人玩家自动操作:机器人玩家AI自带移动、聊天、自动战斗等模块,只要足够数量的机器人玩家登录到同一台服务器,就可以模拟一般玩家在游戏中的普通操作,可测试游戏服务器同一时间能承受的玩家数量;

2)GM指令控制:使用GM指令控制机器人玩家同时进行聊天、巡逻、战斗、平砍、法术攻击等操作,以测试游戏服务器同一时间可接收及处理客户端请求数量。

为了保证压力测试的稳定可靠,本发明实施例的机器人系统通过队列调度维护连接池,并提供断线重连的功能。下面详细描述这两个功能:

(1)、队列调度与连接池

QarobotServer维护了客户端列表(client_list)和lua数据流列表(luafd_list)。client_list中每个机器人client都会在luafd_list中有相应的数据接收流,用于存放该机器人客户端通过socket发来的数据。Client_list充当了一个连接池的作用,其中包含了QarobotServer可见的所有客户端。机器人客户端可以通过Client.clientfd.fd,在O(1)的时间花费内,在客户端列表中唯一定位客户端的连接。

新增机器人客户端(client实体)的流程如图9所示,如果QarobotClient请求连接游戏服务器,机器人服务器会在客户端列表中添加该机器人客户端(表示连接游戏服务器成功),为所述机器人客户端创建对应的数据流并存入lua数据流列表。可以通过socket连接的机器人客户端在client_list和luafd_list中唯一定位客户端及其数据流。

图10显示了在客户端列表中移除机器人客户端(client实体)的流程,如果机器人客户端向游戏服务器发送断开请求,则机器人服务器会先遍历lua数据流列表找出该机器人客户端对应的数据流,在lua数据流列表中移除该客户端的数据流,之后在所述客户端列表中删除所述机器人客户端。

(2)断线重连技术

本发明实施例的机器人系统中的每个机器人服务器预先设定了最大客户端连接数量CLIENT_CNT,当每个机器人服务器接收到机器人客户端发送的登陆请求(具体为机器人玩家请求登陆游戏服务器)数大于所述最大客户端连接数量时,将启动预设的断线重连机制对首次连接失败的机器人客户端进行重新连接。

当每个机器人服务器接收到机器人客户端发送的登陆请求数多于CLIENT_CNT时,客户端连接资源紧缺,必然有一部分的机器人客户端首次连接失败,需要重连客户端。

断线重连机制的流程如图11所示,Qarobot系统中的机器人服务器维护了一张重连接表(re_conn_list)。机器人服务器将首次连接失败的机器人客户端加入预设的重连接表中,并记录每个需要重新连接的机器人客户端所请求连接的游戏服务器及下次连接时间,所述下次连接时间根据以下公式计算:

T=N*T0

其中,T为机器人客户端的下次连接时间,N为所述重连接表中的机器人客户端个数,T0为预设的时间间隔,例如30秒;

若当前时间到达所述下次连接时间(即,重连时间),则将对应的机器人客户端进行重新连接(即只连接一个机器人客户端);

若当前时间到达所述下次连接时间,判断当前所述重连接表中的机器人客户端个数是否大于预设的门限值,若是,则同时将门限值个数的机器人客户端进行重新连接;否则只重新连接当前到达所述下次连接时间的机器人客户端。

另外,本实施例的断线重连机制还包括:将首次连接失败的机器人客户端加入预设的重连接表前,判断所述重连接表中的机器人客户端个数是否达到所述重连接表的最大长度,若是,则舍弃,即放弃对该机器人客户端进行重新连接。

特别地,当利用GM指令来进行游戏服务器的压力测试时,本发明的机器人系统会预先设定一个机器人用户列表USR_TABLE,USR_TABLE中存放压测需要的用户数据(即,机器人玩家数据),表中每一项都是一个用户集群,每个用户集群包括至少一个用户,每个用户都有自己的用户ID。另外,每个用户集群中的机器人玩家ID连续,每个集群中会定义用户ID的最小值和最大值,可以通过这两个数据计算出该集群中的用户数。将所有用户集群的用户数相加,可以得到USR_TABLE整个表的用户总数。

每一个机器人玩家连接需要有一个机器人客户端连接支持,Qarobot系统中每个Qarobotserver都定义了CLIENT_CNT,表示最大可创建的机器人客户端连接数。

当利用GM指令进行测试时,Qarobotserver根据设定的机器人用户列表USR_TABLE向每一机器人客户端发送所述GM指令。具体的,按照所述机器人用户列表从后往前的顺序,依次向每一个用户集群所对应的机器人客户端发送对应的所述GM指令。即,CLIENT_CNT的使用按照USR_TABLE从后向前的顺序,先为USR_TABLE中最后一项的用户集群创建连接,再为倒数第二项……以此类推,直至用完CLIENT_CNT。

当USR_TABLE中的用户数多于CLIENT_CNT时,client连接资源紧缺,必然有一部分的机器人客户端首次连接失败,需要重连。这个时候,可利用上述的断线重连机制对首次连接失败的机器人客户端进行重新连接。

以上提及了压力测试中的队列调度、连接池和断线重连技术。在此,以通过GM指令控制机器人玩家登陆操作和其他操作以测试游戏服务器为例,说明大规模用户请求的游戏服务器压测的情况。

测试实例1:用户登录压力测试

参考图12,在启动和初始化本实施例的机器人系统所创建的机器人玩家(Qarobot玩家,简称Qarobot)后,需要先创建一个机器人用户列表USR_TABLE,机器人玩家向游戏服务器发送登陆、注销请求的策略需要根据实际的测试目标来制定,此处可设为,机器人玩家按照ID先后顺序依次向游戏服务器发出登陆请求,登陆成功后,有概率在保持一个随机的时间长度后登出。随着USR_TABLE中的用户(即,机器人玩家)一个接一个的向游戏服务器发出登陆请求,机器人服务器中预置的client_list也由空状态渐渐接近饱和。这个过程中,用户登陆过程中申请连接请求能够在系统中成功的创建连接Client实体,保存在client_list中。用户在服务器注销、断开连接后,它对应的Client实体会从client_list中销毁,为其他待登陆的用户让出资源。

如果用户登陆的速度大于用户销户的速度,那么游戏服务器登陆的人数会达到设定的最大连接数CLIENT_CNT。达到CLIENT_CNT之后,待登陆的用户无法再在client_list加入实体,反应到Qarobot客户端就是登录失败,这些用户将按照上文提及的断线重连机制进行重连。理论上来说,除非client_list中有用户注销、断开连接,否则多出的用户将一直无法登陆成功。

此处的队列调度、连接池以及断线重连是Qarobot系统向真实的游戏服务器发送机器人玩家登陆请求的管控方式,而不是游戏服务器本身处理用户登陆的策略。通过调整登出的时间间隔、设定USR_TABLE的用户数量与使用策略,可以至少模拟出以下两种情况:CLIENT_CNT个用户短时间内持续请求登陆、CLIENT_CNT个用户同时在线。那么,通过观察真实的游戏服务器在不同的CLIENT_CNT数值下的表现,可以知道游戏服务器最大可支持的同时在线的人数,以及,游戏服务器在用户登陆压力超过可支持的水平时的稳定性情况,以此完成压力测试。

由于测试连接的是真实的游戏服务器,测试人员可以在使用Qarobot系统的过程中,正常使用其他方式连接游戏服务器进行测试,如,使用真实的物理设备登陆并进行游戏,使用PC游戏客户端登陆游戏服务器等。测试人员可以通过这些方式更加直观的感受到强压下游戏服务器的性能表现。

测试实例2:聊天、移动与战斗等客户端请求处理压力测试

本实施例对游戏服务器处理大量聊天、移动、战斗请求的压力测试方法较为接近,都是等大量机器人玩家登录游戏后,使用GM指令控制指定机器人玩家执行对应操作。机器人玩家在接收指令后,在执行操作时会把相应的机器人客户端请求发送到待测试的游戏服务器,于是就可以测试游戏服务器对各种请求的处理能力。具体的操作流程如图13所示。

可见,与现有技术相比,利用本发明实施例的机器人系统进行游戏服务器的压力测试具有如下的优势:

1)利用批量登录和断开重连技术,可以模拟各种登录方式,测试各种方式登录服务器的可行性,并且可以同时发出大量登录请求,测试服务器对于大量登录请求的处理能力。

2)利用机器人自动聊天模块,可以模拟服务器读取大量玩家聊天数据,测试服务器读取玩家聊天的压力,同时可以测试对敏感词的甄别能力。

3)利用机器人自动移动模块,可以模拟高峰期大量玩家跑地图,以测试服务器在高峰期承载玩家的数量,以及一段时间内高负载下服务器的压力;

4)利用机器人战斗相关模块,可以控制机器人同时执行战斗动作以测试服务器接受大量客户端在游戏中请求的能力,而且可以指定机器人做指定的战斗操作,便于定位问题所在;

5)使用GM指令可以控制指定一个机器人,也可以批量控制所有测试机器人,避免了人工操作多个账号费时费力

6)根据服务器协议,可以在Qarobot系统中重载协议内容,可以实现几乎所有的机器人玩家AI功能,极具可扩展性。

综上,本实施例的机器人系统通过创建多个角色可见的机器人玩家,并使机器人玩家能够与游戏系统的游戏服务器进行通信以进入游戏中执行自动操作,与真实玩家共同游戏。这样,通过机器人玩家来执行预设的AI操作或/和执行GM指令所对应的操作以对游戏服务器进行对应的压力测试,不仅能够实现批量的游戏数据修改,提高效率;而且能够完全还原玩家真实的登录、移动、战斗等操作,测试结果真实且准确。

参考图14,本发明实施例公开了一种机器人系统的实现方法,该方法包括步骤S141~S143:

S141、配置机器人服务器管理中心。

S142、配置与所述机器人服务器管理中心连接的至少一个机器人服务器,每一所述机器人服务器通过所述机器人服务器管理中心连接游戏服务器;

S143、配置与每一所述机器人服务器连接的至少一个机器人客户端,至少一个机器人玩家通过所述机器人客户端创建以实现与所述游戏服务器通信;所述机器人玩家用于进入游戏执行指定的操作。

其中,所述机器人客户端包括本地客户端或telnet客户端。

具体的,所述步骤S142具体包括如下操作:

配置所述机器人服务器,使其通过socket方式获取由所述机器人客户端上传的机器人玩家的数据,并按照服务器协议将所述数据打包后通过所述机器人服务器管理中心上传给对应连接的游戏服务器,由所述游戏服务器根据服务器协议进行数据解包。

配置所述机器人服务器,使其将经由所述机器人服务器管理中心发送的游戏服务器的数据包进行数据解包后,通过机器人客户端发送给相应的机器人玩家。

配置所述机器人服务器端,使其在接收到新增加的机器人客户端的连接请求时,为所述机器人客户端创建对应的数据流并存入数据流列表,以及在客户端列表中添加所述机器人客户端。

配置所述机器人服务器端,使其在接收到机器人客户端的断开连接请求时,根据所述机器人客户端将所述数据流列表中对应的数据流删除,并在所述客户端列表中删除所述机器人客户端。

配置所述机器人服务器端,使其在接收到GM指令以控制机器人玩家进行登陆操作时,根据设定的机器人用户列表控制每个机器人玩家所对应的机器人客户端,使每个机器人客户端为每个机器人玩家发送连接游戏服务器的登陆请求;其中,所述机器人用户列表中的每一项为一个用户集群,每个用户集群包括至少一个用户,每个用户对应一个机器人玩家ID。

配置机器人服务器,使其按照所述机器人用户列表从后往前的顺序,依次控制每一个用户集群所对应的机器人客户端发送对应的登陆请求。

配置机器人服务器,使其在所述机器人用户列表中的用户总数大于所述机器人服务器设定的最大客户端连接数量时,启动预设的断线重连机制对首次连接失败的机器人客户端进行重新连接。其中,每个用户集群中的机器人玩家ID连续,通过限定每个用户集群中的机器人玩家ID的最大值和最小值以得到该用户集群中的用户数,从而得到所述机器人用户列表中的用户总数。

另外,断线重连机制的执行过程请参考上文有关描述,在此不再赘述。

具体的,上述步骤S143具体包括如下操作:

配置机器人客户端,使其根据设定对创建后的每一所述机器人玩家执行相应的AI操作,并将相应的请求通过机器人服务器发送到对应的游戏服务器。其中,所述AI操作至少包括以下其中之一:登陆操作、聊天操作、移动操作和战斗操作。

配置机器人客户端,使其根据预设的游戏服务器列表创建及初始化机器人玩家,所述游戏服务器列表至少包括以下其中之一:每一机器人玩家连接的游戏服务器名、IP及端口。

配置机器人客户端,使其接收到登陆的GM指令或根据设定的AI操作对机器人玩家执行登陆操作时,根据所述游戏服务器列表向记录的所有游戏服务器发送登陆请求。

配置所述机器人客户端,使其在创建每一机器人玩家后,对已建立的机器人玩家元表进行更新,所述机器人玩家元表中记录创建的每一机器人玩家的ID、IP及端口。

优选的,所述机器人玩家元表中还记录每个聊天频道中文名称与聊天频道ID间的索引;所述步骤S143还包括:配置所述机器人客户端,使其根据所述索引查询或修改聊天频道状态。

优选的,所述机器人玩家元表中还为每个聊天频道记录先进先出的聊天队列以及聊天队列长度;所述步骤S143还包括:配置所述机器人客户端,使其通过每个聊天频道发送和读取聊天信息。其中,所述聊天信息包括GM指令。

配置所述机器人客户端,使其在接收到所述GM指令时,根据所述GM指令执行作用于机器人玩家的相应操作,并将相应的请求通过机器人服务器发送到对应的游戏服务器。

其中,所述GM指令用于控制机器人玩家执行对应操作或获取机器人玩家当前状态;其中,用于控制机器人玩家执行对应操作的指令包括登录指令以及游戏中指令,登录指令至少包括以下其中之一:选择账号、删除账号、登录服务器或退出登录指令,游戏中指令至少包括以下其中之一:移动、聊天、战斗指令;获取机器人玩家当前状态至少包括以下其中之一:获取机器人客户端的IP、端口、机器人玩家ID、当前登录状态或当前游戏中状态。优选的,所述GM指令为广播指令。

配置所述机器人客户端,使其通过预先建立的战斗对照表来控制机器人玩家执行与GM指令相应的操作;其中,所述战斗对照表预存GM指令与机器人玩家操作之间的映射关系。

另外,本实施例的机器人系统实现方法还包括:

通过设定不同的最大客户端连接数量以及设定机器人玩家连接同一游戏服务器,从而实现对该游戏服务器的用户登录压力测试。

通过生成广播GM指令控制机器人玩家同时执行不同的操作,从而实现对所述游戏服务器响应不同操作的能力的压力测试。

可见,本实施例公开的机器人系统的实现方法通过创建多个角色可见的机器人玩家,并使机器人玩家能够与游戏系统的游戏服务器进行通信以进入游戏中执行自动操作,与真实玩家共同游戏。这样,通过机器人玩家来执行预设的AI操作或/和执行GM指令所对应的操作以对游戏服务器进行对应的压力测试,不仅能够实现批量的游戏数据修改,提高效率;而且能够完全还原玩家真实的登录、移动、战斗等操作,测试结果真实且准确。

参考图15,本发明实施例公开了一种机器人客户端,该机器人客户端包括通信模块151、机器人玩家创建模块152、执行模块153、机器人玩家元表更新模块154、聊天频道查询修改模块155以及聊天信息发送及读取模块156,其中:

通信模块151,用于连接机器人服务器;其中,每一所述机器人服务器通过机器人服务器管理中心连接游戏服务器。具体的,所述通信模块151用于:通过socket方式将机器人玩家的上行数据上传给机器人服务器,由所述机器人服务器按照服务器协议将所述数据打包后通过所述机器人服务器管理中心上传给对应连接的游戏服务器,并由所述游戏服务器根据服务器协议进行数据解包。所述通信模块151还用于:接收所述机器人服务器转发由游戏服务器发送给机器人玩家的下行数据,其中,所述下行数据由所述游戏服务器按照服务器协议打包后通过机器人服务器管理中心发送给机器人服务器,并由所述机器人服务器根据服务器协议进行数据解包后发出。

机器人玩家创建模块152,用于创建至少一个机器人玩家以实现与所述游戏服务器通信。具体的,所述机器人玩家创建模块152根据预设的游戏服务器列表创建及初始化机器人玩家,所述游戏服务器列表包括每一机器人玩家连接的游戏服务器名、IP及端口。

执行模块153,用于根据设定对创建后的每一所述机器人玩家执行相应的AI操作或/和根据接收到的GM指令执行作用于机器人玩家的相应操作,并将相应的请求由所述通信模块通过机器人服务器发送到对应的游戏服务器。其中,所述AI操作至少包括以下其中之一:登陆操作、聊天操作、移动操作和战斗操作;所述GM指令至少包括以下其中之一:登陆指令和游戏中指令。

所述GM指令用于控制机器人玩家执行对应操作或获取机器人玩家当前状态;其中,用于控制机器人玩家执行对应操作的指令包括登录指令以及游戏中指令,登录指令至少包括以下其中之一:选择账号、删除账号、登录服务器或退出登录指令,游戏中指令至少包括以下其中之一:移动、聊天、战斗指令;获取机器人玩家当前状态至少包括以下其中之一:获取机器人客户端的IP、端口、机器人玩家ID、当前登录状态或当前游戏中状态。优选的,所述GM指令为广播指令。

具体的,当所述执行模块153根据设定对创建后的每一所述机器人玩家执行登陆操作或根据接收到的GM指令执行作用于机器人玩家的登陆操作时,根据上述的游戏服务器列表生成向记录的所有游戏服务器发送的登陆请求。

另外,当所述执行模块153根据接收到的GM指令执行作用于机器人玩家的战斗操作时,通过预先建立的战斗对照表来控制机器人玩家执行与GM指令相应的操作;其中,所述战斗对照表预存GM指令与机器人玩家操作之间的映射关系。

可以理解的,所述执行模块153下还包括其他的AI功能模块来执行对应的AI操作。

机器人玩家元表更新模块154,用于在创建每一机器人玩家后,对已建立的机器人玩家元表进行更新,所述机器人玩家元表中记录创建的每一机器人玩家的ID、IP及端口,所述机器人玩家元表中还记录每个聊天频道中文名称与聊天频道ID间的索引,以及为每个聊天频道记录先进先出的聊天队列以及聊天队列长度。

聊天频道查询修改模块155,用于所述根据所述机器人玩家元表中记录的每个聊天频道中文名称与聊天频道ID间的索引查询或修改聊天频道状态。

聊天信息发送及读取模块156,用于通过每个所述聊天频道的聊天队列发送和读取聊天信息。

优选的,本实施例的机器人客户端包括本地客户端或telnet客户端。

可见,本实施例公开的机器人客户端通过创建多个角色可见的机器人玩家,并使机器人玩家能够与游戏系统的游戏服务器进行通信以进入游戏中执行自动操作,与真实玩家共同游戏。这样,通过机器人玩家来执行预设的AI操作或/和执行GM指令所对应的操作以对游戏服务器进行对应的压力测试,不仅能够实现批量的游戏数据修改,提高效率;而且能够完全还原玩家真实的登录、移动、战斗等操作,测试结果真实且准确。

参考图16,本发明实施例公开了一种机器人服务器,该机器人服务器包括第一通信模块161、第二通信模块162、连接请求管理模块163、广播GM指令处理模块164和断线重连模块165,其中:

第一通信模块161,用于连接机器人服务器管理中心,将经由所述机器人服务器管理中心发送的游戏服务器的下行数据根据服务器协议进行数据解包,通过所述第二通信模块发送给机器人客户端;其中,所述机器人服务器管理中心连接游戏服务器;具体的,所述第一通信模块用于:将经由所述机器人服务器管理中心发送的游戏服务器的下行数据根据服务器协议进行数据解包后,由所述第二通信模块通过socket方式发送给机器人客户端的相应的机器人玩家。其中,所述下行数据包括GM指令。

所述GM指令用于控制机器人玩家执行对应操作或获取机器人玩家当前状态;其中,用于控制机器人玩家执行对应操作的指令包括登录指令以及游戏中指令,登录指令至少包括以下其中之一:选择账号、删除账号、登录服务器或退出登录指令,游戏中指令至少包括以下其中之一:移动、聊天、战斗指令;获取机器人玩家当前状态至少包括以下其中之一:获取机器人客户端的IP、端口、机器人玩家ID、当前登录状态或当前游戏中状态。

优选的,所述GM指令为广播指令。

第二通信模块162,用于连接至少一个机器人客户端(包括本地客户端或telnet客户端),将所述机器人客户端上传的机器人玩家的数据,并按照服务器协议将所述数据打包后通过所述第一通信模块发送给所述机器人服务器管理中心,由所述机器人服务器管理中心上传给对应连接的游戏服务器;其中,每一所述机器人客户端创建至少一个机器人玩家以实现与所述游戏服务器通信。具体的,所述第二通信模块162通过socket方式获取由所述机器人客户端上传的机器人玩家的数据,并按照服务器协议将所述数据打包后通过所述第一通信模块161发送给所述机器人服务器管理中心,由所述机器人服务器管理中心上传给对应连接的游戏服务器,由所述游戏服务器根据服务器协议进行数据解包。

连接请求管理模块163,用于当所述第二通信模块162接收到新增加的机器人客户端的连接请求时,为所述机器人客户端创建对应的数据流并存入数据流列表,以及在客户端列表中添加所述机器人客户端,以及用于当所述第二通信模块接收到机器人客户端的断开连接请求时,根据所述机器人客户端将所述数据流列表中对应的数据流删除,并在所述客户端列表中删除所述机器人客户端。

广播GM指令处理模块164,用于接收到广播GM指令以控制机器人玩家进行登陆操作时,根据设定的机器人用户列表将该广播GM指令进行处理,并通过所述第二通信模块162发送给每个机器人玩家所对应的机器人客户端,使每个机器人客户端为每个机器人玩家发送登陆游戏服务器的连接请求;其中,所述机器人用户列表中的每一项为一个用户集群,每个用户集群包括至少一个用户,每个用户对应一个机器人玩家ID。每个用户集群中的机器人玩家ID连续,通过限定每个用户集群中的机器人玩家ID的最大值和最小值以得到该用户集群中的用户数,从而得到所述机器人用户列表中的用户总数。

所述广播GM指令处理模块164进一步用于:按照所述机器人用户列表从后往前的顺序,依次向每一个用户集群所对应的机器人客户端发送对应的所述广播GM指令。

断线重连模块165,用于当所述机器人用户列表中的用户总数大于所述机器人服务器设定的最大客户端连接数量时,启动预设的断线重连机制对首次连接失败的机器人客户端进行重新连接。

其中,断线重连机制请参考上述描述,在此不再赘述。

本发明实施例的机器人服务器还包括:

通过设定不同的最大客户端连接数量以及设定机器人玩家连接同一游戏服务器,从而实现对该游戏服务器的用户登录压力测试。以及

通过生成或发送广播GM指令控制全部机器人玩家同时执行对应的操作,从而实现对所述游戏服务器响应该操作的能力的压力测试。

可见,本实施例公开的机器人服务器能够实现机器人客户端所创建的多个角色可见的机器人玩家能够与游戏系统的游戏服务器进行通信,使每个机器人玩家能够进入游戏中执行自动操作,从而与真实玩家共同游戏。这样,通过机器人玩家来执行预设的AI操作或/和执行GM指令所对应的操作以对游戏服务器进行对应的压力测试,不仅能够实现批量的游戏数据修改,提高效率;而且能够完全还原玩家真实的登录、移动、战斗等操作,测试结果真实且准确。

返回参考图1,本发明实施例还公开了一种游戏系统,该游戏系统包括如上所述的机器人系统、与所述机器人系统连接的游戏服务器21以及连接所述游戏服务器21的至少一个游戏客户端22,真实玩家23通过所述游戏客户端22登陆游戏服务器21以与所述机器人玩家14一起游戏。

由于本发明实施例的游戏系统增加了机器人系统,通过机器人系统来创建多个角色可见的机器人玩家,并使机器人玩家能够与游戏系统的游戏服务器进行通信以进入游戏中执行自动操作,与真实玩家共同游戏。这样,通过机器人玩家来执行预设的AI操作或/和执行GM指令所对应的操作以对游戏服务器进行对应的压力测试,不仅能够实现批量的游戏数据修改,提高效率;而且能够完全还原玩家真实的登录、移动、战斗等操作,测试结果真实且准确。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号