CN110090447B - 碰撞体堆叠方法、生成方法、装置、设备及存储介质 - Google Patents
碰撞体堆叠方法、生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110090447B CN110090447B CN201910385833.7A CN201910385833A CN110090447B CN 110090447 B CN110090447 B CN 110090447B CN 201910385833 A CN201910385833 A CN 201910385833A CN 110090447 B CN110090447 B CN 110090447B
- Authority
- CN
- China
- Prior art keywords
- interval
- height
- collision
- scene
- target object
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种碰撞体堆叠方法、生成方法、装置、设备及存储介质,属于计算机技术领域。所述方法包括:在场景中的目标对象由动态属性变为静态属性之后,获取目标对象包含的各个碰撞体在场景对应的区间高度场中占据的高度区间;根据目标对象包含的各个碰撞体在区间高度场中占据的高度区间,以及已有碰撞体在区间高度场中占据的高度区间,将目标对象包含的各个碰撞体和已有碰撞体进行合并,得到合并后的碰撞体;向客户端发送场景对应的区间高度场数据。本申请实现了对场景中的碰撞体进行合并,使得场景中的碰撞体数量减少,降低碰撞体堆叠所需的计算资源,给场景中的大量碰撞体堆叠提供技术支持。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种碰撞体堆叠方法、生成方法、装置、设备及存储介质。
背景技术
AI(Artificial Intelligence,人工智能)角色是指游戏场景中由计算机控制(而非玩家控制)的游戏角色。例如在一些MMO RPG(Massive Multiplayer Online Role-Playing Game,大型多人在线角色扮演游戏)中,AI角色较为常见。
在相关技术中,AI角色在被玩家击杀之后,其尸体会在一段时间内消失。为了保证消失的效果较为自然,可以采用视野外消失、逐渐隐藏、向下移动沉入地面等手段,以增强视觉效果。
目前,由于每个AI角色包括头部、胸部、腹部、盆骨、大腿、小腿、上臂、下臂、手、脚等十几个碰撞体,碰撞体堆叠需要占用较多的计算资源,因此为了保证游戏的性能,开发者往往会选择将AI角色的尸体在一段时间内消失的方案,无法支持海量AI角色的尸体进行同屏显示。
发明内容
本申请实施例提供了一种碰撞体堆叠方法、生成方法、装置、设备及存储介质,可用于解决相关技术无法支持海量AI角色的尸体进行同屏显示的技术问题。所述技术方案如下:
一方面,本申请实施例提供一种碰撞体堆叠方法,所述方法包括:
在场景中的目标对象由动态属性变为静态属性之后,获取所述目标对象包含的各个碰撞体在所述场景对应的区间高度场中占据的高度区间;其中,所述区间高度场是指包含n×m个网格单元的平面网格,每个网格单元对应于所述场景中的一个平面区域,每个碰撞体占据至少一个网格单元的至少一个高度区间,所述n和所述m均为正整数;
根据所述目标对象包含的各个碰撞体在所述区间高度场中占据的高度区间,以及已有碰撞体在所述区间高度场中占据的高度区间,将所述目标对象包含的各个碰撞体和所述已有碰撞体进行合并,得到合并后的碰撞体;
向客户端发送所述场景对应的区间高度场数据,所述场景对应的区间高度场数据用于指示所述合并后的碰撞体在所述区间高度场中占据的高度区间。
另一方面,本申请实施例提供一种碰撞体生成方法,所述方法包括:
接收服务器发送的场景对应的区间高度场数据,所述场景对应的区间高度场数据用于指示合并后的碰撞体在所述场景对应的区间高度场中占据的高度区间;其中,所述区间高度场是指包含n×m个网格单元的平面网格,每个网格单元对应于所述场景中的一个平面区域,每个碰撞体占据至少一个网格单元的至少一个高度区间,所述n和所述m均为正整数;
根据所述场景对应的区间高度场数据,生成所述合并后的碰撞体。
另一方面,本申请实施例提供一种碰撞体堆叠装置,所述装置包括:
高度获取模块,用于在场景中的目标对象由动态属性变为静态属性之后,获取所述目标对象包含的各个碰撞体在所述场景对应的区间高度场中占据的高度区间;其中,所述区间高度场是指包含n×m个网格单元的平面网格,每个网格单元对应于所述场景中的一个平面区域,每个碰撞体占据至少一个网格单元的至少一个高度区间,所述n和所述m均为正整数;
碰撞体合并模块,用于根据所述目标对象包含的各个碰撞体在所述区间高度场中占据的高度区间,以及已有碰撞体在所述区间高度场中占据的高度区间,将所述目标对象包含的各个碰撞体和所述已有碰撞体进行合并,得到合并后的碰撞体;
数据发送模块,用于向客户端发送所述场景对应的区间高度场数据,所述场景对应的区间高度场数据用于指示所述合并后的碰撞体在所述区间高度场中占据的高度区间。
另一方面,本申请实施例提供一种碰撞体生成装置,所述装置包括:
数据接收模块,用于接收服务器发送的场景对应的区间高度场数据,所述场景对应的区间高度场数据用于指示合并后的碰撞体在所述场景对应的区间高度场中占据的高度区间;其中,所述区间高度场是指包含n×m个网格单元的平面网格,每个网格单元对应于所述场景中的一个平面区域,每个碰撞体占据至少一个网格单元的至少一个高度区间,所述n和所述m均为正整数;
碰撞体生成模块,用于根据所述场景对应的区间高度场数据,生成所述合并后的碰撞体。
再一方面,本申请实施例提供一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述碰撞体堆叠方法或碰撞体生成方法。
在一些可能的设计中,计算机设备为服务器或终端。
又一方面,本申请实施例提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述碰撞体堆叠方法或碰撞体生成方法。
又一方面,本申请实施例提供一种计算机程序产品,当该计算机程序产品被执行时,其用于执行上述碰撞体堆叠方法或碰撞体生成方法。
本申请实施例提供的技术方案至少包括如下有益效果:
本申请实施例提供的技术方案中,通过构建区间高度场,在目标对象由动态属性变为静态属性之后,获取该目标对象包含的各个碰撞体在区间高度场中占据的高度区间,结合已有碰撞体在区间高度场中占据的高度区间,将目标对象包含的各个碰撞体和已有碰撞体进行合并,得到合并后的碰撞体;实现了对场景中的碰撞体进行合并,使得场景中的碰撞体数量减少,降低碰撞体堆叠所需的计算资源,给场景中的大量碰撞体堆叠提供技术支持。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的实施环境的示意图;
图2是本申请一个实施例提供的碰撞体堆叠方法的流程图;
图3示例性示出了一种AI角色所包括的碰撞体的示意图;
图4示例性示出了一种传统高度场和本申请中区间高度场的区别的示意图;
图5示例性示出了一种AI角色尸体在区间高度场中占据的高度区间的示意图;
图6示例性示出了一种区间高度场中的高度区间在向下坍缩处理前后的示意图;
图7示例性示出了一种目标场景块和区间高度场的示意图;
图8是本申请一个实施例提供的碰撞体生成方法的流程图;
图9示例性示出了一种方案整体流程的示意图;
图10和图11示例性示出了海量AI角色的尸体堆叠后同屏显示的界面效果图;
图12是本申请一个实施例提供的碰撞体堆叠装置的框图;
图13是本申请另一个实施例提供的碰撞体堆叠装置的框图;
图14是本申请一个实施例提供的碰撞体生成装置的框图;
图15是本申请另一个实施例提供的碰撞体生成装置的框图;
图16本申请一个实施例提供的计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
请参考图1,其示出了本申请一个实施例提供的实施环境的示意图。该实施环境可以包括:服务器10和至少一个终端20。
终端20可以是诸如手机、平板电脑、PC(Personal Computer,个人计算机)等电子设备。可选地,终端20中安装有目标应用程序的客户端,该目标应用程序的客户端能够提供包含多个对象的场景,且各个对象能够在该场景中进行移动。可选地,上述目标应用程序为游戏应用程序,该游戏应用程序的客户端能够提供包含多个游戏角色的游戏场景,该游戏场景可以是2D或3D场景,各个游戏角色能够在该游戏场景中进行移动,上述游戏角色可以包括玩家控制的游戏角色和/或计算机控制的AI角色。在本申请实施例中,对游戏应用程序的类型不作限定,其可以是多人在线游戏,如MMO RPG,如多人在线枪击类游戏。
服务器10用于为终端20提供后台服务,其可以是目标应用程序的后台服务器。服务器10可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。
终端20和服务器10之间可以通过网络进行通信,如有线网络或无线网络。
在背景技术中已经介绍,由于每个AI角色包括头部、胸部、腹部、盆骨、大腿、小腿、上臂、下臂、手、脚等十几个碰撞体,碰撞体堆叠需要占用较多的计算资源。对于海量AI角色而言,每个AI角色拥有十几个碰撞体,当AI角色被大量击杀之后,游戏场景中会增加上万个碰撞体,这会造成严重的性能负担。因此为了保证游戏的性能,开发者往往会选择将AI角色的尸体在一段时间内消失的方案,相关技术无法支持海量AI角色的尸体进行同屏显示。
但是从玩家角度而言这并非所期望的,因为当玩家击杀大量敌人后却发现地上只有几个尸体时,游戏的体验和沉浸感会大幅降低,如果能够做到在持续击杀敌人的过程中,这些AI角色的尸体能够堆积起来形成小山,而后续的敌人可以踩在堆叠的尸体上继续向玩家涌来,这样就可以大幅提升玩家的游戏体验。然而在市面上已有的游戏中,并没有一款游戏能够支持这样的效果。
另一方面,在影视作品中,这样的场景屡见不鲜。尸体堆叠的效果能够带来非常强烈的视觉震撼力,这也是开发者希望玩家能够在游戏中能体验到的感受。然而受限于系统性能的开销问题,游戏中通常会放弃对这一效果的表现,退而采用尸体消失的方式来保证游戏平稳运行。这不仅限制了开发者能够给玩家提供的游戏体验,更限制了新的游戏玩法的设计。因为尸体的堆叠可以改变场景的碰撞体形状,进而达成一些在影视作品中常见、但在游戏中从未见过的玩法,例如尸体的堆叠会将原来不可通行的路径变为可以通行,从而让玩家有更多策略上的选择。
在本申请技术方案中,通过对场景中的碰撞体进行合并,使得场景中的碰撞体数量减少,进而减轻设备的性能负担,使得游戏场景中可以支持更多数量的AI角色,实现支持海量AI角色(如成百上千个AI角色)的尸体在堆叠后进行同屏显示。这样,使得游戏开发者可以突破AI角色数量的瓶颈,从而能够设计出更加新颖的游戏玩法和模式。
请参考图2,其示出了本申请一个实施例提供的碰撞体堆叠方法的流程图。该方法可以应用于图1所示实施环境中的服务器10中。该方法可以包括如下几个步骤(201~203):
步骤201,在场景中的目标对象由动态属性变为静态属性之后,获取目标对象包含的各个碰撞体在场景对应的区间高度场中占据的高度区间。
在本申请实施例中,目标对象可以是场景内的可移动的对象,且该场景为3D场景。以游戏场景为例,游戏场景是指在游戏对局过程中营造出的供游戏角色进行游戏竞技的虚拟场景,如虚拟房屋、虚拟岛屿、虚拟地图等。目标对象可以是游戏场景中的游戏角色,如玩家控制的游戏角色,或者计算机控制的AI角色。在一些其它示例中,目标对象还可以是游戏场景中除游戏角色之外的可移动物,如怪物、车辆、舰船、飞行物等任意可移动的物体。
目标对象包括动态属性和静态属性。动态属性是指目标对象能够进行移动的属性,静态属性是指目标对象已无法进行移动的属性。需要说明的是,目标对象在动态属性的情况下,其能够进行移动,也即具备移动的能力,但是其实际可以处于移动状态,也可以处于静止状态。目标对象在静态属性的情况下,其无法再进行移动,也即丧失了移动的能力。例如,目标对象为游戏场景中的AI角色,当AI角色存活时其处于动态属性,当AI角色被击杀后其处于静态属性;又例如,目标对象为游戏场景中的车辆,当车辆未被损坏时其处于动态属性,当车辆被损坏后其处于静态属性。
碰撞体是指场景中可以产生物理碰撞的物体。目标对象可以包含一个或多个碰撞体。如图3所示,以目标对象为游戏场景中的AI角色为例,AI角色30可以包括头部、胸部、腹部、盆骨、大腿、小腿、上臂、下臂、手、脚等十几个碰撞体。
场景对应的区间高度场是指包含n×m个网格单元的平面网格,每个网格单元对应于场景中的一个平面区域,n和m均为正整数。例如,每个网格单元对应于场景中的一个长和宽均为1m的平面区域。在区间高度场中,每个网格单元可以对应存储一个或多个高度区间。如图4所示,其示出了传统高度场和本申请提出的区间高度场的区别,传统高度场中每个网格单元对应存储一个高度值,而区间高度场中每个网格单元可以对应存储一个或多个高度区间(图中以斜线填充部分所示)。
每个碰撞体占据至少一个网格单元的至少一个高度区间。也即,对于一个碰撞体而言,其可以占据一个网格单元的高度区间,也可以占据多个网格单元的高度区间。该碰撞体在每一个网格单元中所占据的高度空间,可以是一个,也可以是多个。示例性地,如图5所示,假设AI角色被击杀之后,其尸体50所包括的各个碰撞体在区间高度场中所占据的高度区间如图5右侧部分所示。
步骤202,根据目标对象包含的各个碰撞体在区间高度场中占据的高度区间,以及已有碰撞体在区间高度场中占据的高度区间,将目标对象包含的各个碰撞体和已有碰撞体进行合并,得到合并后的碰撞体。
已有碰撞体是指场景中已经处于静态属性的对象经堆叠合并后形成的碰撞体。在示例性实施例中,若目标对象包含的目标碰撞体和已有碰撞体占据同一网格单元且存在重合的高度区间,则将目标碰撞体和已有碰撞体进行合并。例如,目标碰撞体在网格单元A中占据的高度区间为[z1,z2],已有碰撞体在该网格单元A中占据的高度区间为[z0,z1],则可以将目标碰撞体和已有碰撞体进行合并,合并后的碰撞体在该网格单元A中占据的高度区间为[z0,z2]。
对于游戏场景来说,每当一个AI角色死亡并且其尸体基本静止之后,可以将其身上的每个碰撞体都注册到区间高度场中去占据相应的高度区间,并删除其原来的碰撞体。如果所占据的高度区间与区间高度场中已经存在的某个高度区间上下有重叠,则两者可以合并成一个更大的高度区间。随后,就可以将这些高度区间转变成对应的碰撞体。通过这种方式就可以很好地完成碰撞体的合并,整个场景中碰撞体的数量可以被大幅降低。
可选地,步骤202之后还包括如下步骤:若合并后的碰撞体在第一网格单元中占据的第一高度区间高于在第二网格单元中占据的第二高度区间,则对第一高度区间的上表面进行向下坍缩处理;其中,第一网格单元和第二网格单元是两个相邻的网格单元。如图6所示,其示例性示出了区间高度场中的高度区间,在向下坍缩处理前后的示意图。通过上述方式,能够保证相邻网格单元中的高度区间的上表面比较连续,避免在交界处产生高度跳变,从而使得合并后的碰撞体的上表面比较平滑。
在示例性实施例中,采用下述方式对第一高度区间的上表面进行向下坍缩处理:保持第一高度区间的上表面的中点位置不变,将第一高度区间的上表面中与第二高度区间相邻的顶点,下拉至第二高度区间的上表面中与第一高度区域相邻的顶点处。
步骤203,向客户端发送场景对应的区间高度场数据。
场景对应的区间高度场数据用于指示合并后的碰撞体在区间高度场中占据的高度区间。
考虑到游戏场景中经常会出现长宽各达数公里的大地图。在这种情况下,如果将整个地图全部铺上高精度的区间高度场的话,将会消耗大量的内存。而实际上在大地图中绝大多数的位置其实并没有AI角色的尸体,因此大量的内存被浪费在了这些并没有尸体存在的地方。为了解决这一问题,本申请技术方案还设计了一套Collision Chunk(碰撞块)机制。每个Collision Chunk实际负责管理一块10m×10m的范围,当中存在一个完整的区间高度场。Collision Chunk只会在实际有尸体存在的地方动态生成,因此没有尸体存在的地方不会生成Collision Chunk,自然也不会有区间高度场带来的内存消耗,而有尸体的地方在生成Collision Chunk后就可以使用其中的区间高度场来进行碰撞体的合并。所有Collision Chunk会以空间哈希的方式进行管理,这样就能够做到最终的内存消耗量是与地图的大小无关的。
另外,Collision Chunk所带来的另一个好处是可以以每个Collision Chunk为单位,将区间高度场的数据同步到各个客户端。这样在服务器和客户端就可以保持相同的区间高度场数据,由此生成出来的物理碰撞体也是相同的。
因此,在示例性实施例中,服务器向客户端发送的场景对应的区间高度场数据可以包括:场景中的至少一个目标场景块对应的区间高度场数据;其中,目标场景块是指场景中存在已变为静态属性的对象的子区域。例如,目标场景块是场景中一个10m×10m的子区域,且该子区域中存在已变为静态属性的对象,如已被击杀且处于静止状态的AI角色。如图7所示,场景中包含4个目标场景块(图中以黑点填充所示),其中一个目标场景块71对应的区间高度场可以如图右侧部分所示。
综上所述,本申请实施例提供的技术方案中,通过构建区间高度场,在目标对象由动态属性变为静态属性之后,获取该目标对象包含的各个碰撞体在区间高度场中占据的高度区间,结合已有碰撞体在区间高度场中占据的高度区间,将目标对象包含的各个碰撞体和已有碰撞体进行合并,得到合并后的碰撞体;实现了对场景中的碰撞体进行合并,使得场景中的碰撞体数量减少,降低碰撞体堆叠所需的计算资源,给场景中的大量碰撞体堆叠提供技术支持。
本申请实施例提供的技术方案适用于游戏场景中的AI角色的尸体堆叠解决方案,通过对AI角色所包含的碰撞体进行合并,使得游戏场景中可以支持更多数量的AI角色,实现支持海量AI角色(如成百上千个AI角色)的尸体在堆叠后进行同屏显示。这样,使得游戏开发者可以突破AI角色数量的瓶颈,从而能够设计出更加新颖的游戏玩法和模式。
另外,在本申请实施例提供的技术方案中,通过对区间高度场中的高度区间的上表面进行向下坍缩处理,能够保证相邻网格单元中的高度区间的上表面比较连续,避免在交界处产生高度跳变,从而使得合并后的碰撞体的上表面比较平滑,生成高质量的碰撞体。
另外,在本申请实施例提供的技术方案中,并不需要生成整个场景对应的区间高度场数据,仅需生成场景中的目标场景块对应的区间高度场数据,有助于减少内存空间占用。
请参考图8,其示出了本申请一个实施例提供的碰撞体生成方法的流程图。该方法可以应用于图1所示实施环境中的终端20中,如该方法可以由终端20中安装的目标应用程序的客户端执行。该方法可以包括如下几个步骤(801~802):
步骤801,接收服务器发送的场景对应的区间高度场数据。
场景对应的区间高度场数据用于指示合并后的碰撞体在场景对应的区间高度场中占据的高度区间。其中,区间高度场是指包含n×m个网格单元的平面网格,每个网格单元对应于所述场景中的一个平面区域,n和m均为正整数。每个碰撞体占据至少一个网格单元的至少一个高度区间。
另外,上述合并后的碰撞体是由服务器在场景中的目标对象由动态属性变为静态属性之后,根据目标对象包含的各个碰撞体在场景对应的区间高度场中占据的高度区间,以及已有碰撞体在该区间高度场中占据的高度区间,将目标对象包含的各个碰撞体和已有碰撞体进行合并得到的。
可选地,场景对应的区间高度场数据包括场景中的至少一个目标场景块对应的区间高度场数据;其中,目标场景块是指场景中存在已变为静态属性的对象的子区域。
步骤802,根据场景对应的区间高度场数据,生成合并后的碰撞体。
客户端在接收到场景对应的区间高度场数据之后,可以调用底层的物理引擎,生成合并后的碰撞体。该生成的碰撞体可以与其它碰撞体进行碰撞计算,为用户提供更加逼真的场景画面。
另外,对于本实施例中未详细说明的细节,可参见上文服务器侧的方法实施例。
综上所述,本申请实施例提供的技术方案中,通过构建区间高度场,在目标对象由动态属性变为静态属性之后,获取该目标对象包含的各个碰撞体在区间高度场中占据的高度区间,结合已有碰撞体在区间高度场中占据的高度区间,将目标对象包含的各个碰撞体和已有碰撞体进行合并,得到合并后的碰撞体;实现了对场景中的碰撞体进行合并,使得场景中的碰撞体数量减少,降低碰撞体堆叠所需的计算资源,给场景中的大量碰撞体堆叠提供技术支持。
在上文介绍了碰撞体合并的方案,但除此之外还需要保证各个客户端上的碰撞体与处于静态属性的各个对象的姿态是大致吻合的,这就意味着在对象由动态属性变为静态属性的过程中,需要在服务器和客户端之间同步对象在上述过程中的运动轨迹。
在游戏场景中,AI角色在被击杀后其尸体由物理驱动所呈现的自然下落、瘫倒等行为可以称为Ragdoll,服务器和客户端之间需要同步AI角色在Ragdoll状态下的运动轨迹。
单纯地对场景中对象由动态属性变为静态属性的过程中的运动轨迹进行网络同步,需要耗费大量网络带宽,因为每个对象包括二十个左右的碰撞体,如果以比较高的同步频率去同步所有这些碰撞体的位置、旋转和速度的话,必然会占用大量网络带宽。本申请技术方案提供了一套基于单个碰撞体的同步方案。以目标对象为例,在目标对象由动态属性变为静态属性的过程中,服务器向客户端发送目标对象的位置同步消息,该位置同步消息中包括目标对象的核心碰撞体的位置信息。核心碰撞体是目标对象包含的所有碰撞体中的一个碰撞体,该核心碰撞体可以是位于目标对象中心区域的一个碰撞体。核心碰撞体的位置信息是用于确定核心碰撞体的移动轨迹的信息,包括但不限于以下至少一项:位置、旋转和速度。
以目标对象为AI角色为例,对于每个Ragdoll状态下的AI角色,只同步位于角色中心位置的盆骨这根骨骼所对应碰撞体的数据(包括位置、旋转和速度),这样就能大幅减小需要同步的数据量。由于盆骨为AI角色的中心骨骼,该中心骨骼的位置可以通过网络同步保证其在服务器和客户端是一致的,与之相连接的躯干、大腿等大块的骨骼碰撞体的位置也可以保证基本正确,即便有误差也远低于区间高度场的网格分辨率,因此对实际碰撞体的生成没有影响。而位于末端的小碰撞体,比如手或者脚,它们的位置即便偏差较大玩家也很难感知到,因此可以在客户端上做到尸体的姿态与实际物理碰撞体基本吻合。
但是,由于仅同步核心碰撞体的位置信息,目标对象的其余碰撞体的位置信息不进行同步,客户端和服务器上的计算误差会逐步累积。因此当客户端收到服务器传来的核心碰撞体的位置信息时,其与客户端本地的位置可能相差较多。此时的误差修正方案有两种,第一种是通过在核心碰撞体上加一个力的方式将其拉近正确的位置,这种方案可以保证用户所看到的目标对象的运动轨迹比较自然,但缺点是无法保证最终核心碰撞体位置在客户端和服务器上是一致的。另一种方案是核心碰撞体在客户端上严格按照服务器下发的轨迹进行运动,这可以保证最终它的位置是与服务器上一致的,但一旦出现网络延迟或者丢包的情况则客户端所看到的目标对象的运动轨迹就会发生卡顿,显得不自然。
本申请实施例提供了如下方案根据目标对象的核心碰撞体的位置信息,对目标对象的位置误差进行修正。将目标对象由动态属性变为静态属性的过程划分为两个时段:第一时段和第二时段,其中,第一时段位于第二时段之前。例如,第一时段是上述过程的前1秒以内,第二时段是上述过程的1秒之后。在第一时段内,客户端根据目标对象的核心碰撞体的位置信息,对目标对象的位置误差进行平滑修正。平滑修正可以采用给目标对象的核心碰撞体施加一个力的方式,使得核心碰撞体的位置拉近服务器同步的正确位置。可选地,上述力的大小与核心碰撞体在客户端和服务器上的位置误差呈正相关关系,也即位置误差越大,施加的力也就越大,使得核心碰撞体尽可能地减少上述位置误差。在第二时段内,客户端根据目标对象的核心碰撞体的位置信息,对目标对象的位置误差进行同步修正。同步修正是指核心碰撞体在客户端上严格按照服务器下发的轨迹进行运动。
以目标对象为AI角色为例,客户端在AI角色刚进入Ragdoll状态的1秒之内使用第一种方案,即通过加力的方式进行误差修正以保证玩家所看到的AI角色的运动轨迹是平滑自然的,而在1秒之后切换到第二种方案,即严格按照服务器下发的位置轨迹进行运动,以保证最终中心骨骼碰撞体的位置与服务器一致。这样就可以做到既保证玩家能看到高质量的Ragdoll状态下的运动轨迹,也保证最终AI角色的尸体姿态在客户端和服务器上是基本一致的。
综上所述,本申请实施例提供的技术方案中,通过在目标对象由动态属性变为静态属性的过程中,服务器向客户端同步目标对象的核心碰撞体的位置信息,在确保目标对象在上述过程中的运动轨迹在服务器和客户端中尽可能同步的前提下,减少了同步所需的网络带宽开销。
另外,还通过客户端将上述过程分为两个时段,在第一时段内客户端对目标对象的位置误差进行平滑修正,在第二时段内客户端对目标对象的位置误差进行同步修正,既保证用户能够看到目标对象在上述过程中高质量的运动轨迹,也保证目标对象的最终姿态在客户端和服务器上是基本一致的。
下面,结合图9,以本申请技术方案应用于游戏场景中的海量AI角色的尸体堆叠为例,对方案整体流程进行介绍说明。
当一个AI角色被击杀之后,服务器和客户端会同步进行该AI角色在Ragdoll状态下的模拟运动,服务器会定时将该AI角色的中心骨骼碰撞体的位置信息同步给客户端。客户端在接收到该中心骨骼碰撞体的位置信息之后,对该AI角色的位置误差进行修正。在该AI角色刚进入Ragdoll状态的1秒之内,通过加力的方式进行误差修正,1秒之后严格按照服务器下发的位置轨迹进行运动。
当该AI角色静止之后,服务器判断该AI角色所在位置处是否已经生成CollisionChunk(碰撞块),如果还未生成Collision Chunk,则生成一个Collision Chunk,如果已经生成Collision Chunk,则不必再生成,直接执行下述步骤。服务器在该Collision Chunk对应的区间高度场中,对该AI角色所包含的碰撞体和已有碰撞体进行碰撞体合并,然后将更新后的区间高度场数据同步到客户端。最终在客户端和服务器中通过同样的区间高度场数据,生成相同的物理碰撞体,实现AI角色的尸体堆叠效果。
通过上述方案,可以做到以极低的网络同步带宽进行Ragdoll状态下的位置同步,20个AI角色的Ragdoll状态下的位置同步所需的带宽开销仅有1.7KB/s左右。
通过上述方案,能够实现支持海量AI角色的尸体在堆叠后进行同屏显示。示例性地,如图10和11所示,其示出了海量AI角色的尸体堆叠后的示意图,从图中可以看出,游戏场景中存在大量的AI角色的尸体100,且各个尸体100堆叠形成残骸堆。AI角色在被玩家击杀后,其尸体不会消失,而是会持续存在于场景中,并且其物理碰撞体会堆叠起来形成残骸堆。其它AI角色或者玩家都可以在残骸堆上自由移动,不会产生卡住或移动不顺畅的情况,因此可以衍生出许多新的游戏玩法。残骸堆对整体性能开销的影响较小,并且其物理碰撞可以准确地在服务器和各个客户端之间进行同步,因此可以安全用于网络游戏中。这一物理堆叠的效果是市面上目前已有游戏中所未曾出现的。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图12,其示出了本申请一个实施例提供的碰撞体堆叠装置的框图。该装置具有实现上述碰撞体堆叠方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是服务器,也可以设置在服务器中。该装置1200可以包括:高度获取模块1210、碰撞体合并模块1220和数据发送模块1230。
高度获取模块1210,用于在场景中的目标对象由动态属性变为静态属性之后,获取所述目标对象包含的各个碰撞体在所述场景对应的区间高度场中占据的高度区间;其中,所述区间高度场是指包含n×m个网格单元的平面网格,每个网格单元对应于所述场景中的一个平面区域,每个碰撞体占据至少一个网格单元的至少一个高度区间,所述n和所述m均为正整数。
碰撞体合并模块1220,用于根据所述目标对象包含的各个碰撞体在所述区间高度场中占据的高度区间,以及已有碰撞体在所述区间高度场中占据的高度区间,将所述目标对象包含的各个碰撞体和所述已有碰撞体进行合并,得到合并后的碰撞体。
数据发送模块1230,用于向客户端发送所述场景对应的区间高度场数据,所述场景对应的区间高度场数据用于指示所述合并后的碰撞体在所述区间高度场中占据的高度区间。
综上所述,本申请实施例提供的技术方案中,通过构建区间高度场,在目标对象由动态属性变为静态属性之后,获取该目标对象包含的各个碰撞体在区间高度场中占据的高度区间,结合已有碰撞体在区间高度场中占据的高度区间,将目标对象包含的各个碰撞体和已有碰撞体进行合并,得到合并后的碰撞体;实现了对场景中的碰撞体进行合并,使得场景中的碰撞体数量减少,降低碰撞体堆叠所需的计算资源,给场景中的大量碰撞体堆叠提供技术支持。
在一些可能的设计中,所述碰撞体合并模块1220,用于若所述目标对象包含的目标碰撞体和所述已有碰撞体占据同一网格单元且存在重合的高度区间,则将所述目标碰撞体和所述已有碰撞体进行合并。
在一些可能的设计中,所述场景对应的区间高度场数据包括所述场景中的至少一个目标场景块对应的区间高度场数据;其中,所述目标场景块是指所述场景中存在已变为所述静态属性的对象的子区域。
在一些可能的设计中,如图13所示,所述装置1200还包括:坍缩处理模块1240,用于若所述合并后的碰撞体在第一网格单元中占据的第一高度区间高于在第二网格单元中占据的第二高度区间,则对所述第一高度区间的上表面进行向下坍缩处理;其中,所述第一网格单元和所述第二网格单元是两个相邻的网格单元。
在一些可能的设计中,所述坍缩处理模块1240,用于保持所述第一高度区间的上表面的中点位置不变,将所述第一高度区间的上表面中与所述第二高度区间相邻的顶点,下拉至所述第二高度区间的上表面中与所述第一高度区域相邻的顶点处。
在一些可能的设计中,如图13所示,所述装置1200还包括:位置同步模块1250,用于在所述目标对象由所述动态属性变为所述静态属性的过程中,向所述客户端发送所述目标对象的位置同步消息;其中,所述位置同步消息中包括所述目标对象的核心碰撞体的位置信息。
请参考图14,其示出了本申请一个实施例提供的碰撞体生成装置的框图。该装置具有实现上述碰撞体生成方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是终端,也可以设置在终端中。该装置1400可以包括:数据接收模块1410和碰撞体生成模块1420。
数据接收模块1410,用于接收服务器发送的场景对应的区间高度场数据,所述场景对应的区间高度场数据用于指示合并后的碰撞体在所述场景对应的区间高度场中占据的高度区间;其中,所述区间高度场是指包含n×m个网格单元的平面网格,每个网格单元对应于所述场景中的一个平面区域,每个碰撞体占据至少一个网格单元的至少一个高度区间,所述n和所述m均为正整数。
碰撞体生成模块1420,用于根据所述场景对应的区间高度场数据,生成所述合并后的碰撞体。
综上所述,本申请实施例提供的技术方案中,通过构建区间高度场,在目标对象由动态属性变为静态属性之后,获取该目标对象包含的各个碰撞体在区间高度场中占据的高度区间,结合已有碰撞体在区间高度场中占据的高度区间,将目标对象包含的各个碰撞体和已有碰撞体进行合并,得到合并后的碰撞体;实现了对场景中的碰撞体进行合并,使得场景中的碰撞体数量减少,降低碰撞体堆叠所需的计算资源,给场景中的大量碰撞体堆叠提供技术支持。
在一些可能的设计中,如图15所示,所述装置1400还包括:消息接收模块1430和位置修正模块1440。
消息接收模块1430,用于在所述场景中的目标对象由动态属性变为静态属性的过程中,接收所述服务器发送的所述目标对象的位置同步消息,所述位置同步消息中包括所述目标对象的核心碰撞体的位置信息。
位置修正模块1440,用于根据所述目标对象的核心碰撞体的位置信息,对所述目标对象的位置误差进行修正。
在一些可能的设计中,所述目标对象由所述动态属性变为所述静态属性的过程包括第一时段和第二时段,所述第一时段位于所述第二时段之前。所述位置修正模块1440,用于在所述第一时段内,根据所述目标对象的核心碰撞体的位置信息,对所述目标对象的位置误差进行平滑修正;在所述第二时段内,根据所述目标对象的核心碰撞体的位置信息,对所述目标对象的位置误差进行同步修正。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图16,其示出了本申请一个实施例提供的计算机设备的结构示意图。该计算机设备可以是任何具备数据处理和存储功能的电子设备,如手机、平板电脑、PC或服务器等设备。该计算机设备用于实施上述实施例中提供的碰撞体堆叠方法或碰撞体生成方法。具体来讲:
所述计算机设备1600包括中央处理单元(CPU)1601、包括随机存取存储器(RAM)1602和只读存储器(ROM)1603的系统存储器1604,以及连接系统存储器1604和中央处理单元1601的系统总线1605。所述计算机设备1600还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)1606,和用于存储操作系统1613、应用程序1614和其他程序模块1615的大容量存储设备1607。
所述基本输入/输出系统1606包括有用于显示信息的显示器1608和用于用户输入信息的诸如鼠标、键盘之类的输入设备1609。其中所述显示器1608和输入设备1609都通过连接到系统总线1605的输入输出控制器1610连接到中央处理单元1601。所述基本输入/输出系统1606还可以包括输入输出控制器1610以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1610还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备1607通过连接到系统总线1605的大容量存储控制器(未示出)连接到中央处理单元1601。所述大容量存储设备1607及其相关联的计算机可读介质为计算机设备1600提供非易失性存储。也就是说,所述大容量存储设备1607可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1604和大容量存储设备1607可以统称为存储器。
根据本申请的各种实施例,所述计算机设备1600还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备1600可以通过连接在所述系统总线1605上的网络接口单元1611连接到网络1612,或者说,也可以使用网络接口单元1611来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集经配置以由一个或者一个以上处理器执行,以实现上述实施例提供的碰撞体堆叠方法或碰撞体生成方法。
在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集在被计算机设备的处理器执行时实现上述实施例提供的碰撞体堆叠方法或碰撞体生成方法。在示例性实施例中,上述计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于实现上述实施例提供的碰撞体堆叠方法或碰撞体生成方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种碰撞体堆叠方法,其特征在于,所述方法包括:
在场景中的目标对象由动态属性变为静态属性之后,获取所述目标对象包含的各个碰撞体在所述场景对应的区间高度场中占据的高度区间;其中,所述区间高度场是指包含n×m个网格单元的平面网格,每个网格单元对应于所述场景中的一个平面区域,每个碰撞体占据至少一个网格单元的至少一个高度区间,所述n和所述m均为正整数;
根据所述目标对象包含的各个碰撞体在所述区间高度场中占据的高度区间,以及已有碰撞体在所述区间高度场中占据的高度区间,将所述目标对象包含的各个碰撞体和所述已有碰撞体进行合并,得到合并后的碰撞体;
向客户端发送所述场景对应的区间高度场数据,所述场景对应的区间高度场数据用于指示所述合并后的碰撞体在所述区间高度场中占据的高度区间;对于所述区间高度场中的目标网格单元,所述合并后的碰撞体在所述目标网格单元中所占的高度区间为:所述目标对象包含的所述各个碰撞体中的目标碰撞体在所述目标网格单元中所占的高度区间,与所述已有碰撞体在所述目标网格单元中所占的高度区间之间的并集。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标对象包含的各个碰撞体在所述区间高度场中占据的高度区间,以及已有碰撞体在所述区间高度场中占据的高度区间,将所述目标对象包含的各个碰撞体和所述已有碰撞体进行合并,得到合并后的碰撞体,包括:
若所述目标对象包含的目标碰撞体和所述已有碰撞体占据同一网格单元且存在重合的高度区间,则将所述目标碰撞体和所述已有碰撞体进行合并。
3.根据权利要求1所述的方法,其特征在于,所述场景对应的区间高度场数据包括所述场景中的至少一个目标场景块对应的区间高度场数据;
其中,所述目标场景块是指所述场景中存在已变为所述静态属性的对象的子区域。
4.根据权利要求1所述的方法,其特征在于,所述根据所述目标对象包含的各个碰撞体在所述区间高度场中占据的高度区间,以及已有碰撞体在所述区间高度场中占据的高度区间,将所述目标对象包含的各个碰撞体和所述已有碰撞体进行合并,得到合并后的碰撞体之后,还包括:
若所述合并后的碰撞体在第一网格单元中占据的第一高度区间高于在第二网格单元中占据的第二高度区间,则对所述第一高度区间的上表面进行向下坍缩处理;
其中,所述第一网格单元和所述第二网格单元是两个相邻的网格单元。
5.根据权利要求4所述的方法,其特征在于,所述对所述第一高度区间的上表面进行向下坍缩处理,包括:
保持所述第一高度区间的上表面的中点位置不变,将所述第一高度区间的上表面中与所述第二高度区间相邻的顶点,下拉至所述第二高度区间的上表面中与所述第一高度区间相邻的顶点处。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
在所述目标对象由所述动态属性变为所述静态属性的过程中,向所述客户端发送所述目标对象的位置同步消息;
其中,所述位置同步消息中包括所述目标对象的核心碰撞体的位置信息。
7.一种碰撞体生成方法,其特征在于,所述方法包括:
接收服务器发送的场景对应的区间高度场数据,所述场景对应的区间高度场数据用于指示合并后的碰撞体在所述场景对应的区间高度场中占据的高度区间;其中,所述区间高度场是指包含n×m个网格单元的平面网格,每个网格单元对应于所述场景中的一个平面区域,每个碰撞体占据至少一个网格单元的至少一个高度区间,所述n和所述m均为正整数;
根据所述场景对应的区间高度场数据,生成所述合并后的碰撞体;对于所述区间高度场中的目标网格单元,所述合并后的碰撞体在所述目标网格单元中所占的高度区间为:目标对象包含的各个碰撞体中的目标碰撞体在所述目标网格单元中所占的高度区间,与已有碰撞体在所述目标网格单元中所占的高度区间之间的并集。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在所述场景中的所述目标对象由动态属性变为静态属性的过程中,接收所述服务器发送的所述目标对象的位置同步消息,所述位置同步消息中包括所述目标对象的核心碰撞体的位置信息;
根据所述目标对象的核心碰撞体的位置信息,对所述目标对象的位置误差进行修正。
9.根据权利要求8所述的方法,其特征在于,所述目标对象由所述动态属性变为所述静态属性的过程包括第一时段和第二时段,所述第一时段位于所述第二时段之前;
所述根据所述目标对象的核心碰撞体的位置信息,对所述目标对象的位置误差进行修正,包括:
在所述第一时段内,根据所述目标对象的核心碰撞体的位置信息,对所述目标对象的位置误差进行平滑修正;
在所述第二时段内,根据所述目标对象的核心碰撞体的位置信息,对所述目标对象的位置误差进行同步修正。
10.一种碰撞体堆叠装置,其特征在于,所述装置包括:
高度获取模块,用于在场景中的目标对象由动态属性变为静态属性之后,获取所述目标对象包含的各个碰撞体在所述场景对应的区间高度场中占据的高度区间;其中,所述区间高度场是指包含n×m个网格单元的平面网格,每个网格单元对应于所述场景中的一个平面区域,每个碰撞体占据至少一个网格单元的至少一个高度区间,所述n和所述m均为正整数;
碰撞体合并模块,用于根据所述目标对象包含的各个碰撞体在所述区间高度场中占据的高度区间,以及已有碰撞体在所述区间高度场中占据的高度区间,将所述目标对象包含的各个碰撞体和所述已有碰撞体进行合并,得到合并后的碰撞体;
数据发送模块,用于向客户端发送所述场景对应的区间高度场数据,所述场景对应的区间高度场数据用于指示所述合并后的碰撞体在所述区间高度场中占据的高度区间;对于所述区间高度场中的目标网格单元,所述合并后的碰撞体在所述目标网格单元中所占的高度区间为:所述目标对象包含的所述各个碰撞体中的目标碰撞体在所述目标网格单元中所占的高度区间,与所述已有碰撞体在所述目标网格单元中所占的高度区间之间的并集。
11.一种碰撞体生成装置,其特征在于,所述装置包括:
数据接收模块,用于接收服务器发送的场景对应的区间高度场数据,所述场景对应的区间高度场数据用于指示合并后的碰撞体在所述场景对应的区间高度场中占据的高度区间;其中,所述区间高度场是指包含n×m个网格单元的平面网格,每个网格单元对应于所述场景中的一个平面区域,每个碰撞体占据至少一个网格单元的至少一个高度区间,所述n和所述m均为正整数;
碰撞体生成模块,用于根据所述场景对应的区间高度场数据,生成所述合并后的碰撞体;对于所述区间高度场中的目标网格单元,所述合并后的碰撞体在所述目标网格单元中所占的高度区间为:目标对象包含的各个碰撞体中的目标碰撞体在所述目标网格单元中所占的高度区间,与已有碰撞体在所述目标网格单元中所占的高度区间之间的并集。
12.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至6任一项所述的方法,或者实现如权利要求7至9任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至6任一项所述的方法,或者实现如权利要求7至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910385833.7A CN110090447B (zh) | 2019-05-09 | 2019-05-09 | 碰撞体堆叠方法、生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910385833.7A CN110090447B (zh) | 2019-05-09 | 2019-05-09 | 碰撞体堆叠方法、生成方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110090447A CN110090447A (zh) | 2019-08-06 |
CN110090447B true CN110090447B (zh) | 2021-09-28 |
Family
ID=67447563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910385833.7A Active CN110090447B (zh) | 2019-05-09 | 2019-05-09 | 碰撞体堆叠方法、生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110090447B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111870954B (zh) * | 2020-07-24 | 2024-02-13 | 上海米哈游天命科技有限公司 | 一种高度图生成方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105498211A (zh) * | 2015-12-11 | 2016-04-20 | 网易(杭州)网络有限公司 | 游戏中位置关系的处理方法和装置 |
CN107042018A (zh) * | 2016-02-05 | 2017-08-15 | 腾讯科技(深圳)有限公司 | 控制对象的空间位置确定方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102105592B1 (ko) * | 2019-06-12 | 2020-04-28 | 주식회사 네비웍스 | 충돌영역생성장치 및 그 동작 방법 |
-
2019
- 2019-05-09 CN CN201910385833.7A patent/CN110090447B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105498211A (zh) * | 2015-12-11 | 2016-04-20 | 网易(杭州)网络有限公司 | 游戏中位置关系的处理方法和装置 |
CN107042018A (zh) * | 2016-02-05 | 2017-08-15 | 腾讯科技(深圳)有限公司 | 控制对象的空间位置确定方法和装置 |
Non-Patent Citations (2)
Title |
---|
Unity3D Mesh小课堂(五)CombineMeshes合并网格;凯奥斯;《https://blog.csdn.net/ecidevilin/article/details/52490960?utm_source=app&app_version=4.5.2》;20160909;第1-2页 * |
Unity中的网格与材质球合并;arBao;《https://blog.csdn.net/dardgen2015/article/details/51517860》;20160527;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110090447A (zh) | 2019-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106302679B (zh) | 一种虚拟对象移动同步方法、客户端及服务器 | |
US8784214B2 (en) | Method and system for establishing location-based leaderboard | |
EP3575958B1 (en) | Object moving method and device, storage medium, and electronic device | |
CN109966741B (zh) | 位置更新方法、装置、设备及存储介质 | |
AU2021254521B2 (en) | Virtual character control method and apparatus, device, and storage medium | |
US20230043121A1 (en) | Skill casting method and apparatus of virtual object, device, and storage medium | |
CN111672111A (zh) | 界面显示方法、装置、设备及存储介质 | |
CN112927332B (zh) | 骨骼动画更新方法、装置、设备及存储介质 | |
EP3934775B1 (en) | Peer-to-peer multiplayer cloud gaming architecture | |
JP7406567B2 (ja) | 仮想環境の画面表示方法及び装置、並びにコンピュータ装置及びプログラム | |
US10719985B2 (en) | Model object building method, server, and system | |
US10702778B2 (en) | Dynamic modification of navigation maps | |
CN110090447B (zh) | 碰撞体堆叠方法、生成方法、装置、设备及存储介质 | |
CN113546416A (zh) | 游戏场景处理方法、装置、计算机设备及存储介质 | |
CN114307150A (zh) | 虚拟对象之间的互动方法、装置、设备、介质及程序产品 | |
CN114832376B (zh) | 游戏地图中数据交互的方法及装置 | |
CN116603239B (zh) | 数据处理方法、装置及相关设备 | |
CN117753004A (zh) | 消息显示方法、装置、设备、介质及程序产品 | |
CN114768260A (zh) | 游戏中虚拟角色的数据处理方法、装置以及电子设备 | |
CN114404948A (zh) | 游戏地图显示方法、装置、电子设备及计算机可读存储介质 | |
CN113599829A (zh) | 虚拟对象的选择方法、装置、终端及存储介质 | |
CN115957508A (zh) | 游戏地形转换方法、电子设备及存储介质 | |
CN114917591A (zh) | 一种游戏中随机结果确定方法、系统、终端设备及服务器 | |
CN115518375A (zh) | 一种游戏跳字显示方法、装置、计算机设备及存储介质 | |
CN117931327A (zh) | 虚拟对象的显示方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |