地图生成方法和装置与流程

文档序号:20836801发布日期:2020-05-22 16:58阅读:271来源:国知局
地图生成方法和装置与流程

本发明涉及地图领域,具体而言,涉及一种地图生成方法和装置。



背景技术:

随着游戏的种类越来越多,为了更好的吸引用户,游戏中引入了仿真的场景,在场景中将出现了地图,该地图可以方便清楚的使玩家知晓当前在游戏中的所处的位置,而游戏中地图的生成是一种复杂的工作。

为了提高游戏的体验,游戏中的地图通常是在不同的管卡设置不同的游戏地图,避免重复的地图无法带来新颖性。即每个关卡设置了随机地图。随机地图的是一系列小地图块(不超过100m*100m)在二维平面上的随机排布,随机地块的拼接痕迹明显。地图块内的游戏要素也都相对固化,建筑或者地形不会有双层结构。本质上而言,是个限制了3d表现的2.5d的场景,游戏场景是个三维曲面,每一对(x,y)值,会对应唯一的z值。

大量使用的随机关卡机制,其核心是将若干较小的地图块实现拼接,组装成一个内部连通的关卡,是一种边界封闭的关卡随机方案。无法满足规模地图和复杂的立体空的地图。即生成大规模、复杂度高的随机地图不够灵活。

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



技术实现要素:

本发明实施例提供了一种地图生成方法和装置,以至少解决现有技术中,生成大规模随机地图的灵活性较差的技术问题。

根据本发明实施例的一个方面,提供了一种地图生成方法,包括:在子关卡地图库中选择n个子关卡地图,其中,n为大于1的自然数;依次将所述n个子关卡地图中的前m个子关卡地图放置在预定的地图区域内,其中,n>m,所述前m个子关卡地图均位于所述地图区域内、且所述前m个子关卡地图相互不重叠;依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在所述地图区域内,得到目标地图,其中,所述n-m个子关卡地图为所述n个子关卡地图中除所述前m个子关卡地图之外的子关卡地图,所述预定条件包括:在所述待放置的子关卡地图位于所述地图区域中的目标候选区域的情况下,所述待放置的子关卡地图与所述地图区域内已放置的子关卡地图均不重叠、且与所述地图区域内已放置的子关卡地图中的至少一个子关卡地图连通。

根据本发明实施例的另一方面,还提供了一种地图生成装置,包括:选择单元,用于在子关卡地图库中选择n个子关卡地图,其中,n为大于1的自然数;第一放置单元,用于依次将所述n个子关卡地图中的前m个子关卡地图放置在预定的地图区域内,其中,n>m,所述前m个子关卡地图均位于所述地图区域内、且所述前m个子关卡地图相互不重叠;第二放置单元,用于依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在所述地图区域内,得到目标地图,其中,所述n-m个子关卡地图为所述n个子关卡地图中除所述前m个子关卡地图之外的子关卡地图,所述预定条件包括:在所述待放置的子关卡地图位于所述地图区域中的目标候选区域的情况下,所述待放置的子关卡地图与所述地图区域内已放置的子关卡地图均不重叠、且与所述地图区域内已放置的子关卡地图中的至少一个子关卡地图连通。

根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述地图生成方法。

根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的地图生成方法。

在本发明实施例中,通过在子关卡地图库中选择n个子关卡地图,其中,n为大于1的自然数;依次将n个子关卡地图中的前m个子关卡地图放置在预定的地图区域内,其中,n>m,前m个子关卡地图均位于地图区域内、且前m个子关卡地图相互不重叠;依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在地图区域内,得到目标地图,其中,n-m个子关卡地图为n个子关卡地图中除前m个子关卡地图之外的子关卡地图,预定条件包括:在待放置的子关卡地图位于地图区域中的目标候选区域的情况下,待放置的子关卡地图与地图区域内已放置的子关卡地图均不重叠、且与地图区域内已放置的子关卡地图中的至少一个子关卡地图连通,达到了在子关卡拼接的基础上,基本随机单位是子关卡的目的,从而实现了根据随机的子关卡生成随机的大地图的技术效果,进而解决了现有技术中,生成大规模随机地图的灵活性较差的技术问题。

附图说明

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

图1是根据本发明实施例的一种可选的地图生成方法的应用环境的示意图;

图2是根据本发明实施例的一种可选的地图生成方法的流程图;

图3是根据本发明实施例的一种可选的随机岛屿关卡地图的示意图;

图4是根据本发明实施例的一种可选的戏主要场景是海岛群的示意图;

图5是根据本发明实施例的一种可选的岛屿扩张的示意图;

图6是根据本发明实施例的一种可选的随机产生的大陆地图种子关卡的示意图;

图7是根据本发明实施例的一种可选的随机大陆的生成过程示意图(一);

图8是根据本发明实施例的一种可选的随机大陆的生成过程示意图(二);

图9是根据本发明实施例的一种可选的随机大陆的生成过程示意图(三);

图10是根据本发明实施例的一种可选的算法会随机的找到大城市的示意图;

