CN116637358B - 一种数据传输的方法、相关装置、设备以及存储介质 - Google Patents

一种数据传输的方法、相关装置、设备以及存储介质 Download PDF

Info

Publication number
CN116637358B
CN116637358B CN202310926048.4A CN202310926048A CN116637358B CN 116637358 B CN116637358 B CN 116637358B CN 202310926048 A CN202310926048 A CN 202310926048A CN 116637358 B CN116637358 B CN 116637358B
Authority
CN
China
Prior art keywords
virtual
visual
character
state data
roles
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
Application number
CN202310926048.4A
Other languages
English (en)
Other versions
CN116637358A (zh
Inventor
李建勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202310926048.4A priority Critical patent/CN116637358B/zh
Publication of CN116637358A publication Critical patent/CN116637358A/zh
Application granted granted Critical
Publication of CN116637358B publication Critical patent/CN116637358B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/31Communication aspects specific to video games, e.g. between several handheld game devices at close range
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/534Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Abstract

本申请公开了一种数据传输的方法、相关装置、设备以及存储介质。本申请方法包括:获取针对虚拟场景的目标状态数据集;根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围;根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息;根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集。本申请实施例中,服务器为每个虚拟角色提供在各自可视场景范围内的其他虚拟角色的状态数据。因此,不仅降低了服务器的数据传输量,减轻了服务器压力,而且可能有效地减少网络带宽的消耗。

Description

一种数据传输的方法、相关装置、设备以及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据传输的方法、相关装置、设备以及存储介质。
背景技术
随着网络技术的不断发展以及终端技术的逐渐普及,虚拟场景的应用越来越广泛。大型交互式虚拟场景的开发是一个复杂且庞大的任务,不仅需要考虑虚拟场景的整体结构布局,还需要考虑大量虚拟角色之间的互动方式,从而达到身临其境的感受。
在相关技术中,服务器负责将虚拟角色的状态数据转发给相同场景下控制其他虚拟角色的各个终端。以图1为例,终端A和终端B分别控制相同虚拟场景内的不同游戏角色。当终端A控制的虚拟角色发生状态变化时,其状态数据会发送至服务器。由服务器转发给同场景下对应的其他终端,例如,终端B。
发明人发现目前的方案中至少存在如下问题,在大型虚拟场景中,服务器将每个用户所控制的虚拟角色的状态数据转发给相同场景下控制其他虚拟角色的各个终端。因此,服务器需要转发的数据量非常大,从而导致服务器压力过大,并且网络带宽消耗较高。针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据传输的方法、相关装置、设备以及存储介质,服务器为每个虚拟角色提供在各自可视场景范围内的其他虚拟角色的状态数据。因此,不仅降低了服务器的数据传输量,减轻了服务器压力,而且可能有效地减少网络带宽的消耗。
有鉴于此,本申请一方面提供一种数据传输的方法,包括:
获取针对虚拟场景的目标状态数据集,其中,虚拟场景包括K个虚拟角色,目标状态数据集包括在虚拟场景内的每个虚拟角色在目标时刻的状态数据,状态数据包括虚拟角色在虚拟场景内的位置信息,K为大于1的整数;
根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,其中,可视场景范围内的虚拟角色的数量小于或等于数量阈值;
根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息;
根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,其中,每个终端用于控制一个虚拟角色,状态数据子集包括基于可视信息获取的各个虚拟角色在目标时刻的状态数据。
本申请另一方面提供一种数据传输装置,包括:
获取模块,用于获取针对虚拟场景的目标状态数据集,其中,虚拟场景包括K个虚拟角色,目标状态数据集包括在虚拟场景内的每个虚拟角色在目标时刻的状态数据,状态数据包括虚拟角色在虚拟场景内的位置信息,K为大于1的整数;
确定模块,用于根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,其中,可视场景范围内的虚拟角色的数量小于或等于数量阈值;
生成模块,用于根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息;
发送模块,用于根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,其中,每个终端用于控制一个虚拟角色,状态数据子集包括基于可视信息获取的各个虚拟角色在目标时刻的状态数据。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,
确定模块,具体用于针对K个虚拟角色中的每个虚拟角色,根据目标状态数据集,确定虚拟角色在虚拟场景内的位置信息,其中,位置信息包括横坐标信息以及纵坐标信息;
针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在虚拟场景内的横坐标信息以及纵坐标信息,确定虚拟角色的视野原点位置;
针对K个虚拟角色中的每个虚拟角色,以虚拟角色的视野原点位置为中心,构建虚拟角色在目标时刻的可视场景范围,其中,可视场景范围为二维空间。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,
确定模块,具体用于针对K个虚拟角色中的每个虚拟角色,根据目标状态数据集,确定虚拟角色在虚拟场景内的位置信息,其中,位置信息包括横坐标信息、纵坐标信息以及竖坐标信息;
针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在虚拟场景内的横坐标信息、纵坐标信息以及竖坐标信息,确定虚拟角色的视野原点位置;
针对K个虚拟角色中的每个虚拟角色,以虚拟角色的视野原点位置为中心,构建虚拟角色在目标时刻的可视场景范围,其中,可视场景范围为三维空间。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,K个虚拟角色包括第一虚拟角色以及第二虚拟角色,其中,第一虚拟角色的角色等级高于第二虚拟角色的角色等级,或,控制第一虚拟角色的对象等级高于控制第二虚拟角色的对象等级,或,第一虚拟角色的道具属性等级高于第二虚拟角色的道具属性等级;
确定模块,具体用于从目标状态数据集中,获取第一虚拟角色在目标时刻的位置信息;
根据第一虚拟角色在目标时刻的位置信息,确定第一虚拟角色在目标时刻的第一可视场景范围;
从目标状态数据集中,获取第二虚拟角色在目标时刻的位置信息;
根据第二虚拟角色在目标时刻的位置信息,确定第二虚拟角色在目标时刻的第二可视场景范围;
其中,第一可视场景范围大于第二可视场景范围。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,可视信息为主动可视信息,主动可视信息用于指示在可视场景范围内的各个虚拟角色;
生成模块,具体用于根据第一虚拟角色在目标时刻的第一可视场景范围,获取在第一可视场景范围内的虚拟角色数量;
若在第一可视场景范围内的虚拟角色数量小于或等于第一数量阈值,则根据在第一可视场景范围内各个虚拟角色,生成第一虚拟角色在目标时刻的可视信息;
根据第二虚拟角色在目标时刻的第二可视场景范围,获取在第二可视场景范围内的虚拟角色数量;
若在第二可视场景范围内的虚拟角色数量小于或等于第二数量阈值,则根据在第二可视场景范围内各个虚拟角色,生成第二虚拟角色在目标时刻的可视信息;
其中,第一数量阈值大于第二数量阈值。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,可视信息为主动可视信息,主动可视信息用于指示在可视场景范围内的各个虚拟角色;
生成模块,具体用于针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的可视场景范围,获取在可视场景范围内的虚拟角色数量;
针对K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量大于数量阈值,则在可视场景范围内选择M个虚拟角色,并根据M个虚拟角色生成虚拟角色在目标时刻的可视信息,M取值等于数量阈值;
其中,在可视场景范围内选择M个虚拟角色的方式包括如下至少一种:
在可视场景范围内选择距离虚拟角色最近的M个虚拟角色;
在可视场景范围内选择移动频率最高的M个虚拟角色;
在可视场景范围内选择角色等级最高的M个虚拟角色。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,虚拟场景还包括T个互动角色,T为大于1的整数;
生成模块,具体用于针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的可视场景范围,获取在可视场景范围内的虚拟角色数量以及互动角色数量;
针对K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量小于或等于虚拟角色数量阈值,且,在可视场景范围内的互动角色数量小于或等于互动角色数量阈值,则根据在可视场景范围内的各个虚拟角色,生成虚拟角色在目标时刻的可视信息;
其中,虚拟角色数量阈值与互动角色数量阈值之和等于数量阈值。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,虚拟场景还包括T个互动角色,T为大于1的整数;
生成模块,具体用于针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的可视场景范围,获取在可视场景范围内的虚拟角色数量以及互动角色数量;
针对K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量以及互动角色数量之和小于或等于数量阈值,则根据在可视场景范围内的各个虚拟角色,生成虚拟角色在目标时刻的可视信息。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,可视信息为主动可视信息,主动可视信息用于指示在可视场景范围内的各个虚拟角色;
发送模块,具体用于针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的主动可视信息,获取在虚拟角色的可视场景范围内的各个虚拟角色所对应的状态数据;
针对K个虚拟角色中的每个虚拟角色,将在虚拟角色的可视场景范围内的各个虚拟角色所对应的状态数据,作为虚拟角色所对应的状态数据子集;
针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集发送至控制虚拟角色的终端。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,可视信息为被动可视信息,被动可视信息用于指示虚拟角色在其他虚拟角色的可视场景范围内的可见情况;
发送模块,具体用于针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的被动可视信息,从K个虚拟角色中确定可见虚拟角色的其他虚拟角色;
针对K个虚拟角色中的每个虚拟角色,将虚拟角色的状态数据,加入至可见虚拟角色的其他虚拟角色所对应的状态数据子集;
针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集发送至控制虚拟角色的终端。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,
发送模块,具体用于针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至虚拟角色所对应的缓存区;
在满足数据传输条件的情况下,将每个缓存区所存储的状态数据子集发送至控制虚拟角色的终端。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,
确定模块,还用于针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至虚拟角色所对应的缓存区之后,若当前等待时长达到等待时长阈值,则确定满足数据传输条件,其中,当前等待时长表示在缓存区中存储状态数据的时长。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,
确定模块,还用于针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至虚拟角色所对应的缓存区之后,若存在至少一个缓存区的数据存储量达到存储量阈值,则确定满足数据传输条件。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,
获取模块,具体用于通过K个线程,接收K个终端中的每个终端发送的状态数据,其中,每个线程用于接收一个终端发送的状态数据;
根据K个终端中的每个终端发送的状态数据,生成针对虚拟场景的目标状态数据集;
确定模块,具体用于通过K个线程,根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,其中,每个线程用于确定一个虚拟角色在目标时刻的可视场景范围;
生成模块,具体用于通过K个线程,根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,其中,每个线程用于生成一个虚拟角色在目标时刻的可视信息;
发送模块,具体用于通过K个线程,根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,其中,每个线程用于向一个终端发送状态数据子集。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,
获取模块,具体用于通过接入组件集群,接收K个终端中的每个终端发送的状态数据,其中,接入组件集群包括至少两个接入组件;
根据K个终端中的每个终端发送的状态数据,生成针对虚拟场景的目标状态数据集。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,
发送模块,具体用于根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,通过接入组件集群,向K个终端中的每个终端发送状态数据子集,其中,接入组件集群包括至少两个接入组件。
本申请另一方面提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述各方面的方法。
本申请的另一方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各方面的方法。
本申请的另一个方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方面的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中,提供了一种数据传输的方法。首先,服务器获取针对虚拟场景的目标状态数据集,目标状态数据集包括在虚拟场景内的每个虚拟角色在目标时刻的状态数据。然后,根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围。于是,服务器可根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息。最后,根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集。通过上述方式,服务器根据虚拟场景中每个虚拟角色的位置信息,确定每个虚拟角色的可视场景范围。基于此,服务器为每个虚拟角色提供在各自可视场景范围内的其他虚拟角色的状态数据。因此,不仅降低了服务器的数据传输量,减轻了服务器压力,而且可能有效地减少网络带宽的消耗。
附图说明
图1为现有技术中服务器转发状态数据的一个示意图;
图2为本申请实施例中数据传输方法的一个实施环境示意图;
图3为本申请实施例中数据传输方法的一个流程示意图;
图4为本申请实施例中虚拟场景的一个示意图;
图5为本申请实施例中可视场景范围的一个示意图;
图6为本申请实施例中基于二维空间的可视场景范围的一个示意图;
图7为本申请实施例中基于三维空间的可视场景范围的一个示意图;
图8为本申请实施例中不同虚拟角色对应的可视场景范围的一个示意图;
图9为本申请实施例中基于主动可视信息进行数据传输的一个示意图;
图10为本申请实施例中基于被动可视信息进行数据传输的一个示意图;
图11为本申请实施例中基于转发合并算法进行数据传输的一个示意图;
图12为本申请实施例中多线程并行处理数据的一个示意图;
图13为本申请实施例中服务器基于接入组件集群接收数据的一个示意图;
图14为本申请实施例中服务器基于接入组件集群发送数据的一个示意图;
图15为本申请实施例中数据传输装置的一个示意图;
图16为本申请实施例中服务器的一个结构示意图。
实施方式
本申请实施例提供了一种数据传输的方法、相关装置、设备以及存储介质,服务器为每个虚拟角色提供在各自可视场景范围内的其他虚拟角色的状态数据。因此,不仅降低了服务器的数据传输量,减轻了服务器压力,而且可能有效地减少网络带宽的消耗。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应”于以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
传统的软件或者网页应用往往是通过文字、图片或者视频来展现一些信息。然而,随着数字信息化技术以及互联网技术的快速发展,传统的软件或者网页应用已经不能满足用户的互动需求。人们更愿意将虚拟角色融入到虚拟场景中进行操作,从而提升软件或应用内容的真实性与互动性。在虚拟场景中可能会涉及到大量虚拟角色之间的互动,需要服务器对大量虚拟角色产生的数据进行转发,这就导致服务器面临着处理和转发数据量过大的问题,大幅地增加了服务器的工作负荷,还可能影响应用的运行性能以及用户体验。
基于此,本申请提供了一种优化服务器转发压力的方法。一方面,根据虚拟角色的位置信息,仅将虚拟角色的状态数据转发给控制周边虚拟角色的若干个终端,从而降低了数据传输量。另一方面,还可以将状态数据发送至缓存区,并周期性地进行合并转发,从而减少转发次数。本方案有效地平衡了服务器负载和用户体验,实现了在虚拟场景中的高效数据传输,进而提升应用(例如,游戏)体验的实时性和流畅度。针对本申请中的数据传输方法,在应用时包括如下场景中的至少一种。
一、虚拟游戏场景;
以大型多人在线角色扮演游戏(massive multiplayer online role-playinggame,MMORPG)或虚拟空间游戏为例,用户需要扮演一个虚拟角色,并控制该角色的许多活动。在这类游戏中,同时参与的人数可能多达万人,每个用户可控制虚拟角色在虚拟空间中活动。
示例性地,假设虚拟角色A与虚拟角色B正处于比赛状态,其他虚拟角色可以在周边进行观战。基于本申请提供的数据传输方法,以虚拟角色A的视角为例,首先,确定有哪些虚拟角色可以看到虚拟角色A。由于每个虚拟角色由一个终端进行控制,因此,服务器将虚拟角色A的状态数据仅转发给这部分能看到虚拟角色A的终端。最后,这些终端分别利用虚拟角色A的状态数据进行渲染,使用户可以观看到处于比赛状态的虚拟角色A。
二、虚拟社交场景;
在虚拟社交场景中,用户可以直接与想打招呼的人进行互动,让现实中相隔万里的用户跨越空间距离,在同一个场景中相遇。与此同时,用户还可以自定义虚拟角色的形象,例如,给虚拟角色捏脸以及换上喜欢的服装等。
示例性地,假设用户控制虚拟角色A与其他虚拟角色打招呼。基于本申请提供的数据传输方法,以虚拟角色A的视角为例,首先,确定有哪些虚拟角色可以看到虚拟角色A。由于每个虚拟角色由一个终端进行控制,因此,服务器将虚拟角色A的状态数据仅转发给这部分能看到虚拟角色A的终端。最后,这些终端分别利用虚拟角色A的状态数据进行渲染,使用户可以观看到正在与其他虚拟角色打招呼的虚拟角色A。
三、虚拟旅行场景;
在虚拟旅行场景中,利用数字孪生技术,复刻地球的大好河山和名胜古迹,实现足不出户的虚拟旅行。用户可以以第一视角进入到虚拟场景,不仅可以与虚拟场景中其他虚拟角色互动,还可以与虚拟场景中的物体互动。例如,在虚拟场景中的雪地里搭雪人。
示例性地,假设用户控制虚拟角色A在虚拟场景中的广场中喂鸽子。基于本申请提供的数据传输方法,以虚拟角色A的视角为例,首先,确定有哪些虚拟角色可以看到虚拟角色A。由于每个虚拟角色由一个终端进行控制,因此,服务器将虚拟角色A的状态数据仅转发给这部分能看到虚拟角色A的终端。最后,这些终端分别利用虚拟角色A的状态数据进行渲染,使用户可以观看到正在喂鸽子的虚拟角色A。
需要说明的是,上述应用场景仅为示例,本实施例提供的数据传输方法还可以应用于其他场景中,此处不做限定。
本申请提供的方法可应用于图2所示的实施环境,该实施环境包括终端110和服务器120,且,终端110和服务器120之间可以通过通信网络130进行通信。其中,通信网络130使用标准通信技术和/或协议,通常为因特网,但也可以是任何网络,包括但不限于蓝牙、局域网(local area network,LAN)、城域网(metropolitan area network,MAN)、广域网(widearea network,WAN)、移动、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,可使用定制或专用数据通信技术取代或者补充上述数据通信技术。
本申请涉及的终端110包括但不限于手机、平板电脑、笔记本电脑、桌上型电脑、智能语音交互设备、智能家电、虚拟现实设备、车载终端、飞行器等。其中,客户端部署于终端110上,客户端可以通过浏览器的形式运行于终端110上,也可以通过独立的应用程序(application,APP)的形式运行于终端110上等。
本申请涉及的服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content deliverynetwork,CDN)、以及大数据和人工智能(artificial intelligence,AI)平台等基础云计算服务的云服务器。
结合上述实施环境,以某个时刻(即,目标时刻)为例,在步骤S1中,各个终端110分别通过通信网络130向服务器120发送其控制的虚拟角色的状态数据。在步骤S2中,服务器120根据各个虚拟角色的状态数据,可以确定每个虚拟角色的可视场景范围。在步骤S3中,服务器结合每个虚拟角色的可视场景范围,生成每个虚拟角色的可视信息。在步骤S4中,服务器根据K个虚拟角色的可视信息,确定每个虚拟角色所对应的状态数据子集。在步骤S5中,服务器120通过通信网络130向每个终端110发送所控制的虚拟角色的状态数据子集。由此,终端110利用状态数据子集进行渲染,并显示相应的画面。
鉴于本申请涉及到一些与专业领域相关的术语,为了便于理解,下面将进行解释。
(1)虚拟空间游戏(virtual space game,VSG):是指在一个超大场景下可能容纳上万用户同时在线的游戏。
(2)视野(field of view,FOV):是指用户在虚拟场景中能够看到的区域。
(3)视野裁剪(view culling clipping,VCC):根据用户控制的虚拟角色的位置信息,最多找出周围若干个虚拟角色(例如,100个虚拟角色)。然后,将该虚拟角色的状态数据最多只转发给这些虚拟角色所对应的终端,不再转发给虚拟场景中的其他游戏角色。
(4)状态数据(state data,SD):包括虚拟角色的位置信息、移动信息和动作信息等。
(5)转发合并算法(forwarding merging algorithm,FMA):服务器并不会每次将状态数据直接转发给周围视野内控制虚拟角色的终端,而是将该数据发送至虚拟角色的缓存区里,缓存区内的数据被周期性的合并转发给对应终端,从而减少转发次数。
(6)接收缓存区(receiving cache buffer,RCB):用于存储待转发的状态数据,并且周期性地合并转发给对应终端。
结合上述介绍,下面将对本申请中数据传输的方法进行介绍,请参阅图3,本申请实施例中的数据传输方法可以由服务器独立完成,也可以由服务器与终端配合完成,本申请提供的方法包括:
210、获取针对虚拟场景的目标状态数据集,其中,虚拟场景包括K个虚拟角色,目标状态数据集包括在虚拟场景内的每个虚拟角色在目标时刻的状态数据,状态数据包括虚拟角色在虚拟场景内的位置信息,K为大于1的整数;
在一个或多个实施例中,服务器接收K个终端发送的目标时刻所对应的状态数据,将这些状态数据作为针对虚拟场景的目标状态数据集。状态数据至少需要包括虚拟角色在虚拟场景内的位置信息,此外,状态数据还可以包括虚拟角色的移动信息、动作信息、形态信息、朝向信息等,此处不做限定。
具体地,为了便于理解,请参阅图4,图4为本申请实施例中虚拟场景的一个示意图,如图所示,在大型虚拟场景中,可以容纳上万用户同时在线。例如,图示中显示由用户控制的虚拟角色。这些虚拟角色的实时状态数据需要通过服务器转发给周围其他虚拟角色所对应的终端,以达到用户之间的互动效果。
需要说明的是,本申请中的用户可以是真实用户,也可以是具有AI功能的设备,此处不做限定。
220、根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,其中,可视场景范围内的虚拟角色的数量小于或等于数量阈值;
在一个或多个实施例中,服务器结合目标状态数据集,可确定每个虚拟角色在目标时刻的位置信息。由此,根据K个虚拟角色的位置信息,分别构建每个虚拟角色对应的可视场景范围。其中,可视场景范围内的虚拟角色数量小于或等于数量阈值,假设数量阈值为100,那么某个虚拟角色的可视场景范围内最多显示100个其他的虚拟角色。
具体地,为了便于理解,请参阅图5,图5为本申请实施例中可视场景范围的一个示意图,如图所示,以A1所指示的虚拟角色为例,假设该虚拟角色为“虚拟角色A”。A2用于指示该虚拟角色(即,“虚拟角色A”)的可视场景范围。基于此,A2所指示的虚拟角色可以看到A3所指示的虚拟角色、A4所指示的虚拟角色以及A5所指示的虚拟角色,但无法看到虚拟场景中其他的虚拟角色。
230、根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息;
在一个或多个实施例中,服务器根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,可以确定每个虚拟角色在目标时刻可以看到哪些其他的虚拟角色,与此同时,还可以确定每个虚拟角色在目标时刻可以被哪些虚拟角色看到。由此,生成每个虚拟角色在目标时刻的可视信息。
具体地,可视信息包括主动可视信息以及被动可视信息中的至少一种。其中,基于每个虚拟角色在目标时刻可以看到的其他虚拟角色,可得到每个虚拟角色在目标时刻的主动可视信息。基于每个虚拟角色在目标时刻可以被哪些虚拟角色看到,可得到每个虚拟角色在目标时刻的被动可视信息。
240、根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,其中,每个终端用于控制一个虚拟角色,状态数据子集包括基于可视信息获取的各个虚拟角色在目标时刻的状态数据。
在一个或多个实施例中,服务器根据每个虚拟角色在目标时刻的可视信息,可确定需要向每个虚拟角色提供的状态数据子集。其中,虚拟角色所对应的状态数据子集包括该虚拟角色可以看见的各个虚拟角色在目标时刻的状态数据。
具体地,由于每个虚拟角色由一个终端进行控制,因此,服务器将各个虚拟角色所对应的状态数据子集发送至其对应的终端。由终端对接收到状态数据子集进行渲染并展示。
本申请实施例中,提供了一种数据传输的方法。通过上述方式,服务器根据虚拟场景中每个虚拟角色的位置信息,确定每个虚拟角色的可视场景范围。基于此,服务器为每个虚拟角色提供在各自可视场景范围内的其他虚拟角色的状态数据。因此,不仅降低了服务器的数据传输量,减轻了服务器压力,而且可能有效地减少网络带宽的消耗。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,具体可以包括:
针对K个虚拟角色中的每个虚拟角色,根据目标状态数据集,确定虚拟角色在虚拟场景内的位置信息,其中,位置信息包括横坐标信息以及纵坐标信息;
针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在虚拟场景内的横坐标信息以及纵坐标信息,确定虚拟角色的视野原点位置;
针对K个虚拟角色中的每个虚拟角色,以虚拟角色的视野原点位置为中心,构建虚拟角色在目标时刻的可视场景范围,其中,可视场景范围为二维空间。
在一个或多个实施例中,介绍了一种基于位置信息确定可视场景范围的方式。由前述实施例可知,服务器维护每个虚拟角色的位置信息,其中,位置信息包括虚拟角色在虚拟场景中的横坐标信息以及纵坐标信息。下面将以K个虚拟角色中的任意一个虚拟角色的视角为例进行说明,可以理解的是,其他虚拟角色也可以采用类似方式构建可视场景范围,故此处不作赘述。
具体地,为了便于理解,请参阅图6,图6为本申请实施例中基于二维空间的可视场景范围的一个示意图,如图所示,B1用于指示一个虚拟角色,假设该虚拟角色为“虚拟角色A”。基于此,根据“虚拟角色A”的位置信息,可确定“虚拟角色A”在虚拟场景中的位置。于是,将“虚拟角色A”当前所在的位置作为视野原点位置,构建横坐标(即,X轴)和纵坐标(即,Y轴)。由此,以“虚拟角色A”的视野原点位置为中心,沿着X轴的正负方向分别取一个最远视野点,并沿着Y轴的正负方向分别取一个最远视野点,从而得到4个最远视野点,即可构建如B2所指示的可视场景范围。
B2所指示的可视场景范围为二维空间。在B2所指示的可视场景范围内,“虚拟角色A”可以看见B3所指示的“虚拟角色B”、B4所指示的“虚拟角色C”以及B5所指示的“虚拟角色D”。可见,“虚拟角色B”、“虚拟角色C”和“虚拟角色D”都在平面上。
需要说明的是,通常情况下,沿着X轴的正方向取所取的最远视野点到视野原点位置的距离,沿着X轴的负方向取所取的最远视野点到视野原点位置的距离。沿着Y轴的正方向取所取的最远视野点到视野原点位置的距离,沿着Y轴的负方向取所取的最远视野点到视野原点位置的距离。
其次,本申请实施例中,提供了一种基于位置信息确定可视场景范围的方式。通过上述方式,基于虚拟角色在虚拟场景内的位置信息,构建二维的可视场景范围。基于此,虚拟角色可以看到可视场景范围内属于同一平面的其他虚拟角色,仅将虚拟角色的状态数据转发给可视场景范围内的其他虚拟角色,或者,仅为虚拟角色转发可视场景范围内其他虚拟角色的状态数据。从而降低了数据传输量,减轻服务器的工作压力。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,具体可以包括:
针对K个虚拟角色中的每个虚拟角色,根据目标状态数据集,确定虚拟角色在虚拟场景内的位置信息,其中,位置信息包括横坐标信息、纵坐标信息以及竖坐标信息;
针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在虚拟场景内的横坐标信息、纵坐标信息以及竖坐标信息,确定虚拟角色的视野原点位置;
针对K个虚拟角色中的每个虚拟角色,以虚拟角色的视野原点位置为中心,构建虚拟角色在目标时刻的可视场景范围,其中,可视场景范围为三维空间。
在一个或多个实施例中,介绍了另一种基于位置信息确定可视场景范围的方式。由前述实施例可知,服务器维护每个虚拟角色的位置信息,其中,位置信息包括虚拟角色在虚拟场景中的横坐标信息、纵坐标信息以及竖坐标信息。下面将以K个虚拟角色中的任意一个虚拟角色的视角为例进行说明,可以理解的是,其他虚拟角色也可以采用类似方式构建可视场景范围,故此处不作赘述。
具体地,为了便于理解,请参阅图7,图7为本申请实施例中基于三维空间的可视场景范围的一个示意图,如图所示,C1用于指示一个虚拟角色,假设该虚拟角色为“虚拟角色A”。基于此,根据“虚拟角色A”的位置信息,可确定“虚拟角色A”在虚拟场景中的位置。于是,将“虚拟角色A”当前所在的位置作为视野原点位置,构建横坐标(即,X轴)、纵坐标(即,Y轴)和竖坐标(即,Z轴)。由此,以“虚拟角色A”的视野原点位置为中心,沿着X轴的正负方向分别取一个最远视野点,沿着Y轴的正负方向分别取一个最远视野点,沿着Z轴的正负方向分别取一个最远视野点,从而得到6个最远视野点,即可构建如C2所指示的可视场景范围。
C2所指示的可视场景范围为三维空间。在C2所指示的可视场景范围内,“虚拟角色A”可以看见C3所指示的“虚拟角色B”、C4所指示的“虚拟角色C”、B5所指示的“虚拟角色D”以及C6所指示的“虚拟角色E”。可见,“虚拟角色B”、“虚拟角色C”和“虚拟角色D”都在平面上,但是“虚拟角色E”位于悬空的位置。
需要说明的是,通常情况下,沿着X轴的正方向取所取的最远视野点到视野原点位置的距离,沿着X轴的负方向取所取的最远视野点到视野原点位置的距离。沿着Y轴的正方向取所取的最远视野点到视野原点位置的距离,沿着Y轴的负方向取所取的最远视野点到视野原点位置的距离。沿着Z轴的正方向取所取的最远视野点到视野原点位置的距离,沿着Z轴的负方向取所取的最远视野点到视野原点位置的距离。
其次,本申请实施例中,提供了另一种基于位置信息确定可视场景范围的方式。通过上述方式,基于虚拟角色在虚拟场景内的位置信息,构建三维的可视场景范围。基于此,虚拟角色可以看到可视场景范围内属于同一空间的其他虚拟角色,仅将虚拟角色的状态数据转发给可视场景范围内的其他虚拟角色,或者,仅为虚拟角色转发可视场景范围内其他虚拟角色的状态数据。从而降低了数据传输量,减轻服务器的工作压力。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,K个虚拟角色包括第一虚拟角色以及第二虚拟角色,其中,第一虚拟角色的角色等级高于第二虚拟角色的角色等级,或,控制第一虚拟角色的对象等级高于控制第二虚拟角色的对象等级,或,第一虚拟角色的道具属性等级高于第二虚拟角色的道具属性等级;
根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,具体可以包括:
从目标状态数据集中,获取第一虚拟角色在目标时刻的位置信息;
根据第一虚拟角色在目标时刻的位置信息,确定第一虚拟角色在目标时刻的第一可视场景范围;
从目标状态数据集中,获取第二虚拟角色在目标时刻的位置信息;
根据第二虚拟角色在目标时刻的位置信息,确定第二虚拟角色在目标时刻的第二可视场景范围;
其中,第一可视场景范围大于第二可视场景范围。
在一个或多个实施例中,介绍了一种基于不同虚拟角色确定可视场景范围的方式。由前述实施例可知,不同虚拟角色可能具有不同的等级属性,这些等级属性可以影响可视场景范围的大小,下面将以K个虚拟角色中的任意两个虚拟角色(即,第一虚拟角色以及第二虚拟角色)为例进行介绍,可以理解的是,其他虚拟角色也可以采用类似方式确定可视场景范围的大小,故此处不作赘述。
方式一、基于角色等级确定可视场景范围的大小;
具体地,假设第一虚拟角色的角色等级高于第二虚拟角色的角色等级。其中,角色等级是指用户所控制的虚拟角色的等级。虚拟角色的角色等级越高,表示该虚拟角色的能力越强大。用户可以通过累积虚拟角色的经验值来提升其对对应的角色等级。
示例性地,为了便于理解,请参阅图8,图8为本申请实施例中不同虚拟角色对应的可视场景范围的一个示意图,如图所示,D1用于指示第一虚拟角色,且,假设第一虚拟角色的角色等级为“20级”。根据第一虚拟角色在目标时刻的位置信息,以第一虚拟角色在目标时刻的位置为中心,构建第一虚拟角色在目标时刻的第一可视场景范围。其中,D2用于指示第一虚拟角色在目标时刻的第一可视场景范围。D3用于指示第二虚拟角色,且,假设第一虚拟角色的角色等级为“10级”。根据第二虚拟角色在目标时刻的位置信息,以第二虚拟角色在目标时刻的位置为中心,构建第二虚拟角色在目标时刻的第二可视场景范围。其中,D4用于指示第二虚拟角色在目标时刻的第二可视场景范围。
可见,D3所指示的第一可视场景范围大于D4所指示的第二可视场景范围。
方式二、基于对象等级确定可视场景范围的大小;
具体地,假设第一虚拟角色的对象等级高于第二虚拟角色的对象等级。其中,对象等级是指控制虚拟角色的用户所对应的级别。对象等级越高,表示该用户具有更高的控制权限。通常情况下,可以将对象等级分为高级(very important person,VIP)用户以及普通用户,即,VIP用户的权限高于普通用户的权限。
示例性地,为了便于理解,请再次参阅图8,如图所示,D1用于指示第一虚拟角色,且,假设控制第一虚拟角色的对象等级为“VIP用户”。D2用于指示第一虚拟角色在目标时刻的第一可视场景范围。D3用于指示第二虚拟角色,且,假设控制第一虚拟角色的对象等级为“普通用户”。D4用于指示第二虚拟角色在目标时刻的第二可视场景范围。
可见,D3所指示的第一可视场景范围大于D4所指示的第二可视场景范围。
方式三、基于道具属性等级确定可视场景范围的大小;
具体地,假设第一虚拟角色的道具属性等级高于第二虚拟角色的道具属性等级。其中,道具属性等级是指虚拟角色当前使用的道具的等级。道具属性等级越高,表示道具的使用效果越明显。例如,按照道具属性等级由高到低的顺序依次可以为“白色等级”、“绿色等级”、“蓝色等级”、“紫色等级”和“橙色等级”,即,“白色等级”为最低的道具属性等级,“橙色等级”为最高的道具属性等级。
示例性地,为了便于理解,请再次参阅图8,如图所示,D1用于指示第一虚拟角色,且,假设第一虚拟角色的道具属性等级为“橙色等级”。D2用于指示第一虚拟角色在目标时刻的第一可视场景范围。D3用于指示第二虚拟角色,且,假设第人虚拟角色的道具属性等级为“蓝色等级”。D4用于指示第二虚拟角色在目标时刻的第二可视场景范围。
可见,D3所指示的第一可视场景范围大于D4所指示的第二可视场景范围。
其次,本申请实施例中,提供了一种基于不同虚拟角色确定可视场景范围的方式。通过上述方式,由于不同的虚拟角色可能具有不同的等级属性,因此,这些等级属性还可以决定虚拟角色的可视场景范围的大小。基于此,引入了非对称视野的概念(即,不同的虚拟角色的可视场景范围大小可能不同),提升了角色视角的多样性,适用于更丰富的场景。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,可视信息为主动可视信息,主动可视信息用于指示在可视场景范围内的各个虚拟角色;
根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,具体可以包括:
根据第一虚拟角色在目标时刻的第一可视场景范围,获取在第一可视场景范围内的虚拟角色数量;
若在第一可视场景范围内的虚拟角色数量小于或等于第一数量阈值,则根据在第一可视场景范围内各个虚拟角色,生成第一虚拟角色在目标时刻的可视信息;
根据第二虚拟角色在目标时刻的第二可视场景范围,获取在第二可视场景范围内的虚拟角色数量;
若在第二可视场景范围内的虚拟角色数量小于或等于第二数量阈值,则根据在第二可视场景范围内各个虚拟角色,生成第二虚拟角色在目标时刻的可视信息;
其中,第一数量阈值大于第二数量阈值。
在一个或多个实施例中,介绍了一种基于不同虚拟角色生成可视信息的方式。由前述实施例可知,服务器生成的可视信息可以是主动可视信息,其中,主动可视信息包括在虚拟角色对应的可视场景范围内,该虚拟角色可以看到到的其他虚拟角色的信息。下面将以K个虚拟角色中的任意两个虚拟角色(即,第一虚拟角色以及第二虚拟角色)为例进行介绍,可以理解的是,其他虚拟角色也可以采用类似方式生成可视信息,故此处不作赘述。
具体地,在可视场景范围大小不同的情况下,还可以根据可视场景范围的大小设置不同的数量阈值。在第一可视场景范围大于第二可视场景范围的情况下,分别设置不同的数量阈值,其中,第一可视场景范围所对应的数量阈值(即,第一数量阈值)大于第二可视场景范围所对应的数量阈值(即,第二数量阈值)。示例性地,假设第一数量阈值为200,第二数量阈值为100,则第一虚拟角色在目标时刻的主动可视信息最多可包括200个其他虚拟角色的信息,而第二虚拟角色在目标时刻的主动可视信息最多可包括100个其他虚拟角色的信息。
再次,本申请实施例中,提供了一种基于不同虚拟角色生成可视信息的方式。通过上述方式,由于不同属性的虚拟角色,其对应的可视场景范围大小可能不同。因此,还可以可视场景范围大小设置相应的数量阈值。从而使得可视场景范围更大的虚拟角色,其对应的终端可显示更多数量的其他虚拟角色,从而提升方案的真实性和视觉效果。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,可视信息为主动可视信息,主动可视信息用于指示在可视场景范围内的各个虚拟角色;
根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,具体可以包括:
针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的可视场景范围,获取在可视场景范围内的虚拟角色数量;
针对K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量大于数量阈值,则在可视场景范围内选择M个虚拟角色,并根据M个虚拟角色生成虚拟角色在目标时刻的可视信息,M取值等于数量阈值;
其中,在可视场景范围内选择M个虚拟角色的方式包括如下至少一种:
在可视场景范围内选择距离虚拟角色最近的M个虚拟角色;
在可视场景范围内选择移动频率最高的M个虚拟角色;
在可视场景范围内选择角色等级最高的M个虚拟角色。
在一个或多个实施例中,介绍了三种生成可视信息的方式。由前述实施例可知,服务器生成的可视信息可以是主动可视信息。首先,根据虚拟角色在目标时刻所对应的可视场景范围,获取该可视场景范围内的虚拟角色数量,然后,判定该可视场景范围内的虚拟角色数量是否大于数量阈值。如果虚拟角色数量小于或等于数量阈值,则直接生成虚拟角色在目标时刻的可视信息。如果虚拟角色数量大于数量阈值,则需要从可视场景范围内选择满足条件的M个虚拟角色,并基于这M个虚拟角色生成可视信息。
下面将以K个虚拟角色中的任意一个虚拟角色的视角为例进行说明,可以理解的是,其他虚拟角色也可以采用类似方式生成可视信息,故此处不作赘述。
方式一、基于距离选择虚拟角色;
具体地,在可视场景范围内的虚拟角色数量大于数量阈值的情况下,以虚拟角色所在位置为中心,根据可视场景范围内其他虚拟角色的位置信息,分别计算该虚拟角色与其他各个虚拟角色之间的最短距离。为了便于说明,请参阅表1,表1为“虚拟角色A”与可视场景范围内其他各个虚拟角色之间最短距离的一个示意。
表1
假设数量阈值为4,基于此,根据上述各个虚拟角色与“虚拟角色A”之间的最短距离,可确定“虚拟角色E”、“虚拟角色B”、“虚拟角色C”和“虚拟角色D”为距离“虚拟角色A”最近的前4个虚拟角色。因此,“虚拟角色A”在目标时刻的主动可视信息包括这4个虚拟角色的标识。如果出现最短距离相等的情况,可以考虑基于移动频率或者基于角色等级进行筛选,也可以进行随机筛选,此处不做限定。
方式二、基于移动频率选择虚拟角色;
具体地,在可视场景范围内的虚拟角色数量大于数量阈值的情况下,统计该可视场景范围内的各个虚拟角色的移动频率。其中,虚拟角色的移动频率是指虚拟角色在单位时间内处于移动状态的时间占比。例如,单位时间为1分钟,某个虚拟角色在1分钟内有20秒处于移动状态,剩余40秒静止不动,由此,得到该虚拟角色的移动频率为0.33。为了便于说明,请参阅表2,表2为在“虚拟角色A”的可视场景范围内其他虚拟角色的移动频率的一个示意。
表2
假设数量阈值为4,基于此,根据上述各个虚拟角色的移动频率,可确定“虚拟角色F”、“虚拟角色H”、“虚拟角色D”和“虚拟角色G”为移动频率最高的前4个虚拟角色。因此,“虚拟角色A”在目标时刻的主动可视信息包括这4个虚拟角色的标识。如果出现移动频率相等的情况,可以考虑基于距离或者基于角色等级进行筛选,也可以进行随机筛选,此处不做限定。
方式三、基于角色等级选择虚拟角色;
具体地,在可视场景范围内的虚拟角色数量大于数量阈值的情况下,获取该可视场景范围内的各个虚拟角色的角色等级。其中,角色等级是指用户所控制的虚拟角色的等级。为了便于说明,请参阅表3,表3为在“虚拟角色A”的可视场景范围内其他虚拟角色的角色等级的一个示意。
表3
假设数量阈值为4,基于此,根据上述各个虚拟角色的角色等级,可确定“虚拟角色D”、“虚拟角色B”、“虚拟角色C”和“虚拟角色H”为角色等级最高的前4个虚拟角色。因此,“虚拟角色A”在目标时刻的主动可视信息包括这4个虚拟角色的标识。如果出现角色等级相等的情况,可以考虑基于距离或者基于移动频率进行筛选,也可以进行随机筛选,此处不做限定。
需要说明的是,在实际应用中,可以选择上述任意一种方式,从可视场景范围内选择符合条件的虚拟角色。也可以选择上述多种方式,从可视场景范围内选择符合条件的虚拟角色,例如,先选择距离最近的若干个虚拟角色,再选择移动频率最高的若干个角色。但需要注意的是,所选的虚拟角色总数应小于或等于数量阈值。
其次,本申请实施例中,提供了三种生成可视信息的方式。通过上述方式,如果在可视场景范围内的虚拟角色数量大于数量阈值,则可以根据相应的策略,从可视场景范围内选择部分虚拟角色进行后续处理。由此,能够避免在可视场景范围内出现虚拟角色数量过多的情况,从而能够降低服务器的数据传输量,减轻服务器压力。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,虚拟场景还包括T个互动角色,T为大于1的整数;
根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,具体可以包括:
针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的可视场景范围,获取在可视场景范围内的虚拟角色数量以及互动角色数量;
针对K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量小于或等于虚拟角色数量阈值,且,在可视场景范围内的互动角色数量小于或等于互动角色数量阈值,则根据在可视场景范围内的各个虚拟角色,生成虚拟角色在目标时刻的可视信息;
其中,虚拟角色数量阈值与互动角色数量阈值之和等于数量阈值。
在一个或多个实施例中,介绍了一种基于角色类型划分多段数量阈值的方式。由前述实施例可知,虚拟场景中不仅包括真实用户控制的虚拟角色,还可能包括非真实用户控制的互动角色。而非真实用户(例如,机器人或程序等)控制的互动角色所对应的状态数据也需要转发给真实用户所使用的终端。因此,在实际应用中,还需要考虑可视场景范围所包括的互动角色的数量。
下面将以K个虚拟角色中的任意一个虚拟角色的视角为例进行说明,可以理解的是,其他虚拟角色也可以采用类似方式生成可视信息,故此处不作赘述。
具体地,假设“虚拟角色A”在虚拟场景中喂鸽子,周边还围绕正在观看“虚拟角色A”的其他虚拟角色。其中,互动角色可以是非玩家角色(non-player character,NPC),例如,该虚拟场景中的“鸽子”属于互动角色。
基于此,服务器可根据“虚拟角色A”在目标时刻的可视场景范围,分别得到该可视场景范围内的虚拟角色数量以及互动角色数量。于是,一方面,需要判断在可视场景范围内的虚拟角色数量是否小于或等于虚拟角色数量阈值(例如,80),另一方面,需要判断在可视场景范围内的互动角色数量是否小于或等于互动角色数量阈值(例如,20)。其中,虚拟角色数量阈值与互动角色数量阈值之和等于数量阈值(例如,100)。
如果虚拟角色数量小于或等于虚拟角色数量阈值,且,互动角色数量小于或等于互动角色数量阈值,则“虚拟角色A”的在目标时刻的主动可视信息包括各个虚拟角色的标识以及各个互动角色的标识,即,服务器还可以向控制“虚拟角色A”的终端发送各个虚拟角色的状态信息以及各个互动角色的状态信息。
如果虚拟角色数量大于虚拟角色数量阈值,或者,互动角色数量大于互动角色数量阈值,则可以基于前述实施例中描述的方法,从可视场景范围内筛选出虚拟角色以及互动角色,此处不做赘述。
其次,本申请实施例中,提供了一种基于角色类型划分多段数量阈值的方式。通过上述方式,对真实用户控制的虚拟角色数量与非真实用户控制的虚拟角色数量分别进行判定,使得终端呈现的渲染画面中既可以包括真实用户控制的虚拟角色,又可以包括非真实用户控制的虚拟角色,从而提升用户的视觉体验。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,虚拟场景还包括T个互动角色,T为大于1的整数;
根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,具体可以包括:
针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的可视场景范围,获取在可视场景范围内的虚拟角色数量以及互动角色数量;
针对K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量以及互动角色数量之和小于或等于数量阈值,则根据在可视场景范围内的各个虚拟角色,生成虚拟角色在目标时刻的可视信息。
在一个或多个实施例中,介绍了一种基于角色类型使用相同数量阈值的方式。由前述实施例可知,虚拟场景中不仅包括真实用户控制的虚拟角色,还可能包括非真实用户控制的互动角色。在实际应用中,还需要考虑可视场景范围所包括的互动角色的数量。
下面将以K个虚拟角色中的任意一个虚拟角色的视角为例进行说明,可以理解的是,其他虚拟角色也可以采用类似方式生成可视信息,故此处不作赘述。
具体地,假设“虚拟角色A”在虚拟场景中喂鸽子,周边还围绕正在观看“虚拟角色A”的其他虚拟角色。其中,互动角色可以是NPC,例如,该虚拟场景中的“鸽子”属于互动角色。
基于此,服务器可根据“虚拟角色A”在目标时刻的可视场景范围,分别得到该可视场景范围内的虚拟角色数量以及互动角色数量。于是,对虚拟角色数量以及互动角色数量求和,如果虚拟角色数量以及互动角色数量之和小于或等于数量阈值(例如,100),则“虚拟角色A”的在目标时刻的主动可视信息包括各个虚拟角色的标识以及各个互动角色的标识,即,服务器还可以向控制“虚拟角色A”的终端发送各个虚拟角色的状态信息以及各个互动角色的状态信息。
如果虚拟角色数量以及互动角色数量之和大于数量阈值,则可以基于前述实施例中描述的方法,从可视场景范围内筛选出虚拟角色以及互动角色,此处不做赘述。
其次,本申请实施例中,提供了一种基于角色类型使用相同数量阈值的方式。通过上述方式,对真实用户控制的虚拟角色数量与非真实用户控制的虚拟角色数量进行共同判定,无需区分是否为真实用户控制的虚拟角色,从而提升虚拟角色数量的判定效率。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,可视信息为主动可视信息,主动可视信息用于指示在可视场景范围内的各个虚拟角色;
根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,具体可以包括:
针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的主动可视信息,获取在虚拟角色的可视场景范围内的各个虚拟角色所对应的状态数据;
针对K个虚拟角色中的每个虚拟角色,将在虚拟角色的可视场景范围内的各个虚拟角色所对应的状态数据,作为虚拟角色所对应的状态数据子集;
针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集发送至控制虚拟角色的终端。
在一个或多个实施例中,介绍了一种基于主动可视信息进行数据传输的方式。由前述实施例可知,可视信息为主动可视信息,即,服务器可以为每个虚拟角色创建其对应的主动可视信息。基于某个虚拟角色的主动可视信息,可获知该虚拟角色可以看到哪些其他的虚拟角色,由此,服务器可进行状态数据的转发。
下面将以K个虚拟角色中的任意一个虚拟角色的视角为例进行说明,可以理解的是,其他虚拟角色也可以采用类似方式获取状态数据子集,故此处不作赘述。
具体地,主动可视信息可以表示为主动可视列表。为了便于说明,请参阅表4,表4为“虚拟对象A”所对应的主动可视列表的一个示意。
表4
由表4可知,在“虚拟对象A”的可视场景范围内,控制“虚拟对象A”的用户可以看到“虚拟角色B”、“虚拟角色C”、“虚拟角色D”以及“虚拟角色E”。基于此,服务器将“虚拟角色B”的状态数据、“虚拟角色C”的状态数据、“虚拟角色D”的状态数据以及“虚拟角色E”的状态数据作为状态数据子集,然后,发送至控制“虚拟对象A”的终端。由控制“虚拟对象A”的终端显示这些虚拟角色的状态。
结合表4,为了便于理解,请参阅图9,图9为本申请实施例中基于主动可视信息进行数据传输的一个示意图,如图所示,终端A用于控制“虚拟角色A”,终端B用于控制“虚拟角色B”,终端C用于控制“虚拟角色C”,以此类推。
基于此,终端B将“虚拟角色B”的状态数据通过接入组件(例如,“TConnd”)发送至服务器,类似地,终端C将“虚拟角色C”的状态数据通过接入组件发送至服务器,终端D将“虚拟角色D”的状态数据通过接入组件发送至服务器,终端E将“虚拟角色E”的状态数据通过接入组件发送至服务器。于是,服务器,将这些状态数据打包成一个状态数据子集,并通过接入组件同步给终端A。
其次,本申请实施例中,提供了一种基于主动可视信息进行数据传输的方式。通过上述方式,服务器仅为虚拟角色转发可视场景范围内其他虚拟角色的状态数据,从而降低了数据传输量,减轻服务器的工作压力,提升了应用运行性能,为用户提供更流畅的应用(例如,游戏、社交等)体验。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,可视信息为被动可视信息,被动可视信息用于指示虚拟角色在其他虚拟角色的可视场景范围内的可见情况;
根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,具体可以包括:
针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的被动可视信息,从K个虚拟角色中确定可见虚拟角色的其他虚拟角色;
针对K个虚拟角色中的每个虚拟角色,将虚拟角色的状态数据,加入至可见虚拟角色的其他虚拟角色所对应的状态数据子集;
针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集发送至控制虚拟角色的终端。
在一个或多个实施例中,介绍了一种基于被动可视信息进行数据传输的方式。由前述实施例可知,可视信息为被动可视信息,即,服务器可以为每个虚拟角色创建其对应的被动可视信息。基于某个虚拟角色的被动可视信息,可获知该虚拟角色可以被哪些其他的虚拟角色所看到,由此,服务器可进行状态数据的转发。
下面将以K个虚拟角色中的任意一个虚拟角色的视角为例进行说明,可以理解的是,其他虚拟角色也可以采用类似方式获取状态数据子集,故此处不作赘述。
具体地,被动可视信息可以表示为被动可视列表。为了便于说明,请参阅表5,表5为“虚拟对象A”所对应的被动可视列表的一个示意。
表5
由表5可知,在“虚拟对象A”可以被控制“虚拟角色B”的用户看到,也可以被控制“虚拟角色C”的用户看到,还可以被控制“虚拟角色D”的用户看到。基于此,服务器将“虚拟角色A”的状态数据分别加入至“虚拟角色B”所对应的状态数据子集、“虚拟角色C”所对应的状态数据子集以及“虚拟角色D”所对应的状态数据子集。然后,服务器分别向控制“虚拟对象B”的终端、控制“虚拟对象C”的终端和控制“虚拟对象D”的终端发送包含“虚拟角色A”的状态数据的状态数据子集。
结合表5,为了便于理解,请参阅图10,图10为本申请实施例中基于被动可视信息进行数据传输的一个示意图,如图所示,终端A用于控制“虚拟角色A”,终端B用于控制“虚拟角色B”,终端C用于控制“虚拟角色C”,以此类推。
基于此,终端A将“虚拟角色A”的状态数据通过接入组件发送至服务器。服务器通过接入组件将“虚拟角色A”的状态数据分别发同步给控制“虚拟角色B”的终端B、控制“虚拟角色C”的终端C以及控制“虚拟角色D”的终端D。
其次,本申请实施例中,提供了一种基于被动可视信息进行数据传输的方式。通过上述方式,服务器仅将虚拟角色的状态数据转发给可见该虚拟角色的其他虚拟角色,从而降低了数据传输量,减轻服务器的工作压力,提升了应用运行性能,为用户提供更流畅的应用(例如,游戏、社交等)体验。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集发送至控制虚拟角色的终端,具体可以包括:
针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至虚拟角色所对应的缓存区;
在满足数据传输条件的情况下,将每个缓存区所存储的状态数据子集发送至控制虚拟角色的终端。
在一个或多个实施例中,介绍了一种基于转发合并算法进行数据传输的方式。由前述实施例可知,服务器完成视野裁剪的操作之后,可以采用转发合并算法将状态数据子集发送至各个终端所对应的缓存区中,并进行合并转发。其中,本申请中的缓存区也可以称为接收缓存区(RCB)或者状态数据缓存区(SD buffer)等。
具体地,经过视野裁剪与选择之后,服务器已经确定需要将虚拟角色的状态数据转发给哪些终端。此时,服务器可以不立即通过接入组件直接发给各个终端,而是将状态数据存储至终端对应的缓存区,即,服务器为每个终端创建一个缓存区。基于此,每个缓存区用于存储一个虚拟角色所对应的状态数据子集,由此,将该状态数据子集发送至控制该虚拟角色的终端即可。
为了便于理解,请参阅图11,图11为本申请实施例中基于转发合并算法进行数据传输的一个示意图,如图所示,终端A控制“虚拟角色A”,并将“虚拟角色A”的状态数据发送至服务器。服务器结合虚拟场景中各个虚拟角色的位置信息进行视野剪裁,由此,服务器确定需要将“虚拟角色A”的状态发送给哪些终端。假设“虚拟角色B”、“虚拟角色C”和“虚拟角色D”的可视场景范围内均包括“虚拟角色A”,其中,终端B用于控制“虚拟角色B”,终端C用于控制“虚拟角色C”,终端D用于控制“虚拟角色D”。
基于此,服务器将“虚拟角色A”的状态数据分别存储至终端B所对应的“缓存区1”、终端C所对应的“缓存区2”以及终端D所对应的“缓存区3”。可见,“缓存区1”用于存储“虚拟角色B”所对应的状态数据子集,“缓存区2”用于存储“虚拟角色C”所对应的状态数据子集,“缓存区3”用于存储“虚拟角色D”所对应的状态数据子集。
在满足数据传输条件的情况下,服务器将每个缓存区中存储的状态数据子集发送至控制器对应虚拟角色的终端。即,将“缓存区1”中的状态数据子集发送至终端B,将“缓存区2”中的状态数据子集发送至终端C,并且将“缓存区3”中的状态数据子集发送至终端D。服务器将状态数据子集转发至对应的终端之后,会清空缓存区。
再次,本申请实施例中,提供了一种基于转发合并算法进行数据传输的方式。通过上述方式,在视野裁剪的基础上进一步采用转发合并算法进行数据传输。可见,服务器并不会每次将状态数据直接转发给周围视野内的虚拟角色所对应的终端,而是将该状态数据发送至终端所对应的缓存区里,缓存区内的数据被合并转发给对应终端。由此,能够显著减少服务器需要处理的数据量和转发次数。从而降低了服务器压力,提高了服务器的处理能力和稳定性。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至虚拟角色所对应的缓存区之后,还可以包括:
若当前等待时长达到等待时长阈值,则确定满足数据传输条件,其中,当前等待时长表示在缓存区中存储状态数据的时长。
在一个或多个实施例中,介绍了一种转发状态数据的方式。由前述实施例可知,在满足数据传输条件的情况下,服务器可以将各个缓存区所存储的状态数据子集发送至相应的终端。下面将结合示例,介绍一种数据传输条件的情况。
具体地,服务器可定时发送各个缓存区内的状态数据子集。示例性地,假设服务器每1秒发送一次缓存区内的状态数据子集,那么在当前等待时长达到等待时长阈值(即,1秒)的情况下,服务器认为当前已满足数据传输条件,因此,可将各个缓存区所存储的状态数据子集发送至相应的终端。
进一步地,本申请实施例中,提供了一种转发状态数据的方式。通过上述方式,服务器可以定时向终端合并转发缓存区中存储的状态数据,从而减少转发次数,进一步降低服务器压力。此外,由于减少了数据传输量和转发次数,还可以有效降低网络带宽消耗,提高了应用性能。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至虚拟角色所对应的缓存区之后,可以还包括:
若存在至少一个缓存区的数据存储量达到存储量阈值,则确定满足数据传输条件。
在一个或多个实施例中,介绍了另一种转发状态数据的方式。由前述实施例可知,在满足数据传输条件的情况下,服务器可以将各个缓存区所存储的状态数据子集发送至相应的终端。下面将结合示例,介绍另一种数据传输条件的情况。
具体地,服务器可根据各个缓存区内的数据存储量判断是否需要向相应终端发送状态数据子集。示例性地,假设存储量阈值为缓存区总容量的80%,那么当存在至少一个缓存区的数据存储量达到存储量阈值(即,总容量的80%)时,服务器认为当前已满足数据传输条件,因此,可将各个缓存区所存储的状态数据子集发送至相应的终端。
进一步地,本申请实施例中,提供了另一种转发状态数据的方式。通过上述方式,服务器在缓存区的数据存储量达到存储量阈值的情况下,即可触发合并转发的操作。由此,不仅能够减少转发次数,降低服务器压力,而且能够避免数据丢失的问题,从而提升了数据传输的可靠性。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,获取针对虚拟场景的目标状态数据集,具体可以包括:
通过K个线程,接收K个终端中的每个终端发送的状态数据,其中,每个线程用于接收一个终端发送的状态数据;
根据K个终端中的每个终端发送的状态数据,生成针对虚拟场景的目标状态数据集;
根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,具体可以包括:
通过K个线程,根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,其中,每个线程用于确定一个虚拟角色在目标时刻的可视场景范围;
根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,具体可以包括:
通过K个线程,根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,其中,每个线程用于生成一个虚拟角色在目标时刻的可视信息;
根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,具体可以包括:
通过K个线程,根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,其中,每个线程用于向一个终端发送状态数据子集。
在一个或多个实施例中,介绍了一种基于多个线程并行处理状态数据的方式。由前述实施例可知,服务器内部处理的逻辑包括视野剪裁,缓存区的数据存储与清空,定时器的执行以及状态数据的转发等。其中,这些逻辑可以通过多线程并发独立执行。
具体地,在虚拟场景包括K个虚拟角色的情况下,可针对每个虚拟角色创建一个线程。为了便于理解,请参阅图12,图12为本申请实施例中多线程并行处理数据的一个示意图,如图所示,服务器调用每个线程可以分别接收终端上报的虚拟角色所对应的状态数据,由此,服务器可得到目标状态数据集。服务器调用每个线程执行视野裁剪与选择。即,每个线程分别根据目标状态数据集获取虚拟角色在目标时刻的位置信息,然后,基于该位置信息计算该虚拟角色在目标时刻的可视场景范围,最后,根据可视场景范围生成虚拟角色在目标时刻的可视信息。
服务器调用每个线程执行数据存储操作。即,每个线程根据虚拟角色在目标时刻的可视信息,将虚拟角色所对应的状态数据子集存储至相应的缓存区内,由此,实现对状态数据的分发。基于此,服务器调用每个线程分别执行状态数据子集的转发。即,每个线程基于定时器触发执行转发逻辑,将缓存区内的状态数据打包为一个状态数据子集,进行数据序列化之后通过接入组件发送至终端。
其次,本申请实施例中,提供了一种基于多个线程并行处理状态数据的方式。通过上述方式,利用多线程处理能够增大服务器的转发处理能力,从而有助于提升应用运行的实时性,为用户提供更流畅的使用体验。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,获取针对虚拟场景的目标状态数据集,具体可以包括:
通过接入组件集群,接收K个终端中的每个终端发送的状态数据,其中,接入组件集群包括至少两个接入组件;
根据K个终端中的每个终端发送的状态数据,生成针对虚拟场景的目标状态数据集。
在一个或多个实施例中,介绍了一种服务器基于接入组件集群接收状态数据的方式。由前述实施例可知,服务器与终端之间可通过接入组件进行通信,其中,本申请中的接入组件具体可以是网络应用或网络进程。
具体地,为了便于理解,请参阅图13,图13为本申请实施例中服务器基于接入组件集群接收数据的一个示意图,在一种实现方式中,如图13中的(A)图所示,接入组件与服务器之间为一对一的部署,即,为每个服务器部署一个接入组件。服务器可能需要通过一个或多个接入组件接收K个终端发送的状态数据。
在另一种实现方式中,如图13中的(B)图所示,接入组件采用集群化模式,不与服务器进行绑定,而是通过路由的方式与服务器进行通信。示例性地,K个终端分别将状态数据的上报请求发送至接入组件集群,由此,将这些上报请求平均分配给接入组件集群中的各个接入组件,从而平衡接入组件的工作压力。基于此,接入组件集群响应于上报请求,将接收到的状态数据发送至服务器,以使服务器获取针对虚拟场景的目标状态数据集。
可见,采用接入组件集群化部署的模式,能够实现部署解耦,不用为每个服务器单独部署接入组件,而是充分利用接入组件集群中的每个接入组件。
其次,本申请实施例中,提供了一种服务器基于接入组件集群接收状态数据的方式。通过上述方式,采用模块化设计,使得各个组件之间的耦合度较低,便于进行扩展和维护,为未来的技术升级和优化提供了便利。此外,通过接入组件集群能够平均分配各个接入组件的压力,并且避免接入组件过量部署,从而降低部署成本,节省部署资源。
可选地,在上述图3对应的一个或多个实施例的基础上,本申请实施例提供的另一个可选实施例中,根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,具体可以包括:
根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,通过接入组件集群,向K个终端中的每个终端发送状态数据子集,其中,接入组件集群包括至少两个接入组件。
在一个或多个实施例中,介绍了一种基于接入组件集群发送状态数据的方式。由前述实施例可知,服务器与终端之间可通过接入组件进行通信,其中,本申请中的接入组件具体可以是网络应用或网络进程。
具体地,为了便于理解,请参阅图14,图14为本申请实施例中服务器基于接入组件集群发送数据的一个示意图,在一种实现方式中,如图14中的(A)图所示,接入组件与服务器之间为一对一的部署,即,为每个服务器部署一个接入组件。服务器可能需要通过一个或多个接入组件向K个终端发送状态数据子集。
在另一种实现方式中,如图14中的(B)图所示,接入组件采用集群化模式,不与服务器进行绑定,而是通过路由的方式与服务器进行通信。示例性地,服务器分别将状态数据子集的转发请求发送至接入组件集群,由此,将这些转发请求平均分配给接入组件集群中的各个接入组件,从而平衡接入组件的工作压力。基于此,接入组件集群响应于转发请求,将各个状态数据子集分别发送至相应的终端。
可见,采用接入组件集群化部署的模式,能够实现部署解耦,不用为每个服务器单独部署接入组件,而是充分利用接入组件集群中的每个接入组件。
其次,本申请实施例中,提供了一种基于接入组件集群发送状态数据的方式。通过上述方式,采用模块化设计,使得各个组件之间的耦合度较低,便于进行扩展和维护,为未来的技术升级和优化提供了便利。此外,通过接入组件集群能够平均分配各个接入组件的压力,并且避免接入组件过量部署,从而降低部署成本,节省部署资源。
下面对本申请中的数据传输装置进行详细描述,请参阅图15,图15为本申请实施例中数据传输装置的一个实施例示意图,数据传输装置30包括:
获取模块310,用于获取针对虚拟场景的目标状态数据集,其中,虚拟场景包括K个虚拟角色,目标状态数据集包括在虚拟场景内的每个虚拟角色在目标时刻的状态数据,状态数据包括虚拟角色在虚拟场景内的位置信息,K为大于1的整数;
确定模块320,用于根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,其中,可视场景范围内的虚拟角色的数量小于或等于数量阈值;
生成模块330,用于根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息;
发送模块340,用于根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,其中,每个终端用于控制一个虚拟角色,状态数据子集包括基于可视信息获取的各个虚拟角色在目标时刻的状态数据。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,
确定模块320,具体用于针对K个虚拟角色中的每个虚拟角色,根据目标状态数据集,确定虚拟角色在虚拟场景内的位置信息,其中,位置信息包括横坐标信息以及纵坐标信息;
针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在虚拟场景内的横坐标信息以及纵坐标信息,确定虚拟角色的视野原点位置;
针对K个虚拟角色中的每个虚拟角色,以虚拟角色的视野原点位置为中心,构建虚拟角色在目标时刻的可视场景范围,其中,可视场景范围为二维空间。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,
确定模块320,具体用于针对K个虚拟角色中的每个虚拟角色,根据目标状态数据集,确定虚拟角色在虚拟场景内的位置信息,其中,位置信息包括横坐标信息、纵坐标信息以及竖坐标信息;
针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在虚拟场景内的横坐标信息、纵坐标信息以及竖坐标信息,确定虚拟角色的视野原点位置;
针对K个虚拟角色中的每个虚拟角色,以虚拟角色的视野原点位置为中心,构建虚拟角色在目标时刻的可视场景范围,其中,可视场景范围为三维空间。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,K个虚拟角色包括第一虚拟角色以及第二虚拟角色,其中,第一虚拟角色的角色等级高于第二虚拟角色的角色等级,或,控制第一虚拟角色的对象等级高于控制第二虚拟角色的对象等级,或,第一虚拟角色的道具属性等级高于第二虚拟角色的道具属性等级;
确定模块320,具体用于从目标状态数据集中,获取第一虚拟角色在目标时刻的位置信息;
根据第一虚拟角色在目标时刻的位置信息,确定第一虚拟角色在目标时刻的第一可视场景范围;
从目标状态数据集中,获取第二虚拟角色在目标时刻的位置信息;
根据第二虚拟角色在目标时刻的位置信息,确定第二虚拟角色在目标时刻的第二可视场景范围;
其中,第一可视场景范围大于第二可视场景范围。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,可视信息为主动可视信息,主动可视信息用于指示在可视场景范围内的各个虚拟角色;
生成模块330,具体用于根据第一虚拟角色在目标时刻的第一可视场景范围,获取在第一可视场景范围内的虚拟角色数量;
若在第一可视场景范围内的虚拟角色数量小于或等于第一数量阈值,则根据在第一可视场景范围内各个虚拟角色,生成第一虚拟角色在目标时刻的可视信息;
根据第二虚拟角色在目标时刻的第二可视场景范围,获取在第二可视场景范围内的虚拟角色数量;
若在第二可视场景范围内的虚拟角色数量小于或等于第二数量阈值,则根据在第二可视场景范围内各个虚拟角色,生成第二虚拟角色在目标时刻的可视信息;
其中,第一数量阈值大于第二数量阈值。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,可视信息为主动可视信息,主动可视信息用于指示在可视场景范围内的各个虚拟角色;
生成模块330,具体用于针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的可视场景范围,获取在可视场景范围内的虚拟角色数量;
针对K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量大于数量阈值,则在可视场景范围内选择M个虚拟角色,并根据M个虚拟角色生成虚拟角色在目标时刻的可视信息,M取值等于数量阈值;
其中,在可视场景范围内选择M个虚拟角色的方式包括如下至少一种:
在可视场景范围内选择距离虚拟角色最近的M个虚拟角色;
在可视场景范围内选择移动频率最高的M个虚拟角色;
在可视场景范围内选择角色等级最高的M个虚拟角色。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,虚拟场景还包括T个互动角色,T为大于1的整数;
生成模块330,具体用于针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的可视场景范围,获取在可视场景范围内的虚拟角色数量以及互动角色数量;
针对K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量小于或等于虚拟角色数量阈值,且,在可视场景范围内的互动角色数量小于或等于互动角色数量阈值,则根据在可视场景范围内的各个虚拟角色,生成虚拟角色在目标时刻的可视信息;
其中,虚拟角色数量阈值与互动角色数量阈值之和等于数量阈值。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,虚拟场景还包括T个互动角色,T为大于1的整数;
生成模块330,具体用于针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的可视场景范围,获取在可视场景范围内的虚拟角色数量以及互动角色数量;
针对K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量以及互动角色数量之和小于或等于数量阈值,则根据在可视场景范围内的各个虚拟角色,生成虚拟角色在目标时刻的可视信息。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,可视信息为主动可视信息,主动可视信息用于指示在可视场景范围内的各个虚拟角色;
发送模块340,具体用于针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的主动可视信息,获取在虚拟角色的可视场景范围内的各个虚拟角色所对应的状态数据;
针对K个虚拟角色中的每个虚拟角色,将在虚拟角色的可视场景范围内的各个虚拟角色所对应的状态数据,作为虚拟角色所对应的状态数据子集;
针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集发送至控制虚拟角色的终端。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,可视信息为被动可视信息,被动可视信息用于指示虚拟角色在其他虚拟角色的可视场景范围内的可见情况;
发送模块340,具体用于针对K个虚拟角色中的每个虚拟角色,根据虚拟角色在目标时刻的被动可视信息,从K个虚拟角色中确定可见虚拟角色的其他虚拟角色;
针对K个虚拟角色中的每个虚拟角色,将虚拟角色的状态数据,加入至可见虚拟角色的其他虚拟角色所对应的状态数据子集;
针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集发送至控制虚拟角色的终端。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,
发送模块340,具体用于针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至虚拟角色所对应的缓存区;
在满足数据传输条件的情况下,将每个缓存区所存储的状态数据子集发送至控制虚拟角色的终端。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,
确定模块320,还用于针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至虚拟角色所对应的缓存区之后,若当前等待时长达到等待时长阈值,则确定满足数据传输条件,其中,当前等待时长表示在缓存区中存储状态数据的时长。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,
确定模块320,还用于针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至虚拟角色所对应的缓存区之后,若存在至少一个缓存区的数据存储量达到存储量阈值,则确定满足数据传输条件。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,
获取模块310,具体用于通过K个线程,接收K个终端中的每个终端发送的状态数据,其中,每个线程用于接收一个终端发送的状态数据;
根据K个终端中的每个终端发送的状态数据,生成针对虚拟场景的目标状态数据集;
确定模块320,具体用于通过K个线程,根据目标状态数据集,确定K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,其中,每个线程用于确定一个虚拟角色在目标时刻的可视场景范围;
生成模块330,具体用于通过K个线程,根据K个虚拟角色中的每个虚拟角色在目标时刻的可视场景范围,生成K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,其中,每个线程用于生成一个虚拟角色在目标时刻的可视信息;
发送模块340,具体用于通过K个线程,根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,其中,每个线程用于向一个终端发送状态数据子集。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,
获取模块310,具体用于通过接入组件集群,接收K个终端中的每个终端发送的状态数据,其中,接入组件集群包括至少两个接入组件;
根据K个终端中的每个终端发送的状态数据,生成针对虚拟场景的目标状态数据集。
可选地,在上述图15所对应的实施例的基础上,本申请实施例提供的数据传输装置30的另一实施例中,
发送模块340,具体用于根据K个虚拟角色中的每个虚拟角色在目标时刻的可视信息,通过接入组件集群,向K个终端中的每个终端发送状态数据子集,其中,接入组件集群包括至少两个接入组件。
图16是本申请实施例提供的一种服务器结构示意图。该服务器400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)422(例如,一个或一个以上处理器)和存储器432,一个或一个以上存储应用程序442或数据444的存储介质430(例如一个或一个以上海量存储设备)。其中,存储器432和存储介质430可以是短暂存储或持久存储。存储在存储介质430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器422可以设置为与存储介质430通信,在服务器400上执行存储介质430中的一系列指令操作。
服务器400还可以包括一个或一个以上电源426,一个或一个以上有线或无线网络接口450,一个或一个以上输入输出接口458,和/或,一个或一个以上操作系统441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图16所示的服务器结构。
本申请实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现前述各个实施例描述方法的步骤。
本申请实施例中还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现前述各个实施例描述方法的步骤。
可以理解的是,在本申请的具体实施方式中,涉及到用户操作、用户信息等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是服务器或终端设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储计算机程序的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (34)

