一种获取蓝图数据的方法、装置及存储介质

文档序号:57136 发布日期:2021-10-01 浏览:27次 >En<

阅读说明:本技术 一种获取蓝图数据的方法、装置及存储介质 (Method, device and storage medium for acquiring blueprint data ) 是由 张乐 于 2020-03-31 设计创作,主要内容包括:本申请实施例提供一种获取蓝图数据的方法、装置及存储介质,该方法包括:以挂钩hook服务的方式运行注入客户端中的hook插件;通过所述hook插件监听到hook事件后,通过所述hook插件,根据所述hook事件启动所述交互式应用中的预设脚本;通过所述预设脚本从所述客户端获取蓝图数据;向服务器发送所述蓝图数据。本方案不依赖游戏引擎编辑器查看蓝图数据,能够有效提高获取蓝图数据的速度和便利性。(The embodiment of the application provides a method, a device and a storage medium for acquiring blueprint data, wherein the method comprises the following steps: operating a hook plug-in injected into the client in a hook service mode; after a hook event is monitored through the hook plug-in, starting a preset script in the interactive application according to the hook event through the hook plug-in; obtaining blueprint data from the client through the preset script; and sending the blueprint data to a server. The scheme does not depend on a game engine editor to check the blueprint data, and can effectively improve the speed and the convenience for acquiring the blueprint data.)

一种获取蓝图数据的方法、装置及存储介质

技术领域

本申请实施例涉及人工智能

技术领域

,尤其涉及一种获取蓝图数据的方法、装置及存储介质。

背景技术

目前基于游戏引擎的各个游戏项目,对蓝图数据的提取和测试,都是通过在游戏引擎编辑器嵌入插件来实现。具体来说,测试人员需要首先申请所在项目的代码权限,并编译生成编辑器和对应的游戏工程,然后在编辑器中用C++编写插件代码,插件代码经过编译之后才能获取游戏的蓝图数据。

在对现有技术的研究和实践过程中,本申请实施例的发明人发现,由于依赖于游戏引擎编辑器,通过添加插件来实现,所以,每个版本更新拉取代码耗时较长,游戏引擎编辑器编译插件的时间比较长,最终导致整个测试时间耗时较长。

发明内容

本申请实施例提供了一种获取蓝图数据的方法、装置及存储介质,能够不依赖游戏引擎编辑器查看蓝图数据、有效提高获取蓝图数据的速度、扩宽测试面、以及提高对后期客户端的整体测试效率。

第一方面中,本申请实施例提供一种获取蓝图数据的方法,所述方法包括:

以挂钩hook服务的方式运行注入客户端中的hook插件;

通过所述hook插件监听到hook事件后,通过所述hook插件,根据所述hook事件启动所述交互式应用中的预设脚本;

通过所述预设脚本从所述客户端获取蓝图数据;

向服务器发送所述蓝图数据。

一种可能的设计中,所述客户端包括多个技能组件,所述hook事件是指针对所述客户端中的预设脚本的hook操作,所述hook操作包括获取所述客户端中的逻辑控制脚本和各技能组件的配置信息。

一种可能的设计中,所述以挂钩hook服务的方式运行注入客户端中的hook插件之前,所述方法还包括:

获取所述预设脚本,所述预设脚本中包括用于调用所述预设脚本的被hook函数;

将所述预设脚本添加至目标目录,所述目标目录为所述客户端在终端的安装目录;

在所述hook插件中设置hook函数,以及将所述hook插件与所述预设脚本关联,所述hook函数用于对调用所述预设脚本的被hook函数执行hook操作。

一种可能的设计中,所述通过所述预设脚本从所述客户端获取蓝图数据,包括:

获取蓝图路径集合;

根据所述预设脚本加载与所述蓝图路径集合对应的蓝图对象,将所述蓝图对象进行数据变换;

根据客户端标识、客户端版本和数据变换后的蓝图对象,得到所述蓝图数据。

一种可能的设计中,所述根据所述预设脚本加载与所述蓝图路径集合对应的蓝图对象,将所述蓝图对象进行数据变换,包括:

按照蓝图路径的类型,获取多个蓝图路径,以得到所述蓝图路径集合;

通过所述预设脚本,分别对各类型的蓝图路径进行实例化,得到对应的蓝图对象;

获取各蓝图对象的属性和属性值;

根据蓝图对象的属性值,从各蓝图对象中确定预设类型的对象。

一种可能的设计中,所述hook操作还包括更新所述预设脚本;所述方法还包括:

通过所述hook插件监听到hook事件后,获取外部数据,所述外部数据为更新所述预设脚本的数据;

通过所述hook插件,根据所述hook事件启动所述交互式应用中的预设脚本;

