本发明涉及计算机领域,具体而言,涉及一种操作序列的获取方法、装置、存储介质、处理器和服务端。
背景技术:
目前,关于回合制对战游戏的战斗测试通常分为以下两个层面:
(1)漏洞(bug)层面,主要指的是数据错误、美术资源错误等逻辑上的问题。
bug层面的测试通常可以包括以下两种方式:手工测试和脚本测试。手工测试需要测试人员开启一个或者多个游戏客户端,配置需要的战斗对象数据完成测试,测试中可以设置每回合的战斗策略(同时可以存在一些辅助测试指令)。脚本测试往往通过测试人员编写自动化脚本(脚本中调用游戏接口)完成游戏的自动战斗,可以包含多个自动化脚本,用来覆盖多个测试用例。
(2)体验层面,主要指的是游戏玩家在游戏过程中的感受。
体验层面的测试,主要是测试战斗系统数值层面的问题,即战斗数据设计是否合理。这种测试方式通常是在bug测试通过后,产品内部开发人员集体讨论并共同体验,然后再结合参与人员的意见进行修改。
尽管部分自动化脚本也会存在自身的战斗策略或者针对每次战斗设计行为树进行战斗测试,但是这种测试仍然停留在bug层面,其原因在于:这种方案是用来验证战斗是否按照策划人员设定的方式运行,而并非是在测试策划人员所提出的设计的体验如何。
因此,从bug层面的测试来看,无论是手工测试还是脚本测试,其核心均在于测试用例。而测试用例的编写,目前还是需要人工完成,并没有自动化的解决方案。尽管可以跳过测试用例而直接运用海量的计算,遍历战斗的所有可能性。但是这种方式的可操作性较差。其一是战斗的可能性太多,即使通过集群计算也难以一一遍历;其二是基于前述集群计算的运算量不足,造成遍历的战斗可能性有限,因此,测试过程无法覆盖所有的测试逻辑,进而出现测试遗漏,但是在bug层面的测试过程中不应该出现代码逻辑没有测试到的情况。
另外,从体验层面的测试来说,策划人员和测试人员的体验结果,并不能作为战斗体验的依据,其原因在于:第一,游戏是开发人员设计的,那么在开发人员设计之初,通常是按照开发人员所认为的最好方式来设计的,但问题是开发人员的设计思路难以覆盖所有玩家的想法;第二,游戏玩家是成千上万人的集合,游戏玩家的体验也是一个统计性结果,而非特定部分人员的看法。
针对上述的问题,目前尚未提出有效的解决方案。
技术实现要素:
本发明至少部分实施例提供了一种操作序列的获取方法、装置、存储介质、处理器和服务端,以至少解决相关技术中在缺少游戏玩家操控的游戏角色数据,无法使用机器学习算法进行决策情况下,如何进行自动战斗的技术问题。
根据本发明其中一实施例,提供了一种操作序列的获取方法,包括:
在模拟战斗环境下获取与当前战场信息对应的多个操作序列;从多个操作序列中选取待执行的操作序列。
可选地,在模拟战斗环境下获取与当前战场信息对应的多个操作序列包括:在模拟战斗环境下向预设检测系统发送当前战场信息;接收预设检测系统返回的基于预设检测规则确定的与当前战场信息对应的多个操作序列。
可选地,在从多个操作序列中选取待执行的操作序列之前,还包括:获取步骤,对于最新得到的多个操作序列中的每个操作序列,分别获取更新后的战场信息,其中,更新后的战场信息是在更新前的战场信息的基础上执行对应的操作序列后得到的;发送步骤,向预设检测系统发送更新后的战场信息;接收步骤,接收预设检测系统返回的基于预设检测规则确定的与更新后的战场信息对应的多个操作序列,返回获取步骤,直至满足预设条件。
可选地,从多个操作序列中选取待执行的操作序列包括:采用预设函数计算与接收步骤确定的全部操作序列中每个操作序列对应的评估结果;根据计算得到的评估结果选取待执行的操作序列。
可选地,根据计算得到的评估结果选取待执行的操作序列包括:根据计算得到的评估结果从与每个更新后的战场信息对应的多个操作序列的评估值中选取最高评估值;将最高评估值逐级上报至与每个更新后的战场信息对应的更新前的战场信息,直至从多个操作序列中选出评估值最高的待执行的操作序列。
可选地,在根据计算得到的评估结果选取待执行的操作序列之后,还包括:在真实战斗环境下,基于当前战场信息执行待执行的操作序列,其中,模拟战斗环境是通过对真实战斗环境进行复制得到的。
根据本发明其中一实施例,还提供了一种操作序列的获取装置,包括:
第一获取模块,用于在模拟战斗环境下获取与当前战场信息对应的多个操作序列;选择模块,用于从多个操作序列中选取待执行的操作序列。
可选地,第一获取模块包括:发送单元,用于在模拟战斗环境下向预设检测系统发送当前战场信息;接收单元,用于接收预设检测系统返回的基于预设检测规则确定的与当前战场信息对应的多个操作序列。
可选地,上述装置还包括:第二获取模块,用于对于最新得到的多个操作序列中的每个操作序列,分别获取更新后的战场信息,其中,更新后的战场信息是在更新前的战场信息的基础上执行对应的操作序列后得到的;发送模块,用于向预设检测系统发送更新后的战场信息;接收模块,用于接收预设检测系统返回的基于预设检测规则确定的与更新后的战场信息对应的多个操作序列,返回第二获取模块,直至满足预设条件。
可选地,选择模块包括:确定单元,用于采用预设函数计算与接收模块确定的全部操作序列中每个操作序列对应的评估结果;选择单元,用于根据计算得到的评估结果选取待执行的操作序列。
可选地,选择单元包括:选择子单元,用于根据计算得到的评估结果从与每个更新后的战场信息对应的多个操作序列的评估值中选取最高评估值;处理子单元,用于将最高评估值逐级上报至与每个更新后的战场信息对应的更新前的战场信息,直至从多个操作序列中选出评估值最高的待执行的操作序列。
可选地,上述装置还包括:执行模块,用于在真实战斗环境下,基于当前战场信息执行待执行的操作序列,其中,模拟战斗环境是通过对真实战斗环境进行复制得到的。
根据本发明其中一实施例,还提供了一种存储介质,该存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述操作序列的获取方法。
根据本发明其中一实施例,还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行上述操作序列的获取方法。
根据本发明其中一实施例,还提供了一种服务端,包括:一个或多个处理器,存储器以及一个或多个程序,其中,一个或多个程序被存储在存储器中,并且被配置为由一个或多个处理器执行,一个或多个程序用于执行上述操作序列的获取方法。
在本发明实施例中,采用在模拟战斗环境下获取与当前战场信息对应的多个操作序列,并从多个操作序列中选取待执行的操作序列的方式,通过在模拟战斗环境下预测相关联的真实战斗环境中待执行的操作序列,以此达到在缺少游戏玩家操控的游戏角色数据,无法使用机器学习算法进行决策情况下进行自动战斗的目的,进而解决了相关技术中在缺少游戏玩家操控的游戏角色数据,无法使用机器学习算法进行决策情况下,如何进行自动战斗的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明其中一实施例的操作序列的获取方法的流程图;
图2是根据本发明其中一优选实施例的使用ai算法获取最优操作序列的流程图;
图3是根据本发明其中一实施例的操作序列的获取装置的流程图;
图4是根据本发明其中一优选实施例的操作序列的获取装置的流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明其中一实施例,提供了一种操作序列的获取方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明其中一实施例的操作序列的获取方法的流程图,如图1所示,该方法包括如下步骤:
步骤s12,在模拟战斗环境下获取与当前战场信息对应的多个操作序列;
步骤s14,从多个操作序列中选取待执行的操作序列。
通过上述步骤,采用在模拟战斗环境下获取与当前战场信息对应的多个操作序列,并从多个操作序列中选取待执行的操作序列的方式,通过在模拟战斗环境下预测相关联的真实战斗环境中待执行的操作序列,以此达到在缺少游戏玩家操控的游戏角色数据,无法使用机器学习算法进行决策情况下进行自动战斗的目的,进而解决了相关技术中在缺少游戏玩家操控的游戏角色数据,无法使用机器学习算法进行决策情况下,如何进行自动战斗的技术问题。
上述当前战场信息可以包括但不限于:战斗单元的战斗属性(例如:游戏角色的血量值为100,魔法值为100)。
假设我方阵营包括:游戏角色a和游戏角色b,敌方阵营包括:游戏角色c和游戏角色d。另外,采用数字1-3表示每个游戏角色的职业,其中,1表示法师,2表示坦克,3表示战士。
具体地,当前战场信息可以包括游戏角色a为法师,其属性值包括:攻击100、防御50、速度10、生命1000、魔力1000。游戏角色b为坦克,其属性值包括:攻击50、防御100、速度5、生命2000、魔力1000,站在我方2号位。游戏角色c为战士,其属性值包括:攻击80、防御80、速度11、生命1200、魔力1200。游戏角色d也是战士,其属性值包括:攻击90、防御75、速度10、生命1200、魔力1000。
可选地,在步骤s12中,在模拟战斗环境下获取与当前战场信息对应的多个操作序列可以包括以下执行步骤:
步骤s121,在模拟战斗环境下向预设检测系统发送当前战场信息;
步骤s122,接收预设检测系统返回的基于预设检测规则确定的与当前战场信息对应的多个操作序列。
在没有足够的游戏角色训练数据的情况下,需要使用一个全自动的人工智能(ai)系统来进行自动决策(其为备用系统,便于平时进行自动化测试,是一个独立的系统)。目前,在使用游戏测试框架进行的战斗黑盒每回合需要耗时0.01秒,如果计算1000次便需要10秒,那么一场战斗计算大概需要耗费1分钟,因此,不能完全依托迭代运算来设计ai。而预设检测系统(例如:专家系统(es))的作用在于:过滤明显不合理的操作,以使ai系统针对剩余的合理操作进行迭代计算,这样就大大减少运算量。此外,es的作用还在于:根据当前战场信息获取多个合理的操作序列。
可选地,在步骤s14,从多个操作序列中选取待执行的操作序列之前,还可以包括以下执行步骤:
步骤s15,对于最新得到的多个操作序列中的每个操作序列,分别获取更新后的战场信息,其中,更新后的战场信息是在更新前的战场信息的基础上执行对应的操作序列后得到的;
步骤s16,向预设检测系统发送更新后的战场信息;
步骤s17,接收预设检测系统返回的基于预设检测规则确定的与更新后的战场信息对应的多个操作序列,返回步骤s15,直至满足预设条件。
上述预设条件可以包括但不限于:多回合游戏中每回合对战结束,预先设定的停止条件。图2是根据本发明其中一优选实施例的使用ai算法获取最优操作序列的流程图。该流程的目的在于:选择当前战场(战斗黑盒)的最优下一步操作。
如图2所示,初始战斗黑盒为真实战斗环境,复制黑盒是完全复制初始战斗黑盒后得到的。复制黑盒将当前战场信息发送至es,然后接收es返回的与当前战场信息对应的两个合理的操作序列,即操作序列1和操作序列2。复制黑盒对自身进行复制,并基于当前战场信息执行指令序列1,以得到复制黑盒1。复制黑盒对自身进行复制,并基于当前战场信息执行指令序列2,以得到复制黑盒2。复制黑盒1在基于当前战场信息执行指令序列1之后,向es发送更新后的战场信息,并接收来自于es的与更新后的战场信息对应的两个合理的操作序列,即操作序列11和操作序列12。复制黑盒2在基于当前战场信息执行指令序列2之后,同样需要向es发送更新后的战场信息,并接收来自于es的与更新后的战场信息对应的两个合理的操作序列,即操作序列21和操作序列22。复制黑盒1对自身进行复制,并基于更新后的战场信息执行指令序列11,以得到复制黑盒11。复制黑盒1对自身进行复制,并基于更新后的战场信息执行指令序列12,以得到复制黑盒12。复制黑盒2对自身进行复制,并基于更新后的战场信息执行指令序列21,以得到复制黑盒21。复制黑盒2对自身进行复制,并基于更新后的战场信息执行指令序列22,以得到复制黑盒22。在图2中的结束条件是在得到复制黑盒11、复制黑盒12、复制黑盒21以及复制黑盒22之后,停止继续复制。
可选地,在步骤s14中,从多个操作序列中选取待执行的操作序列可以包括以下执行步骤:
步骤s141,采用预设函数计算与接收步骤确定的全部操作序列中每个操作序列对应的评估结果;
步骤s142,根据计算得到的评估结果选取待执行的操作序列。
上述预设函数可以为估价函数,上述评估结果可以为战斗评分。该估价函数的实施过程在于:先计算出我方阵营全部游戏角色的战斗属性和的乘积mem_score,再计算出敌方阵营全部游戏角色队员的战斗属性和的乘积enm_socre,最后计算mem_socre/(mem_score+enm_score)。由此估价函数evulate的取值在0到1之间,并且取值越大,说明对我方阵营越有利。例如:我方阵营包括游戏角色a和游戏角色b,游戏角色a的战斗属性为:攻击100,防御50,速度10,血量1000,魔力1000,游戏角色b的战斗属性为:攻击50,防御100,速度20,血量1000,魔力1200,则mem_score=(100+50)*(50+100)*(10+20)*(1000+1000)*(1000+1200)。同理,敌方阵营包括游戏角色c和游戏角色d,按照上述计算方式得到enm_socre,继而最终得到evulate的取值。
可选地,在步骤s142中,根据计算得到的评估结果选取待执行的操作序列可以包括以下执行步骤:
步骤s1421,根据计算得到的评估结果从与每个更新后的战场信息对应的多个操作序列的评估值中选取最高评估值;
步骤s1422,将最高评估值逐级上报至与每个更新后的战场信息对应的更新前的战场信息,直至从多个操作序列中选出评估值最高的待执行的操作序列。
如图2所示,采用上述评估函数评估复制黑盒11的分数为战斗评分11,复制黑盒12的分数为战斗评分12,复制黑盒1的分数为战斗评分1=max(战斗评分11,战斗评分12),同理复制黑盒2的分数为战斗评分2=max(战斗评分21,战斗评分22)。进一步地,当战斗评分1>战斗评分2时,选择操作序列1作为当前战场(战斗黑盒)实际需要执行的下一步操作;当战斗评分1<战斗评分2时,选择操作序列2作为当前战场(战斗黑盒)实际需要执行的下一步操作。
需要说明的是,图2中es根据从复制黑盒提取到的战场信息进而返回操作序列1和操作序列2仅为示例性说明,只要es系统根据从复制黑盒提取到的战场信息能够得出的合理操作序列都会反馈至复制合理。
可选地,在步骤s142,根据计算得到的评估结果选取待执行的操作序列之后,还可以包括以下执行步骤:
步骤s143,在真实战斗环境下,基于当前战场信息执行待执行的操作序列,其中,模拟战斗环境是通过对真实战斗环境进行复制得到的。
通过将复制黑盒作为根节点建立的树状结构,并采用估价函数计算得到最优操作序列后,需要将最优操作序列代入至真实战斗环境(即战斗黑盒)中,继而按照最优操作序列来执行下一步操作。
根据本发明其中一实施例,还提供了一种操作序列的获取装置的实施例,图3是根据本发明其中一实施例的操作序列的获取装置的流程图,如图3所示,该装置包括:第一获取模块10,用于在模拟战斗环境下获取与当前战场信息对应的多个操作序列;选择模块20,用于从多个操作序列中选取待执行的操作序列。
可选地,第一获取模块10包括:发送单元(图中未示出),用于在模拟战斗环境下向预设检测系统发送当前战场信息;接收单元(图中未示出),用于接收预设检测系统返回的基于预设检测规则确定的与当前战场信息对应的多个操作序列。
可选地,图4是根据本发明其中一优选实施例的操作序列的获取装置的流程图,如图4所示,上述装置还包括:第二获取模块30,用于对于最新得到的多个操作序列中的每个操作序列,分别获取更新后的战场信息,其中,更新后的战场信息是在更新前的战场信息的基础上执行对应的操作序列后得到的;发送模块40,用于向预设检测系统发送更新后的战场信息;接收模块50,用于接收预设检测系统返回的基于预设检测规则确定的与更新后的战场信息对应的多个操作序列,返回第二获取模块,直至满足预设条件。
可选地,选择模块20包括:确定单元(图中未示出),用于采用预设函数计算与接收模块确定的全部操作序列中每个操作序列对应的评估结果;选择单元(图中未示出),用于根据计算得到的评估结果选取待执行的操作序列。
可选地,选择单元可以包括:选择子单元(图中未示出),用于根据计算得到的评估结果从与每个更新后的战场信息对应的多个操作序列的评估值中选取最高评估值;处理子单元(图中未示出),用于将最高评估值逐级上报至与每个更新后的战场信息对应的更新前的战场信息,直至从多个操作序列中选出评估值最高的待执行的操作序列。
可选地,如图4所示,上述装置还可以包括:执行模块60,用于在真实战斗环境下,基于当前战场信息执行待执行的操作序列,其中,模拟战斗环境是通过对真实战斗环境进行复制得到的。
根据本发明其中一实施例,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述操作序列的获取方法。上述存储介质可以包括但不限于:u盘、只读存储器(rom)、随机存取存储器(ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
根据本发明其中一实施例,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述操作序列的获取方法。上述处理器可以包括但不限于:微处理器(mcu)或可编程逻辑器件(fpga)等的处理装置。
根据本发明其中一实施例,还提供了一种服务端,包括:一个或多个处理器,存储器以及一个或多个程序,其中,一个或多个程序被存储在存储器中,并且被配置为由一个或多个处理器执行,一个或多个程序用于执行上述操作序列的获取方法。在一些实施例中,该服务端用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务端的通信供应商提供的无线网络。在一个实例中,服务端包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,服务端可以包含一个射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。测试终端可以经由数据网络连接或电子连接到服务端(例如:游戏服务器、安全服务器、资源服务器)。数据网络连接可以是局域网连接、广域网连接、因特网连接,或其他类型的数据网络连接。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。