图11是根据本发明实施例的一种可选的增加城区地图后的整个大陆的示意图;

图12是根据本发明实施例的一种可选的生成过渡关卡的位置的示意图;

图13是根据本发明实施例的一种可选的过渡关卡的高度曲线的重叠示意图;

图14是根据本发明实施例的一种可选的游戏中随机地图生成方法的流程图;

图15是根据本发明实施例的一种可选的地图生成装置的结构示意图;

图16是根据本发明实施例的一种可选的地图生成方法的电子装置的结构示意图。

具体实施方式

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

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

为了更好的理解本申请,现将部分名词说明如下:

大世界:传统射击游戏一般都是在200m*200m范围的场景以内进行游戏(此处的距离度量是相对于玩家人物角色模型高度来计算的,一般游戏的角色高度是1.7-2.0m之间)。从pc端游戏《绝境求生》(pubg)开始,很多射击游戏都引入了大世界场景。游戏地图尺寸规模显著扩大到了8km*8km的量级。

缩圈:伴随大世界地图诞生的一种经典游戏玩法机制。随着游戏时间后移,游戏场景中会产生半径逐渐缩小的若干个圆形,位于圆形外的玩家游戏角色会持续的受到伤害。玩家如果想取得游戏胜利,就必须始终保持在圆圈内部。大世界地图配合缩圈,能够很好的实现将玩家从一个广阔的世界逐步聚集到很小的范围,既保证了场景体验的丰富多样,也能确保玩家间游戏对抗能有终点,决出胜负。

3d游戏:3d的d是dimension的缩写,如果游戏基础模型(游戏的人物,场景,基础地形)是使用三维立体模型实现的,游戏的人物角色在游戏场景中的位置是用三维坐标(x,y,z)来刻画的,那么就把这种游戏称作3d游戏。

子关卡:子关卡是unreal4引擎中的概念。游戏的入口关卡只有一个,入口关卡一般是常驻关卡,在一局游戏中一直存在,我们称之为主关卡。如果其他关卡是通过主关卡来动态加载或者卸载的,我们就可以认为这些动态关卡都是从属于主关卡的子关卡。子关卡的场景大小并没有限制,子关卡本身也可以具备游戏逻辑或者玩法。主关卡和子关卡只是结构上的从属关系,而不是包含关系。

连通性:本申请中的连通性实质上是一种基于距离的概念,当两个子关卡的距离满足一定条件时,一般是小于等于某个阈值,我们认为两个子关卡连通。

根据本发明实施例的一个方面,提供了一种地图生成方法,可选地,作为一种可选的实施方式,上述地图生成方法可以但不限于应用于如图1所示的硬件环境中的地图生成系统中,其中,该地图生成系统可以包括但不限于终端设备102、网络110及服务器112。

其中,上述终端设备102中可以包括但不限于:人机交互屏幕104,处理器106及存储器108。人机交互屏幕104用于通过人机交互接口获取人机交互指令,还用于呈现游戏中的随机地图的画面;处理器106用于响应上述人机交互指令,完成随机的子关卡的地图放置在对应的大地图。存储器108用于存储子关卡地图库、子关卡的随机地图及目标地图。这里服务器可以包括但不限于:数据库114及处理引擎116,处理引擎116用于调用数据库114中存储子关卡地图库中的n个子关卡地图,依次将n个子关卡地图中的前m个子关卡地图随机放置在预定的地图区域内,依次将n-m个子关卡地图满足与地图区域内已放置的子关卡地图均不重叠、且与地图区域内已放置的子关卡地图中的至少一个子关卡地图连通的待放置的子关卡地图放置在地图区域内,得到目标地图。进而基于子关卡地图为随机单位,灵活的生成目标地图。

具体过程如以下步骤:在终端设备102中的人机交互屏幕104显示游戏客户端运行一局游戏任务的交互界面。如步骤s102-s108,获取子关卡地图库中选择n个子关卡地图,并将该n个子关卡地图通过网络110发送服务器112。在服务器112依次将n个子关卡地图中的前m个子关卡地图放置在预定的地图区域内,其中,n>m,前m个子关卡地图均位于地图区域内、且前m个子关卡地图相互不重叠,依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在地图区域内,得到目标地图。然后将上述确定出的结果返回终端设备102。

然后,如步骤s102-s108,终端设备102在子关卡地图库中选择n个子关卡地图,依次将n个子关卡地图中的前m个子关卡地图相互不重叠放置在预定的地图区域内,依次将n-m个子关卡地图满足与地图区域内已放置的子关卡地图均不重叠、且与地图区域内已放置的子关卡地图中的至少一个子关卡地图连通的待放置的子关卡地图放置在地图区域内,得到目标地图,进而基于子关卡地图为随机单位,灵活的生成目标地图。