根据所述外部数据更新历史预设脚本,以得到所述预设脚本。

一种可能的设计中,所述蓝图数据保存在区块链节点上。

第二方面中,本申请实施例提供一种用于获取蓝图数据的装置,具有实现对应于上述第一方面提供的获取蓝图数据的方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。

一种可能的设计中,所述装置包括:

输入输出模块,用于以挂钩hook服务的方式运行注入客户端中的hook插件;

控制模块,用于通过所述hook插件监听到hook事件后,通过所述hook插件,根据所述hook事件启动所述交互式应用中的预设脚本;

处理模块,用于通过所述预设脚本从所述客户端获取蓝图数据;

所述输入输出模块还用于向服务器发送所述蓝图数据。

一种可能的设计中,所述客户端包括多个技能组件,所述hook事件是指针对所述客户端中的预设脚本的hook操作,所述hook操作包括获取所述客户端中的逻辑控制脚本和各技能组件的配置信息。

一种可能的设计中,所述处理模块在所述输入输出模块以挂钩hook服务的方式运行注入客户端中的hook插件之前,还用于:

通过所述输入输出模块获取所述预设脚本,所述预设脚本中包括用于调用所述预设脚本的被hook函数;

将所述预设脚本添加至目标目录,所述目标目录为所述客户端在终端的安装目录;

在所述hook插件中设置hook函数,以及将所述hook插件与所述预设脚本关联,所述hook函数用于对调用所述预设脚本的被hook函数执行hook操作。

一种可能的设计中,所述处理模块具体用于:

获取蓝图路径集合;

根据所述预设脚本加载与所述蓝图路径集合对应的蓝图对象,将所述蓝图对象进行数据变换;

根据客户端标识、客户端版本和数据变换后的蓝图对象,得到所述蓝图数据。

一种可能的设计中,所述处理模块具体用于:

按照蓝图路径的类型,获取多个蓝图路径,以得到所述蓝图路径集合;

通过所述预设脚本,分别对各类型的蓝图路径进行实例化,得到对应的蓝图对象;

获取各蓝图对象的属性和属性值;

根据蓝图对象的属性值,从各蓝图对象中确定预设类型的对象。

一种可能的设计中,所述hook操作还包括更新所述预设脚本;所述处理模块还用于:

通过所述hook插件监听到hook事件后,通过所述输入输出模块获取外部数据,所述外部数据为更新所述预设脚本的数据;

所述控制模块还用于通过所述hook插件,根据所述hook事件启动所述交互式应用中的预设脚本;

所述处理模块还用于根据所述外部数据更新历史预设脚本,以得到所述预设脚本。

一种可能的设计中,所述蓝图数据保存在区块链节点上。

本申请实施例又一方面提供了一种用于获取蓝图数据的装置,其包括至少一个连接的处理器、存储器和收发器,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述存储器中的计算机程序来执行上述第一方面所述的方法。

本申请实施例又一方面提供了一种计算机可读存储介质,其包括指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。

相较于现有技术,本申请实施例提供的方案中,通过向终端的客户端注入预设脚本,并以hook服务方式运行hook插件,以启动预设脚本,然后通过预设脚本快速的获取该客户端的蓝图数据,一方面,不依赖游戏引擎编辑器查看蓝图数据,所以能够有效提高获取蓝图数据的速度;另一方面,无需代码权限、以及编译引擎编辑器,就能直接使用,从而扩宽测试面以及提高对后期客户端的整体测试效率。

附图说明

图1为本申请实施例中通信系统的一种网络拓扑示意图;

图2为本申请实施例中获取、接收、分析和查看蓝图数据的流程示意图;

图3为本申请实施例中获取蓝图数据的方法的一种流程示意图;

图4为本申请实施例中后台服务器接收和存储蓝图数据的一种流程示意图;

图5a为本申请实施例中在网页按照客户端版本展示一类蓝图数据的一种界面示意图;

图5b为本申请实施例中在网页展示两个客户端版本之间某个武器的蓝图数据差异的一种界面示意图;

图5c为本申请实施例中网页服务器分析和处理蓝图数据的一种流程示意图;

图6为本申请实施例中区块链系统的一种结构示意图;

图7为本申请实施例中用于获取蓝图数据的装置的一种结构示意图;

图8为本申请实施例中用于获取蓝图数据的装置的一种结构示意图;

图9为本申请实施例中终端的一种结构示意图。

具体实施方式

本申请实施例的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请实施例中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个系统中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请实施例中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本申请实施例方案的目的。

