一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

游戏调试方法、装置、设备、存储介质及程序产品与流程

2021-12-01 01:51:00 来源:中国专利 TAG:


1.本技术涉及游戏调试技术领域,尤其涉及一种游戏调试方法、装置、设备、存储介质及程序产品。


背景技术:

2.在游戏开发以及运行期间,通常需要对游戏客户端或游戏服务端进行远程调试,以便于发现游戏中的缺陷(英文:bug)并对其进行及时修复,进而保证玩家能够顺利的进行游戏,提高玩家的游戏体验。
3.目前,对游戏客户端或游戏服务端进行调试主要通过pycharm编辑器与游戏客户端或游戏服务端进行连接,在存储于游戏客户端或游戏服务端中的调试代码中添加集成开发环境(integrated development environment,ide)的网际互连协议(internet protocol,ip)和端口(英文:port)对应的参数,并启动修改后的调试代码,从而对游戏客户端或游戏服务端进行调试。
4.然而,现有技术中无法对游戏客户端或游戏服务端进行无断点调试,用户的游戏体验较差。


技术实现要素:

5.本技术提供一种游戏调试方法、装置、设备、存储介质及程序产品,以解决现有技术中无法对游戏客户端或游戏服务端进行无断点调试,用户的游戏体验较差的问题。
6.第一方面,本技术实施例提供一种游戏调试方法,包括:
7.根据调试请求,获取所述调试请求对应的数据操作执行语句,所述调试请求中包括数据的索引,操作和设备标识;
8.利用预设数据通信协议,向设备标识对应的设备发送所述数据操作执行语句,所述设备包括游戏终端设备或游戏服务器,所述预设数据通信协议是根据远程终端协议确定的;
9.利用所述预设数据通信协议接收所述设备发送的处理结果,所述处理结果为所述设备执行所述数据操作执行语句得到的结果;
10.将所述处理结果发送至所述用户的终端设备。
11.在第一方面的一种可能设计中,所述调试请求中的操作为查询操作时,所述数据操作执行语句用于确定所述索引的数据类型,所述数据类型包括数组,字典,集合,模块,预设基础数据,对象中的任意一种;根据所述数据类型,获取所述索引对应的所述处理结果。
12.可选的,在所述根据所述数据类型,获取所述索引对应的所述处理结果时,所述数据操作执行语句用于获取所述索引对应的第一数据;若所述索引的数据类型为预设基础数据类型,则将所述第一数据对应的属性值确定为所述处理结果;若所述数据类型为非预设基础数据类型,则获取所述第一数据下级的至少一个第二数据;获取至少一个第二数据对应的至少一个第二数据索引,将所述至少一个第二数据索引确定为所述处理结果,每个第
二数据对应于一个第二数据索引。
13.在第一方面的另一种可能设计中,所述调试请求中的操作为修改操作时,所述调试请求包括第一修改数据;
14.相应的,所述数据操作执行语句用于在所述索引的数据类型为预设可修改数据类型时,获取所述索引对应的第二修改数据;将所述第一修改数据与所述第二修改数据进行替换处理,得到所述处理结果,所述处理结果用于表示所述第二修改数据是否被成功替换。
15.在第一方面的再一种可能设计中,所述根据调试请求,生成所述调试请求对应的数据操作执行语句之前,还包括:
16.接收所述用户的终端设备发送的所述调试请求;或者,
17.接收所述用户的终端设备发送的定时生成请求,并开始计时,所述定时生成请求包括预设时长;
18.在计时得到的累计时长等于所述预设时长时,生成所述调试请求。
19.可选的,所述方法还包括:
20.在所述处理结果为所述第一数据,且所述处理结果与平台数据库中预先存储的历史数据不一致时,将所述处理结果存储至所述平台数据库中的变更记录表中;
21.根据所述变更记录表,向所述用户的终端设备发送变更信息,所述变更信息用于提醒用户对所述数据进行查看。
22.可选的,所述方法还包括:
23.基于最小编辑距离算法,获取所述处理结果与所述历史数据的差异性数据,并将所述差异性数据存储至变更记录表中。
24.在第一方面的再一种可能设计中,所述方法还包括:
25.将所述处理结果进行备份处理,生成备份文件,并存储至所述平台数据库,所述备份文件包括所述设备标识、备份数据、所述备份数据的索引。
26.可选的,所述方法还包括:
27.获取所述用户的终端设备发送的还原备份请求,所述还原备份请求包括目标备份文件标识;
28.将所述目标备份文件标识对应的目标备份文件中的备份数据进行反序列处理,获取还原数据;
29.根据所述备份数据的索引以及所述还原数据,生成还原操作执行语句,并将所述还原操作执行语句发送给所述目标设备标识对应的目标设备。
30.可选的,所述还原操作执行语句用于根据所述还原数据的索引,将所述还原数据与所述索引对应的原始数据进行替换处理。
31.第二方面,本技术实施例提供一种游戏调试装置,包括:
32.处理模块,用于根据调试请求,获取所述调试请求对应的数据操作执行语句,所述调试请求中包括数据的索引,操作和设备标识;
33.发送模块,用于利用预设数据通信协议,向设备标识对应的设备发送所述数据操作执行语句,所述设备包括游戏终端设备或游戏服务器,所述预设数据通信协议是根据远程终端协议确定的;
34.接收模块,用于利用所述预设数据通信协议接收所述设备发送的处理结果,所述
处理结果为所述设备执行所述数据操作执行语句得到的结果;
35.所述发送模块,还用于将所述处理结果发送至所述用户的终端设备。
36.在第二方面的一种可能设计中,所述调试请求中的操作为查询操作时,所述数据操作执行语句用于确定所述索引的数据类型,所述数据类型包括数组,字典,集合,模块,预设基础数据,对象中的任意一种;根据所述数据类型,获取所述索引对应的所述处理结果。
37.可选的,在所述根据所述数据类型,获取所述索引对应的所述处理结果时,所述数据操作执行语句用于获取所述索引对应的第一数据;若所述索引的数据类型为预设基础数据类型,则将所述第一数据对应的属性值确定为所述处理结果;若所述数据类型为非预设基础数据类型,则获取所述第一数据下级的至少一个第二数据;获取至少一个第二数据对应的至少一个第二数据索引,将所述至少一个第二数据索引确定为所述处理结果,每个第二数据对应于一个第二数据索引。
38.在第二方面的另一种可能设计中,所述调试请求中的操作为修改操作时,所述调试请求包括第一修改数据;
39.相应的,所述数据操作执行语句用于在所述索引的数据类型为预设可修改数据类型时,获取所述索引对应的第二修改数据;将所述第一修改数据与所述第二修改数据进行替换处理,得到所述处理结果,所述处理结果用于表示所述第二修改数据是否被成功替换。
40.在第二方面的再一种可能设计中,所述接收模块,还用于接收所述用户的终端设备发送的所述调试请求;或者,
41.所述处理模块,还用于接收所述用户的终端设备发送的定时生成请求,并开始计时,所述定时生成请求包括预设时长;
42.所述处理模块,还用于在计时得到的累计时长等于所述预设时长时,生成所述调试请求。
43.可选的,所述处理模块,还用于在所述处理结果为所述第一数据,且所述处理结果与平台数据库中预先存储的历史数据不一致时,将所述处理结果存储至所述平台数据库中的变更记录表中;
44.所述发送模块,还用于根据所述变更记录表,向所述用户的终端设备发送变更信息,所述变更信息用于提醒用户对所述数据进行查看。
45.可选的,所述处理模块,还用于基于最小编辑距离算法,获取所述处理结果与所述历史数据的差异性数据,并将所述差异性数据存储至变更记录表中。
46.在第二方面的又一种可能设计中,所述处理模块,还用于将所述处理结果进行备份处理,生成备份文件,并存储至所述平台数据库,所述备份文件包括所述设备标识、备份数据、所述备份数据的索引。
47.可选的,所述接收模块,还用于获取所述用户的终端设备发送的还原备份请求,所述还原备份请求包括目标备份文件标识;
48.所述处理模块,还用于将所述目标备份文件标识对应的目标备份文件中的备份数据进行反序列处理,获取还原数据;
49.所述处理模块,还用于根据所述备份数据的索引以及所述还原数据,生成还原操作执行语句,并将所述还原操作执行语句发送给所述目标设备标识对应的目标设备。
50.可选的,所述还原操作执行语句用于根据所述还原数据的索引,将所述还原数据
与所述索引对应的原始数据进行替换处理。
51.第三方面,本技术实施例提供一种服务器,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序指令,所述处理器执行所述计算机程序指令时用于实现第一方面以及各可能设计提供的方法。
52.第四方面,本技术实施例可提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现第一方面以及各可能设计提供的方法。
53.第五方面,本技术实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现第一方面以及各可能设计提供的方法。
54.本技术实施例提供的游戏调试方法、装置、设备、存储介质及程序产品,通过根据调试请求,生成调试请求对应的数据操作执行语句,利用预设数据通信协议,向设备标识对应的设备发送数据操作执行语句,利用预设数据通信协议接收设备发送的处理结果,将处理结果发送至用户的终端设备。其中,调试请求中包括数据的索引,操作和设备标识。服务器将获取的数据操作执行语句通过预设数据通信协议发送给调试请求中的设备标识对应的设备,使得设备能够运行数据操作执行语句,获取处理结果,无需中断游戏中玩家的游戏进度,能够在玩家无感知的情况下完成对游戏的调试,提高了用户的游戏体验。
附图说明
55.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
56.图1为本技术实施例提供的游戏调试方法的一种应用场景示意图;
57.图2为本技术实施例提供的游戏调试方法实施例一的流程示意图;
58.图3为本技术实施例提供的游戏调试方法实施例二的流程示意图;
59.图4为本技术实施例提供的游戏调试方法实施例三的流程示意图;
60.图5为本技术实施例提供的游戏调试装置的结构示意图;
61.图6为本技术实施例提供的服务器的结构示意图。
62.通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
63.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
64.在介绍本技术的实施例之前,首先对本技术实施例的应用背景进行解释:
65.在游戏开发期间,通常需要进行开发测试联调,从而对游戏客户端或游戏服务端进行远程调试,以便于发现游戏中的bug;在游戏运营期间,同样需要对游戏客户端或游戏服务端进行远程调试,从而定位一些概率性的难以复现的bug。及时获取游戏中的bug并对
其进行修复,能够保证玩家可以顺利的进行游戏,提高玩家的游戏体验。
66.目前,对游戏客户端或游戏服务端进行调试主要通过ide的断点调试功能,以下为通过ide的断点调试功能对游戏客户端或游戏服务端进行调试的两种方式:
67.1)、服务器中运行有visual studio code(简称:vscode)代码编辑器,调试人员通过基于软件的网络安全解决方案(secure shell,ssh)targets设置游戏服务端的ip、ssh端口以及登录用户名。设置成功后,服务器根据ssh与游戏服务端进行连接,在消除故障(英文:debug)的模式下控制游戏客户端执行待调试的代码,基于python的the python debugger(pdb)模块完成对游戏客户端的远程调试。
68.其中,vscode在远程调试过程中充当终端模拟工具的角色,主要通过remote development插件来实现远程调试功能。
69.示例性的,vscode可以通过下述形式对游戏服务端的ip、ssh端口以及登录用户名进行显示:
70.host端口名称
71.hostname ip
72.user账户名称
73.然而,该方式需要通过vscode在debug模式下控制游戏客户端执行待调试的代码,无法做到对游戏客户端进行无感知调试,测试过程过繁琐,且只能对游戏服务端进行断点调试,无法对游戏客户端进行调试。
74.2)调试人员通过pydevd库的settrace方法连接到指定的pycharm的消除故障服务(英文:debugger server)上,对ide的ip和端口进行配置。服务器利用pycharm编辑器与游戏服务端或游戏客户端进行连接,在存储于游戏客户端/游戏服务端中的调试代码中添加ide的ip和端口对应的参数,启动修改后的调试代码,从而对游戏客户端或游戏服务端进行调试。
75.示例性的,修改后的调试代码可以如下所示:
76.import pydevd
77.pydevd.settrace('xxxx.xx.xxx.xx',port=12345,stdouttoserver=true,stderrtoserver=true)
78.其中,xxxx.xx.xxx.xx为ide的ip,12345为ide的端口。
79.与方法1相比,服务器只需要保证游戏客户端/游戏服务端中被调试的代码能够访问服务器的端口,不需要通过pycharm远程控制游戏客户端/游戏服务端启动被调试的代码,简化了调试过程,解决了不能对游戏客户端进行远程调试的问题。然而,由于需要将ide的ip和端口写入原有的调试代码中,导致修改后的调试代码的灵活度较差。
80.同时,由于方法1和方法2都只能基于pdb模块或pydevd模块进行远程断点调试,无法做到无感知、无断点,影响了用户的游戏体验。
81.针对上述问题,本技术的发明构思如下:现有技术中,需要用户退出游戏才能够对游戏进行调试,影响了用户的游戏进度,导致了用户的游戏体验较差。基于此,发明人发现,若能通过预设的数据通信协议,向待调试的游戏终端设备或待调试的游戏服务器发送数据操作执行语句,使得该数据操作执行语句附着在游戏终端设备或待调试的游戏服务器的进程中,该数据操作执行语句是根据调试请求生成的,就能解决现有技术中需要用户退出游
戏才能够对游戏进行调试,影响用户的游戏进度的问题,从而提高用户的游戏体验。
82.示例性的,本技术实施例提供的游戏调试方法可以应用于图1所示的一种应用场景示意图中。图1为本技术实施例提供的游戏调试方法的一种应用场景示意图,用以解决上述技术问题。如图1所示,该应用场景可以包括:服务器11,游戏服务器12,游戏终端设备13,还可以包括与服务器11连接的终端设备14。
83.示例性的,如图1所示,在游戏服务器12或游戏终端设备13正常运行游戏的应用场景中,终端设备14中安装有浏览器,用户可以通过安装在终端设备14上的浏览器对服务器11进行交互。终端设备14可以响应于用户在浏览器页面上的操作,生成调试请求或定时生成请求,并将调试请求或定时生成请求通过超文本传输协议(hyper text transfer protocol,http)和websocket协议发送给服务器11。
84.示例性的,服务器11可以接收终端设备14发送的调试请求,还可以接收终端设备14发送的定时生成请求,并根据该定时生成请求生成调试请求。服务器11根据调试请求生成数据操作执行语句,并通过预设数据通信协议将数据操作执行语句发送给游戏服务器12或游戏终端设备13,以便于游戏服务器12或游戏终端设备13执行该数据操作执行语句,从而获得处理结果。
85.服务器11还可以获取游戏服务器12或游戏终端设备13返回的处理结果,并发送给终端设备14,以便于终端设备14对其进行显示。
86.下面,通过具体实施例对本技术的技术方案进行详细说明。
87.需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
88.图2为本技术实施例提供的游戏调试方法实施例一的流程示意图。如图2所示,该游戏调试方法可以包括如下步骤:
89.s101:根据调试请求,生成调试请求对应的数据操作执行语句。
90.在一种可实现的方式中,服务器可以根据获取的调试请求,通过预设在服务器中的逻辑算法,生成对应的数据操作执行语句。
91.在另一种可实现的方式中,服务器可以根据调试请求与数据操作执行语句的映射关系,获取调试请求对应的数据操作执行语句。可选的,该映射关系还可以是存储在能够与服务器进行通信连接的平台数据库中的。在服务器接收到调试请求之后,可以将该调试请求发送给该平台数据库。该平台数据库可以根据接收到的调试请求,以及,上述映射关系,获取该调试请求对应的数据操作执行语句,并将该数据操作执行语句发送给服务器。相应的,服务器可以接收该数据操作执行语句。
92.在上述可实现的方式中,该数据操作执行语句可以为服务器接收的终端设备通过http或websocket协议发送的数据操作执行语句,并将其存储至平台数据库。
93.其中,调试请求中包括数据的索引,操作和设备标识,该数据存在于该设备标识对应的设备中。
94.示例性的,操作可以为查询操作(查看该数据),增加操作(增加新的数据到该数据中),删除操作(删除该数据),修改操作(将该数据改成其他值)等。
95.其中,索引的结构为二维数组结构,可以为:[第一级类型,第一级属性值],[第二级类型,第二级属性值],