可选地,在本实施例中,上述生成地图方法可以但不限于应用于服务器114中,用于将子关卡的随机地图放置在满足预设条件的区域内,得到目标地图。其中,终端设备102可以但不限于为手机、平板电脑、笔记本电脑、pc机等支持运行应用客户端的终端设备。上述服务器114和终端设备102可以但不限于通过网络实现数据交互,上述网络可以包括但不限于无线网络或有线网络。其中,该无线网络包括:蓝牙、wifi及其他实现无线通信的网络。上述有线网络可以包括但不限于:广域网、城域网、局域网。上述仅是一种示例,本实施例中对此不作任何限定。

可选地,作为一种可选的实施方式,如图2所示,上述地图生成方法包括:

步骤s202,在子关卡地图库中选择n个子关卡地图,其中,n为大于1的自然数。

步骤s204,依次将n个子关卡地图中的前m个子关卡地图放置在预定的地图区域内,其中,n>m,前m个子关卡地图均位于地图区域内、且前m个子关卡地图相互不重叠。

步骤s206,依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在地图区域内,得到目标地图,其中,n-m个子关卡地图为n个子关卡地图中除前m个子关卡地图之外的子关卡地图,预定条件包括:在待放置的子关卡地图位于地图区域中的目标候选区域的情况下,待放置的子关卡地图。

可选的,本实施的方案可以包括但不限于应用于在射击类游戏中的大地图的随机生成。在大世界游戏场景中,随机产生地形和建筑。其中,随时产生的地形包括但不限于:岛屿、大陆。

以岛屿为例,将多个岛屿地图放置在地图区域,在子地图库在中可以选择8个子关卡地图,在8个子关卡地图中的随机选择4个地图随机放置在预定的地图区域,如图3所示,随机岛屿关卡地图的示意图,放置4个岛屿地图,其中,该4个岛屿随机放置在地图中,。4个岛屿随机放置在地图区域内,该4个子关卡地图相互不重叠。然后,依次将剩余的4个放置中的每个子关卡地图作为当前的待放置的地图,该当前地图满足与地图区域内已放置的子关卡地图均不重叠、且与地图区域内已放置的子关卡地图中的至少一个子关卡地图连通,进而得到目标地图。即可以完成岛屿子关卡地图中岛屿的生成。

需要说明的是,在子地图库中的选择8个子关卡地图是可以包括但不限于对应关卡1至8,即8个子关卡地图是存在关卡顺序的。在生成地图中的岛屿时,先将前4关对应的关卡子地图依次随机放置在地图区域中,但该4个关卡子地图需要满足彼此不可以相互重叠,然后,将剩余的子关卡地图5、依次将剩余的子关卡地图6、依次将剩余的子关卡地图7、依次将剩余的子关卡地图8依次放置在地图区域内,依次的情况理解为,放第5个,第6个,都认为是当前待放置的子关卡地图,但剩余的4个子关卡地图放置在地图区域中需要满足与地图区域内已放置的子关卡地图均不重叠、且与地图区域内已放置的子关卡地图中的至少一个子关卡地图连通。

可选的,在本实施例中,依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在地图区域内,包括:

s1,依次对于n-m个子关卡地图中当前待放置的子关卡地图,在地图区域中确定是否存在目标候选区域,其中,目标候选区域用于放置当前待放置的子关卡地图;

s2,在确定出存在目标候选区域的情况下,将当前待放置的子关卡地图确定为预定条件的待放置的子关卡地图,并将当前待放置的子关卡地图放置在地图区域中的目标候选区域。

需要说明的是,目标候选区域是包括但不限于:是满足预定条件的区域,即在待放置的子关卡地图位于地图区域中的目标候选区域的情况下,待放置的子关卡地图与地图区域内已放置的子关卡地图均不重叠、且与地图区域内已放置的子关卡地图中的至少一个子关卡地图连通。

其中,在地图区域中确定是否存在目标候选区域,包括:

在地图区域中确定是否存在与当前待放置的子关卡地图对应的目标放置位置,其中,目标放置位置用于放置当前待放置的子关卡地图所在的第一区域的中心点,且在中心点位于目标放置位置的情况下,第一区域与地图区域内已放置的子关卡地图所占的区域均不重叠,且第一区域中的至少一条边与地图区域内已放置的子关卡地图所占的区域中的一条边之间的距离大于0、且小于预定距离阈值;

在地图区域中确定存在目标放置位置的情况下,确定出地图区域中存在目标候选区域,其中,目标候选区域为在中心点位于目标放置位置时当前待放置的子关卡地图所在的第一区域。

以随机生成岛屿举例说明,图4所示的游戏主要场景是海岛(岛屿)群。在图4中,岛屿的连通性的定义可以理解为,岛屿(子关卡)之间距离<50米(参数可调),岛屿之间距离很近,玩家可以快速从一个岛屿移动到另一个岛屿。即目标候选区域是满足预定条件的区域,将当前待放置的子关卡地图放置在第一区域的中心点,放置后的子关卡地图与地图区域内已放置的子关卡地图所占的区域均不重叠,且第一区域中的至少一条边与地图区域内已放置的子关卡地图所占的区域中的一条边之间的距离大于0、且小于预定距离阈值。也就是说,放置当前子关卡地图的目标候选区域满足,在当前子关卡地图放置后,该当前子关卡地图对应的区域与地图区域内已放置的子关卡地图所占的区域均不重叠,且第一区域中的至少一条边与地图区域内已放置的子关卡地图所占的区域中的一条边之间的距离大于0、且小于预定距离阈值。

