遮挡率的计算方法、装置、存储介质和电子装置与流程

文档序号:17337225发布日期:2019-04-05 22:39阅读:875来源:国知局
遮挡率的计算方法、装置、存储介质和电子装置与流程

本发明涉及游戏领域,具体而言,涉及一种遮挡率的计算方法、装置,存储介质和电子装置。



背景技术:

2.5d游戏采用固定的镜头视角,模型贴图采取3d的渲染。而在游戏场景中,会摆放很多模型贴图,如建筑物、树木、石头等。所以在2.5d游戏的场景中,从游戏固定视角上看,会有部分空间是被场景模型遮挡的。当玩家控制的角色走到这些被模型遮挡住视线的区域时候,比如游戏主角走到一座建筑物后方,玩家对操控的角色位置定位产生困惑,这会严重影响玩家的体验感。

在场景测试过程中,游戏开发人员会对场景的模型遮挡问题进行排查。把模型遮挡严重,会影响战斗副本位置投放、任务点、npc位置等的位置通过各种方式记录,然后对遮挡的模型做位置转移或者做半透明处理。

目前测试排查主要是人手的方式实现。人工操作角色跑场景,把场景模型遮挡比较严重的位置坐标和截图记录下来,整理成测试反馈结果,然后场景制作的人员根据反馈做相应的修改和调整。

人工方式的排查存在以下技术问题:人力成本高,人工对整个场景的可寻路位置都跑查一遍,需要投入一定的人力和时间。遮挡影响的界定模糊,人工跑查过程中,对遮挡影响的评定更多是根据经验进行判定,不同人甚至同一个人在不同的跑查都会有不同的判定结果。处理效率低,每次出新的场景都需要进行排查,排查后反馈给场景制作人员返修后,都需要重新跑查。这是一个可能需要重复不断迭代的过程。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种遮挡率的计算方法、装置,存储介质和电子装置,以至少解决相关技术中在游戏场景中对遮挡物的排查效率低、方式复杂的技术问题。

根据本发明实施例的一个方面,提供了一种遮挡率的计算方法,包括:确定第一对象所在的当前游戏界面,其中,当前游戏界面中包括模型贴图;确定当前游戏界面中的第一像素通道的像素值;基于当前游戏界面中的第一像素通道的像素值和第一对象的各个像素通道的像素值,计算第一对象在当前游戏界面中被模型贴图遮挡的遮挡率。

根据本发明实施例的另一方面,还提供了一种遮挡率的计算装置,包括:第一确定模块,用于确定第一对象所在的当前游戏界面,其中,当前游戏界面中包括模型贴图;第二确定模块,用于确定当前游戏界面中的第一像素通道的像素值;计算模块,用于基于当前游戏界面中的第一像素通道的像素值和第一对象的各个像素通道的像素值,计算第一对象在当前游戏界面中被模型贴图遮挡的遮挡率。

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

在本发明实施例中,通过确定第一对象所在的当前游戏界面,其中,当前游戏界面中包括模型贴图;并确定当前游戏界面中的第一像素通道的像素值;然后基于当前游戏界面中的第一像素通道的像素值计算第一对象在当前游戏界面中被模型贴图遮挡的遮挡率。达到了排查游戏场景中遮挡物的目的,从而实现了提高游戏场景中对遮挡物的排查效率的技术效果,进而解决了相关技术中对游戏中的设备的速度控制方式复杂,用户体验差的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例的一种遮挡率的计算方法的移动终端的硬件结构框图;

图2是根据本发明实施例提供的遮挡率的计算方法的流程示意图;

图3是本实施例中的第一对象的示意图;

图4是根据本发明实施例提供的笛卡尔坐标系的示意图;

图5是根据本发明实施例提供的游戏场景处理之前的示意图;

图6是根据本发明实施例提供的游戏场景处理之后的示意图;

图7是本实施例中的游戏场景遮挡热力图;

图8是本实施例中的遮挡率大小对应的颜色示意图;