1.一种数据传输的方法,其特征在于,包括:
获取针对虚拟场景的目标状态数据集,其中,所述虚拟场景包括K个虚拟角色,所述目标状态数据集包括在所述虚拟场景内的每个虚拟角色在目标时刻的状态数据,所述状态数据包括虚拟角色在所述虚拟场景内的位置信息、移动信息、动作信息、形态信息以及朝向信息,所述K为大于1的整数;
根据所述目标状态数据集,确定所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,其中,所述可视场景范围内的虚拟角色的数量小于或等于数量阈值,所述可视场景范围的大小是基于角色等级、对象等级或道具属性等级确定的;
根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,生成所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,所述可视信息包括主动可视信息以及被动可视信息中的至少一种,所述主动可视信息为虚拟角色在目标时刻看到的其他虚拟角色,所述被动可视信息为虚拟角色在目标时刻被其他虚拟角色看到;
根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,其中,所述每个终端用于控制一个虚拟角色,所述状态数据子集包括基于可视信息获取的各个虚拟角色在所述目标时刻的状态数据,虚拟角色所对应的状态数据子集包括该虚拟角色看见的各个虚拟角色在目标时刻的状态数据,采用转发合并算法将状态数据子集发送至各个终端所对应的缓存区中,缓存区内的数据被合并转发给对应终端。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标状态数据集,确定所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,包括:
针对所述K个虚拟角色中的每个虚拟角色,根据所述目标状态数据集,确定虚拟角色在所述虚拟场景内的位置信息,其中,所述位置信息包括横坐标信息以及纵坐标信息;
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述虚拟场景内的横坐标信息以及纵坐标信息,确定所述虚拟角色的视野原点位置;
针对所述K个虚拟角色中的每个虚拟角色,以虚拟角色的视野原点位置为中心,构建所述虚拟角色在所述目标时刻的可视场景范围,其中,所述可视场景范围为二维空间。
3.根据权利要求1所述的方法,其特征在于,所述根据所述目标状态数据集,确定所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,包括:
针对所述K个虚拟角色中的每个虚拟角色,根据所述目标状态数据集,确定虚拟角色在所述虚拟场景内的位置信息,其中,所述位置信息包括横坐标信息、纵坐标信息以及竖坐标信息;
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述虚拟场景内的横坐标信息、纵坐标信息以及竖坐标信息,确定所述虚拟角色的视野原点位置;
针对所述K个虚拟角色中的每个虚拟角色,以虚拟角色的视野原点位置为中心,构建所述虚拟角色在所述目标时刻的可视场景范围,其中,所述可视场景范围为三维空间。
4.根据权利要求1所述的方法,其特征在于,所述K个虚拟角色包括第一虚拟角色以及第二虚拟角色,其中,所述第一虚拟角色的角色等级高于所述第二虚拟角色的角色等级,或,控制所述第一虚拟角色的对象等级高于控制所述第二虚拟角色的对象等级,或,所述第一虚拟角色的道具属性等级高于所述第二虚拟角色的道具属性等级;
所述根据所述目标状态数据集,确定所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,包括:
从所述目标状态数据集中,获取所述第一虚拟角色在所述目标时刻的位置信息;
根据所述第一虚拟角色在所述目标时刻的位置信息,确定所述第一虚拟角色在所述目标时刻的第一可视场景范围;
从所述目标状态数据集中,获取所述第二虚拟角色在所述目标时刻的位置信息;
根据所述第二虚拟角色在所述目标时刻的位置信息,确定所述第二虚拟角色在所述目标时刻的第二可视场景范围;
其中,所述第一可视场景范围大于所述第二可视场景范围。
5.根据权利要求4所述的方法,其特征在于,所述可视信息为主动可视信息,所述主动可视信息用于指示在可视场景范围内的各个虚拟角色;
所述根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,生成所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,包括:
根据所述第一虚拟角色在所述目标时刻的第一可视场景范围,获取在所述第一可视场景范围内的虚拟角色数量;
若在所述第一可视场景范围内的虚拟角色数量小于或等于第一数量阈值,则根据在所述第一可视场景范围内各个虚拟角色,生成所述第一虚拟角色在所述目标时刻的可视信息;
根据所述第二虚拟角色在所述目标时刻的第二可视场景范围,获取在所述第二可视场景范围内的虚拟角色数量;
若在所述第二可视场景范围内的虚拟角色数量小于或等于第二数量阈值,则根据在所述第二可视场景范围内各个虚拟角色,生成所述第二虚拟角色在所述目标时刻的可视信息;
其中,所述第一数量阈值大于所述第二数量阈值。
6.根据权利要求1所述的方法,其特征在于,所述可视信息为主动可视信息,所述主动可视信息用于指示在可视场景范围内的各个虚拟角色;
所述根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,生成所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,包括:
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述目标时刻的可视场景范围,获取在所述可视场景范围内的虚拟角色数量;
针对所述K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量大于所述数量阈值,则在可视场景范围内选择M个虚拟角色,并根据所述M个虚拟角色生成虚拟角色在所述目标时刻的可视信息,所述M取值等于所述数量阈值;
其中,所述在可视场景范围内选择M个虚拟角色的方式包括如下至少一种:
在可视场景范围内选择距离虚拟角色最近的M个虚拟角色;
在可视场景范围内选择移动频率最高的M个虚拟角色;
在可视场景范围内选择角色等级最高的M个虚拟角色。
7.根据权利要求1所述的方法,其特征在于,所述虚拟场景还包括T个互动角色,所述T为大于1的整数;
所述根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,生成所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,包括:
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述目标时刻的可视场景范围,获取在所述可视场景范围内的虚拟角色数量以及互动角色数量;
针对所述K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量小于或等于虚拟角色数量阈值,且,在所述可视场景范围内的所述互动角色数量小于或等于互动角色数量阈值,则根据在所述可视场景范围内的各个虚拟角色,生成虚拟角色在所述目标时刻的可视信息;
其中,所述虚拟角色数量阈值与所述互动角色数量阈值之和等于所述数量阈值。
8.根据权利要求1所述的方法,其特征在于,所述虚拟场景还包括T个互动角色,所述T为大于1的整数;
所述根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,生成所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,包括:
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述目标时刻的可视场景范围,获取在所述可视场景范围内的虚拟角色数量以及互动角色数量;
针对所述K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量以及互动角色数量之和小于或等于所述数量阈值,则根据在所述可视场景范围内的各个虚拟角色,生成虚拟角色在所述目标时刻的可视信息。
9.根据权利要求1所述的方法,其特征在于,所述可视信息为主动可视信息,所述主动可视信息用于指示在可视场景范围内的各个虚拟角色;
所述根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,包括:
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述目标时刻的主动可视信息,获取在所述虚拟角色的可视场景范围内的各个虚拟角色所对应的状态数据;
针对所述K个虚拟角色中的每个虚拟角色,将在所述虚拟角色的可视场景范围内的各个虚拟角色所对应的状态数据,作为所述虚拟角色所对应的状态数据子集;
针对所述K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集发送至控制所述虚拟角色的终端。
10.根据权利要求1所述的方法,其特征在于,所述可视信息为被动可视信息,所述被动可视信息用于指示虚拟角色在其他虚拟角色的可视场景范围内的可见情况;
所述根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,包括:
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述目标时刻的被动可视信息,从所述K个虚拟角色中确定可见所述虚拟角色的其他虚拟角色;
针对所述K个虚拟角色中的每个虚拟角色,将虚拟角色的状态数据,加入至可见所述虚拟角色的其他虚拟角色所对应的状态数据子集;
针对所述K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集发送至控制所述虚拟角色的终端。
11.根据权利要求9或10所述的方法,其特征在于,所述针对所述K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集发送至控制所述虚拟角色的终端,包括:
针对所述K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至所述虚拟角色所对应的缓存区;
在满足数据传输条件的情况下,将每个缓存区所存储的状态数据子集发送至控制所述虚拟角色的终端。
12.根据权利要求11所述的方法,其特征在于,所述针对所述K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至所述虚拟角色所对应的缓存区之后,所述方法还包括:
若当前等待时长达到等待时长阈值,则确定满足所述数据传输条件,其中,所述当前等待时长表示在缓存区中存储状态数据的时长。
13.根据权利要求11所述的方法,其特征在于,所述针对所述K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至所述虚拟角色所对应的缓存区之后,所述方法还包括:
若存在至少一个缓存区的数据存储量达到存储量阈值,则确定满足所述数据传输条件。
14.根据权利要求1所述的方法,其特征在于,所述获取针对虚拟场景的目标状态数据集,包括:
通过K个线程,接收所述K个终端中的每个终端发送的状态数据,其中,每个线程用于接收一个终端发送的状态数据;
根据所述K个终端中的每个终端发送的状态数据,生成针对所述虚拟场景的所述目标状态数据集;
所述根据所述目标状态数据集,确定所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,包括:
通过所述K个线程,根据所述目标状态数据集,确定所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,其中,所述每个线程用于确定一个虚拟角色在所述目标时刻的可视场景范围;
所述根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,生成所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,包括:
通过所述K个线程,根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,生成所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,其中,所述每个线程用于生成一个虚拟角色在所述目标时刻的可视信息;
所述根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,包括:
通过所述K个线程,根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,其中,所述每个线程用于向一个终端发送状态数据子集。
15.根据权利要求1所述的方法,其特征在于,所述获取针对虚拟场景的目标状态数据集,包括:
通过接入组件集群,接收所述K个终端中的每个终端发送的状态数据,其中,所述接入组件集群包括至少两个接入组件;
根据所述K个终端中的每个终端发送的状态数据,生成针对所述虚拟场景的所述目标状态数据集。
16.根据权利要求1所述的方法,其特征在于,所述根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,包括:
根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,通过接入组件集群,向所述K个终端中的每个终端发送状态数据子集,其中,所述接入组件集群包括至少两个接入组件。
17.一种数据传输装置,其特征在于,包括:
获取模块,用于获取针对虚拟场景的目标状态数据集,其中,所述虚拟场景包括K个虚拟角色,所述目标状态数据集包括在所述虚拟场景内的每个虚拟角色在目标时刻的状态数据,所述状态数据包括虚拟角色在所述虚拟场景内的位置信息、移动信息、动作信息、形态信息以及朝向信息,所述K为大于1的整数;
确定模块,用于根据所述目标状态数据集,确定所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,其中,所述可视场景范围内的虚拟角色的数量小于或等于数量阈值,所述可视场景范围的大小是基于角色等级、对象等级或道具属性等级确定的;
生成模块,用于根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,生成所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,所述可视信息包括主动可视信息以及被动可视信息中的至少一种,所述主动可视信息为虚拟角色在目标时刻看到的其他虚拟角色,所述被动可视信息为虚拟角色在目标时刻被其他虚拟角色看到;
发送模块,用于根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,其中,所述每个终端用于控制一个虚拟角色,所述状态数据子集包括基于可视信息获取的各个虚拟角色在所述目标时刻的状态数据,虚拟角色所对应的状态数据子集包括该虚拟角色看见的各个虚拟角色在目标时刻的状态数据,采用转发合并算法将状态数据子集发送至各个终端所对应的缓存区中,缓存区内的数据被合并转发给对应终端。
18.根据权利要求17所述的装置,其特征在于,所述确定模块具体用于:
针对所述K个虚拟角色中的每个虚拟角色,根据所述目标状态数据集,确定虚拟角色在所述虚拟场景内的位置信息,其中,所述位置信息包括横坐标信息以及纵坐标信息;
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述虚拟场景内的横坐标信息以及纵坐标信息,确定所述虚拟角色的视野原点位置;
针对所述K个虚拟角色中的每个虚拟角色,以虚拟角色的视野原点位置为中心,构建所述虚拟角色在所述目标时刻的可视场景范围,其中,所述可视场景范围为二维空间。
19.根据权利要求17所述的装置,其特征在于,所述确定模块具体用于:
针对所述K个虚拟角色中的每个虚拟角色,根据所述目标状态数据集,确定虚拟角色在所述虚拟场景内的位置信息,其中,所述位置信息包括横坐标信息、纵坐标信息以及竖坐标信息;
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述虚拟场景内的横坐标信息、纵坐标信息以及竖坐标信息,确定所述虚拟角色的视野原点位置;
针对所述K个虚拟角色中的每个虚拟角色,以虚拟角色的视野原点位置为中心,构建所述虚拟角色在所述目标时刻的可视场景范围,其中,所述可视场景范围为三维空间。
20.根据权利要求17所述的装置,其特征在于,所述K个虚拟角色包括第一虚拟角色以及第二虚拟角色,其中,所述第一虚拟角色的角色等级高于所述第二虚拟角色的角色等级,或,控制所述第一虚拟角色的对象等级高于控制所述第二虚拟角色的对象等级,或,所述第一虚拟角色的道具属性等级高于所述第二虚拟角色的道具属性等级;
所述确定模块具体用于:
从所述目标状态数据集中,获取所述第一虚拟角色在所述目标时刻的位置信息;
根据所述第一虚拟角色在所述目标时刻的位置信息,确定所述第一虚拟角色在所述目标时刻的第一可视场景范围;
从所述目标状态数据集中,获取所述第二虚拟角色在所述目标时刻的位置信息;
根据所述第二虚拟角色在所述目标时刻的位置信息,确定所述第二虚拟角色在所述目标时刻的第二可视场景范围;
其中,所述第一可视场景范围大于所述第二可视场景范围。
21.根据权利要求20所述的装置,其特征在于,所述可视信息为主动可视信息,所述主动可视信息用于指示在可视场景范围内的各个虚拟角色;
所述生成模块具体用于:
根据所述第一虚拟角色在所述目标时刻的第一可视场景范围,获取在所述第一可视场景范围内的虚拟角色数量;
若在所述第一可视场景范围内的虚拟角色数量小于或等于第一数量阈值,则根据在所述第一可视场景范围内各个虚拟角色,生成所述第一虚拟角色在所述目标时刻的可视信息;
根据所述第二虚拟角色在所述目标时刻的第二可视场景范围,获取在所述第二可视场景范围内的虚拟角色数量;
若在所述第二可视场景范围内的虚拟角色数量小于或等于第二数量阈值,则根据在所述第二可视场景范围内各个虚拟角色,生成所述第二虚拟角色在所述目标时刻的可视信息;
其中,所述第一数量阈值大于所述第二数量阈值。
22.根据权利要求17所述的装置,其特征在于,所述可视信息为主动可视信息,所述主动可视信息用于指示在可视场景范围内的各个虚拟角色;
所述生成模块具体用于:
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述目标时刻的可视场景范围,获取在所述可视场景范围内的虚拟角色数量;
针对所述K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量大于所述数量阈值,则在可视场景范围内选择M个虚拟角色,并根据所述M个虚拟角色生成虚拟角色在所述目标时刻的可视信息,所述M取值等于所述数量阈值;
其中,所述在可视场景范围内选择M个虚拟角色的方式包括如下至少一种:
在可视场景范围内选择距离虚拟角色最近的M个虚拟角色;
在可视场景范围内选择移动频率最高的M个虚拟角色;
在可视场景范围内选择角色等级最高的M个虚拟角色。
23.根据权利要求17所述的装置,其特征在于,所述虚拟场景还包括T个互动角色,所述T为大于1的整数;
所述生成模块具体用于:
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述目标时刻的可视场景范围,获取在所述可视场景范围内的虚拟角色数量以及互动角色数量;
针对所述K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量小于或等于虚拟角色数量阈值,且,在所述可视场景范围内的所述互动角色数量小于或等于互动角色数量阈值,则根据在所述可视场景范围内的各个虚拟角色,生成虚拟角色在所述目标时刻的可视信息;
其中,所述虚拟角色数量阈值与所述互动角色数量阈值之和等于所述数量阈值。
24.根据权利要求17所述的装置,其特征在于,所述虚拟场景还包括T个互动角色,所述T为大于1的整数;
所述生成模块具体用于:
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述目标时刻的可视场景范围,获取在所述可视场景范围内的虚拟角色数量以及互动角色数量;
针对所述K个虚拟角色中的每个虚拟角色,若在可视场景范围内的虚拟角色数量以及互动角色数量之和小于或等于所述数量阈值,则根据在所述可视场景范围内的各个虚拟角色,生成虚拟角色在所述目标时刻的可视信息。
25.根据权利要求17所述的装置,其特征在于,所述可视信息为主动可视信息,所述主动可视信息用于指示在可视场景范围内的各个虚拟角色;
所述发送模块具体用于:
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述目标时刻的主动可视信息,获取在所述虚拟角色的可视场景范围内的各个虚拟角色所对应的状态数据;
针对所述K个虚拟角色中的每个虚拟角色,将在所述虚拟角色的可视场景范围内的各个虚拟角色所对应的状态数据,作为所述虚拟角色所对应的状态数据子集;
针对所述K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集发送至控制所述虚拟角色的终端。
26.根据权利要求17所述的装置,其特征在于,所述可视信息为被动可视信息,所述被动可视信息用于指示虚拟角色在其他虚拟角色的可视场景范围内的可见情况;
所述发送模块具体用于:
针对所述K个虚拟角色中的每个虚拟角色,根据虚拟角色在所述目标时刻的被动可视信息,从所述K个虚拟角色中确定可见所述虚拟角色的其他虚拟角色;
针对所述K个虚拟角色中的每个虚拟角色,将虚拟角色的状态数据,加入至可见所述虚拟角色的其他虚拟角色所对应的状态数据子集;
针对所述K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集发送至控制所述虚拟角色的终端。
27.根据权利要求25或26所述的装置,其特征在于,所述确定模块具体用于:
针对所述K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至所述虚拟角色所对应的缓存区;
在满足数据传输条件的情况下,将每个缓存区所存储的状态数据子集发送至控制所述虚拟角色的终端。
28.根据权利要求27所述的装置,其特征在于,所述确定模块,还用于针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至虚拟角色所对应的缓存区之后,若当前等待时长达到等待时长阈值,则确定满足所述数据传输条件,其中,所述当前等待时长表示在缓存区中存储状态数据的时长。
29.根据权利要求27所述的装置,其特征在于,所述针对所述K个虚拟角色中的每个虚拟角色,所述确定模块,还用于针对K个虚拟角色中的每个虚拟角色,将虚拟角色所对应的状态数据子集存储至虚拟角色所对应的缓存区之后,若存在至少一个缓存区的数据存储量达到存储量阈值,则确定满足所述数据传输条件。
30.根据权利要求17所述的装置,其特征在于,所述获取模块具体用于:
通过K个线程,接收所述K个终端中的每个终端发送的状态数据,其中,每个线程用于接收一个终端发送的状态数据;
根据所述K个终端中的每个终端发送的状态数据,生成针对所述虚拟场景的所述目标状态数据集;
所述确定模块,具体用于通过所述K个线程,根据所述目标状态数据集,确定所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,其中,所述每个线程用于确定一个虚拟角色在所述目标时刻的可视场景范围;
所述生成模块,具体用于通过所述K个线程,根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视场景范围,生成所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,其中,所述每个线程用于生成一个虚拟角色在所述目标时刻的可视信息;
所述发送模块,具体用于通过所述K个线程,根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,向K个终端中的每个终端发送状态数据子集,其中,所述每个线程用于向一个终端发送状态数据子集。
31.根据权利要求17所述的装置,其特征在于,所述获取模块,具体用于:
通过接入组件集群,接收所述K个终端中的每个终端发送的状态数据,其中,所述接入组件集群包括至少两个接入组件;
根据所述K个终端中的每个终端发送的状态数据,生成针对所述虚拟场景的所述目标状态数据集。
32.根据权利要求17所述的装置,其特征在于,所述发送模块,具体用于根据所述K个虚拟角色中的每个虚拟角色在所述目标时刻的可视信息,通过接入组件集群,向所述K个终端中的每个终端发送状态数据子集,其中,所述接入组件集群包括至少两个接入组件。
33.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至16中任一项所述的方法的步骤。
34.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至16中任一项所述的方法的步骤。
CN202310926048.4A 2023-07-26 2023-07-26 一种数据传输的方法、相关装置、设备以及存储介质 Active CN116637358B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310926048.4A CN116637358B (zh) 2023-07-26 2023-07-26 一种数据传输的方法、相关装置、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310926048.4A CN116637358B (zh) 2023-07-26 2023-07-26 一种数据传输的方法、相关装置、设备以及存储介质