在实际应用中,生成随机岛屿算法的第一步是产生一个随机岛屿数组。此处采用的是带权重的随机,在子关卡(这些子关卡都是岛屿)库中,不重复的选取n个子关卡,加入待随机岛屿数组。数组中的全部岛屿会按照顺序,逐个添加到地图中。

随机岛屿的扩张算法的第一步是产生若干独立的种子岛屿。iseedisland=4(参数)

种子岛屿之间可以距离很远(即依次随机放置n个中前m个子关卡地图),不考虑连通性。进而可以产生相对分离的岛屿起点,让整体岛屿分布更随意。如图5所示,岛屿扩张的示意图。图5中阴影区域是下一个岛屿在考虑互斥性之后可以摆放的位置。与圆相切的黑色区域,则是附加考虑到连通性之后,岛屿可以选择的位置。下一个岛屿(中心点)只能是在阴影区域的位置创建。算法将在全部阴影区域随机的选择一个作为下一个岛屿的位置。

5号岛屿,是随机产生的第一个确保了连通性的岛屿。每添加一个岛屿,就会刷新一次当前岛屿分布图。后续的全部子关卡都需要考虑连通性之后才能往地图中添加。

其中,具体随机生成岛屿的步骤可以包括如下内容:

步骤1,根据随机地图配置表中每个子关卡的权重,做不重复的抽取,直至抽取出n个子关卡。存入levellist(列表)中,下标从0开始计数。

步骤2,从levellist中抽取第一个关卡,放置到大地图中,确保整个levellist[0]都位于2km*2km的整体边界中。

步骤3,陆续抽取后续的iseedisland-1个关卡,依次放入大场景中,确保levellist[0],levellist[1],…,levellist[iseedisland-1]彼此位置不交叠即可。至此随机种子岛屿创建完毕。

步骤4,从levellist[iseedisland]开始,后续关卡的放置,既要考虑边界,也要考虑连通性。岛屿扩张的连通性为:两个关卡,既不能有重叠,也要保证至少有一条边的距离小于fadjacentdist(50m),则认为两个关卡连通。当levellist[k]与前面的至少一个关卡levellist[i]保持连通(i=0,1,2,……,k-1),我们认为levellist[k]与之前的关卡群连通。将地图栅格化为20m*20m的小格子,通过枚举的方式,很容易就可以算出哪些位置(图5中的阴影区域)可以放置levellist[k],而又有哪些位置(图5中的阴影区域)可以保证新放入的关卡至少和前面某一个关卡连通。如果整个地图都找不到阴影区域,则认为子关卡放置失败,直接跳过levellist[k]。开始处理levellist[k+1]。

步骤5,持续进行步骤4,直至全部子关卡都处理完毕。或者以放置子关卡的总面积达到指定阈值fsaturateratio。

其中,随机岛屿链算法的主要参数:

iseedisland:控制子关卡的初始分离状态。

fadjacentdist:控制相连通的子关卡空间聚集程度。

fsaturateratio:控制地图的整体水域和陆地占比。

每个子关卡自己本身有长宽属性,有被抽取的随机权重。

采用随机岛链算法可以很好的控制岛屿分布,满足多种类型的海岛战游戏体验。

可选的,在本实施中,在地图区域中确定是否存在目标候选区域,包括:

在地图区域中确定是否存在与当前待放置的子关卡地图对应的目标放置位置,其中,目标放置位置用于放置当前待放置的子关卡地图所在的第一区域的中心点,且在中心点位于目标放置位置的情况下,第一区域与地图区域内已放置的子关卡地图所占的区域均不重叠,且第一区域中的至少一条边与地图区域内已放置的子关卡地图所占的区域中的一条边重合;

在地图区域中确定存在目标放置位置的情况下,确定出地图区域中存在目标候选区域,其中,目标候选区域为在中心点位于目标放置位置时当前待放置的子关卡地图所在的第一区域。

以随机生成大陆举例说明,大陆的连通性,是指地块之间必须共有一条直线边,并且边要完全重叠在一起,那么连通在一起的子关卡就会形成一个完整大陆。随机大陆的产生需要考虑城区分布,水陆衔接。还会对地形之上的建筑做随机生成,进一步丰富射击游戏的体验。

随机大陆扩张算法和随机岛屿算法,差异在于,随机大陆算法会将地图栅格化为100m*100m的格子,每个子关卡的大小,固定为100m*100m。两个子关卡连通,必须是有一条边重合。大陆扩张算法的整体流程是与岛屿扩张算法一致的。