图9是本实施例中的热力图显示位置的示意图(一);

图10是本实施例中的热力图显示位置的示意图(二);

图11是根据本发明实施例提供的遮挡率的计算装置的结构示意图。

具体实施方式

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

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例,提供了一种遮挡率的计算方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本发明实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种遮挡率的计算方法的移动终端的硬件结构框图。如图1所示,移动终端10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的遮挡率的计算方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。

图2是根据本发明实施例提供的遮挡率的计算方法的流程示意图,如图2所示,该方法包括如下步骤:

步骤s202,确定第一对象所在的当前游戏界面,其中,当前游戏界面中包括模型贴图;

步骤s204,确定当前游戏界面中的第一像素通道的像素值;

步骤s206,基于当前游戏界面中的第一像素通道的像素值和所述第一对象的各个像素通道的像素值,计算第一对象在当前游戏界面中被模型贴图遮挡的遮挡率。

通过上述步骤,通过确定第一对象所在的当前游戏界面,其中,当前游戏界面中包括模型贴图;并确定当前游戏界面中的第一像素通道的像素值;然后基于当前游戏界面中的第一像素通道的像素值计算第一对象在当前游戏界面中被模型贴图遮挡的遮挡率。达到了排查游戏场景中遮挡物的目的,从而实现了提高游戏场景中对遮挡物的排查效率的技术效果,进而解决了相关技术中对游戏中的设备的速度控制方式复杂,用户体验差的技术问题。

需要说明的是,本实施例中的第一对象可以是游戏场景中控制的角色,如图3中所示的人物“女娲”、“樊龙3”等等。当前游戏界面可以是第一对象移动到的一个场景中。

需要说明的是,3d坐标系是指在做3d项目开发中的基础概念,一般3d游戏都是采用笛卡尔坐标系来描述物体的坐标信息。笛卡尔坐标系分为左手坐标系和右手坐标系,左手坐标系是y轴指向上方,x轴指向右方,z轴指向前方;左,右手坐标系的x、y轴方向相同,而z轴是相反的,如图4所示。

alpha通道:一个图像的每个像素都有rgb三个通道,后来alvyraysmith提出每个像素再增加一个alpha通道,取值为0到1,用来储存这个像素在图片中的透明度,0代表透明、1代表不透明。

远程过程调用协议(remoteprocedurecallprotocol,简称为rpc):是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。rpc协议假定某些传输协议的存在,如tcp或udp,为通信程序之间携带信息数据。

三通道图:每个像素点都有3个值表示,所以就是3通道。也有4通道的图。例如rgb图片即为三通道图片,rgb色彩模式是工业界的一种颜色标准,是通过对红(r)、绿(g)、蓝(b)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,rgb即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。数字图像数据可以用矩阵来表示,每个通道都是一个二维的矩阵。

本实施例中的第一像素通道可以是红(r)、绿(g)、蓝(b)三个颜色通道中的任一个颜色通道。

在一个可选的实施例中,在确定第一对象所在的当前游戏界面之前,需要对模型贴图做颜色替换处理,需要替换的模型贴图即是需要测试的场景中所有模型贴图和游戏中玩家操控的角色模型,具体为:

遍历当前游戏界面所在的游戏场景中的模型贴图,把场景模型的贴图做图像通道分离,将模型贴图的第一像素通道的像素值设置为最小值,其中,模型贴图中除第一像素通道之外的其他像素通道的像素值不变。如果第一像素通道为r像素通道,即把游戏场景中所有像素r通道的数值设为0,保留了模型贴图的其他属性,包括透明度。

接着把游戏中操控的角色模型贴图(即第一对象)做图像通道分离,将第一对象中的第一像素通道的像素值设置为最大值;将第一对象中除第一像素通道之外的其他像素通道的像素值设置为最小值。即可以第一对象的所有像素r通道的值设成255,把g通道和b通道的所有数值设成0。这里的图片处理,只对r通道做处理,保留了贴图的其他属性,包括透明度。如图5所示是未做处理之前的游戏场景,图6是做图像处理之后的游戏场景,游戏中操控的第一对象的g通道和b通道所有像素数值设成0以后,第一对象变成了纯红色。而游戏场景中的场景模型贴图把r通道像素数值设成0以后,颜色表现会更偏蓝绿。

