一种游戏战争迷雾实现方法技术

技术编号:16588194 阅读:39 留言:0更新日期:2017-11-18 15:59
本发明专利技术公开了一种游戏战争迷雾实现方法,按照每个障碍物的大小给其添加盒子碰撞器,以视野单位(玩家)为中心、视野半径为半径物理检测四周障碍物,将检测到的障碍物点坐标和视野边界处取样点坐标都保存到一个数组中,将数组中点和玩家所在点依次组成三角形区域,这些多个三角形区域总和在一起就组成了玩家视野区域,将每个视野单位计算得到的视野范围写入视野网格中并渲染到2D纹理贴图中,得到的迷雾效果。本发明专利技术可以适用于大多数游戏地图,同时也不会消耗更多的游戏性能。

A game fog realization method

The invention discloses a method for realizing a game in the fog of war, each according to the size of the obstacle to the addition of the box Collider, with the vision of the unit (as the center, game player) sight radius as the radius of physical obstacle detection, the detected obstacle point coordinates and view boundary sampling point coordinates are saved to a in the array, the array of point and point game player composed of triangles, these multiple triangle sum on the composition of the field in the game player, will be calculated for each unit of vision scope and vision of grid rendering to write 2D texture mapping, the fog effect. The invention can be applied to most game maps, and does not consume more game performance at the same time.