如图6所示,随机产生的大陆地图种子关卡的示意图。图6中黑色小格子是初始的随机种子关卡,阴影区域是全部关卡当前的整体边界。大陆随机算法,是需要保证边界完全对齐的扩张算法。(大陆中心地图是黑色,阴影区域是大陆中心往海的过渡地图,通常往海扩了一个像素,通常是一个斜坡),大陆的连通是指:黑色块需要与黑色块的边界重合。

其中,具体随机生成大陆的步骤可以包括如下内容:

步骤1,根据随机地图配置表中每个子关卡的权重,做不重复的抽取,直至抽取出n个子关卡。存入levellist(列表)中,下标从0开始计数。

步骤2,从levellist中抽取第一个关卡,放置到大地图中,确保整个levellist[0]都位于2km*2km的整体边界中。

步骤3,陆续抽取后续的iseedisland-1个关卡,依次放入大场景中,确保levellist[0],levellist[1],…,levellist[iseedisland-1]彼此位置不交叠即可。至此随机种子岛屿创建完毕。

步骤4,从levellist[iseedisland]开始,后续关卡的放置,既要考虑边界,也要考虑连通性。大陆地图中扩张的连通性为:大陆随机算法,是需要保证边界完全对齐的扩张算法。当levellist[k]与前面的至少一个关卡levellist[i]保持连通(i=0,1,2,……,k-1),我们认为levellist[k]与之前的关卡群连通。将地图栅格化为20m*20m的小格子,通过枚举的方式,很容易就可以算出哪些位置(如图5中的阴影区域)可以放置levellist[k],而又有哪些位置(如图5中的阴影区域)可以保证新放入的关卡至少和前面某一个关卡连通。如果整个地图都找不到阴影区域,则认为子关卡放置失败,直接跳过levellist[k]。开始处理levellist[k+1]。

步骤5,持续进行step4,直至全部子关卡都处理完毕。或者以放置子关卡的总面积达到指定阈值fsaturateratio(算橙色或橙色+绿色)

大陆地图的扩张与岛屿地图的扩张的区别包括:岛屿地图之间有过渡;大陆地图是一个完整的关卡。

如图7~9展示的是随机大陆的生成过程示意图。阴影部分的格子是大陆的边界线。或者说是陆地和水域的分界线。当海陆占比达到目标值之后,算法停止。

图9是某次运算最终产生的大陆面积示意图。大陆连通图产生之后,要专门为3d射击游戏做一些特殊的处理,以保证游戏体验。

需要说明的是,在随机生成大陆地图后,可以随机产生城区。具体的生成城区的步骤如下:

大城区的随机生成过程,如图9所示,整个黑色区域的格子都是陆地区域,但这些大陆地区格子都只有100m*100m,这么小的格子上,是无法创建出一个完成城市的场景的。大多数射击游戏的城市规模都是200m*200m到300m*300m之间,需要在大陆上产生城市,需要做城区选址,合并一些小黑色格。

计算每个黑格周边相邻黑格子的个数,连通数量为8的黄格子一定是某个300m*300m陆地块的中心。随机筛选出一部分这样的区域,整体替换为300m*300m的大关卡块。此处需要设定目标大城区数量。每产生一个大城区之后,刷新一下可以产生大城区的待选区域。当找到了目标数量的大城区,或者已经没有区域可以产生大城区时,算法终止。如图10所示,算法会随机的找到大城市的示意图,如图10所示,城市1、城市2、城市3以及城市4。

中等城区的随机生成过程,其操作和大城区的选择基本一致。在剩下的黑色区域中,随机筛选出若干个200m*200m的格子。这个可以通过判定黑格子的右、下、右下三处是否都是黑格子来断言。图11所示,增加城区地图后的整个大陆的示意图,如图11所示,是增加了四个200m*200m子关卡之后的整个大陆示意图,如图11所示的4个大陆a、b、c、d。

需要说明的是,还可以通过其他的随机算法来产生岛屿或者大陆。例如可以先在2d平面内随机布点,而后采用聚类的方式产生聚类中心从而产生子关卡位置,再结合连通性做子关卡合并,从而产生岛链或者大陆。

对于连通性的定义,更合理的做法是通过位图比较。把每个子关卡都栅格化成为位图,0表示海,1表示陆地。通过位图之间的像素距离来定义连通,能更合理的描述拥有不规则外轮廓的关卡之间的距离。

随机大陆的生成方式,也可以是先栅格化地图成为100m*100m的小格子,采用随机岛链算法产生位置相对离散的城市分布,将城市看成随机种子关卡,而后使用边界相邻的扩张方式产生大陆填充子块,产生对应的海陆衔接块,直至达到目标海陆占比值。

可选的,在本实施例中,在将当前待放置的子关卡地图放置在地图区域中的目标候选区域的情况下,还包括:

在地图区域中与目标候选区域相邻的部分区域上设置目标过渡地图,其中,目标过渡地图用于连接当前待放置的子关卡地图与空闲区域,空闲区域为地图区域中尚未设置子关卡地图和目标类型的过渡地图的区域,目标过渡地图的类型为目标类型。