在一个可选的实施例中,通过以下方式确定第一对象所在的当前游戏界面:确定第一对象在游戏场景中所处的坐标点;以坐标点为原点,截取预设范围之内的游戏界面,得到当前游戏界面。在本实施例中,需要通过自动寻路遍历场景的方法,根据第一对象的坐标点对游戏屏幕进行截图,建立第一对象的场景位置和对应的屏幕显示之间的关系。

需要说明的是,一般游戏引擎有提供接口可以获得第一对象所在位置的坐标点,还有当前游戏画面截图。在3d坐标系中,y轴坐标代表上下位置,所以忽略地形的高低,只需要记录x轴和z轴的坐标。

为了避免位置过于细化导致数据量过多的问题,需要对游戏场景中的地图坐标进行压缩。假设每隔若干个单位做一次截图采样。坐标压缩的方法,用python脚本实现如下,rate是压缩比例,如每五个单位作为一个采样点,则rate等于5:

defcompress_position(x,z,rate):

x=round(x/rate)

z=round(z/rate)

returnx,z

然后,需要对第一对象所在的坐标点的游戏画面进行截图,为了方便管理,截图后的图片用“场景名_x轴数据_z轴数据.png”命名。若采样点对应的截图图片命名文件已不存在则截图,已存在则不需要重复截图。

在一个可选的实施例中,在获取到第一对象所在的当前游戏界面之后,需要确定第一对象中包括的第一像素通道的像素总值;通过计算当前游戏界面中的第一像素通道的像素值与像素总值的比值;基于比值确定遮挡率。

需要说明的是,在这里定义的遮挡率是用来表达第一对象被游戏场景中的场景模型贴图遮挡的程度。会有两种极端情况:第一种情况,当第一对象在场景中被模型贴图完全遮挡,也就是第一对象的模型贴图一点都不显示的时候,遮挡率则是100%,也就是1。第二种情况,游戏主角被在场景中完全无遮挡的时候,遮挡率则是0%,也就是0。其他情况是介于这两者之间。

另外一个概念是半透明。当第一对象被场景的模型遮挡时,要是遮挡的模型贴图做了半透明处理,透明度越高,第一对象显示就会越明显,当完全透明的时候,第一对象就会完全不被遮挡;相反,透明度越低,主角显示就会越不清晰,当完全不透明的时候,第一对象就会被完全遮挡。

上述现象可以用半透明混合算法alphablend来解析。假设一幅图象是a,另一幅半透明的图象是b,那么透过b去看a,看上去的图象c就是b和a的混合图象,设b图象的透明度为alpha(取值为0-1,1为完全透明,0为完全不透明)。

alpha混合公式如下:

r(c)=(1-alpha)*r(b)+alpha*r(a);

g(c)=(1-alpha)*g(b)+alpha*g(a);

b(c)=(1-alpha)*b(b)+alpha*b(a);

其中,r(x)、g(x)、b(x)分别指颜色x的rgb分量原色值。

当b图象完全透明(alpha=1),r(c)=r(a),g(c)=g(a),b(c)=b(a);a图片完全不被b图片遮挡。当b图象完全不透明(alpha=0),r(c)=r(b),g(c)=g(b),b(c)=b(b);a图片完全被b图片遮挡。

基于上述中的算法,遮挡率的计算具体包括:

由于把游戏场景中所有的模型贴图的r通道数值设成了0,第一对象的主角模型贴图的r通道数值设成了255。所以,第一对象被遮挡越严重,截图的图片中,r通道矩阵数值总和越少。当第一对象被完全遮挡的时候,截图中,所有像素点的r通道值都是0。当第一对象完全不被遮挡是,红色部分最多,截图的r通道矩阵数值总和最大。

