本发明涉及数据处理领域,尤其涉及一种区域信息同步方法及终端。
背景技术:
在网络游戏中,游戏地图通常较大,地图中的物体也比较多,服务器不可能将游戏所有的信息都下发给客户端。为提高效率和减少同步信息数量,通常只将以玩家为中心一定范围内(AOI区域)的信息同步给客户端。AOI(Area OfInterest),中文就是感兴趣区域。通俗一点说,感兴趣区域就是玩家在场景实时看到的区域;也就是说AOI区域会随着角色移动而改变。
现有的同步AOI区域信息的技术方案如下:
1、在服务器直接定期比较所有对象间的位置关系,发现能够触发AOI事件时就发送消息给客户端。
2、对于传统网络游戏,通常采用的是空间切割监视的方法,该方法把游戏场景切分为等大的格子,在每个格子里树立灯塔。当客户端对象进入或退出格子时,修改每个灯塔上的对象列表。
相对于传统的游戏,LBS游戏以GPS定位为基础,用经纬度标记位置信息,其游戏场景具有更高的开放性,无确定地、固定地地图。而现有方案主要针对的是传统的网络游戏,需要有明确的地图信息,并做一定的预处理,并不能适用于LBS游戏。
技术实现要素:
本发明所要解决的技术问题是:如何在没有明确地图信息的情况下,提高区域信息同步的效率。
为了解决上述技术问题,本发明采用的技术方案为:
本发明提供一种区域信息同步方法,包括:
物理引擎创建与第一角色对象对应的虚拟实体,得到第一虚拟实体;
为所述第一虚拟实体构造第一包围盒和第二包围盒;所述第一包围盒的半径为AOI区域的半径;所述第二包围盒的半径为1单位长度;
当与第二角色对象对应的第二包围盒进入所述第一角色对象对应的第一包围盒范围内时,通知与所述第一角色对象对应的客户端更新AOI区域信息。
本发明还提供一种区域信息同步终端,包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
物理引擎创建与第一角色对象对应的虚拟实体,得到第一虚拟实体;
为所述第一虚拟实体构造第一包围盒和第二包围盒;所述第一包围盒的半径为AOI区域的半径;所述第二包围盒的半径为1单位长度;
当与第二角色对象对应的第二包围盒进入所述第一角色对象对应的第一包围盒范围内时,通知与所述第一角色对象对应的客户端更新AOI区域信息。
本发明的有益效果在于:本发明通过物理引擎为角色对象的虚拟实体创建第一包围盒和第二包围盒,使得角色对象具有物理属性,当不同角色对象之间的包围盒的范围重合时会触发碰撞事件,被服务器所感知。其中,第一包围盒的半径大于第二包围盒,第一包围盒用于感知其它角色对象是否在本角色对象的AOI区域内,第二包围盒用于其它角色对象感知本角色对象是否进入其AOI区域内。本发明通过角色对象间包围盒所触发的碰撞事件更新各角色对象的AOI区域信息,由于包围盒所覆盖的范围随角色对象的移动而变化,因此,无需对确定的地图进行预处理即可实时同步各角色对象的AOI区域信息。
附图说明
图1为本发明提供的一种区域信息同步方法的具体实施方式的流程框图;
图2为本发明提供的一种区域信息同步终端的具体实施方式的结构框图;
图3为包围盒示意图;
标号说明:
1、处理器; 2、存储器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1以及图2,
如图1所示,本发明提供一种区域信息同步方法,包括:
物理引擎创建与第一角色对象对应的虚拟实体,得到第一虚拟实体;
为所述第一虚拟实体构造第一包围盒和第二包围盒;所述第一包围盒的半径为AOI区域的半径;所述第二包围盒的半径为1单位长度;
当与第二角色对象对应的第二包围盒进入所述第一角色对象对应的第一包围盒范围内时,通知与所述第一角色对象对应的客户端更新AOI区域信息。
进一步地,还包括:
获取所述第一虚拟实体的类型;
为所述第一虚拟实体设置与所述类型对应的遮罩层。
由上述描述可知,通过根据第一虚拟实体的类型设置遮罩层,使得只有特定的角色对象的第二包围盒进入第一角色对象的第一包围盒的范围内时,才触发碰撞事件,进而通知第一角色对象的客户端更新AOI区域信息,避免了无效信息的更新。
进一步地,还包括:
与所述第一角色对象对应的客户端获取GPS定位信息;
转换所述GPS定位信息为与所述物理引擎对应的二维平面坐标;
物理引擎根据所述二维平面坐标更新所述第一角色对象的位置信息。
由上述描述可知,由于LBS游戏是通过GPS定位,以经纬度标记角色对象位置,而物理引擎则是采用二维平面坐标定位角色对象位置,通过定位信息格式的转换使得本发明适用于LBS游戏。
进一步地,还包括:
设置所述第一包围盒为Sensors类型;
设置所述第二包围盒为Sensors类型。
由上述描述可知,将角色对象的虚拟实体的包围盒设置为Sensors类型,使得包围盒在接触其他包围盒时不会产生反弹等物理反应,但仍会触发接触事件。
进一步地,当与第二角色对象对应的第二包围盒进入所述第一角色对象对应的第一包围盒范围内时,通知与所述第一角色对象对应的客户端更新AOI区域信息,具体为:
当与第二角色对象对应的第二包围盒进入所述第一角色对象对应的第一包围盒范围内时,物理引擎触发碰撞事件;所述碰撞事件为通知与所述第一角色对象对应的客户端更新AOI区域信息。
如图2所示,本发明还提供一种区域信息同步终端,包括一个或多个处理器1及存储器2,所述存储器2存储有程序,并且被配置成由所述一个或多个处理器1执行以下步骤:
物理引擎创建与第一角色对象对应的虚拟实体,得到第一虚拟实体;
为所述第一虚拟实体构造第一包围盒和第二包围盒;所述第一包围盒的半径为AOI区域的半径;所述第二包围盒的半径为1单位长度;
当与第二角色对象对应的第二包围盒进入所述第一角色对象对应的第一包围盒范围内时,通知与所述第一角色对象对应的客户端更新AOI区域信息。
进一步地,还包括:
获取所述第一虚拟实体的类型;
为所述第一虚拟实体设置与所述类型对应的遮罩层。
进一步地,还包括:
与所述第一角色对象对应的客户端获取GPS定位信息;
转换所述GPS定位信息为与所述物理引擎对应的二维平面坐标;
物理引擎根据所述二维平面坐标更新所述第一角色对象的位置信息。
进一步地,还包括:
设置所述第一包围盒为Sensors类型;
设置所述第二包围盒为Sensors类型。
进一步地,当与第二角色对象对应的第二包围盒进入所述第一角色对象对应的第一包围盒范围内时,通知与所述第一角色对象对应的客户端更新AOI区域信息,具体为:
当与第二角色对象对应的第二包围盒进入所述第一角色对象对应的第一包围盒范围内时,物理引擎触发碰撞事件;所述碰撞事件为通知与所述第一角色对象对应的客户端更新AOI区域信息。
本发明的实施例一为:
本实施例提供一种区域信息同步方法,包括:
S1、与第一角色对象对应的客户端获取GPS定位信息;转换所述GPS定位信息为与所述物理引擎对应的二维平面坐标;物理引擎根据所述二维平面坐标更新所述第一角色对象的位置信息。
可选地,所述物理引擎为Box2D物理引擎。
可选地,根据统一横轴墨卡托投影系统将所述GPS定位信息转换为所述二维平面坐标。
S2、物理引擎创建与所述第一角色对象对应的虚拟实体,得到第一虚拟实体。
S3、为所述第一虚拟实体构造第一包围盒和第二包围盒;所述第一包围盒的半径为AOI区域的半径;所述第二包围盒的半径为1单位长度。
其中,所述AOI区域为所述第一角色对象在游戏场景实时看到的区域。
其中,物理引擎利用包围盒技术,用简单的几何体(圆、矩形等)来近似表示复杂物体的轮廓,进而大大简化碰撞检测的计算复杂度。
S4、设置所述第一包围盒为Sensors类型;设置所述第二包围盒为Sensors类型。
S5、获取所述第一虚拟实体的类型;为所述第一虚拟实体设置与所述类型对应的遮罩层。
S6、如图3所示,当与第二角色对象对应的第二包围盒进入所述第一角色对象对应的第一包围盒范围内时,通知与所述第一角色对象对应的客户端更新AOI区域信息;具体为:
当与第二角色对象对应的第二包围盒进入所述第一角色对象对应的第一包围盒范围内时,物理引擎触发碰撞事件;所述碰撞事件为通知与所述第一角色对象对应的客户端更新AOI区域信息。
其中,当碰撞事件被触发时,调用预先绑定的回调函数,将触碰信息传递给服务器的触碰信息处理模块。服务器的触碰信息处理模块将第二角色对象的信息进行重新解析,并通知第一角色对象的客户端。
由上述描述可知,本实施例基于成熟的物理引擎box2d实现AOI同步技术,稳定可靠,并且易于实现。本实施例提出的解决方案简单可行,适用于任何LBS游戏,同时由于采用传统的物理引擎技术,可以方便地适配任意的服务器框架。本实施例所提供的区域信息同步方法与定期对角色对象距离逐一比对的方法相比,效率高,且能满足用户量大的应用场景;相比较于空间切割监视方法,本实施例提供的方法不需要预先对游戏场景地图进行处理,能适用于基于GPS定位的LBS游戏。
本发明的实施例二为:
本实施例提供一种区域信息同步终端,包括一个或多个处理器1及存储器2,所述存储器2存储有程序,并且被配置成由所述一个或多个处理器1执行以下步骤:
S1、与第一角色对象对应的客户端获取GPS定位信息;转换所述GPS定位信息为与所述物理引擎对应的二维平面坐标;物理引擎根据所述二维平面坐标更新所述第一角色对象的位置信息。
可选地,所述物理引擎为Box2D物理引擎。
可选地,根据统一横轴墨卡托投影系统将所述GPS定位信息转换为所述二维平面坐标。
S2、物理引擎创建与所述第一角色对象对应的虚拟实体,得到第一虚拟实体。
S3、为所述第一虚拟实体构造第一包围盒和第二包围盒;所述第一包围盒的半径为AOI区域的半径;所述第二包围盒的半径为1单位长度。
S4、设置所述第一包围盒为Sensors类型;设置所述第二包围盒为Sensors类型。
S5、获取所述第一虚拟实体的类型;为所述第一虚拟实体设置与所述类型对应的遮罩层。
S6、如图3所示,当与第二角色对象对应的第二包围盒进入所述第一角色对象对应的第一包围盒范围内时,通知与所述第一角色对象对应的客户端更新AOI区域信息;具体为:
当与第二角色对象对应的第二包围盒进入所述第一角色对象对应的第一包围盒范围内时,物理引擎触发碰撞事件;所述碰撞事件为通知与所述第一角色对象对应的客户端更新AOI区域信息。
综上所述,本发明提供的一种区域信息同步方法及终端,通过物理引擎为角色对象的虚拟实体创建第一包围盒和第二包围盒,使得角色对象具有物理属性,当不同角色对象之间的包围盒的范围重合时会触发碰撞事件,被服务器所感知。其中,第一包围盒的半径大于第二包围盒,第一包围盒用于感知其它角色对象是否在本角色对象的AOI区域内,第二包围盒用于其它角色对象感知本角色对象是否进入其AOI区域内。本发明通过角色对象间包围盒所触发的碰撞事件更新各角色对象的AOI区域信息,由于包围盒所覆盖的范围随角色对象的移动而变化,因此,无需对确定的地图进行预处理即可实时同步各角色对象的AOI区域信息。进一步地,通过根据第一虚拟实体的类型设置遮罩层,使得只有特定的角色对象的第二包围盒进入第一角色对象的第一包围盒的范围内时,才触发碰撞事件,进而通知第一角色对象的客户端更新AOI区域信息,避免了无效信息的更新。进一步地,由于LBS游戏是通过GPS定位,以经纬度标记角色对象位置,而物理引擎则是采用二维平面坐标定位角色对象位置,通过定位信息格式的转换使得本发明适用于LBS游戏。进一步地,将角色对象的虚拟实体的包围盒设置为Sensors类型,使得包围盒在接触其他包围盒时不会产生反弹等物理反应,但仍会触发接触事件。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。