还需要说明的是,该目标过渡地图可以包括但不限于:将本申请随机生成的大陆和岛屿进行衔接。

其中,在地图区域中与目标候选区域相邻的部分区域上设置目标过渡地图,包括:

获取目标过渡地图所在的第二区域的顶点中与第一区域的顶点相连的第一顶点;

将目标顶点在地图区域中的高度设置为第一高度,其中,第一区域的顶点在地图区域中的高度为第一高度;

将第二区域的顶点中除第一顶点之外的顶点在地图区域中的高度设置为第二高度,其中,第二高度小于第一高度。

在实际应用中,大陆整体结构和城区分布已经处理完毕,接下来可以进行海陆衔接处理。

海陆衔接需要对子关卡做一些硬性规定。全部陆地地形关卡都要求地形的边界处必须高度等于预定阈值,例如,5米。

如图12所示,生成过渡关卡的位置的示意图,如图12中阴影区域会创建特殊的过渡关卡,处理海陆衔接。每个阴影区域关卡只需要考虑其四个顶点是否与某个黄色关卡顶点连接。黑色地形关卡的全部边界高度都是5米,所以,只要出现黑色和阴影区域衔接,阴影的顶点必须设置高度为5米。

每个顶点的取值都是5米或者0米,我们的海陆衔接关卡共计2^4=16种类型(实际上可以去掉四个顶点高度都是0的类型,这种地块周边8个格子都是水)。海陆衔接关卡与陆地连接的顶点高度为5,不连接的顶点高度为0,主体地形为海水,顶点高度条件的前提下可以自由的设计各种海岸线过渡。衔接关卡的边缘地表高度,需要保证如图13所示,过渡关卡的高度曲线的重叠示意图,如图13所示的高度过渡曲线(从5米过渡到0米)能较好重叠。

考虑到了大陆地块连接、随机产生城区、海陆地形衔接的完整大陆随机算法已经完成。

子关卡按照其功能分成了:300m*300m的大城市关卡,200m*200m的小城市关卡,100m*100m的顶点高度都为5米的陆地地形关卡,15种顶点高度不一的100m*100m海陆衔接关卡。

随机地图需要制备大量的子关卡。用以确保每次随机都有足够差异。也可以自定义各种形状的陆地块,来替换剩余黄色子关卡。比如用一个300m*100m的一个长山脉地形关卡,顶替三个黄色子关卡。只需要保证陆地型的子关卡的边界必须是5米左右。边界可以随机做一些起伏,关卡间允许少许边界交叠,边界线会更自然。

可选的,在本实施例中,在依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在地图区域内之后,还包括:

在地图区域内已放置的每个子关卡地图占地图区域中的一个单元格的情况下,在每个子关卡地图所占的单元格中确定是否存在目标单元格,其中,与目标单元格相连的、地图区域内已放置的子关卡地图所占的单元格的数量大于或等于预定数量阈值;

在确定存在目标单元格的情况下,将目标单元格以及与目标单元格相连的、地图区域内已放置的子关卡地图所占的单元格上的子关卡地图组成目标关卡地图。

通过本申请提供的方案,通过在子关卡地图库中选择n个子关卡地图,其中,n为大于1的自然数;依次将n个子关卡地图中的前m个子关卡地图放置在预定的地图区域内,其中,n>m,前m个子关卡地图均位于地图区域内、且前m个子关卡地图相互不重叠;依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在地图区域内,得到目标地图,其中,n-m个子关卡地图为n个子关卡地图中除前m个子关卡地图之外的子关卡地图,预定条件包括:在待放置的子关卡地图位于地图区域中的目标候选区域的情况下,待放置的子关卡地图与地图区域内已放置的子关卡地图均不重叠、且与地图区域内已放置的子关卡地图中的至少一个子关卡地图连通,达到了在子关卡拼接的基础上,基本随机单位是子关卡的目的,从而实现了根据随机的子关卡生成随机的大地图的技术效果,进而解决了现有技术中,生成大规模随机地图的灵活性较差的技术问题。

作为一种可选的实施方案,依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在地图区域内,包括:

在将n个子关卡地图中的第i个子关卡地图放置在地图区域内之后,确定地图区域内已放置的子关卡地图的面积是否超过预定面积阈值,其中,m<i<n;

在地图区域内已放置的子关卡地图的面积超过预定面积阈值的情况下,停止将n个子关卡地图中的第i+1个至第n个子关卡地图放置在地图区域内。

需要说明的是,在城区关卡生成之后,还需要对关卡中的建筑做随机处理。先在子关卡上标记可以放置建筑的区块位置,类似地基的感觉。而后,在建筑区块上随机的产生各种建筑。从而实现随机城市和随机建筑群。

还需要说明的是,在随机算法之外,还加入伪随机的关卡产生方式。将随机地图的子关卡位置,建筑类型等保存为配置,也可以为每一个关卡单独烘焙导航数据并作为配置保存起来。每次关卡随机,实际上是读取配置,加载提前设计好的伪随机地图。当配置的伪随机关卡数量丰富到一定程度时,也能很好的保证玩家体验的新鲜感。伪随机关卡的每个关卡都是策划验收通过的,可以保证较好的单局游戏体验。