,[第n级类型,第n级属性值]。为了能更好的对索引的结构进行
解释,以a、b、c三个类型的对象数据为例进行举例说明。下述为a、b、c三个类型的对象数据的定义:
[0096]
class a:
[0097]
a_attr1=“a_attr1”[0098]
a_attr2=“a_attr2”[0099]
class b:
[0100]
b_attr1=“b_attr1”[0101]
b_attr2=a()
[0102]
class c:
[0103]
c_attr1=a()
[0104]
c_attr2=b()
[0105]
由上述示例可知,c类对象数据的层级结构可以如下所示:
[0106][0107]
其中,c_attr1,c_attr2为第一层级;b_attr1,b_attr2为第二层级;b_attr2.a_attr1,b_attr2.a_attr2为第三层级。
[0108]
其中,根据上述示例中数据的层级结构,二维数组的内层的第一项为对应层级的类型,第二项为该层级类型对应的属性值。
[0109]
示例性的,以python语言为例进行举例说明,若数据的索引为[1,"yk79fuepb0mangzx"],[2,"_records"],[3,3],[4,"test"],则代表该数据为id为yk79fuepb0mangzx的对象的_records属性值(为一个数组)的第3项(为一个字典)的key为"test"的值。
[0110]
在上述示例中,层级类型的部分示例,如表1所示。
[0111]
表1
[0112]
层级类型层级类型对应的属性值1对象id2对象属性值3数组类型的下标4字典类型的key5集合类型的id
6对象方法7模块名8其他自定义对象
[0113]
可以理解的是,表1中仅示出了部分层级类型和该层级类型对应的属性值。在实际应用层级类型和该层级类型对应的属性值还可以有其他的表现形式,可以根据实际需求确定,此处不再赘述。
[0114]
应理解,根据该索引,能够唯一确定设备内存中任意对象的任意层级的数据,从而可对其进行增删改查操作。
[0115]
s102:利用预设数据通信协议,向设备标识对应的设备发送数据操作执行语句。
[0116]
其中,设备包括游戏终端设备或游戏服务器,预设数据通信协议是根据远程终端(英文:telnet)协议确定的。
[0117]
在一种具体的实现方式中,服务器基于预设数据通信协议对数据操作执行语句进行封装处理,将封装处理后的数据操作执行语句发送给设备标识对应的设备,封装处理后的数据操作执行语句具有适应异构的能力。
[0118]
服务器基于预设数据通信协议对数据操作执行语句进行封装处理具体包括:服务器将数据操作执行语句放置于预设数据通信协议的协议头和协议尾之间,举例来说,协议头可以为goldeneye_protocol_data_start,协议尾可以为goldeneye_protocol_data_eof。在存在多个数据操作执行语句时,采用“\n”对数据操作执行语句进行数据分割。对数据操作执行语句处理后,还可以将处理后的数据操作执行语句转化为对象简谱化(javascript object notation,json)字符串,从而获取封装处理处理后的数据操作执行语句。
[0119]
其中,服务器通过预设数据通信协议与设备标识对应的设备进行数据传输时,能够使连接池共享,有效防止了频繁创建或频繁销毁连接,有效的节约了开销。
[0120]
示例性的,以服务器通过预设数据通信协议向设备发送数据为例进行举例说明,该数据如下所示:
[0121]
class test:
[0122]
attr1="xxx"
[0123]
attr2="xxx"
[0124]
根据上述示例,利用预设数据通信协议对其进行封装处理后的得到的数据为:goldeneye_protocol_data_start{"attr2":"xxx","attr1":"xxx"}goldeneye_protocol_data_eof。
[0125]
对于设备来说,设备可以在内存中设置局部命名空间,并在该局部命名空间中执行数据操作执行语句,并将执行结果的标准输出流(英文:stdout),标准错误流(英文:stderr)发送给服务器。在局部命名空间中,设备可以直接访问内存中的各变量,还可以在全局执行数据操作执行语句或在指定的对象上执行数据操作执行语句。在指定的对象上执行数据操作执行语句时,可以将对象的值覆盖self变量,使得可以直接使用self变量访问该对象。
[0126]
示例性的,以python语言为例进行举例说明,可以通过下述伪代码来设置局部命名空间,并在该局部命名空间中执行数据操作执行语句:
[0127][0128]
s103:利用预设数据通信协议接收设备发送的处理结果。
[0129]
其中,处理结果为设备执行数据操作执行语句得到的结果。
[0130]
示例性的,该处理结果可以为美国信息交换标准代码(american standard code for information interchange,ascii)数据。服务器利用预设数据通信协议接收设备发送的处理结果后,可以将该处理结果转化成json结构化数据,以便于服务器能够正确解析出设备发送的处理结果。
[0131]
s104:将处理结果发送至用户的终端设备。
[0132]
其中,服务器在获取处理结果后,可以通过http或websocket协议等方式将处理结果发送至用户的终端设备,以便于后续终端设备在接收到处理结果后对其进行显示。
[0133]
本技术实施例提供的游戏调试方法,通过根据调试请求,生成调试请求对应的数据操作执行语句,利用预设数据通信协议,向设备标识对应的设备发送数据操作执行语句,利用预设数据通信协议接收设备发送的处理结果,将处理结果发送至用户的终端设备。其
中,调试请求中包括数据的索引,操作和设备标识。服务器将获取的数据操作执行语句通过预设数据通信协议发送给调试请求中的设备标识对应的设备,使得设备能够运行数据操作执行语句,获取处理结果,无需中断游戏中玩家的游戏进度,能够在玩家无感知的情况下完成对游戏的调试,提高了用户的游戏体验。
[0134]
可选的,在一些实施例中,在s101之前,该游戏调试方法还可以包括:接收用户的终端设备发送的调试请求。或者,接收用户的终端设备发送的定时生成请求,并开始计时。在计时得到的累计时长等于预设时长时,生成调试请求。其中,定时生成请求包括预设时长。
[0135]
可选的,在一些实施例中,当调试请求中的操作为查询操作时,数据操作执行语句用于确定索引的数据类型,根据数据类型,获取索引对应的处理结果。
[0136]
其中,数据类型包括数组,字典,集合,模块,预设基础数据,对象中的任意一种。
[0137]
可选的,在一些实施例中,在上述根据数据类型,获取索引对应的处理结果时,该数据操作执行语句用于获取索引对应的第一数据。
[0138]
示例性的,若该数据类型为对象,则该数据的索引为[1,"xxxx"];若该数据类型为模块,则该数据的索引为[7,"xxxx"]。
[0139]
可选的,可以根据索引遍历内存中的数据,若在内存中无法找到该索引对应的第一数据,则结束执行数据操作执行语句;能找到,则获取索引对应的第一数据。
[0140]
在上述实施例中,该数据操作执行语句还用于若索引的数据类型为预设基础数据类型,则将第一数据对应的属性值确定为处理结果。
[0141]
其中,若索引的数据类型为预设基础数据类型,以python为例进行举例说明,预设基础数据类型可以为int,bool,float,none,basestring,unicode,则直接获取该索引对应的data。
[0142]
在上述实施例中,该数据操作执行语句还用于若数据类型为非预设基础数据类型,则获取第一数据下级的至少一个第二数据。
[0143]
示例性的,若索引的数据类型为对象,获取该对应的对象值。
[0144]
示例性的,若索引的数据类型为字典,则获取该索引对应的字典的key值。其中,以python为例进行举例说明,可通过:data=data.get(key)的方式取值,其中index的第一项为4则表示字典类型,第二项即为key值。
[0145]
示例性的,若索引的数据类型为数组,则获取该数组对应的下标的值。其中,以python为例进行举例说明,可通过:data=data[i]的方式取值,其中index的第一项为3则表示数组类型,第二项即为i的值。
[0146]
示例性的,若索引的数据类型为对象属性,则获取该对象属性的值。其中,以python为例进行举例说明,可通过data=getattr(data,attribute_name)的方式取值,其中index第一项为2则表示对象属性,第二项即为对象属性的值。
[0147]
示例性的,若索引的数据类型为集合,则获取该集合对应的id的值。以python为例,可通过如下代码的方式取值:
[0148][0149]
其中,index第一项为5表示是集合类型,第二项即为id的值。
[0150]
示例性的,若索引的数据类型为对象方法,则获取该对象方法对应的值。其中,以python为例进行举例说明,可通过:data=getattr(data,method_name)的方式取值,index第一项为6则表示是对象方法,第二项即为对象方法对应的值。
[0151]
示例性的,若索引的数据类型为模块,则获取该模块对应的模块值。其中,其中,以python为例进行举例说明,可通过:sys.modules.get(module_name)的方式取值,index第一项为7则表示是模块,第二项即为模块值。
[0152]
在上述实施例中,该数据操作执行语句还用于获取至少一个第二数据对应的至少一个第二数据索引,将至少一个第二数据索引确定为处理结果。
[0153]
其中,每个第二数据对应于一个第二数据索引。
[0154]
示例性的,以python为例进行举例说明,若第一数据为数组,可以通过下述代码遍历所有第二数据,获取每个第二数据索引:
[0155]
for idx,v in enumerate(data):
[0156]
ꢀꢀ
index.append([3,idx])
[0157]
ꢀꢀ
data.append(v)
[0158]
示例性的,以python为例进行举例说明,若第一数据为字典,可以通过下述代码遍历所有第二数据,获取每个第二数据索引:
[0159]
for key,val in data.iteritems():
[0160]
ꢀꢀ
index.append([4,key])
[0161]
ꢀꢀ
data.append(val)
[0162]
示例性的,以python为例进行举例说明,若第一数据为集合,可以通过下述代码遍历所有第二数据,获取每个第二数据索引:
[0163]
for val in data:
[0164]
ꢀꢀ
index.append([5,id(val)])
[0165]
ꢀꢀ
data.append(val)
[0166]
示例性的,以python为例进行举例说明,若第一数据为模块,可以通过下述代码遍历所有第二数据,获取每个第二数据索引:
[0167][0168]
示例性的,以python为例进行举例说明,若第一数据为对象属性,可以通过下述代码遍历所有第二数据,获取每个第二数据索引:
[0169][0170]
对于数据类型为对象来说,本技术实施例生成的数据操作执行语句基于python的objgraph库对数据操作执行语句进行封装,以便于设备通过objgraph的by_type方法来遍历内存中的数据,获取处理结果并将处理结果发送给服务器。
[0171]
对于数据类型为模块来说,本技术实施例生成的数据操作执行语句基于python的sys库对数据操作执行语句进行封装,以便于设备通过sys.modules模块来遍历内存中的数据,获取处理结果并将处理结果发送给服务器。
[0172]
本技术实施例提供的游戏调试方法,数据操作执行语句用于获取任意对象的任意层级的数据,可以对任意对象进行逐层展开,获取处于该对象下级的对象的数据,还可以高效地以多种方式在设备的内存中进行数据搜索。
[0173]
可选的,在一些实施例中,调试请求中的操作为修改操作时,调试请求包括第一修改数据;相应的,数据操作执行语句用于在索引的数据类型为预设可修改数据类型时,获取索引对应的第二修改数据;将第一修改数据与第二修改数据进行替换处理,得到处理结果,处理结果用于表示第二修改数据是否被成功替换。
[0174]
示例性的,以python为例进行举例说明,预设可修改数据类型可以为int,float,bool,basestring,unicode,list,tuple,dict。
[0175]
对于设备来说,可以执行数据操作执行语句实现如下的具体步骤:
[0176]
第1步:根据调试请求中的数据的索引进行数据查找。
[0177]
第2步:判断内存中是否存在该数据索引对应的第二修改数据,若存在则执行第3步,若不存在停止执行数据操作执行语句。
[0178]
第3步:判断第二修改数据是否为预设可修改数据类型,若是则执行第4步,若不存在停止执行数据操作执行语句。
[0179]
第4步:判断第二修改数据与第一修改数据是否具有兼容性,若是则执行第5步,若不存在停止执行数据操作执行语句。
[0180]
示例性的,如第二修改数据的类型为int,且第一修改数据可以转化成int类型,则说明第二修改数据与第一修改数据具有兼容性。
[0181]
第5步:将第一修改数据与第二修改数据进行替换处理,得到处理结果。
[0182]
其中,若第一修改数据与第二修改数据的类型不同,在第5步之前还需要将第一修改数据的类型转换为第二修改数据的类型。
[0183]
在上述任一实施例的基础上,图3为本技术实施例提供的游戏调试方法实施例二的流程示意图。如图3所示,该游戏调试方法可以包括如下步骤:
[0184]
s201:在处理结果为第一数据,且处理结果与平台数据库中预先存储的历史数据不一致时,将处理结果存储至平台数据库中的变更记录表中。
[0185]
在本技术实施例中,用户可以对感兴趣的重点数据进行标记,并向平台发送监控请求,该监控请求包括标记数据的索引、监控频率及设备标识。服务器接收到该监控请求后,按照该监控频率以及该标记数据的索引,定时向设备标识对应的设备发送数据操作执行语句,以便于接收设备返回的处理结果,并将其存储至平台数据库。
[0186]
可选的,服务器还可以基于最小编辑距离算法,获取处理结果与历史数据的差异性数据,并将差异性数据存储至变更记录表中。
[0187]
其中,服务器可以获取处理结果与该结果对应的每个历史数据的差异性数据,还可以获取该处理结果与最新的历史数据的差异性数据。
[0188]
s202:根据变更记录表,向用户的终端设备发送变更信息。
[0189]
其中,服务器可以通过向用户的终端设备发送邮件,发送短信,推送消息等,还可以通过其他即时通讯(instant messaging,im)方式向用户的终端设备发送变更信息,以便于用户通过浏览器或应用程序等方式对变更信息进行查看。
[0190]
其中,变更信息用于提醒用户对数据进行查看。
[0191]
本技术实施例提供的游戏调试方法,可以对设备中用户感兴趣的数据进行监控,以便于查看其对应的历史数据和差异性数据,为后续用户根据接收到的变更信息对该数据进行修改奠定了基础。
[0192]
可选的,在一些实施例中,还可以将处理结果进行备份处理,生成备份文件,并存储至平台数据库,备份文件包括设备标识、备份数据、备份数据的索引。
[0193]
在一种可实现的方式中,用户可以点击终端设备中的图形用户界面的数据备份控件,终端设备响应于用户的点击操作,生成备份请求,并发送给服务器。该备份请求中包括备份数据索引以及设备标识。服务器接收到备份请求后,根据该备份请求,生成调试请求,并根据该调试请求将对应的数据操作执行语句发送给设备标识对应的设备。服务器接收设备执行数据操作执行语句后得到的处理结果,并对该处理结果进行备份。同时,还可以对该处理结果对应的时间戳和索引进行备份。
[0194]
进一步的,服务器还可以基于最小编辑距离算法,获取不同备份文件的差异性数据。
[0195]
进一步的,服务器还可以将备份文件进行导出。例如,可以导出为excel格式的文件。
[0196]
在上述任一实施例的基础上,图4为本技术实施例提供的游戏调试方法实施例三的流程示意图。如图4所示,该游戏调试方法可以包括如下步骤:
[0197]
s301:获取用户的终端设备发送的还原备份请求。
[0198]
其中,还原备份请求包括目标备份文件标识。
[0199]
在本技术实施例中,用户可以根据实际需求,点击图形用户界面中的还原备份控件,终端设备生成还原备份请求并发送给服务器。服务器接收该还原备份请求,以便于后续对其进行处理。
[0200]
其中,服务器可以遍历平台数据库中的全部备份文件,判断平台数据库是否存在目标备份文件标识对应的目标备份文件。若能找到则执行s302,若不能找到则不执行后续步骤。
[0201]
s302:将目标备份文件标识对应的目标备份文件中的备份数据进行反序列处理,获取还原数据。
[0202]
s303:根据备份数据的索引以及还原数据,生成还原操作执行语句,并将还原操作执行语句发送给目标设备标识对应的设备。
[0203]
其中,还原操作执行语句用于根据还原数据的索引,将还原数据与索引对应的原始数据进行替换处理。
[0204]
对于设备目标设备标识对应的目标设备来说,若能够根据备份数据的索引找到对应的原始数据,则执行还原操作执行语句,将还原数据与索引对应的原始数据进行替换处理。若无法找到备份数据的索引对应的原始数据,则不执行还原操作执行语句。
[0205]
本技术实施例提供的游戏调试方法,能够将之前备份处理后的数据进行还原,从而可以高效的重现测试场景。
[0206]
下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
[0207]
图5为本技术实施例提供的游戏调试装置的结构示意图。如图5所示,该游戏调试装置包括:
[0208]
处理模块51,用于根据调试请求,获取调试请求对应的数据操作执行语句,调试请求中包括数据的索引,操作和设备标识;
[0209]
发送模块52,用于利用预设数据通信协议,向设备标识对应的设备发送数据操作执行语句,设备包括游戏终端设备或游戏服务器,预设数据通信协议是根据远程终端协议确定的;
[0210]
接收模块53,用于利用预设数据通信协议接收设备发送的处理结果,处理结果为设备执行数据操作执行语句得到的结果;
[0211]
发送模块52,还用于将处理结果发送至用户的终端设备。
[0212]
在本技术实施例的一种可能设计中,调试请求中的操作为查询操作时,数据操作执行语句用于确定索引的数据类型,数据类型包括数组,字典,集合,模块,预设基础数据,对象中的任意一种;根据数据类型,获取索引对应的处理结果。
[0213]
可选的,在根据数据类型,获取索引对应的处理结果时,数据操作执行语句用于获取索引对应的第一数据;若索引的数据类型为预设基础数据类型,则将第一数据对应的属性值确定为处理结果;若数据类型为非预设基础数据类型,则获取第一数据下级的至少一
个第二数据;获取至少一个第二数据对应的至少一个第二数据索引,将至少一个第二数据索引确定为处理结果,每个第二数据对应于一个第二数据索引。
[0214]
在本技术实施例的另一种可能设计中,调试请求中的操作为修改操作时,调试请求包括第一修改数据;
[0215]
相应的,数据操作执行语句用于在索引的数据类型为预设可修改数据类型时,获取索引对应的第二修改数据;将第一修改数据与第二修改数据进行替换处理,得到处理结果,处理结果用于表示第二修改数据是否被成功替换。
[0216]
在本技术实施例的再一种可能设计中,接收模块53,还用于接收用户的终端设备发送的调试请求;或者,
[0217]
处理模块51,还用于接收用户的终端设备发送的定时生成请求,并开始计时,定时生成请求包括预设时长;
[0218]
处理模块51,还用于在计时得到的累计时长等于预设时长时,生成调试请求。
[0219]
可选的,处理模块51,还用于在处理结果为第一数据,且处理结果与平台数据库中预先存储的历史数据不一致时,将处理结果存储至平台数据库中的变更记录表中;
[0220]
发送模块52,还用于根据变更记录表,向用户的终端设备发送变更信息,变更信息用于提醒用户对数据进行查看。
[0221]
可选的,处理模块51,还用于基于最小编辑距离算法,获取处理结果与历史数据的差异性数据,并将差异性数据存储至变更记录表中。
[0222]
在本技术实施例的又一种可能设计中,处理模块51,还用于将处理结果进行备份处理,生成备份文件,并存储至平台数据库,备份文件包括设备标识、备份数据、备份数据的索引。
[0223]
可选的,接收模块53,还用于获取用户的终端设备发送的还原备份请求,还原备份请求包括目标备份文件标识;
[0224]
处理模块51,还用于将目标备份文件标识对应的目标备份文件中的备份数据进行反序列处理,获取还原数据;
[0225]
处理模块51,还用于根据备份数据的索引以及还原数据,生成还原操作执行语句,并将还原操作执行语句发送给目标设备标识对应的目标设备。
[0226]
可选的,还原操作执行语句用于根据还原数据的索引,将还原数据与索引对应的原始数据进行替换处理。
[0227]
本技术实施例提供的游戏调试装置,可用于执行上述任一实施例中的游戏调试方法,其实现原理和技术效果类似,在此不再赘述。
[0228]
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。此外,这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
[0229]
图6为本技术实施例提供的服务器的结构示意图。如图6所示,该服务器可以包括:
处理器61、存储器62及存储在所述存储器62上并可在处理器61上运行的计算机程序指令,所述处理器61执行所述计算机程序指令时实现前述任一实施例提供的游戏调试方法。
[0230]
可选的,服务器还可以包括与其他设备进行交互的接口。
[0231]
可选的,该服务器的上述各个器件之间可以通过系统总线连接。
[0232]
可选的,该服务器还可以包括及输入/输出接口。
[0233]
其中,输入/输出接口可以包括独立的输出接口和输入接口,也可以为集成输入和输出的集成接口。其中,输出接口用于输出数据,输入接口用于获取输入的数据,上述输出的数据为上述方法实施例中输出的统称,输入的数据为上述方法实施例中输入的统称。
[0234]
存储器62可以是单独的存储单元,也可以是集成在处理器中的存储单元。处理器的数量为一个或者多个。
[0235]
应理解,处理器61可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0236]
系统总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器可能包括随机存取存储器(random access memory,ram),也可能还包括非易失性存储器(non

volatile memory,nvm),例如至少一个磁盘存储器。
[0237]
实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储器中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器(存储介质)包括:只读存储器(read

only memory,rom)、ram、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetic tape)、软盘(英文:floppy disk)、光盘(英文:optical disc)及其任意组合。
[0238]
本技术实施例提供的服务器,可用于执行上述任一方法实施例提供的游戏调试方法,其实现原理和技术效果类似,在此不再赘述。
[0239]
本技术实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行上述游戏调试方法。
[0240]
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器,电可擦除可编程只读存储器,可擦除可编程只读存储器,可编程只读存储器,只读存储器,磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0241]
可选的,将可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,asic)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
[0242]
本技术实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,
该计算机程序存储在计算机可读存储介质中,至少一个处理器可以从该计算机可读存储介质中读取该计算机程序,所述至少一个处理器执行所述计算机程序时可实现上述游戏调试方法。
[0243]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献