其中,r_sum代表某张截图(当前游戏界面)(例如是scenea_5_10.png)中,r通道的矩阵中所有元素总和。r_sum_max代表第一对象完全不被遮挡时截图中,r通道的矩阵中所有元素总和。

某张截图中,主角遮挡率的计算公式如下:

遮挡率=1-r_sum/r_sum_max

当主角完全不被遮挡时,r_sum等于r_sum_max,所以遮挡率等于0。等主角被完全遮挡不显示时,截图中所有像素的r通道上的值都为0,r_sum等于0,所以遮挡率等于1。

某张截图中,主角遮挡率的计算公式还可以如下:

遮挡率=r_sum/r_sum_max

当主角完全不被遮挡时,r_sum等于r_sum_max,所以遮挡率等于1。等主角被完全遮挡不显示时,截图中所有像素的r通道上的值都为0,r_sum等于0,所以遮挡率等于0。

在一个可选的实施例中,基于当前游戏界面中第一像素通道的像素值计算第一对象在当前游戏界面中被模型贴图遮挡的遮挡率之后,需要确定第一对象在游戏场景中的各个坐标点处的遮挡率;基于各个坐标点处的遮挡率,在第一对象所处的各个坐标点处设置不同的颜色标识;利用不同的颜色标识绘制第一对象在游戏场景中的遮挡率热力图。

需要说明的是,需要根据坐标点对应的遮挡率绘制场景遮挡热力图,根据遮挡率大小在对应坐标绘制不同颜色。图7是本实施例中的游戏场景遮挡热力图,如图7所示,深色代表遮挡率比较高,浅色代表遮挡率比较低。图8是本实施例中的遮挡率大小对应的颜色示意图。

在一个可选的实施例中,利用不同的颜色标识绘制第一对象在游戏场景中的遮挡率热力图之后,还可以在不同的颜色标识处设置第一对象的各个定位点,其中,各个定位点中包括:与各个颜色标识对应的各个遮挡率,第一对象在各个颜色标识处的坐标值;利用各个定位点显示第一对象在游戏场景中的遮挡情况。

需要说明的是,设置的各个定位点即是给热力图增加点击监听。例如,左键点击热力图位置可以显示该位置的遮挡率数值(如图9所示)。右键点击热力图位置选择把第一对象传送到该坐标点(如图10所示)。当用户右键热力图上的坐标点就会弹出“定位到客户端场景位置”按钮,用户点击按钮,就会通过给游戏发送rpc指令,把游戏中第一对象传送到热力图对应的坐标位置,供游戏开发人员查看实际遮挡情况。

综上所述,通过控制游戏角色自动遍历所有寻路点,记录每个寻路位置的坐标点和计算坐标点上的场景模型遮挡率。对各个坐标点和其对应的遮挡率,绘制成热力图;用不同的颜色区分遮挡率的数值区间。并且对热力图设置点击监听,点击热力图可以显示该点击坐标的游戏截图,另外还可以右键点击热力图位置选择把主角传送到该坐标点,供游戏开发人员查看实际遮挡情况。开创一种自动化的手段,提高2.5d游戏的场景模型遮挡排查效率。可以解决相关技术中存在的以下技术问题:设计一种游戏角色被场景模型遮挡的比率(下面统称为“遮挡率”)计算的方法。计算游戏中角色在场景所有可寻路坐标点的遮挡率。可视化展示场景各个位置的游戏角色被遮挡情况。实现高效地完成游戏的场景模型遮挡测试,游戏开发人员可以迅速了解到整个场景的遮挡情况,给场景测试带来极大的便利。

需要说明的是,上述步骤的执行主体可以是上述图1所示的终端,但并不限于此。

本发明实施例还提供了一种遮挡率的计算装置,图11是根据本发明实施例提供的遮挡率的计算装置的结构示意图,如图11所示,该装置包括:

第一确定模块1102,用于确定第一对象所在的当前游戏界面,其中,当前游戏界面中包括模型贴图;

第二确定模块1104,用于确定当前游戏界面中的第一像素通道的像素值;

计算模块1106,用于基于当前游戏界面中的第一像素通道的像素值和第一对象的各个像素通道的像素值,计算第一对象在当前游戏界面中被模型贴图遮挡的遮挡率。

通过上述步骤,通过确定第一对象所在的当前游戏界面,其中,当前游戏界面中包括模型贴图;并确定当前游戏界面中的第一像素通道的像素值;然后基于当前游戏界面中的第一像素通道的像素值计算第一对象在当前游戏界面中被模型贴图遮挡的遮挡率。达到了排查游戏场景中遮挡物的目的,从而实现了提高游戏场景中对遮挡物的排查效率的技术效果,进而解决了相关技术中对游戏中的设备的速度控制方式复杂,用户体验差的技术问题。

需要说明的是,本实施例中的第一对象可以是游戏场景中控制的角色,如图3中所示的人物“女娲”、“樊龙3”等等。当前游戏界面可以是第一对象移动到的一个场景中。

需要说明的是,3d坐标系是指在做3d项目开发中的基础概念,一般3d游戏都是采用笛卡尔坐标系来描述物体的坐标信息。笛卡尔坐标系分为左手坐标系和右手坐标系,左手坐标系是y轴指向上方,x轴指向右方,z轴指向前方;左,右手坐标系的x、y轴方向相同,而z轴是相反的。

alpha通道:一个图像的每个像素都有rgb三个通道,后来alvyraysmith提出每个像素再增加一个alpha通道,取值为0到1,用来储存这个像素在图片中的透明度,0代表透明、1代表不透明。

远程过程调用协议(remoteprocedurecallprotocol,简称为rpc):是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。rpc协议假定某些传输协议的存在,如tcp或udp,为通信程序之间携带信息数据。

三通道图:每个像素点都有3个值表示,所以就是3通道。也有4通道的图。例如rgb图片即为三通道图片,rgb色彩模式是工业界的一种颜色标准,是通过对红(r)、绿(g)、蓝(b)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,rgb即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。数字图像数据可以用矩阵来表示,每个通道都是一个二维的矩阵。

本实施例中的第一像素通道可以是红(r)、绿(g)、蓝(b)三个颜色通道中的任一个颜色通道。

在一个可选的实施例中,在确定第一对象所在的当前游戏界面之前,需要对模型贴图做颜色替换处理,需要替换的模型贴图即是需要测试的场景中所有模型贴图和游戏中玩家操控的角色模型,具体为:

遍历当前游戏界面所在的游戏场景中的模型贴图,把场景模型的贴图做图像通道分离,将模型贴图的第一像素通道的像素值设置为最小值,其中,模型贴图中除第一像素通道之外的其他像素通道的像素值不变。如果第一像素通道为r像素通道,即把游戏场景中所有像素r通道的数值设为0,保留了模型贴图的其他属性,包括透明度。

接着把游戏中操控的角色模型贴图(即第一对象)做图像通道分离,将第一对象中的第一像素通道的像素值设置为最大值;将第一对象中除第一像素通道之外的其他像素通道的像素值设置为最小值。即可以第一对象的所有像素r通道的值设成255,把g通道和b通道的所有数值设成0。这里的图片处理,只对r通道做处理,保留了贴图的其他属性,包括透明度。如图5所示是未做处理之前的游戏场景,图6是做图像处理之后的游戏场景,游戏中操控的第一对象的g通道和b通道所有像素数值设成0以后,第一对象变成了纯红色。而游戏场景中的场景模型贴图把r通道像素数值设成0以后,颜色表现会更偏蓝绿。

在一个可选的实施例中,通过以下方式确定第一对象所在的当前游戏界面:确定第一对象在游戏场景中所处的坐标点;以坐标点为原点,截取预设范围之内的游戏界面,得到当前游戏界面。在本实施例中,需要通过自动寻路遍历场景的方法,根据第一对象的坐标点对游戏屏幕进行截图,建立第一对象的场景位置和对应的屏幕显示之间的关系。