通过随机算法和伪随机配置两种方式的结合,可以做到指定每种精心设计的关卡在随机地图模式中出现的概率。也能在特定时间上架特定的玩法地图。

本申请中提供的实施方案可以为射击类游戏玩法带来每次都新鲜的游戏体验,地图可以永不重复。

作为一种可选的实施方案,本发明还提供了一种游戏中随机地图生成方法。如图14游戏中随机地图生成方法的流程图。

步骤1,玩家进入游戏;

步骤2,判断是否采用真随机方案,是的情况下,执行步骤3,否的情况下,执行步骤4;

步骤3,通过随机算法产生地图;

步骤4,读取配置来产生提前生成和验收的关卡;

步骤5,判断是否为随机大陆算法,是的情况下,执行步骤6,否的情况下,执行步骤7;

步骤6,随机大陆扩张算法产生子关卡分布;

步骤7,随机岛屿扩张算法产生子关卡分布;

步骤8,替换部分子关卡产生城区子关卡;

步骤9,根据海陆边界产生地形衔接子关卡;

步骤10,加载子关卡;

步骤11,随机替换子关卡中的建筑;

步骤12,正是开始游戏。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

根据本发明实施例的另一个方面,还提供了一种用于实施上述地图生成方法的地图生成装置。如图15所示,该装置包括:选择单元1501、第一放置单元1503以及第二放置单元1505。

选择单元1501,用于在子关卡地图库中选择n个子关卡地图,其中,n为大于1的自然数。

第一放置单元1503,用于依次将n个子关卡地图中的前m个子关卡地图放置在预定的地图区域内,其中,n>m,前m个子关卡地图均位于地图区域内、且前m个子关卡地图相互不重叠。

第二放置单元1505,用于依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在地图区域内,得到目标地图,其中,n-m个子关卡地图为n个子关卡地图中除前m个子关卡地图之外的子关卡地图,预定条件包括:在待放置的子关卡地图位于地图区域中的目标候选区域的情况下,待放置的子关卡地图与地图区域内已放置的子关卡地图均不重叠、且与地图区域内已放置的子关卡地图中的至少一个子关卡地图连通。

通过本申请提供的实施例,选择单元1501在子关卡地图库中选择n个子关卡地图,其中,n为大于1的自然数;第一放置单元1503依次将n个子关卡地图中的前m个子关卡地图放置在预定的地图区域内,其中,n>m,前m个子关卡地图均位于地图区域内、且前m个子关卡地图相互不重叠;第二放置单元1505依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在地图区域内,得到目标地图,其中,n-m个子关卡地图为n个子关卡地图中除前m个子关卡地图之外的子关卡地图,预定条件包括:在待放置的子关卡地图位于地图区域中的目标候选区域的情况下,待放置的子关卡地图与地图区域内已放置的子关卡地图均不重叠、且与地图区域内已放置的子关卡地图中的至少一个子关卡地图连通。达到了在子关卡拼接的基础上,基本随机单位是子关卡的目的,从而实现了根据随机的子关卡生成随机的大地图的技术效果,进而解决了现有技术中,生成大规模随机地图的灵活性较差的技术问题。

作为一种可选的实施方案,第一放置单元1503,包括:

第一确定模块,用于依次对于n-m个子关卡地图中当前待放置的子关卡地图,在地图区域中确定是否存在目标候选区域,其中,目标候选区域用于放置当前待放置的子关卡地图;

放置模块,用于在确定出存在目标候选区域的情况下,将当前待放置的子关卡地图确定为预定条件的待放置的子关卡地图,并将当前待放置的子关卡地图放置在地图区域中的目标候选区域。

其中,第一确定模块,包括:

第一确定子模块,用于在地图区域中确定是否存在与当前待放置的子关卡地图对应的目标放置位置,其中,目标放置位置用于放置当前待放置的子关卡地图所在的第一区域的中心点,且在中心点位于目标放置位置的情况下,第一区域与地图区域内已放置的子关卡地图所占的区域均不重叠,且第一区域中的至少一条边与地图区域内已放置的子关卡地图所占的区域中的一条边之间的距离大于0、且小于预定距离阈值;

第二确定子模块,用于在地图区域中确定存在目标放置位置的情况下,确定出地图区域中存在目标候选区域,其中,目标候选区域为在中心点位于目标放置位置时当前待放置的子关卡地图所在的第一区域。

其中,确定模块,包括:

第三确定子模块,用于在地图区域中确定是否存在与当前待放置的子关卡地图对应的目标放置位置,其中,目标放置位置用于放置当前待放置的子关卡地图所在的第一区域的中心点,且在中心点位于目标放置位置的情况下,第一区域与地图区域内已放置的子关卡地图所占的区域均不重叠,且第一区域中的至少一条边与地图区域内已放置的子关卡地图所占的区域中的一条边重合;