本申请实施例供了一种获取蓝图数据的方法、装置及存储介质,可用于测试应用前获取应用的测试数据,例如获取游戏客户端的蓝图数据。该方案可用于服务器侧或者终端侧,本申请实施例仅以终端为例,终端侧部署了用于获取蓝图数据的装置,本申请实施例中用于获取蓝图数据的装置可以是区块链系统中的节点。本申请实施例提供的方案涉及云技术中的人工智能云服务、数据库等技术,具体通过如下实施例进行说明:

云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术(Cloudtechnology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。

人工智能云服务,一般也被称作是AIaaS(AI as a Service,中文为“AI即服务”)。这是目前主流的一种人工智能平台的服务方式,具体来说AIaaS平台会把几类常见的AI服务进行拆分,并在云端提供独立或者打包的服务。这种服务模式类似于开了一个AI主题商城:所有的开发者都可以通过API接口的方式来接入使用平台提供的一种或者是多种人工智能服务,部分资深的开发者还可以使用平台提供的AI框架和AI基础设施来部署和运维自已专属的云人工智能服务。

数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。数据库管理系统(英语:DatabaseManagement System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible MarkupLanguage,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(结构化查询语言(Structured Query Language)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。

一些实施方式中,本方案应用于如图1所示的通信系统时,该通信系统可包括服务器(后台服务器和网页服务器)、多个终端。其中,各终端中均安装客户端,各终端上安装的客户端可为相同或不同版本号的客户端,也可为相同或不同操作系统的客户端,本申请实施例不对客户端的版本、以及客户端对应的操作系统类型作限定。以下进行详细说明。

后台服务器提供后台服务,接收手机上传的蓝图数据,以及将蓝图数据解析并按照项目、版本、数据类型等分类存储。后台服务器中部署游戏引擎,游戏引擎生成预设脚本,然后将预设脚本下发给各终端。其中,游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件,具体为运行某一类游戏的机器设计的能够被机器识别的代码(指令)集合,游戏引擎控制游戏的运行。游戏引擎为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。一个游戏产品可以分为游戏引擎和游戏资源两大部分。游戏资源包括图象,声音,动画等部分,列一个公式就是:游戏=引擎(程序代码)+资源(图象,声音,动画等)。游戏引擎则是按游戏设计的要求顺序地调用这些资源。本申请实施例中的游戏引擎支持多种操作系统(如Linux、Mac OS X、Windows)。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。

网页服务器提供超文本传输协议(Hyper Text Transport Protocol,http)服务,显示过滤后的蓝图数据,以及对各版本件的蓝图数据进行对比,并标注各版本的蓝图数据之间的差异数据。

终端中安装客户端,并注入来自后台服务器的预设脚本,终端通过运行预设脚本来采集客户端的蓝图数据,并向后台服务器上传蓝图数据。

基于图1的通信系统,终端启动客户端后,将预设脚本加载至终端的内存中,以启动预设脚本。通过该预设脚本获取客户端的蓝图数据。各终端分别将获取的蓝图数据上传至后台服务器,后台服务器将这些来自终端的蓝图数据存储到数据库中。网页服务器从数据库中读取这些蓝图数据,然后进行分析,并将这些蓝图数据进行版本展示和差异对比。如图2所示的流程中,对于外部测试人员(例如企业中负责某个游戏开发业务的项目合作人员,该项目合作人员不具备游戏引擎的编辑器权限)而言,在手机上安装游戏测试包,然后在手机的特定目录注入预设脚本,并触发运行待收集蓝图数据的预设脚本,然后运行预设脚本,保存预设脚本收集的蓝图数据,并将蓝图数据上传至后台服务器。然后,内部测试人员(例如企业中负责某个游戏开发业务的项目人员,该项目人员具备游戏引擎的编辑器权限)可通过浏览器登录网页(例如指定网站)的方式,选择职责所在的项目、版本号,在网页上查看被进行版本展示和差异对比的蓝图数据,然后基于这些蓝图数据对客户端进行测试。

其中,需要特别说明的是,本申请实施例涉及的服务器(即后台服务器和网页服务器)可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。本申请实施例涉及的终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例在此不做限制。

本方案旨在游戏引擎基于从终端获取的蓝图数据来测试、以及分析安装于终端的客户端的性能。因此,在执行获取蓝图数据的方法之前,终端需要预先获取预设脚本,然后将预设脚本注入客户端中。注入是指通过一定的黑客技术在客户端中被动执行一段自定义的代码的过程,通过注入可以读取客户端中任意数据和修改任意数据,注入也可称为加载,具体的名称本申请实施例不作限定。具体来说,包括以下步骤:

获取预设脚本,所述预设脚本中包括用于调用所述预设脚本的被hook函数;将所述预设脚本添加至目标目录,所述目标目录为所述客户端在终端的安装目录;该预设脚本可以是本地传入终端或者由服务器下发,此外,由于预设脚本不受编译限制,因此任何人都能改动预设脚本之后再注入终端,改动后注入即会生效。

在所述hook插件中设置hook函数,以及将所述hook插件与所述lua脚本关联,所述hook函数用于对调用所述预设脚本的被hook函数执行hook操作。

其中,hook插件是指用于启动预设脚本的程序,hook插件可包括hook函数、被hook函数和程序接口。hook插件也可称作hook插件。函数的hook是指当客户端执行到某个函数(当需要hook这个函数的时候称这个函数为被hook函数)时,通过修改该函数头部的几条指令,让该函数跳转到自定义的一个函数(一般称之为自定义的hook函数)中去的过程,称之为函数的hook,有时被hook函数逻辑比较复杂的情况下需要在自定义hook函数中实现原函数的功能,这个时候hook框架会提供一个函数指针,调用该函数指针可以完成被hook函数原有功能。一些实施方式中,hook框架提供一个程序接口,用以告诉hook框架需要将某个函数(例如Function1)hook到某个自定义函数(例如Function2)中去,以及提供一个用以实现被hook函数功能的函数。本申请将预设脚本加载到客户端中并执行hook框架,从而将函数Function1hook到Function2中,当客户端执行到Function1的时候会自动走到Function2中,而在Function2就可以编写自定义的代码来代替Function1的逻辑,从而达到修改预设脚本的运行逻辑或者客户端的运行逻辑的目的。

预设脚本为能够支持游戏引擎支持的脚本,例如,游戏引擎可以支持预设脚本来调用C++程序接口。一些实施方式中,预设脚本可包括lua脚本和Python脚本。其中,lua脚本是一种脚本语言,方便嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Python脚本是一种面向对象、解释型计算机程序设计语言,能够把用其他语言制作的各种模块联结在一起,并且能够适应较快速度的代码改写。

一些实施方式中,预设脚本为预先编写,预设脚本具有特定标识,游戏引擎可通过该预设脚本的特定标识去加载预设脚本,以启动终端侧触发预设脚本获取客户端的蓝图数据。游戏引擎提供优先加载指定目录的同名lua源代码文件的功能,因此,在编写完用于收集蓝图数据的预设脚本后,将该lua脚本的名称改为特定标识,然后将该特定标识的预设脚本注入终端上的指定目录。

例如,以向游戏客户端注入lua脚本为例,可将lua脚本注入指定的目标目录。该目标目录是指游戏客户端安装的目录(和放log的目录同级),例如可为/sdcard/Android/data/com.xxx.xx/xx/xx)。游戏客户端在终端启动时,可读取该目标目录,将lua脚本加载到终端的内存中,等待触发对应的收集蓝图数据的程序接口,以启动该lua脚本。

所述客户端包括多个技能组件,例如,攻击、触发等技能组件。客户端也可称作应用程序、交互式应用等,本申请实施例不对此作限定。本申请实施例仅以获取客户端的蓝图数据为例。

参照图3,以下介绍本申请实施例所提供的一种获取蓝图数据的方法,该方案可由用于获取蓝图数据的装置执行,该用于获取蓝图数据的装置应用在终端侧,该蓝图数据也可称作测试数据、性能测试数据等,本申请实施例不对此作限定,后续实施例仅以蓝图数据为例。本申请实施例中的用于获取蓝图数据的装置可以覆盖iOS、Android、Windows、Linux、iMac等操作系统,本申请实施例不对此作限定。本申请实施例包括:

201、以挂钩hook服务的方式运行注入客户端中的hook插件。

其中,hook服务是指用基于hook框架实现的代理去替换原有服务,以达到拓展的目的或者改变原有服务的目的。通过以hook服务的方式在客户端中运行hook插件,即可实现针对客户端中的文件的操作的监控。

在所述hook插件中可设置待监听的自定义hook函数,自定义hook函数与所述客户端中的调用函数关联,该客户端中与自定义hook函数相关联的调用函数可称为被hook函数,当程序执行到该被hook函数时,会跳转至与该被hook函数关联的自定义hook函数中执行,从而改变原来的被hook函数的运行逻辑。因此,在编译好自定义hook函数的代码后,可以将编译好的自定义hook函数编译为预设脚本,然后将该预设脚本注入客户端中。

相应的,在客户端中,以hook服务的方式运行hook插件是指以hook服务的方式在客户端中运行上述hook插件后,该hook插件可用来读取该客户端之外的外部数据,通过读取外部数据可以感知在客户端之外,是否针对与客户端关联的外部数据是否发生变化。例如,客户端升级了,那么可能需要lua脚本也需要对应更新,以获取最新版本客户端的蓝图数据。

例如,游戏客户端启动时,会检测该游戏客户端的安装目录是否存在某个特定标识的lua脚本,如果存在就将该lua脚本加载到终端的内存中,这样lua脚本就可以调用c++程序接口。

游戏客户端启动时,先将lua脚本加载到内存中,等待触发对应的收集蓝图数据的程序接口。触发对应的收集蓝图数据的程序接口的触发机制包括:基于(game master,gm)指令(例如点击游戏的某个按钮或者网页上发送指令)触发,当用户登入到游戏中后,游戏客户端会自动加载目标标识(例如特定名称)的lua脚本到内存中,在收到gm指令触发后就会执行收集蓝图数据的操作。

202、通过所述hook插件监听到hook事件后,通过所述hook插件,根据所述hook事件启动所述交互式应用中的预设脚本。

一些实施方式中,所述hook事件是指针对所述客户端中的预设脚本的hook操作,所述hook操作包括获取所述客户端中的逻辑控制脚本和各技能组件的配置信息。所述hook操作还可包括更新所述预设脚本。

在本申请实施例中,预设脚本除了获取蓝图数据之外还有动态编写、修改功能,还可具备其他功能,例如:远程截图、查看手机目录、上传下载文件、以及自定义实现游戏gm指令。

203、通过所述预设脚本从所述客户端获取蓝图数据。

其中,所述蓝图数据用于所述服务器对所述客户端进行性能测试。例如,该蓝图数据可为从游戏客户端获取的游戏蓝图。游戏蓝图为游戏引擎读取的一类资源,游戏蓝图包含游戏应用程序中逻辑控制的脚本和配置参数,例如,游戏蓝图包含地图的资源、地图的资源对应的概率、武器的伤害,射程,动画时间,对各个身体部位的伤害值等在游戏蓝图中配置的参数。

一些实施方式中,所述获取蓝图数据,包括:

(1)、获取蓝图路径集合。

其中,蓝图路径集合包括多条蓝图路径,蓝图路径是指蓝图数据的访问路径。

一些实施方式中,预设脚本会按类型去读取游戏内存中的存储蓝图路径的表格,从而获取到各个类型的蓝图路径集合。例如,游戏里面用蓝图实现的各个系统都可以,如武器类、时装类、场景地图类、掉落类、AI配置等。蓝图路径一般是通过表格配置,例如,对于A武器来说,它的蓝图路径为/Game/Arts_PlayerBluePrints/Weapon/Aweapon。

(2)、根据所述预设脚本加载与所述蓝图路径集合对应的蓝图对象,将所述蓝图对象进行数据变换。

一些实施方式中,所述根据所述预设脚本加载与所述蓝图路径集合对应的蓝图对象,将所述蓝图对象进行数据变换,包括:

a、按照蓝图路径的类型,获取多个蓝图路径,以得到所述蓝图路径集合。

b、通过所述预设脚本,分别对各类型的蓝图路径进行实例化,得到对应的蓝图对象。

一些实施方式中,对各类型的蓝图路径进行实例化时,可采用slua插件和c++实现lua程序接口(loadclass),在lua脚本中引入slua库,然后slua.loadClass(bppath)就可以得到对应蓝图的一个实例。

c、获取各蓝图对象的属性和属性值。

d、根据蓝图对象的属性值,从各蓝图对象中确定预设类型的对象。

预设类型的对象可以是脚本对象格式(JavaScript Object Notation,json)对象,每个json对象为一个值,可能为一个数组或对象,也可能是一个原始类型的值。

一些实施方式中,对每个实例化的蓝图对象,获取蓝图对象的各个属性和对应的值,对每个值进行筛选,如果蓝图对象的类型是table或者user data,则再对该蓝图对象迭代获取属性和值。例如,蓝图对象A有个属性是B,它的值是C。如果C的类型是bool,number或者string,就可以直接转换为json,如果它的属性是table或者user data,不能转为json,就需要对C再遍历,去看C具有哪些属性。

由于蓝图数据中有很多属性,客户端把这些属性都上传至服务器并存储,如果每个功能测试并不需要关注到蓝图数据中的所有字段,那么服务器从终端获取到蓝图数据后,会从蓝图数据中筛选出其关注的字段并显示。

(3)、根据客户端标识、客户端版本和数据变换后的蓝图对象,得到所述蓝图数据。

例如,终端根据给定的后台服务器的网络地址和端口,与后台服务器建立传输控制协议(Transmission Control Protocol,TCP)连接。运行游戏的程序接口,获取当前的游戏版本号、游戏名和json对象并存储为蓝图数据,然后将这些数据打包后发送到后台服务器。

204、向服务器发送所述蓝图数据。

服务器收到多个终端发送的蓝图数据后,可通过编辑器来查看该蓝图数据。当蓝图数据来自多个终端,且多个终端安装的客户端版本、客户端对应的操作系统类型不同时,服务器可以将这些不同版本的蓝图数据进行对比显示,以便直观的呈现不同版本蓝图数据的差异性。

具体来说,作为服务器的后台服务器收到多个终端发送的蓝图数据后,可启动其内部部署的TCP代理器,循环接收终端中客户端的连接,并将客户端传的蓝图数据存储。后台服务器的主要工作流程如图4所示,启动TCP代理器,检测是否有客户端通过TCP代理器与后台服务器建立TCP连接,若否,则继续等待下一次的TCP连接;若有,则从客户端接收蓝图数据,并解析蓝图数据、获取该客户端的标识、以及客户端的版本号。然后判断对应该客户端的蓝图数据是否已经存在数据库中(即是否存在历史蓝图数据),如果该蓝图数据已经存在于数据库中,则从数据库中获取对应该客户端的蓝图数据,并更新数据库中的蓝图数据;若不存在,则将该蓝图数据保存在数据库中,并将结果反馈给对应的客户端。

测试人员可通过网络登录网页的方式,在网页上查看被进行版本展示和差异对比的蓝图数据,然后基于这些蓝图数据对客户端进行测试。或者,项目人员可通过网络登录网页的方式,在网页上查看被进行版本展示和差异对比的蓝图数据,例如图5a和图5b所示。图5a在网页按照客户端版本展示一类蓝图数据,图5b在网页展示两个客户端版本之间某个武器的蓝图数据差异。

相应的,当蓝图数据来自多个终端,且多个终端安装的客户端版本、客户端对应的操作系统类型不同时,网页服务器可以将这些不同版本的蓝图数据进行对比显示,以便直观的呈现不同版本蓝图数据的差异性。

网页服务器对蓝图数据的处理流程可参考图5c,图5c中,网页服务器从数据库中读取新存储的游戏蓝图数据,游戏蓝图的数据比较多,如果每个功能测试并不需要关注到蓝图数据中的所有字段,那么网页服务器可在从数据库获取到蓝图数据后,可按照筛选规则从蓝图数据中筛选出其关注的字段并显示这些关注的字段。按照蓝图数据中的客户端标识、客户端版本号,从数据库中获取该客户端对应的历史蓝图数据,将筛选后的蓝图数据与历史蓝图数据对比,然后进行差异化存储。

由于蓝图数据的字段一般都是英文参数的命名,不便于阅读,还可按照规则将蓝图数据的字段对应的英文转换为对应表示的中文。数据转换完毕后,取前面几个客户端版本相同的蓝图数据进行对比,并将有差异的蓝图数据存储。当蓝图数据来自多个终端,且多个终端安装的客户端版本、客户端对应的操作系统类型不同时,网页服务器可以将这些不同版本的蓝图数据进行对比显示,以便直观的呈现不同版本蓝图数据的差异性。

与现有技术相比,本申请实施例中,通过向终端的客户端注入预设脚本,并以hook服务方式运行hook插件,以启动预设脚本,然后通过预设脚本快速的获取该客户端的蓝图数据,一方面,不依赖游戏引擎编辑器查看蓝图数据,所以能够有效提高获取蓝图数据的速度;另一方面,无需代码权限、以及编译引擎编辑器,就能直接使用,从而扩宽测试面以及提高对后期客户端的整体测试效率。

此外,由于本申请实施例中的hook插件是以hook服务的方式运行的,且是以感知外部数据的变化来执行预设脚本的运行逻辑的更新,因此,在每一次针对预设脚本更新运行逻辑的过程中,并不需要像现有机制中需要重启客户端,是不会导致客户端中断的情况发生,从而提高客户端的稳定性和hook服务的稳定性。

可选的,在本申请实施例的一些实施例中,可能由于后期对应用的优化或者安全测试等因素,会需要重新对客户端中的调用函数进行hook操作,即需要更新lua脚本,本申请实施例中,为减少因为更新lua脚本引起的多次hook操作,甚至需要重启客户端导致业务中断等问题,可将更新lua脚本和执行lua脚本的操作分离,可基于上述hook插件实现。具体来说,若在客户端之外的外部数据针对lua脚本进行更新操作了,那么hook插件会感知到外部数据已经变化,由于该变化的外部数据是与客户端中的调用函数(即目标被hook函数)相关联的,所以当外部数据变化时,hook插件会重新对客户端中的调用函数进行hook操作,进行hook操作就会改变目标被hook函数的运行逻辑,故可以称由外部数据变化引起的重新hook操作为一次hook事件,相应的,上述hook操作还可以包括更新所述目标被hook函数的运行逻辑,进而更新已注入的历史lua脚本的执行逻辑,进而获取更新的蓝图数据。

可见,只需要为每个被hook函数编译一次自定义函数即可,不需要针对每更新一次lua脚本,就重新编译一次动态数据库,更不需要反复向客户端注入更新的lua脚本、重启客户端等操作,极大提高hook的效率,减少无用功,缩短hook时间,进而提高定位问题函数的效率。尤其是在需要多次修改lua脚本的运行逻辑的测试场景中,可免除编译、再次注入自定义hook函数的过程,因此,与现有机制相比,本发明还可以有效提高测试的效率、缩短测试时间、以及简化测试流程。另外,由于后期修改运行逻辑,并不需要重新编译等操作,所以,不需要修改运行逻辑的应用管理人员具备专业的hook技术知识,即可高效的、准确的完成运行逻辑的修改。

本申请实施例中,上述蓝图数据可保存在区块链中。其中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。

区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。

本申请实施例中执行获取蓝图数据的方法的用于获取蓝图数据的装置(也可称作服务器)可以是区块链系统中的节点。本申请实施例中的用于获取蓝图数据的装置可以是如图6所示的一种区块链系统中的节点。

图1至图6中任一项所对应的实施例中所提及的任一技术特征也同样适用于本申请实施例中的图7-图9所对应的实施例,后续类似之处不再赘述。

以上对本申请实施例中一种获取蓝图数据的方法进行说明,以下对执行上述获取蓝图数据的方法的装置进行介绍。

参阅图7,如图7所示的一种用于获取蓝图数据的装置70的结构示意图,其可应用于测试应用前获取应用的测试数据,例如获取游戏客户端的蓝图数据。本申请实施例中的用于获取蓝图数据的装置70能够实现对应于上述图1所对应的实施例中所执行的获取蓝图数据的方法的步骤。用于获取蓝图数据的装置70实现的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。所述用于获取蓝图数据的装置70可包括输入输出模块701、控制模块702和处理模块703,所述输入输出模块701、所述控制模块702和所述处理模块703的功能实现可参考图1所对应的实施例,此处不作赘述。

一些实施方式中,所述输入输出模块701可用于以挂钩hook服务的方式运行注入客户端中的hook插件;

所述控制模块702可用于通过所述hook插件监听到hook事件后,通过所述hook插件,根据所述hook事件启动所述交互式应用中的预设脚本;

所述处理模块703可用于通过所述预设脚本从所述客户端获取蓝图数据;

所述输入输出模块701还用于向服务器发送所述蓝图数据。

本申请实施例中,输入输出模块701向终端的客户端注入预设脚本,处理模块703以hook服务方式运行hook插件,以启动预设脚本,即可通过预设脚本快速的获取该客户端的蓝图数据,一方面,不依赖游戏引擎编辑器查看蓝图数据,所以能够有效提高获取蓝图数据的速度;另一方面,无需代码权限、以及编译引擎编辑器,就能直接使用,从而扩宽测试面以及提高对后期客户端的整体测试效率。

一些实施方式中,所述客户端包括多个技能组件,所述hook事件是指针对所述客户端中的预设脚本的hook操作,所述hook操作包括获取所述客户端中的逻辑控制脚本和各技能组件的配置信息。

一些实施方式中所述处理模块在所述输入输出模块701以挂钩hook服务的方式运行注入客户端中的hook插件之前,还用于:

通过所述输入输出模块701获取所述预设脚本,所述预设脚本中包括用于调用所述预设脚本的被hook函数;

将所述预设脚本添加至目标目录,所述目标目录为所述客户端在终端的安装目录;

在所述hook插件中设置hook函数,以及将所述hook插件与所述预设脚本关联,所述hook函数用于对调用所述预设脚本的被hook函数执行hook操作。

一些实施方式中,所述处理模块703具体用于:

获取蓝图路径集合;

根据所述预设脚本加载与所述蓝图路径集合对应的蓝图对象,将所述蓝图对象进行数据变换;

根据客户端标识、客户端版本和数据变换后的蓝图对象,得到所述蓝图数据。

一些实施方式中,所述处理模块703具体用于:

按照蓝图路径的类型,获取多个蓝图路径,以得到所述蓝图路径集合;

通过所述预设脚本,分别对各类型的蓝图路径进行实例化,得到对应的蓝图对象;

获取各蓝图对象的属性和属性值;

根据蓝图对象的属性值,从各蓝图对象中确定预设类型的对象。

一些实施方式中,所述hook操作还包括更新所述预设脚本;所述处理模块还703用于:

通过所述hook插件监听到hook事件后,通过所述输入输出模块701获取外部数据,所述外部数据为更新所述预设脚本的数据;

所述控制模块702还用于通过所述hook插件,根据所述hook事件启动所述交互式应用中的预设脚本;

所述处理模块703还用于根据所述外部数据更新历史预设脚本,以得到所述预设脚本。

上面从模块化功能实体的角度对本申请实施例中的用于获取蓝图数据的装置进行了描述,下面从硬件处理的角度分别对本申请实施例中的执行获取蓝图数据的方法的装置进行描述。需要说明的是,在本申请实施例图7所示的实施例中的输入输出模块701对应的实体设备可以为输入/输出单元、收发器、射频电路、射频(英文全称:Radio Frequency,英文简称:RF)电路、通信模块和输出接口等,控制模块702和处理模块703对应的实体设备可以为处理器。图7所示的装置70可以具有如图8所示的结构,当图7所示的装置70具有如图8所示的结构时,图8中的处理器和输入输出单元能够实现前述对应该装置的装置实施例提供的输入输出模块701、控制模块702和处理模块703相同或相似的功能,图8中的存储器存储处理器执行上述获取蓝图数据的方法时需要调用的计算机程序。

本申请实施例还提供了另一种能够实现上述获取蓝图数据的方法的终端,如图9所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(英文全称:Personal Digital Assistant,英文简称:PDA)、销售终端(英文全称:Point of Sales,英文简称:POS)、车载电脑等任意终端设备,以终端为手机为例:

图9示出的是与本申请实施例提供的终端相关的手机的部分结构的框图。参考图9,手机包括:RF电路99、存储器920、输入单元930、显示单元940、传感器950、音频电路960、无线保真(英文全称:wireless fidelity,英文简称:Wi-Fi)模块970、处理器990、以及电源990等部件。本领域技术人员可以理解,图9中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图9对手机的各个构成部件进行具体的介绍:

RF电路99可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器990处理;另外,将设计上行的数据发送给基站。通常,RF电路99包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:Low NoiseAmplifier,英文简称:LNA)、双工器等。此外,RF电路99还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(英文全称:Global System of Mobile communication,英文简称:GSM)、通用分组无线服务(英文全称:General Packet Radio Service,英文简称:GPRS)、码分多址(英文全称:Code Division Multiple Access,英文简称:CDMA)、宽带码分多址(英文全称:WidebandCode Division Multiple Access,英文简称:WCDMA)、长期演进(英文全称:Long TermEvolution,英文简称:LTE)、电子邮件、短消息服务(英文全称:Short Messaging Service,英文简称:SMS)等。

存储器920可用于存储软件程序以及模块,处理器990通过运行存储在存储器920的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器920可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

输入单元930可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元930可包括触控面板931以及其他输入设备932。触控面板931,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板931上或在触控面板931附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板931可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器990,并能接收处理器990发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板931。除了触控面板931,输入单元930还可以包括其他输入设备932。具体地,其他输入设备932可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示单元940可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元940可包括显示面板941,可选的,可以采用液晶显示器(英文全称:LiquidCrystal Display,英文简称:LCD)、有机发光二极管(英文全称:Organic Light-EmittingDiode,英文简称:OLED)等形式来配置显示面板941。进一步的,触控面板931可覆盖显示面板941,当触控面板931检测到在其上或附近的触摸操作后,传送给处理器990以确定触摸事件的类型,随后处理器990根据触摸事件的类型在显示面板941上提供相应的视觉输出。虽然在图9中,触控面板931与显示面板941是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板931与显示面板941集成而实现手机的输入和输出功能。

手机还可包括至少一种传感器950,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板941的亮度,接近传感器可在手机移动到耳边时,关闭显示面板941和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路960、扬声器961,传声器962可提供用户与手机之间的音频程序接口。音频电路960可将接收到的音频数据转换后的电信号,传输到扬声器961,由扬声器961转换为声音信号输出;另一方面,传声器962将收集的声音信号转换为电信号,由音频电路960接收后转换为音频数据,再将音频数据输出处理器990处理后,经RF电路99以发送给比如另一手机,或者将音频数据输出至存储器920以便进一步处理。

Wi-Fi属于短距离无线传输技术,手机通过Wi-Fi模块970可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了Wi-Fi模块970,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变申请的本质的范围内而省略。

处理器990是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器920内的软件程序和/或模块,以及调用存储在存储器920内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器990可包括一个或多个处理单元;优选的,处理器990可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器990中。

手机还包括给各个部件供电的电源990(比如电池),优选的,电源可以通过电源管理系统与处理器990逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。

在本申请实施例中,该手机所包括的处理器990还具有控制由用于获取蓝图数据的装置70中各模块的所执行的步骤。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请实施例所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本申请实施例各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

以上对本申请实施例所提供的技术方案进行了详细介绍,本申请实施例中应用了具体个例对本申请实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请实施例的限制。

26页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:对象投放方法、装置、电子设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类