需要说明的是,一般游戏引擎有提供接口可以获得第一对象所在位置的坐标点,还有当前游戏画面截图。在3d坐标系中,y轴坐标代表上下位置,所以忽略地形的高低,只需要记录x轴和z轴的坐标。

为了避免位置过于细化导致数据量过多的问题,需要对游戏场景中的地图坐标进行压缩。假设每隔若干个单位做一次截图采样。坐标压缩的方法,用python脚本实现如下,rate是压缩比例,如每五个单位作为一个采样点,则rate等于5:

defcompress_position(x,z,rate):

x=round(x/rate)

z=round(z/rate)

returnx,z

然后,需要对第一对象所在的坐标点的游戏画面进行截图,为了方便管理,截图后的图片用“场景名_x轴数据_z轴数据.png”命名。若采样点对应的截图图片命名文件已不存在则截图,已存在则不需要重复截图。

在一个可选的实施例中,在获取到第一对象所在的当前游戏界面之后,需要确定第一对象中包括的第一像素通道的像素总值;通过计算当前游戏界面中的第一像素通道的像素值与像素总值的比值;基于比值确定遮挡率。

需要说明的是,在这里定义的遮挡率是用来表达第一对象被游戏场景中的场景模型贴图遮挡的程度。会有两种极端情况:第一种情况,当第一对象在场景中被模型贴图完全遮挡,也就是第一对象的模型贴图一点都不显示的时候,遮挡率则是

100%,也就是1。第二种情况,游戏主角被在场景中完全无遮挡的时候,遮挡率则是0%,也就是0。其他情况是介于这两者之间。

另外一个概念是半透明。当第一对象被场景的模型遮挡时,要是遮挡的模型贴图做了半透明处理,透明度越高,第一对象显示就会越明显,当完全透明的时候,

第一对象就会完全不被遮挡;相反,透明度越低,主角显示就会越不清晰,当完全不透明的时候,第一对象就会被完全遮挡。

上述现象可以用半透明混合算法alphablend来解析。假设一幅图象是a,另一幅半透明的图象是b,那么透过b去看a,看上去的图象c就是b和a的混合图象,设b图象的透明度为alpha(取值为0-1,1为完全透明,0为完全不透明)。

alpha混合公式如下:

r(c)=(1-alpha)*r(b)+alpha*r(a);

g(c)=(1-alpha)*g(b)+alpha*g(a);

b(c)=(1-alpha)*b(b)+alpha*b(a);

其中,r(x)、g(x)、b(x)分别指颜色x的rgb分量原色值。

当b图象完全透明(alpha=1),r(c)=r(a),g(c)=g(a),b(c)=b(a);a图片完全不被b图片遮挡。当b图象完全不透明(alpha=0),r(c)=r(b),g(c)=g(b),b(c)=b(b);a图片完全被b图片遮挡。

基于上述中的算法,遮挡率的计算具体包括:

由于把游戏场景中所有的模型贴图的r通道数值设成了0,第一对象的主角模型贴图的r通道数值设成了255。所以,第一对象被遮挡越严重,截图的图片中,r通道矩阵数值总和越少。当第一对象被完全遮挡的时候,截图中,所有像素点的r通道值都是0。当第一对象完全不被遮挡是,红色部分最多,截图的r通道矩阵数值总和最大。

其中,r_sum代表某张截图(当前游戏界面)(例如是scenea_5_10.png)中,r通道的矩阵中所有元素总和。r_sum_max代表第一对象完全不被遮挡时截图中,r通道的矩阵中所有元素总和。

某张截图中,主角遮挡率的计算公式如下:

遮挡率=1-r_sum/r_sum_max