第四确定子模块,用于在地图区域中确定存在目标放置位置的情况下,确定出地图区域中存在目标候选区域,其中,目标候选区域为在中心点位于目标放置位置时当前待放置的子关卡地图所在的第一区域。

作为一种可选的实施方案,上述装置还可以包括:

第三设置单元,用于在将当前待放置的子关卡地图放置在地图区域中的目标候选区域的情况下,在地图区域中与目标候选区域相邻的部分区域上设置目标过渡地图,其中,目标过渡地图用于连接当前待放置的子关卡地图与空闲区域,空闲区域为地图区域中尚未设置子关卡地图和目标类型的过渡地图的区域,目标过渡地图的类型为目标类型。

其中,第三设置单元,包括:

获取模块,用于获取目标过渡地图所在的第二区域的顶点中与第一区域的顶点相连的第一顶点;

第一设置模块,用于将目标顶点在地图区域中的高度设置为第一高度,其中,第一区域的顶点在地图区域中的高度为第一高度;

第二设置模块,用于将第二区域的顶点中除第一顶点之外的顶点在地图区域中的高度设置为第二高度,其中,第二高度小于第一高度。

作为一种可选的实施方案,上述装置还可以包括:

确定单元,用于在依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在地图区域内之后,在地图区域内已放置的每个子关卡地图占地图区域中的一个单元格的情况下,在每个子关卡地图所占的单元格中确定是否存在目标单元格,其中,与目标单元格相连的、地图区域内已放置的子关卡地图所占的单元格的数量大于或等于预定数量阈值;

组成单元,用于在确定存在目标单元格的情况下,将目标单元格以及与目标单元格相连的、地图区域内已放置的子关卡地图所占的单元格上的子关卡地图组成目标关卡地图。

其中,第一设置单元1503,可以包括:

第二确定模块,用于在将n个子关卡地图中的第i个子关卡地图放置在地图区域内之后,确定地图区域内已放置的子关卡地图的面积是否超过预定面积阈值,其中,m<i<n;

停止模块,用于在地图区域内已放置的子关卡地图的面积超过预定面积阈值的情况下,停止将n个子关卡地图中的第i+1个至第n个子关卡地图放置在地图区域内。

根据本发明实施例的又一个方面,还提供了一种用于实施上述地图生成方法的电子装置,如图16所示,该电子装置包括存储器1602和处理器1604,该存储器1602中存储有计算机程序,该处理器1604被设置为通过计算机程序执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。

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

s1,在子关卡地图库中选择n个子关卡地图,其中,n为大于1的自然数;

s2,依次将n个子关卡地图中的前m个子关卡地图放置在预定的地图区域内,其中,n>m,前m个子关卡地图均位于地图区域内、且前m个子关卡地图相互不重叠;

s3,依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在地图区域内,得到目标地图,其中,n-m个子关卡地图为n个子关卡地图中除前m个子关卡地图之外的子关卡地图,预定条件包括:在待放置的子关卡地图位于地图区域中的目标候选区域的情况下,待放置的子关卡地图与地图区域内已放置的子关卡地图均不重叠、且与地图区域内已放置的子关卡地图中的至少一个子关卡地图连通。

可选地,本领域普通技术人员可以理解,图16所示的结构仅为示意,电子装置也可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图16其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图16中所示更多或者更少的组件(如网络接口等),或者具有与图16所示不同的配置。

其中,存储器1602可用于存储软件程序以及模块,如本发明实施例中的地图生成方法和装置对应的程序指令/模块,处理器1604通过运行存储在存储器1602内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的地图生成方法。存储器1602可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1602可进一步包括相对于处理器1604远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1602具体可以但不限于用于子关卡地图库,子关卡地图等信息。作为一种示例,如图16所示,上述存储器1602中可以但不限于包括上述地图生成装置中的选择单元1501、第一放置单元1503以及第二放置单元1505。此外,还可以包括但不限于上述地图生成装置中的其他模块单元,本示例中不再赘述。

可选地,上述的传输装置1606用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1606包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1606为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

此外,上述电子装置还包括:显示器1608,用于显示上述待放置的子关卡地图;和连接总线1610,用于连接上述电子装置中的各个模块部件。

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

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

s1,在子关卡地图库中选择n个子关卡地图,其中,n为大于1的自然数;

s2,依次将n个子关卡地图中的前m个子关卡地图放置在预定的地图区域内,其中,n>m,前m个子关卡地图均位于地图区域内、且前m个子关卡地图相互不重叠;

s3,依次将n-m个子关卡地图中满足预定条件的待放置的子关卡地图放置在地图区域内,得到目标地图,其中,n-m个子关卡地图为n个子关卡地图中除前m个子关卡地图之外的子关卡地图,预定条件包括:在待放置的子关卡地图位于地图区域中的目标候选区域的情况下,待放置的子关卡地图与地图区域内已放置的子关卡地图均不重叠、且与地图区域内已放置的子关卡地图中的至少一个子关卡地图连通。

可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

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

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

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

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

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

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

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

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