Publications (2)

Publication Number Publication Date
CN116637358A CN116637358A (zh) 2023-08-25
CN116637358B true CN116637358B (zh) 2023-10-20

Family

ID=87640392

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310926048.4A Active CN116637358B (zh) 2023-07-26 2023-07-26 一种数据传输的方法、相关装置、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN116637358B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5347624A (en) * 1987-03-05 1994-09-13 Hitachi, Ltd. Method and apparatus for display control
CN111643896A (zh) * 2020-04-15 2020-09-11 完美世界(北京)软件科技发展有限公司 数据的处理方法和装置、存储介质和电子装置
CN114344892A (zh) * 2022-01-04 2022-04-15 腾讯科技(深圳)有限公司 一种数据处理方法和相关装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5347624A (en) * 1987-03-05 1994-09-13 Hitachi, Ltd. Method and apparatus for display control
CN111643896A (zh) * 2020-04-15 2020-09-11 完美世界(北京)软件科技发展有限公司 数据的处理方法和装置、存储介质和电子装置
CN114344892A (zh) * 2022-01-04 2022-04-15 腾讯科技(深圳)有限公司 一种数据处理方法和相关装置

Also Published As

Publication number Publication date
CN116637358A (zh) 2023-08-25

Similar Documents

Publication Publication Date Title
US9649561B2 (en) Rendering control apparatus, control method thereof, recording medium, rendering server, and rendering system
Zhang et al. Towards efficient edge cloud augmentation for virtual reality mmogs
US20220355204A1 (en) Game data processing method and apparatus, computer, and readable storage medium
JP6310073B2 (ja) 描画システム、制御方法、及び記憶媒体
US20100113159A1 (en) Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems
Lake et al. Distributed scene graph to enable thousands of interacting users in a virtual environment
WO2018165191A1 (en) A user-driven spectator channel for live game play in multi-player games
US8887072B2 (en) Method of managing a set of virtual environment control entities, device, and corresponding computer program product
CN107241418A (zh) 一种负载均衡方法、装置、设备和计算机可读存储介质
EP3938871A1 (en) Virtual character inter-reality crossover
CN103930179A (zh) 信息处理系统
US20180353853A1 (en) Systems and methods for mass user multi input control of a common display
AU2021385098A1 (en) Method and apparatus for generating special effect in virtual environment, device, and storage medium
CN116637358B (zh) 一种数据传输的方法、相关装置、设备以及存储介质
WO2023138160A1 (zh) 游戏场景控制方法、装置、计算机设备及存储介质
US20110256935A1 (en) Use of dynamic bounded regions to improve the scalability of decentralised online environments
CN115738295A (zh) 在线游戏中的观众系统
Horn et al. To infinity and not beyond: Scaling communication in virtual worlds with Meru
CN111212403B (zh) 基于5g网络下的智能棋桌触发配对方法及系统
Kohana et al. Optimal data allocation and fairness for online games
Tsipis et al. A Cloud Gaming Architecture Leveraging Fog for Dynamic Load Balancing in Cluster-Based MMOs
Bartlett A categorisation model for distributed virtual environments
CN116363286A (zh) 一种游戏处理的方法、设备、存储介质及程序产品
Dasari et al. Scaling VR Video Conferencing
CN116980458A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40091095

Country of ref document: HK