当主角完全不被遮挡时,r_sum等于r_sum_max,所以遮挡率等于0。等主角被完全遮挡不显示时,截图中所有像素的r通道上的值都为0,r_sum等于0,所以遮挡率等于1。

某张截图中,主角遮挡率的计算公式还可以如下:

遮挡率=r_sum/r_sum_max

当主角完全不被遮挡时,r_sum等于r_sum_max,所以遮挡率等于1。等主角被完全遮挡不显示时,截图中所有像素的r通道上的值都为0,r_sum等于0,所以遮挡率等于0。

在一个可选的实施例中,基于当前游戏界面中第一像素通道的像素值计算第一对象在当前游戏界面中被模型贴图遮挡的遮挡率之后,需要确定第一对象在游戏场景中的各个坐标点处的遮挡率;基于各个坐标点处的遮挡率,在第一对象所处的各个坐标点处设置不同的颜色标识;利用不同的颜色标识绘制第一对象在游戏场景中的遮挡率热力图。

需要说明的是,需要根据坐标点对应的遮挡率绘制场景遮挡热力图,根据遮挡率大小在对应坐标绘制不同颜色。图7是本实施例中的游戏场景遮挡热力图,如图7所示,深色代表遮挡率比较高,浅色代表遮挡率比较低。图8是本实施例中的遮挡率大小对应的颜色。

在一个可选的实施例中,利用不同的颜色标识绘制第一对象在游戏场景中的遮挡率热力图之后,还可以在不同的颜色标识处设置第一对象的各个定位点,其中,各个定位点中包括:与各个颜色标识对应的各个遮挡率,第一对象在各个颜色标识处的坐标值;利用各个定位点显示第一对象在游戏场景中的遮挡情况。

需要说明的是,设置的各个定位点即是给热力图增加点击监听。例如,左键点击热力图位置可以显示该位置的遮挡率数值(如图9所示)。右键点击热力图位置选择把第一对象传送到该坐标点(如图10所示)。当用户右键热力图上的坐标点就会弹出“定位到客户端场景位置”按钮,用户点击按钮,就会通过给游戏发送rpc指令,把游戏中第一对象传送到热力图对应的坐标位置,供游戏开发人员查看实际遮挡情况。

综上所述,通过控制游戏角色自动遍历所有寻路点,记录每个寻路位置的坐标点和计算坐标点上的场景模型遮挡率。对各个坐标点和其对应的遮挡率,绘制成热力图;用不同的颜色区分遮挡率的数值区间。并且对热力图设置点击监听,点击热力图可以显示该点击坐标的游戏截图,另外还可以右键点击热力图位置选择把主角传送到该坐标点,供游戏开发人员查看实际遮挡情况。开创一种自动化的手段,提高2.5d游戏的场景模型遮挡排查效率。可以解决相关技术中存在的以下技术问题:设计一种游戏角色被场景模型遮挡的比率(下面统称为“遮挡率”)计算的方法。计算游戏中角色在场景所有可寻路坐标点的遮挡率。可视化展示场景各个位置的游戏角色被遮挡情况。实现高效地完成游戏的场景模型遮挡测试,游戏开发人员可以迅速了解到整个场景的遮挡情况,给场景测试带来极大的便利。

需要说明的是,上述步骤的执行主体可以是上述图1所示的终端,但并不限于此。

本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:

s1,确定第一对象所在的当前游戏界面,其中,当前游戏界面中包括模型贴图;

s2,确定当前游戏界面中的第一像素通道的像素值;

s3,基于当前游戏界面中的第一像素通道的像素值和第一对象的各个像素通道的像素值,计算第一对象在当前游戏界面中被模型贴图遮挡的遮挡率。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

s1,确定第一对象所在的当前游戏界面,其中,当前游戏界面中包括模型贴图;

s2,确定当前游戏界面中的第一像素通道的像素值;

s3,基于当前游戏界面中的第一像素通道的像素值和第一对象的各个像素通道的像素值,计算第一对象在当前游戏界面中被模型贴图遮挡的遮挡率。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

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

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

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

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1