【技术实现步骤摘要】
一种游戏战争迷雾实现方法
本专利技术涉及游戏
,具体涉及一种游戏战争迷雾实现方法。
技术介绍
战争迷雾(FogofWar),在传统意义上是指战争中由于对敌人情报不清楚而无法确认除友军所在以外的大部分地区,敌人的分布及活动情况。而目前在游戏范围内,尤其是即时战略类游戏中,这个词语出现的频率更高一些也更被多数人所熟悉。它可以在友方单位不在的情况下,让该区域视野丢失,这可以大大加强游戏的趣味性和可玩性,例如可以偷袭,埋伏敌方单位。现在战争迷雾实现主要依靠两种方法来实现,一种是将地图以格子为单位绘制,将地图网格存储为二维数组,运用LOS视线检测算法计算出可见格子和不可见格子。通过已经保存的地图二位数组数据,把这些信息写入一张2D纹理,然后把这个纹理投影到整个地图中,对于多余的锯齿,在shader中针对视野内和视野外使用不同的着色方式,达到模糊效果。这种方式存在一定局限性,地图必须是基于格子形成的拼接地图,这样不能用于大多数游戏地图当中。另一种则采用射线检测方式来探测出视线范围内障碍物,把相邻的射线命中点和原点连成三角形,最后组成一个网格模型,该网格形成的区域就是可视范围。通过shader对该区域进行渲染就能达到迷雾效果。这种做法虽然视觉效果好,但是它的效率非常慢,因为它需要大量射线检测,尤其是对于射线探测遇到被探测物边界时候,需要在这一块区域,运用密集的射线进行迭代探测,以便找到足够精确的交点,再加上对探测交点进行实时组装网格,这些都是低效率的操作。所以它的实用性虽然强,但是效率不高。当人物在移动时候,视野范围都发生了变化,这需要重新计算可视区域,如何大量单位发生移动,效率会明显降低,如何对迷雾检测和绘制优化也存在不足。
技术实现思路
针对现有技术的不足,本专利技术旨在提供一种游戏战争迷雾实现方法,可以适用于大多数游戏地图,同时也不会消耗更多的游戏性能。为了实现上述目的,本专利技术采用如下技术方案:一种游戏战争迷雾实现方法,包括如下步骤:S1在地图上找到所有可能阻挡视野的对象,依次给每个对象加上一个盒子碰撞检测器,盒子碰撞器大小和物体本身的大小一致;S2将拥有视野的玩家放入到地图当中,首先以玩家为中心,以玩家的视野半径为半径进行圆形物理碰撞检测;S3记下碰撞检测到盒子碰撞器的坐标,确定每个盒子碰撞器四个顶点位置,创建一个坐标数组,将每个盒子碰撞器四个顶点坐标存入到这个坐标数组中;S4再以玩家为中心,以玩家的视野半径为半径生成一个圆,在这个圆上按照一定间隔取边界点,将这些取到的边界点存入所述坐标数组中;S5将玩家探测得到坐标数组中的每个点和该玩家所在坐标点之间连线与玩家x坐标轴正方向之间夹角计算出来,将这些点按照夹角大小顺序进行排序,存入到排序坐标点集合中;S6每次取排序坐标点集合中相邻两个点和玩家所在坐标点,这三个点形成一个三角形,将每次形成的三角形的顶点存入到三角形顶点数组当中;S7创建一个网格模型,网格模型顶点参数由排序坐标点集合组成,网格模型中三角形顶点集合由三角形顶点数组提供,这样形成了一个新的网格模型,网格模型范围就是迷雾范围;S8将得到的新的网格模型渲染到一张2D纹理贴图中得到渲染贴图,除网格以外部分alpha值都为1,运用shader着色器编程,将这张渲染贴图的alpha通道和游戏画面alpha通道混合,就可以实现迷雾效果。进一步地,由于不同时刻玩家位置会发生改变,从而视野范围会发生改变,因此迷雾范围需要定时更新:将迷雾范围更新的频率设置为T时间内更新一次,每隔T时间将最近的若干次迷雾范围计算的结果缓存起来,分别写入渲染贴图的alpha通道和游戏画面alpha通道混合,在shader着色器中按时间进行插值过渡,得到新的迷雾范围。更进一步地,T的取值为0.5s。进一步地,如果地图中存在多个玩家,那就需要同时计算多个视野范围:用玩家当前坐标(x,y)和视野半径确定出一个唯一值K,K代表唯一地代表一个玩家U,用L表示U的生命周期;当U发生移动或者出现新的玩家,在每一帧中都会产生新的U,定义其生命周期为L,L的最大值和迷雾渲染更新频率T相同,对于每一帧中不移动的U,就对U的生命周期L按照游戏一帧消耗时间进行递减,移除L小于或等于0的U,当L为最大值时,计算该玩家U的视野范围,对于0<L<MAX的玩家U全部不用计算其视野范围,所以U不移动时候不需要再计算视野范围。更进一步地,K按照计算所得:K=x*R+y/R,其中R为玩家的视野半径。进一步地,步骤S8中,当存在多个玩家时,最后将对每个玩家计算得到视野网格进行渲染到一张2D纹理贴图中,除网格以外部分alpha值都为1,运用shader着色器编程,将这张渲染贴图的alpha通道和游戏画面alpha通道混合,就可以实现多玩家下的迷雾效果。本专利技术的有益效果在于:本专利技术可以适用于大多数游戏地图,基同时也不会消耗更多的游戏性能。本专利技术没有采用LOS算法来寻找地图中的可见区域(这种算法过分依赖地图是基于格子,也并没有完全依赖于游戏引擎中的射线检测来查找可见区域),而是在引擎中给障碍物加上一个盒子碰撞器,通过少量射线检测确定玩家视野半径内障碍物,只需要通过障碍物所在坐标和所加盒子碰撞器大小就能确定障碍物边界四个顶点坐标,而不需要通过大量密集的射线检测来确定障碍物边界坐标,在玩家视野范围内没有障碍物边界处,采用抽样取点。在多玩家的情况下,为了避免多次重复计算某玩家视野范围,对每个玩家定义了一个生命周期,只要在生命周期内,玩家没有移动,就不需要再次计算它的视野范围,从多个方面进行优化来减少游戏性能消耗。附图说明图1为本专利技术的实施流程示意图;图2为本专利技术实施例中盒子碰撞检测器的示意图;图3为本专利技术实施例中玩家放入地图后进行圆形物理碰撞检测的示意图;图4为本专利技术实施例中在地图上取迷雾边界的示意图;图5为本专利技术实施例中创建的网格模型示意图;图6为本专利技术实施例中多视野单位时的流程示意图。具体实施方式以下将结合附图对本专利技术作进一步的描述,需要说明的是,本实施例以本技术方案为前提,给出了详细的实施方式和具体的操作过程,但本专利技术的保护范围并不限于本实施例。本专利技术的总体技术思路为按照每个障碍物的大小给其添加盒子碰撞器,以视野单位(玩家)为中心、视野半径为半径物理检测四周障碍物,将检测到的障碍物点坐标和视野边界处取样点坐标都保存到一个数组中,将数组中点和玩家所在点依次组成三角形区域,这些多个三角形区域总和在一起就组成了玩家视野区域,将每个视野单位计算得到的视野范围写入视野网格中并渲染到2D纹理贴图中,得到的迷雾效果。如图1所示,所述游戏战争迷雾实现方法具体如下:在地图上面找到所有可能阻挡视野范围的对象,依次给每个对象加上一个盒子碰撞检测器,盒子碰撞器大小和物体本身的大小一致。这样可以通过盒子位置就能确定它的四个边界点位置,如图2所示,1表示盒子碰撞器,2表示障碍物,3,4,5,6表示障碍物四个边界点。将拥有视野的玩家放入到地图当中,首先以玩家为中心,以玩家视野半径(视野半径事先设定)为半径进行圆形物理碰撞检测(射线检测),如图3所示,图中A为视野单位(玩家),B为障碍物,C为视野单位的视野圈。通过记下碰撞检测到盒子碰撞器的坐标,确定每个盒子碰撞器四个顶点位置,创建一个坐标数组本文档来自技高网
...
一种游戏战争迷雾实现方法

