运动轨迹的生成方法和装置与流程
本发明涉及游戏测试领域,具体而言,涉及一种运动轨迹的生成方法和装置。
背景技术:
目前球类游戏中大量涉及到球的运动轨迹,为了确保球类游戏指令,需要进行球的轨迹集测试。传统方法主要包括如下两种类型:第一种是直接观察法,通过反复运行游戏,观察游戏中球的运动轨迹和表现效果是否合理且符合规范;第二种是模拟仿真法,借助于计算机仿真软件,例如matlab,采用画图的方式将球的轨迹可视化,以此来模拟或者查看球的运动轨迹效果。
但是,上述传统方法存在明显的局限性,直接观察法缺乏流程控制和参数设置,难以覆盖到所有可能发生的情况,而且在测试过程中发现问题,也难以确定原因,不利于问题的追踪;模拟仿真法虽然能够模拟出各种情况下球的轨迹运动效果,但是并没有与实际的游戏表现效果相结合,局限性较大。
针对上述的问题,目前尚未提出有效的解决方案。
技术实现要素:
本发明实施例提供了一种运动轨迹的生成方法和装置,以至少解决相关技术中运动轨迹的生成方法局限性较大的技术问题。
根据本发明实施例的一个方面,提供了一种运动轨迹的生成方法,包括:获取测试指令,其中,测试指令用于生成目标对象的运动轨迹,测试指令包括:轨迹类型和轨迹参数;基于测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定目标运动轨迹,其中,多条预设运动轨迹中每条预设运动轨迹分别用于表征目标对象在游戏场景中,基于不同初始条件从开始运动至停止运动的过程中的运动信息;显示目标运动轨迹。
可选地,基于测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定目标运动轨迹包括:基于轨迹类型和轨迹参数,确定第一初始条件,其中,第一初始条件至少包括:目标对象的初始速度和初始位置;将第一初始条件与多条预设运动轨迹进行匹配,得到第一运动轨迹;基于第一运动轨迹,确定目标对象下落至预设平面后是否弹起;如果确定目标对象下落至预设平面后弹起,则基于第一运动轨迹确定第一初始条件,并返回执行将第一初始条件与多条预设运动轨迹进行匹配,以及确定目标对象下落至预设平面后是否弹起的步骤,直至确定目标对象下落至预设平面后不弹起;如果确定目标对象下落至预设平面后不弹起,则基于匹配得到的最后一条运动轨迹确定第二初始条件,并将第二初始条件与多条预设运动轨迹进行匹配,得到第二运动轨迹;基于将匹配得到的多条运动轨迹进行拼接,得到目标运动轨迹。
可选地,第一初始条件还包括:目标对象的目标位置和拉伸方式,其中,在确定目标对象下落至预设平面后是否弹起之前,该方法还包括:基于目标位置和拉伸方式,对第一运动轨迹进行截取和拉伸,得到处理后的运动轨迹;基于处理后的运动轨迹,确定目标对象下落至预设平面后是否弹起。
可选地,将第一初始条件与多条预设运动轨迹进行匹配,得到第一运动轨迹包括:基于第一初始条件,使用树算法和数据结构对多条预设运动轨迹进行筛选,得到第一运动轨迹。
可选地,通过第一进程获取轨迹类型和轨迹参数,并基于轨迹类型和轨迹参数生成测试指令;通过第二进程基于第一进程发送的测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定目标运动轨迹;通过第二进程显示目标运动轨迹。
可选地,每条预设运动轨迹为第二进程基于不同初始条件控制目标对象在游戏中运动生成。
可选地,通过第一进程获取轨迹类型和轨迹参数包括如下之一:通过第一进程接收第一输入控件输入的轨迹类型和轨迹参数;通过第一进程加载测试用例,并获取测试用例中存储的轨迹类型和轨迹参数;通过第一进程导入表格文件,并获取表格文件中存储的轨迹类型和轨迹参数。
可选地,在通过第一进程接收第一输入控件输入的轨迹类型和轨迹参数之后,该方法还包括:在接收到保存指令之后,通过第一进程将轨迹类型和轨迹参数存储至新的测试用例中。
可选地,通过第一进程将轨迹类型和轨迹参数存储至新的测试用例中包括:通过第一进程获取第二输入控件中输入的存储地址;通过第一进程将新的测试用例存储至存储地址。
可选地,在通过第一进程获取轨迹类型和轨迹参数之前,该方法还包括:启动第一进程和第二进程;通过第一进程发送初始化指令至第二进程;通过第二进程基于初始化指令进行游戏场景初始化。
可选地,在通过第一进程发送初始化指令至第二进程之前,该方法还包括:获取第一进程对应的网络地址和端口号;通过网络地址和端口号,建立第一进程和第二进程的通信连接。
可选地,在通过第二进程基于第一进程发送的测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配之前,该方法还包括:通过第二进程对测试指令进行解析,得到指令信息和指令参数;通过第二进程基于指令信息和指令参数确定目标执行逻辑;通过第二进程执行目标执行逻辑;其中,在目标执行逻辑为轨迹生成逻辑的情况下,通过第二进程基于第一进程发送的测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定目标运动轨迹。
根据本发明实施例的另一方面,还提供了一种运动轨迹的生成装置,包括:获取模块,用于获取测试指令,其中,测试指令用于生成目标对象的运动轨迹,测试指令包括:轨迹类型和轨迹参数;匹配模块,用于基于测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定目标运动轨迹,其中,多条预设运动轨迹中每条预设运动轨迹分别用于表征目标对象在游戏场景中,基于不同初始条件从开始运动至停止运动的过程中的运动信息;显示模块,用于显示目标运动轨迹。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,在程序运行时控制计算机可读存储介质所在设备执行上述的运动轨迹的生成方法。
根据本发明实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述的运动轨迹的生成方法。
在本发明实施例中,在获取到的测试指令之后,可以基于测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定并显示目标运动轨迹,实现球的轨迹集测试的目的,由于多条预设运动轨迹是游戏中球的运动轨迹,并不是仿真得到的运动轨迹,而且目标运动轨迹是基于获取到的测试指令所确定的,从而达到了降低方法局限性,提高方法针对性和通用性的技术效果,进而解决了相关技术中运动轨迹的生成方法局限性较大的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种运动轨迹的生成方法的流程图;
图2是根据本发明实施例的一种可选的球的轨迹生成的流程图;
图3是根据本发明实施例的一种可选的球的轨迹集测试环境系统结构的示意图;
图4是根据本发明实施例的一种可选的测试环境编辑器进程的模块示意图;
图5是根据本发明实施例的一种可选的ui面板的示意图;
图6是根据本发明实施例的一种可选的游戏进程的模块示意图;
图7是根据本发明实施例的一种可选的球的轨迹集测试环境的使用流程图;
图8是根据本发明实施例的一种运动轨迹的生成装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种运动轨迹的生成方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种运动轨迹的生成方法的流程图,如图1所示,该方法包括如下步骤:
步骤s102,获取测试指令,其中,测试指令用于生成目标对象的运动轨迹,测试指令包括:轨迹类型和轨迹参数。
上述步骤中的目标对象可以是指二维或三维球类运动中的球。轨迹类型可以是指球的轨迹类型,不同球类运动中轨迹类型不同,因此,可以预先定义好各种轨迹类型由用户进行选择,例如,轨迹类型可以是反弹球轨迹。轨迹参数可以是指轨迹有关的关键参数,不同轨迹类型对应的轨迹参数不同,例如,对于反弹球轨迹,轨迹参数可以是球的初始位置、速度矢量、水平转速和垂直转速等。
在一种可选的实施例中,当需要对球的轨迹集测试时,用户可以通过直接输入轨迹类型和轨迹参数的方式生成测试指令,也可以通过其他方式确定轨迹类型和轨迹参数,并生成相应的测试指令。
步骤s104,基于测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定目标运动轨迹,其中,多条预设运动轨迹中每条预设运动轨迹分别用于表征目标对象在游戏场景中,基于不同初始条件从开始运动至停止运动的过程中的运动信息。
游戏中球的运动信息需要按帧进行更新,对于写实类的球的运动轨迹,需要按照真实的物理场景进行运动,其中涉及到大量的物理和数学运算,为了降低计算资源的消耗,在本发明实施例中,上述步骤中的预设运动轨迹可以是在测试之间,根据游戏内轨迹集生成算法离线算法的运动轨迹,并将多条预设运动轨迹进行缓存,每条预设运动轨迹记录了游戏内球从初始条件开始运动,直至停止运动过程中每一帧的运动信息,例如,速度、旋转等。初始条件可以是指球的初始速度、初始位置等,但不仅限于此。
在一种可选的实施例中,在接收到测试指令之后,可以对球的运动轨迹进行测试,直接通过获取到的轨迹类型和轨迹参数查找缓存中的多条预设运动轨迹,得到相匹配的运动轨迹,也即上述的目标运动轨迹。
步骤s106,显示目标运动轨迹。
在一种可选的实施例中,可以在游戏窗口中显示相匹配的运动轨迹,从而可以查看并验证游戏中球的运动轨迹情况。
通过本发明上述实施例,在获取到的测试指令之后,可以基于测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定并显示目标运动轨迹,实现球的轨迹集测试的目的,由于多条预设运动轨迹是游戏中球的运动轨迹,并不是仿真得到的运动轨迹,而且目标运动轨迹是基于获取到的测试指令所确定的,从而达到了降低方法局限性,提高方法针对性和通用性的技术效果,进而解决了相关技术中运动轨迹的生成方法局限性较大的技术问题。
可选地,基于测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定目标运动轨迹包括:基于轨迹类型和轨迹参数,确定第一初始条件,其中,第一初始条件至少包括:目标对象的初始速度和初始位置;将第一初始条件与多条预设运动轨迹进行匹配,得到第一运动轨迹;基于第一运动轨迹,确定目标对象下落至预设平面后是否弹起;如果确定目标对象下落至预设平面后弹起,则基于第一运动轨迹确定第一初始条件,并返回执行将第一初始条件与多条预设运动轨迹进行匹配,以及确定目标对象下落至预设平面后是否弹起的步骤,直至确定目标对象下落至预设平面后不弹起;如果确定目标对象下落至预设平面后不弹起,则基于匹配得到的最后一条运动轨迹确定第二初始条件,并将第二初始条件与多条预设运动轨迹进行匹配,得到第二运动轨迹;基于将匹配得到的多条运动轨迹进行拼接,得到目标运动轨迹。
上述步骤中的预设平面可以是指地面等球可以弹起的平面,在本发明实施例中,以地面为例进行说明。第一初始条件可以包括但不限于:球的初始速度、初始位置、目标位置和拉伸方式等。
需要说明的是,球在下落至地面之后往往会弹起,球每次弹起的位置和速度等不同,因此可以确定出不同的初始条件,进而匹配到不同的运动轨迹。因此,上述的目标运动轨迹可以由多段相匹配的运动轨迹进行拼接得到。
在一种可选的实施例中,首先可以基于输入的轨迹类型和轨迹参数确定第一初始条件,进一步基于第一初始条件进行轨迹筛选,筛选出一条缓存中存储的相匹配的运动轨迹(即上述的第一运动轨迹)。其次,判断该运动轨迹中,球落地口是否会弹起,如果是,则通过上述步骤继续生成后续的空中轨迹;如果否,则通过上述步骤生成一段地面轨迹,并将相匹配的所有运动轨迹按顺序进行拼接,可以得到上述的目标运动轨迹。
可选地,第一初始条件还包括:目标对象的目标位置和拉伸方式,其中,在确定目标对象下落至预设平面后是否弹起之前,该方法还包括:基于目标位置和拉伸方式,对第一运动轨迹进行截取和拉伸,得到处理后的运动轨迹;基于处理后的运动轨迹,确定目标对象下落至预设平面后是否弹起。
在一种可选的实施例中,在筛选出相匹配的运动轨迹后,可以将其信息、球的初始位置和目标位置输入到下一步骤,在下一步骤中,对筛选出相匹配的运动轨迹进行截取和拉伸,其中,可以按照球的初始位置和目标位置对上述运动轨迹进行截取,并按照拉伸方式对截取后的运动轨迹进行拉伸,得到处理后的一段运动轨迹。
需要说明的是,上述处理后的一段运动轨迹属于半成品,需要等待球落地后是否弹起来继续构造目标运动轨迹。
可选地,将第一初始条件与多条预设运动轨迹进行匹配,得到第一运动轨迹包括:基于第一初始条件,使用树算法和数据结构对多条预设运动轨迹进行筛选,得到第一运动轨迹。
在一种可选的实施例中,为了实现高效的轨迹筛选过程,可以使用kd(kdimension,k维)树算法和数据结构实现轨迹筛选。
下面结合图2对本发明一种优选的实施例进行详细说明。如图2所示,该方法可以包括如下步骤:
步骤s21,开始;
步骤s22,输入为轨迹类型和轨迹参数,设置初始条件,包括:球的初始速度、初始位置、目标位置和拉伸方式等;
步骤s23,使用kd树算法和数据结构进行轨迹筛选;
步骤s24,通过筛选得到一条缓存中相匹配的轨迹,将其信息、运动初始位置和目标位置等输入到下一步骤(步骤s25);
步骤s25,对上一步筛选得到的原始轨迹进行截取和拉伸,得到处理后的一段轨迹。
步骤s26,将上一步处理后的一段轨迹和球运动信息传入下一步骤(步骤s27);
步骤s27,判断输入的轨迹中,球落地后是否会弹起,若会弹起,则进入步骤s28,继续生成后续的空中轨迹;否则,进入步骤s29,生成一段地面轨迹并进行轨迹拼接;
步骤s28,根据上述步骤s22至步骤s26的流程和方法生成一段空中轨迹并返回步骤s27;
步骤s29,根据上述步骤s22至步骤s26的流程和方法生成一段地面轨迹,然后将上述生成的多段轨迹按顺序进行拼接,得到一条完整的轨迹;
步骤s210,返回得到的完整轨迹,包含球从运动到静止每一帧的运动信息;
步骤s211,结束。
通过上述步骤实现了目标运动轨迹的快速检索、拼接和生成。
可选地,通过第一进程获取轨迹类型和轨迹参数,并基于轨迹类型和轨迹参数生成测试指令;通过第二进程基于第一进程发送的测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定目标运动轨迹;通过第二进程显示目标运动轨迹。
为了避免游戏出问题导致整个测试环境崩溃,或者测试环境出问题导致游戏崩溃的问题,在本发明实施例中,可以采用双进程架构的特点,将第一进程和第二进程分开,两个进程之间可以通过中间层,例如,进程间通信接口进行连接,并采用rpc(remoteprocedurecall,远程过程调用)方式进行通信和交互。
上述步骤中的第一进程可以是指测试环境编辑器进程,第二进程可以是指游戏进程,测试环境编辑器进程用于配置测试中使用的各种参数,游戏进程用于提供测试需要的游戏环境。例如,如图3所示,球的轨迹测试集测试环境系统可以划分为两部分,测试环境编辑器进程32和游戏进程34,两个进程之间通过一个中间层来连接(即进程间通信接口),采用rpc方式来进行通信和交互。
在一种可选的实施例中,用户可以通过第一进程配置球的轨迹类型和轨迹参数等,并生成相应的测试指令,该测试指令发送至第二进程,进一步通过第二进程执行该测试指令,并通过轨迹筛选的方式从多条预设运动轨迹中确定目标运动轨迹,第二进程可以直接将目标运动轨迹显示在游戏窗口中。
需要说明的是,在游戏中,球的运动是每帧渲染的,因此可以看到球在运动,直至停止的整个过程。
可选地,每条预设运动轨迹为第二进程基于不同初始条件控制目标对象在游戏中运动生成。
在一种可选的实施例中,在开始测试之前,第二进程可以提供一个游戏内轨迹生成算法,通过该算法离线确定不同的轨迹集进行缓存。从而在测试中可以直接对缓存中的轨迹集进行查找,即可确定目标运动轨迹。
可选地,通过第一进程获取轨迹类型和轨迹参数包括如下之一:通过第一进程接收第一输入控件输入的轨迹类型和轨迹参数;通过第一进程加载测试用例,并获取测试用例中存储的轨迹类型和轨迹参数;通过第一进程导入表格文件,并获取表格文件中存储的轨迹类型和轨迹参数。
在一种可选的实施例中,第一进程可以提供给用户一个交互界面,该界面中不仅包含了配置球轨迹集所需的各种参数,还包括执行按钮和其他辅助功能控件。上述步骤中的第一输入控件可以是指轨迹类型的输入控件和轨迹参数的输入控件,其中,为了方便用户使用,轨迹类型的输入控件可以是下拉菜单控件,用户通过选择可以确定轨迹类型;轨迹参数的输入控件可以包括不同参数对应的参数值的输入框,用户可以通过手动输入的方式设置不同轨迹参数对应的参数值。
为了避免人工反复配置轨迹类型和轨迹参数的繁琐过程,可以通过加载测试用例的方式,直接将测试用例中的参数及配置自动填入至交互界面中。
另外,由于球的轨迹种类繁多,每种轨迹对应的参数也可能数目众多,为了方便用户在电子表格中高效编辑参数,并批量转化为测试用例,从而提升工作效率。可以通过表格文件的导入,将表格文件中的参数和配置转化为可供求的轨迹集测试环境所加载的测试用例(json格式文件)。
需要说明的是,在轨迹类型和轨迹参数输入或生成完毕之后,用户可以通过点击交互界面上的“执行按钮”,控制第一进程向第二进程发送测试指令,触发第二进程生成并展示球的运动轨迹。
可选地,在通过第一进程接收第一输入控件输入的轨迹类型和轨迹参数之后,该方法还包括:在接收到保存指令之后,通过第一进程将轨迹类型和轨迹参数存储至新的测试用例中。
上述步骤中的保存指令可以是交互界面中“保存方案到文件”按钮被用户点击后生成的指令。
在一种可选的实施例中,用户可以通过“保存方案到文件”功能,将交互界面中的配置内容保存为本地文件(json格式),也即,存储至新的测试用例中。
可选地,通过第一进程将轨迹类型和轨迹参数存储至新的测试用例中包括:通过第一进程获取第二输入控件中输入的存储地址;通过第一进程将新的测试用例存储至存储地址。
上述步骤中的第二输入控件可以是“默认保存路径”控件,用户可以通过该控件设置测试用例的默认保存路径,如果用户不进行设置,则默认保存路径保持不变。
在一种可选的实施例中,如果用户设置新的默认保存路径,则可以通过第一进程将生产的新的测试用户保存至该默认保存路径中。
可选地,在通过第一进程获取轨迹类型和轨迹参数之前,该方法还包括:启动第一进程和第二进程;通过第一进程发送初始化指令至第二进程;通过第二进程基于初始化指令进行游戏场景初始化。
在一种可选的实施例中,由于球的轨迹集测试的场景无需十分复杂,包含基本的球即可,还可以增加一些镜头以及用于辅助的可视化相关设置。因此,在第一进程和第二进程启动成功之后,首先通过第一进程发送初始化指令至第二进程,由第二进程对球的轨迹集测试环境所必需的基本游戏场景进行初始化。
可选地,在通过第一进程发送初始化指令至第二进程之前,该方法还包括:获取第一进程对应的网络地址和端口号;通过网络地址和端口号,建立第一进程和第二进程的通信连接。
需要说明的是,测试环境编辑器进程和游戏进程可以部署在同一个设备上,也可以部署在不同的设备上。由于进程间通信的底层原理是通过套接字(socket)连接,因此,因此无论测试环境编辑器进程和游戏进程是否在同一个设备上,都需要ip地址和端口号来进行连接。当两个进程部署在同一个设备上时,通过本地ip地址及端口号即可完成连接。
在一种可选的实施例中,测试环境编辑器进程启动之后可以作为一个服务器,绑定并监控一个网络端口(port),测试环境编辑器进程自动将ip地址和端口号通过启动参数的方式传送给游戏进程,并启动游戏进程。游戏进程启动时,通过拿到的ip地址和端口号去连接测试环境编辑器进程,连接成功后游戏进程和测试环境编辑器进程便可进行双向通信。
可选地,在通过第二进程基于第一进程发送的测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配之前,该方法还包括:通过第二进程对测试指令进行解析,得到指令信息和指令参数;通过第二进程基于指令信息和指令参数确定目标执行逻辑;通过第二进程执行目标执行逻辑;其中,在目标执行逻辑为轨迹生成逻辑的情况下,通过第二进程基于第一进程发送的测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定目标运动轨迹。
不同测试指令可以进入不同的逻辑分支,不同测试指令由字符串来区分,通常伴随着指令一起发送的还有执行指令所需的参数。例如:测试指令“setballposition”表示“设置球的坐标”,伴随着此指令的参数包括球的三维坐标;又如:测试指令“testballtrajectory”表示“测试球的轨迹”,伴随着此指令的参数包括球的轨迹类型(用整型数来表示)以及该轨迹类型下的其他参数。
上述的逻辑分支可以是指某个指令所对应的执行逻辑。不同指令对应于不同的执行逻辑。执行逻辑被组织成树状结构,一个指令对应一个逻辑分支,因此对于某个指令,可以通过比对,进入到属于它的分支中,进而完成执行。
上述步骤中的轨迹生成逻辑可以是指球的轨迹集测试逻辑,可以根据输入的轨迹类型和轨迹参数,调用游戏内球的运动相关接口轨迹集生成相关接口,进行球的运动轨迹展示。
在一种可选的实施例中,测试环境编辑器进程可以定义多种测试指令,不仅仅局限于轨迹集的预览及测试。游戏进程在接收到测试指令之后,首先进行指令映射和参数提取,然后执行相应的执行逻辑。
下面结合图3至图7对本发明一种优选的实施例进行详细说明。
如图3所示,游戏中球的轨迹集测试环境系统可以包括:测试环境编辑器进程32和游戏进程34,两个进程之间通过进程间通信接口,采用rpc方式来进行通信和交互。
如图4所示,测试环境编辑器进程32可以包括如下模块:
编辑器进程间通信模块322可以是测试环境编辑器进程32和游戏进程34通信的中间模块,既可以向游戏进程34发送测试指令和相关参数,也可以接收从游戏进程34传来的反馈结果和消息。测试环境编辑器进程32启动时将自动与游戏进程34建立起通信连接。进程间通信的方式可以基于socket通信,通信协议采用简化版的json-rpc,但不仅限于此。
ui面板324可以是进行操作和参数配置的主界面,采用python3和pyqt5搭建。ui面板中324中不仅包含了配置球轨迹集所需要的各种参数,还包括了执行按钮和其他辅助功能控件。可以方便设置球的轨迹类型,以及编辑与该轨迹有关的各种参数。编辑好基本参数后,可以一键执行,指令将触发游戏生成并展示球的运动轨迹。
如图5所示,ui面板主要涉及如下内容:
球的轨迹类型:由于球的轨迹类型多样,可以事先定义好各种轨迹类型,在面板上提供一个可供选择的下拉菜单,使用时进行指定即可,如图5所示,指定的轨迹类型为反弹球轨迹;
轨迹有关参数:配置轨迹所需的关键参数,每种轨迹类型对应的轨迹参数不尽相同,ui面板内容也随之变化,以图5中的反弹球轨迹为例,需指定球的初始位置(x,y,z)、速度矢量(x,y,z)、水平转速、垂直转速和延迟执行时间等;
默认保存路径:此处可以设置测试用例的默认保存路径;
保存方案到文件:点击此功能按钮可以按照上述的“默认保存路径”将当前编辑器ui面板中的配置内容保存为本地文件(json格式);
加载配置:点击此功能按钮可以选择并加载某一个已保存的测试用例,测试用例中的参数及配置将被自动写到ui面板上;
导表工具:点击此功能按钮可以从文件夹中选择并加载excel表格文件,内置的导表工具将自动读取表格内容,批量生成测试用例;
执行按钮:点击此功能按钮将向游戏端发送执行指令和参数,最终将触发游戏生成并展示球的运动轨迹。
测试用例保存及加载模块326不仅支持将ui面板中的配置参数保存到本地文件(json格式),该文件称为一个测试用例。而且支持加载以保存的测试用户,自动解析加载的测试用户,将参数还原到ui面板上。通过测试用例保存及加载模块326,不但免去了人工反复配置参数的繁琐过程,而且能够稳定复现某一个问题,方便效果展示和问题解决。
导表工具328可以支持将电子表格(如:exce)中的配置参数,转化为可供球的轨迹集测试环境所加载的测试用例(json格式文件)。电子表格的优势是能够大批量配置参数和测试用例,且易于操作和扩展。由于球的轨迹种类繁多,每种轨迹对应的参数也可能数目众多,导表工具能够方便使用者在电子表格中高效编辑测试参数,并批量转化为测试用例,从而提升工作效率。
如图6所示,游戏进程34可以包括如下模块:
游戏进程间通信模块342可以接收来自测试环境的输入。一方面,在测试环境编辑器进程32启动之时,接收游戏场景初始化的指令,通知场景初始化模块344进行基本游戏场景的初始化工作;另一方面,在测试环境的使用过程中,接收来自测试环境编辑器进程32的测试指令和相关参数,并将它们传递给测试指令接收模块346进行进一步的处理。另外,游戏进程34至测试环境编辑器进程32的结果反馈和信息传输也通过此模块来完成。进程间通信的方式与上述测试环境编辑器进程32中编辑器进程间通信模块322的一致。
场景初始化模块344负责初始化球的轨迹集测试所需要的基本游戏场景。由于关注的是球的轨迹测试,所以场景可以非常简单,包含必要的球即可,另外还可增加一些镜头及用于辅助的可视化相关设置。
测试指令接收模块346负责接收并解析由测试环境编辑器进程32发送过来的测试指令,并转交给测试指令执行模块348去执行。
测试指令执行模块348负责处理测试指令,将根据传入的测试指令和相关参数,调动游戏内相关逻辑和接口(api),展示出球的运动轨迹。轨迹集缓存模块3410的执行结果可以根据需要反馈到测试环境中。此外,测试指令执行模块348也可以通过测试环境编辑器进程32发送指令,反向调用测试环境编辑器进程32的方法,来完成额外的功能,例如,执行完一个测试后,自动通知测试环境,进行下一个测试,从而实现自动化测试的功能。
轨迹集缓存模块3410可以提供一个根据游戏内轨迹集生成算法离线算好的轨迹集缓存,供游戏实时读取和调用。缓存中的每条轨迹记录了球从初始条件开始运动,直至停止运动过程中每一帧的运动信息(如:速度、旋转等)。轨迹集缓存模块348内部包含轨迹集检索逻辑,用于快速检索、拼接和生成目标轨迹,其输入是轨迹类型和轨迹参数,输出是一组数据信息,包含了球从运动到静止每一帧的轨迹信息。
其他游戏逻辑模块3412可以是游戏内其他的逻辑和模块。
如图7所示,球的轨迹集测试环境的基本使用步骤如下:
步骤s71,开始;
步骤s72,启动测试环境编辑器进程;测试环境编辑器进程作为一个服务器,绑定并监听一个网络端口;
步骤s73,测试环境编辑器进程自动将ip地址和端口号通过启动参数的方式传给游戏进程,并启动游戏进程;
步骤s74,游戏进程与测试环境编辑器进程建立连接,其中,游戏启动时,通过获取到的ip地址和端口号去连接测试环境编辑器进程,连接成功后测试环境编辑器进程将游戏窗口嵌入到测试环境窗口;
步骤s75,游戏进程接收到测试环境编辑器进程发来的游戏场景初始化的指令,自动调用其场景初始化模块初始化基本游戏场景;
步骤s76,在测试环境编辑器进程的ui面板上编辑球的轨迹参数,也可以加载已保存的测试用例来配置所需参数,或者导入电子表格来配置所需参数;
步骤s77,点击ui面板上的执行按钮;
步骤s78,游戏进程接收到测试环境编辑器进程的测试指令及相关参数,经过指令解析和参数提取,调用测试指令执行模块、轨迹集缓存模块和其他有关接口来生成并展示球的运动轨迹;
步骤s79,查看并验证游戏中球的运动轨迹情况;
步骤s710,结束。
通过上述方案,为游戏中球的轨迹集测试提供一种高效便捷、可扩展性强、可灵活配置的测试环境,通过该环境能够方便查看和定量分析球类游戏中各种球运动轨迹的实际效果,并且提供稳定可复现的测试方案。并且具备如下有些效果:
针对性强且兼具通用性:不但为球的轨迹集测试提供了一个专门的测试环境,能够十分有针对性地对球类游戏所关注的球的运动轨迹进行预览和测试,而且整体的测试框架具有一定的通用性,双进程架构的优势使得球的测试环境模块与具体游戏尽量解耦,理论上可以适合所有2d/3d的球类游戏;
便捷性:提供了方便的ui界面,所有关键参数都能在面板上进行快速编辑和调整,而且提供诸如一键执行、一键保存测试用例、一键加载测试用例的功能,这些都极大地方便了用户对球的运动轨迹进行高效便捷地测试;
可扩展性:上述方案可扩展性强,具体体现在如下两个方面:一方面,对于某个特定的球类游戏,测试环境功能不单单局限于轨迹集的预览及测试,还能非常方便地扩展测试指令和ui界面,从而满足更加定制化的测试需求;另一方面,上述方案实际上是一个较为通用的架构,能够快速扩展到各种类型的球类游戏中,对于不同的球类游戏,只需因地制宜,调整ui面板内容和指令内容,并与实际的游戏逻辑对接即可完成部署;
稳定性:相较于一般的单进程架构具有更好的稳定性,避免了游戏出问题导致测试环境崩溃,或者测试环境出问题导致游戏崩溃的问题。
根据本发明实施例,提供了一种运动轨迹的生成装置,该装置可以执行上述实施例中运动轨迹的生成方法,具体应用场景和优选实施例与上述实施例中相同,在此不做赘述。
图8是根据本发明实施例的一种运动轨迹的生成装置的示意图,如图8所示,该装置:
获取模块82,用于获取测试指令,其中,测试指令用于生成目标对象的运动轨迹,测试指令包括:轨迹类型和轨迹参数。
匹配模块84,用于基于测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定目标运动轨迹,其中,多条预设运动轨迹中每条预设运动轨迹分别用于表征目标对象在游戏场景中,基于不同初始条件从开始运动至停止运动的过程中的运动信息。
显示模块86,用于显示目标运动轨迹。
可选地,匹配模块包括:第一确定单元,用于基于轨迹类型和轨迹参数,确定第一初始条件,其中,第一初始条件至少包括:目标对象的初始速度和初始位置;第一匹配单元,用于将第一初始条件与多条预设运动轨迹进行匹配,得到第一运动轨迹;第二确定单元,用于基于第一运动轨迹,确定目标对象下落至预设平面后是否弹起;第一确定单元还用于如果确定目标对象下落至预设平面后弹起,则基于第一运动轨迹确定第一初始条件,并返回执行匹配单元和第二确定单元的功能,直至确定目标对象下落至预设平面后不弹起;第三确定单元还用于如果确定目标对象下落至预设平面后不弹起,则基于匹配得到的最后一条运动轨迹确定第二初始条件;第二匹配单元,用于将第二初始条件与多条预设运动轨迹进行匹配,得到第二运动轨迹;拼接单元,用于基于将匹配得到的多条运动轨迹进行拼接,得到目标运动轨迹。
可选地,第一初始条件还包括:目标对象的目标位置和拉伸方式,其中,匹配模块还包括:处理单元,用于基于目标位置和拉伸方式,对第一运动轨迹进行截取和拉伸,得到处理后的运动轨迹;第二确定单元还用于基于处理后的运动轨迹,确定目标对象下落至预设平面后是否弹起。
可选地,第一匹配单元还用于基于第一初始条件,使用树算法和数据结构对多条预设运动轨迹进行筛选,得到第一运动轨迹。
可选地,获取模块还用于通过第一进程获取轨迹类型和轨迹参数,并基于轨迹类型和轨迹参数生成测试指令;匹配模块还用于通过第二进程基于第一进程发送的测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定目标运动轨迹;显示模块还用于通过第二进程显示目标运动轨迹。
可选地,每条预设运动轨迹为第二进程基于不同初始条件控制目标对象在游戏中运动生成。
可选地,获取模块包括如下之一:第一输入单元,用于通过第一进程接收第一输入控件输入的轨迹类型和轨迹参数;加载单元,用于通过第一进程加载测试用例,并获取测试用例中存储的轨迹类型和轨迹参数;导入单元,用于通过第一进程导入表格文件,并获取表格文件中存储的轨迹类型和轨迹参数。
可选地,该装置还包括:存储模块,用于在接收到保存指令之后,通过第一进程将轨迹类型和轨迹参数存储至新的测试用例中。
可选地,存储模块包括:第二输入单元,用于通过第一进程获取第二输入控件中输入的存储地址;存储单元,用于通过第一进程将新的测试用例存储至存储地址。
可选地,该装置还包括:启动模块,用于启动第一进程和第二进程;发送模块,用于通过第一进程发送初始化指令至第二进程;初始化模块,用于通过第二进程基于初始化指令进行游戏场景初始化。
可选地,该装置还包括:获取模块还用于获取第一进程对应的网络地址和端口号;建立模块,用于通过网络地址和端口号,建立第一进程和第二进程的通信连接。
可选地,该装置还包括:解析模块,用于通过第二进程对测试指令进行解析,得到指令信息和指令参数;确定模块,用于通过第二进程基于指令信息和指令参数确定目标执行逻辑;执行模块,用于通过第二进程执行目标执行逻辑;其中,在目标执行逻辑为轨迹生成逻辑的情况下,通过第二进程基于第一进程发送的测试指令,将轨迹类型和轨迹参数与多条预设运动轨迹进行匹配,确定目标运动轨迹。
根据本发明实施例,提供了一种计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,在程序运行时控制计算机可读存储介质所在设备执行上述实施例中的运动轨迹的生成方法。
根据本发明实施例,提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述实施例中的运动轨迹的生成方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除