【技术保护点】
一种游戏战争迷雾实现方法,其特征在于,包括如下步骤:S1在地图上找到所有可能阻挡视野的对象,依次给每个对象加上一个盒子碰撞检测器,盒子碰撞器大小和物体本身的大小一致;S2将拥有视野的玩家放入到地图当中,首先以玩家为中心,以玩家的视野半径为半径进行圆形物理碰撞检测;S3记下碰撞检测到盒子碰撞器的坐标,确定每个盒子碰撞器四个顶点位置,创建一个坐标数组,将每个盒子碰撞器四个顶点坐标存入到这个坐标数组中;S4再以玩家为中心,以玩家的视野半径为半径生成一个圆,在这个圆上按照一定间隔取边界点,将这些取到的边界点存入所述坐标数组中;S5将玩家探测得到坐标数组中的每个点和该玩家所在坐标点之间连线与玩家x坐标轴正方向之间夹角计算出来,将这些点按照夹角大小顺序进行排序,存入到排序坐标点集合中;S6每次取排序坐标点集合中相邻两个点和玩家所在坐标点,这三个点形成一个三角形,将每次形成的三角形的顶点存入到三角形顶点数组当中;S7创建一个网格模型,网格模型顶点参数由排序坐标点集合组成,网格模型中三角形顶点集合由三角形顶点数组提供,这样形成了一个新的网格模型,网格模型范围就是迷雾范围;S8将得到的新的网格模型渲染到一张2D纹理贴图中得到渲染贴图,除网格以外部分alpha值都为1,运用shader着色器编程,将这张渲染贴图的alpha通道和游戏画面alpha通道混合,就可以实现迷雾效果。...

【技术特征摘要】
1.一种游戏战争迷雾实现方法,其特征在于,包括如下步骤:S1在地图上找到所有可能阻挡视野的对象,依次给每个对象加上一个盒子碰撞检测器,盒子碰撞器大小和物体本身的大小一致;S2将拥有视野的玩家放入到地图当中,首先以玩家为中心,以玩家的视野半径为半径进行圆形物理碰撞检测;S3记下碰撞检测到盒子碰撞器的坐标,确定每个盒子碰撞器四个顶点位置,创建一个坐标数组,将每个盒子碰撞器四个顶点坐标存入到这个坐标数组中;S4再以玩家为中心,以玩家的视野半径为半径生成一个圆,在这个圆上按照一定间隔取边界点,将这些取到的边界点存入所述坐标数组中;S5将玩家探测得到坐标数组中的每个点和该玩家所在坐标点之间连线与玩家x坐标轴正方向之间夹角计算出来,将这些点按照夹角大小顺序进行排序,存入到排序坐标点集合中;S6每次取排序坐标点集合中相邻两个点和玩家所在坐标点,这三个点形成一个三角形,将每次形成的三角形的顶点存入到三角形顶点数组当中;S7创建一个网格模型,网格模型顶点参数由排序坐标点集合组成,网格模型中三角形顶点集合由三角形顶点数组提供,这样形成了一个新的网格模型,网格模型范围就是迷雾范围;S8将得到的新的网格模型渲染到一张2D纹理贴图中得到渲染贴图,除网格以外部分alpha值都为1,运用shader着色器编程,将这张渲染贴图的alpha通道和游戏画面alpha通道混合,就可以实现迷雾效果。2.根据权利要求1所述的游戏战争迷雾实现方法,其特征在于,由于不同时刻玩家位置会发生改变,从而视野范围会发生改变,因此迷...

【专利技术属性】
技术研发人员:杨鹏陆利坤李业丽
申请(专利权)人:北京印刷学院
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1