CN114344892B - 一种数据处理方法和相关装置 - Google Patents
一种数据处理方法和相关装置 Download PDFInfo
- Publication number
- CN114344892B CN114344892B CN202210005741.3A CN202210005741A CN114344892B CN 114344892 B CN114344892 B CN 114344892B CN 202210005741 A CN202210005741 A CN 202210005741A CN 114344892 B CN114344892 B CN 114344892B
- Authority
- CN
- China
- Prior art keywords
- display
- synchronization
- target object
- synchronous
- frequency
- 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
Landscapes
- Information Transfer Between Computers (AREA)
- User Interface Of Digital Computer (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请实施例公开了一种数据处理方法和相关装置,在需要为交互场景中目标对象确定其视野范围内对象展示时,根据目标对象的对象位置和视野参数确定视野范围内的待定对象,并基于与目标对象间的距离从中确定需要在目标对象的客户端显示的显示对象。为了避免海量的显示对象在同一时刻提供的对象状态数据的数据量超出处理能力,将这些显示对象划分在多个同步频率组,由于不同的同步频率组对应有不同的同步频率,通过向各个显示对象发送对应的同步频率信息,使得获取到的对象状态数据在时间维度上被分散开,降低了处理进程需要在同一时刻接收的数据量,从而减少了处理时延,有效控制了在通过客户端显示视野范围内的显示对象时的卡顿和异常画面的情况。
Description
技术领域
本申请涉及数据处理领域,特别是涉及一种数据处理方法和相关装置。
背景技术
针对游戏等交互类产品,需要基于用户所操控对象(例如玩家角色)的模拟视野,展示当前交互场景中处于视野范围(Area of Interest,AoI)中的对象(Entity)。
相关技术中,通过AoIBase算法确定离开或进入用户所操控对象的视野范围的待展示对象,并通知这些待展示对象将用于展示的对象状态数据广播给用户所操控对象对应的处理进程,由该处理进程控制在客户端中展示AoI中的对象。
然而当交互场景中对象数量很多时,例如数百、上千甚至上万时,处理进程在同一时刻需要处理的对象状态数据将会非常大,会造成难以忍受的处理时延,在显示上会导致卡顿、展示异常等情况。
发明内容
为了解决上述技术问题,本申请提供了一种数据处理方法和相关装置,降低了处理进程需要在同一时刻接收的数据量,有效控制了在通过客户端显示目标对象的视野范围内的显示对象时的卡顿和异常画面的情况。
本申请实施例公开了如下技术方案:
一方面,本申请实施例提了一种数据处理方法,所述方法包括:
根据目标对象在交互场景中的对象位置和视野参数,确定所述交互场景中处于所述目标对象的视野范围内的待定对象;
通过在所述交互场景中所述待定对象与所述目标对象间的距离,根据所述待定对象确定用于在所述目标对象的客户端显示的显示对象;
将所述显示对象分至多个同步频率组,不同的同步频率组对应有不同的同步频率;
向所述显示对象发送同步频率信息,所述同步频率信息用于指示所述显示对象基于所在同步频率组对应的同步频率向所述目标对象的客户端发送用于显示的对象状态数据。
另一方面,本申请实施例提供了一种数据处理装置,所述装置包括确定单元、划分单元和发送单元:
所述确定单元,用于根据目标对象在交互场景中的对象位置和视野参数,确定所述交互场景中处于所述目标对象的视野范围内的待定对象;
所述确定单元还用于通过在所述交互场景中所述待定对象与所述目标对象间的距离,根据所述待定对象确定用于在所述目标对象的客户端显示的显示对象;
所述划分单元,用于将所述显示对象分至多个同步频率组,不同的同步频率组对应有不同的同步频率;
所述发送单元,用于向所述显示对象发送同步频率信息,所述同步频率信息用于指示所述显示对象基于所在同步频率组对应的同步频率向所述目标对象的客户端发送用于显示的对象状态数据。
又一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行以上方面所述的数据处理方法。
又一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行以上方面所述的数据处理方法。
又一方面,本申请实施例提供了一种包括指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行以上方面所述的数据处理方法。
由上述技术方案可以看出,在需要为交互场景中目标对象确定其视野范围内对象展示时,根据目标对象的对象位置和视野参数确定交互场景中处于目标对象的视野范围内的待定对象,通过在交互场景中待定对象与目标对象间的距离,根据待定对象确定需要在目标对象的客户端显示的显示对象。为了避免海量的显示对象在同一时刻提供的对象状态数据的数据量超出处理能力,将这些显示对象划分在多个同步频率组,一个同步频率组的同步频率用于指导处于该同步频率组中的显示对象向目标对象的客户端发送对象状态数据的频率。由于不同的同步频率组对应有不同的同步频率,通过向各个显示对象发送对应的同步频率信息,使得在不同的同步频率的指导下,获取到的对象状态数据在时间维度上被分散开,降低了处理进程需要在同一时刻接收的数据量,从而减少了处理时延,有效控制了在通过客户端显示目标对象的视野范围内的显示对象时的卡顿和异常画面的情况。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为相关技术中的一种本进程广播方案的示意图;
图1b为相关技术中的一种主动拉取方案的示意图;
图2为本申请实施例提供的一种用于针对视野范围内显示对象的数据同步示意图;
图3为本申请实施例提供的一种数据处理方法的方法流程图;
图4为本申请实施例提供的一种用于针对视野范围内显示对象的数据同步的系统框架示意图;
图5为本申请实施例提供的一种显示对象的Observed进程的同步频率组信息示意图;
图6为本申请实施例提供的一种目标对象的Observer进程基于多个同步频率组对显示对象进行分组的示意图;
图7a为本申请实施例提供的一种游戏场景下的显示对象分组示意图;
图7b为本申请实施例提供的一种对应于图7a的游戏场景示意图;
图8为本申请实施例提供的一种数据处理装置的装置结构图;
图9为本申请实施例提供的一种终端设备的结构图;
图10为本申请实施例提供的一种服务器的结构图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
作为一个被控对象,需要通过终端设备的显示屏显示处于该被控对象视野范围内的其他对象,在涉及海量对象的交互场景中,被控对象的视野范围中可能会具有非常多的需要被显示在显示屏上的其他对象,而正确显示这些对象需要获取相应的对象状态数据,例如对象的模型、动作、交互行为等。
如何处理这些对象提供的对象状态数据,且不会影响正常的交互显示、交互体验是亟需解决的技术问题。
在相关技术中主要采用两种方式,分别为本进程广播方案和主动拉取方案,但这两种方案均会在海量对象显示的场景下出现处理时延、显示卡顿、异常等问题。
本进程广播方案属于一种对称的AoI管理方案,交互场景中的被控对象的AoIBase模块一旦判定一个对象处于被控对象的AoI内,则会指示该对象的对象状态数据立即广播给被控对象以实现同步,所有计算都在被控对象所在的逻辑进程执行。
以交互场景为游戏场景举例,本进程广播方案的具体执行逻辑如图1a所示,在游戏场景中,前述被控对象为玩家对象(Player),需要在玩家对象视野范围内显示的对象(Entity)会将显示对象所需的对象状态数据通过数据更新广播给玩家对象对应的Player逻辑进程。
主动拉取方案中,同步的任务被交给被控对象的客户端处理,客户端需要被控对象所在交互场景中的哪个对象的哪部分对象状态数据就自主去服务器拉取。
依旧以交互场景为游戏场景举例,具体的执行逻辑如图1b所示,玩家对象(Player)的客户端针对玩家对象在游戏场景中的位置,确定需要在玩家对象视野范围内显示的对象,然后玩家对象的客户端通过主动拉取的方式从服务器获取显示这些对象所需的对象状态数据。
然而在具有海量对象的交互场景中,如果该场景中具有10000个玩家,每个玩家AoI内有9999个玩家,每个玩家每秒产生2个数据同步包(按照50B算),那么每秒的同步数据量有:10000*9999*50,约等于5GB的数据流量。
针对相关技术中的本进程广播方案,通过Player逻辑进程这单进程基本不可能完成,导致该相关技术很难适用于海量对象的交互场景,一旦交互场景中需要在视野范围内显示的对象增多,卡顿和显示异常将频繁出现。
针对相关技术中的主动拉取方案,客户端对这些数据的处理也要占用非常多的处理器资源,在优化上也是很困难的,使得在交互场景中需要在视野范围内显示的对象增多时,一样会出现上述问题。而且,使用客户端拉取其他对象的对象状态数据还会有不可靠的问题,从cs服务器架构的角度来说,把同步的权力赋予客户端必然会带来客户端被破解后的作弊行为,该问题从服务器侧是比较难以处理和管控的。
为此,本申请实施例提供了一种数据处理方法,降低了处理进程需要在同一时刻接收的数据量,从而减少了处理时延,有效控制了在通过客户端显示目标对象的视野范围内的显示对象时的卡顿和异常画面的情况。
本申请实施例所提供的数据处理方法可以通过计算机设备实施,该计算机设备可以是终端设备或服务器,其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端设备包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等。终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
可以理解的是,在本申请的具体实施方式中,采用的用户状态数据以及各种对象标识有可能会涉及到用户信息等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
如图2所示的场景中,以服务器100作为前述计算机设备为例进行说明。图2示出的场景针对的是游戏类的交互场景,为了方便说明,以对游戏场景的俯视图进行示出,其中黑色点为其中一个作为目标对象的玩家对象。编号1-13的点为该游戏场景中的其他对象,这些对象可以包括其他玩家对象,也可以包括游戏场景中的非玩家角色(non-playercharacter,NPC)等。需要说明的是,为了简化并便于描述,图2中示出的游戏场景中仅包括14个对象,但本申请实施例所应用的实际场景中,与目标对象同处一个交互场景中的对象数量可以远大于图2示出的数量,例如对象数量可以是数百个、数千个甚至上万个。
对于目标对象的客户端来说,需要通过终端设备的显示屏显示目标对象的视野范围内的场景信息,该场景信息除了包括场景背景等,还包括处于视野范围内的对象。故服务器100根据目标对象的对象位置(即黑色点位置)和视野参数(如图2中箭头所指示的观察方向和扇形标识的视野)确定交互场景中该目标对象的视野范围,如图2示出的矩形框。
服务器100可以根据确定出的视野范围从与目标对象同处一个交互场景的前述13个其他对象中识别出待定对象,即处于该视野范围内的对象,在图2中为编号1-7的七个对象作为待定对象。
基于游戏场景本身的信息,服务器100可以确定这七个待定对象分别与目标对象间的距离,根据距离从待定对象中确定出需要在目标对象的客户端显示的显示对象,例如可以将这七个待定对象均确定为显示对象。
为了避免海量的显示对象在同一时刻提供的对象状态数据的数据量超出处理能力,服务器100将这些显示对象划分在多个同步频率组,例如图2示出的两个同步频率组:频率组1和频率组2,其中编号为1-3的显示对象被分到频率组1,编号为4-7的显示对象被分到频率组2。
不同的同步频率组对应有不同的同步频率,如频率组1对应的同步频率为100毫秒(ms),频率组2对应的同步频率为500ms。一个同步频率组的同步频率用于指导处于该同步频率组中的显示对象向目标对象的客户端发送对象状态数据的频率。
服务器100通过向编号为1-3的显示对象发送包括100ms的同步频率的同步频率信息,以及向编号为4-7的显示对象发送包括500ms的同步频率的同步频率信息,在图2示出的场景中,各个同步频率信息被发送至状态数据服务器200,该状态数据服务器200用于维护交互场景中对象的对象状态数据,通过获取的同步频率信息,状态数据服务器200确定不同的显示对象分别对应的同步频率。需要说明的是,图2仅为一种可能的示例,本申请并不限定同步频率信息必须在多个服务器间交互才能实现本申请提供的数据处理方法,例如当服务器100同时也具备维护交互场景中对象的对象状态数据的功能时,该同步频率信息可以基于服务器100传递至服务器100中维护上述显示对象的对象状态数据的相关进程。
通过针对性的发送同步频率信息,使得编号为1-3的显示对象每隔100ms向目标对象的客户端发送一次最新的对象状态数据,编号为4-7的显示对象每隔500ms向目标对象的客户端发送一次最新的对象状态数据。相较于这七个显示对象通过统一的同步频率发送对象状态数据,目标对象的客户端所接收到的对象状态数据的总量和单位时间内的数据量均有显著减少。
也就是说,由于不同的同步频率组对应有不同的同步频率,通过向各个显示对象发送对应的同步频率信息,使得在不同的同步频率的指导下,获取到的对象状态数据在时间维度上被分散开,降低了处理进程需要在同一时刻接收的数据量,从而减少了处理时延,有效控制了在通过客户端显示目标对象的视野范围内的显示对象时的卡顿和异常画面的情况。
图3为本申请实施例提供的一种数据处理方法的方法流程图,所述方法包括:
S301:根据目标对象在交互场景中的对象位置和视野参数,确定所述交互场景中处于所述目标对象的视野范围内的待定对象;
该对象位置标识了目标对象处于交互场景中的相对位置,而视野参数模拟了目标对象的观察方向和在交互场景中的视野情况,该视野情况基于不同的交互场景设置或用户设置而有所不同,例如在游戏场景中,可以基于当前的人称视角来确定视野参数,如第一人称视角、第三人称视角、上帝视角等。
而目标对象属于一个被控对象,一般由用户操控,该目标对象可以是游戏场景中玩家对象、作为观察者的虚拟摄像机等。待定对象属于交互场景中处于目标对象的视野范围内的对象,待定对象可以包括被控对象,也可以包括非被控对象,例如NPC、首领、怪物、道具等。
本申请不限定通过对象位置和视野参数确定处于目标对象的视野范围(AoI)中的待定对象的方式,例如可以是九宫格算法或十字链表算法。其中,以游戏场景为例,九宫格算法是使用九宫格来维护玩家对象的位置信息的算法,每个玩家对象都处在九宫格的某个格子中,当跨过格子边界的时候会触发进入/离开AoI的事件。十字链表算法使用十字链表来维护玩家对象的位置信息,将交互场景以坐标系的X轴、Y轴进行划分后,十字链表包括以X轴的坐标按序排列好的X轴链表,以及以Y轴的坐标按序排列好的Y轴链表,当玩家位置变化导致自身位置在十字链表中移动时,可以根据移动到的位置在X轴链表和Y轴链表上的链表位置进行前后遍历,从而触发进入/离开AoI的事件。
S302:通过在所述交互场景中所述待定对象与所述目标对象间的距离,根据所述待定对象确定用于在所述目标对象的客户端显示的显示对象。
显示对象是需要通过目标对象的客户端在目标对象的视野范围内显示的对象,显示的目的是为了满足操控目标对象的用户的观察需求。即用户可以通过观察客户端所展示目标对象的视野范围内的显示对象,对目标对象的后续操控做出相应的决策。
一般来说,显示对象对于目标对象的操控决策的影响会随着与目标对象的远近而升降。例如,距目标对象较近的显示对象的行为对目标对象被进行何种操控的影响较大,距目标对象较远的显示对象的行为对目标对象被进行何种操控的影响较小。
故用户会更关心距离目标对象较近的显示对象的行为。而待定对象与目标对象间的距离可以直观的体现出待定对象在交互场景中距目标对象的远近。从而可以基于该距离所体现出用户观察视野范围的关心程度来确定哪些待定对象可以作为显示对象,将用户可能更为关心的待定对象确定为显示对象,而将用户可能不太关心的待定对象不确定为显示对象。未被确定为显示对象的待定对象将不会被通过目标对象的客户端进行显示。
而且,随着客户端的显示方式的个性化设置或者交互场景的本身限制,在一个目标对象的视野范围内所能显示的对象数量是具有限制的,例如最大显示数量为1000、3000、5000等。当确定出的待定对象的数量过多时,还可以在基于距离确定显示对象的基础上,进一步基于最大显示数量进行对显示对象的筛选、过滤。
在一种可能的实现方式中,根据所述客户端对应的显示对象的数量阈值,基于所述距离由近及远的方式从所述待定对象中确定出数量为所述数量阈值的显示对象。
由此可以优先将距目标对象更近的待定对象确定为显示对象,当待定对象距离目标对象太远时,可以不将待定对象确定为显示对象。
S303:将所述显示对象分至多个同步频率组。
其中,不同的同步频率组对应有不同的同步频率。
在确定目标对象的视野范围中的显示对象后,需要指示这些显示对象将用于显示的对象状态数据发送给目标对象的客户端。其中,对象状态数据为体现所对应显示对象的行为状态的数据,该行为状态可以包括移动、外形改变、做出动作等各类可以在显示层面被用户察觉到的状态。例如在游戏场景中,行为状态可以包括移动、跳跃、释放技能、改变装束、攻击、防御等。
同步频率组具有对应的同步频率,该同步频率用于标识处于该同步频率组中显示对象向目标对象的客户端同步上述对象状态数据的频率。
通过设置具有不同同步频率的多个同步频率组,并将显示对象划分至多个同步频率组中,使得处于不同同步频率组的显示对象会基于所处同步频率组对应的同步频率向目标对象的客户端同步对象状态数据,避免了客户端侧会因为对象状态数据的高并发而出现显示问题,降低了对象状态数据的集中化,并将对象状态数据分散在通过不同的同步频率标识的时间窗,降低了在包括海量对象的交互场景中对视野范围显示的处理压力。
为了便于将显示对象划分到多个同步频率组,且划分结果能够与用户观察目标对象的视野范围的关心程度,可以将与目标对象的距离处于同一范围内的显示对象划分在同一个同步频率组,由此距离目标对象相近的显示对象可以基于同一个同步频率进行对象状态数据的同步。
故在一种可能的实现方式中,S303包括:根据所述显示对象与所述目标对象间的距离所处的距离范围,将所述显示对象分至所述距离范围对应的同步频率组。
以游戏场景为例,距离范围可以是0-10个距离单位,11-20个距离单位、21-30个距离单位,不同的距离范围对应不同的不同频率组,可以将与目标对象的距离处于同一个距离范围的显示对象划分在同一个同步频率组中。
为了进一步强化同步频率组与用户关心程度的相关性,可以将同步频率组对应的同步频率与距离区间进行关联,由于用户对距离目标对象更近的显示对象的关心程度相对更高,故可以将同步频率的大小设置与距离区间所标识的远近呈正相关,即距目标对象越近的显示对象,其对象状态数据的同步频率越小,即该显示对象需要较频繁的向目标对象的客户端发送最新的对象状态数据,距目标对象越远的显示对象,其对象状态数据的同步频率越大,即该显示对象需要较不频繁的向目标对象的客户端发送最新的对象状态数据。
以多个同步频率组中的第一频率组和第二频率组为例,其中,所述第一频率组对应的同步频率小于所述第二频率组对应的同步频率。
在一种可能的实现方式中,S303包括:
响应于所述显示对象与所述目标对象间的距离处于第一距离范围,将所述显示对象划分至所述第一频率组;或者,
响应于所述显示对象与所述目标对象间的距离处于第二距离范围,将所述显示对象划分至所述第二频率组,所述第二距离范围所标识的距离大于所述第一距离范围。
以游戏场景为例,假设第一距离范围为0-10个距离单位,第二距离范围为21-30个距离单位,当显示对象1与目标对象的距离为9个距离单位时,可以被划分至第一频率组,当显示对象2与目标对象的距离为22个距离单位时,可以被划分至第二频率组。
从而在通过后续同步频率信息的指示下,显示对象1将以第一频率组对应的较小同步频率(如100ms同步一次)向目标对象的客户端发送自己的对象状态数据,显示对象2将以第二频率组对应的较大同步频率(如500ms同步一次)向目标对象的客户端发送自己的对象状态数据。
需要注意的是,在一些场景下,除了需要考虑到显示对象与目标对象间距离进行同步频率组的划分,还需要进一步考虑与场景相关的其他维度来对同步频率组的划分结果进行调整,以让用户更为关心的显示对象在视野范围内显示的更为实时。
在一种可能的实现方式中,所述交互场景为游戏交互场景,所述目标对象为所述游戏交互场景中的玩家对象,所述方法还包括:
S11:确定所述显示对象中与所述玩家对象具有游戏关联关系的关系对象。
S12:将所述关系对象调整到所述多个同步频率组中与所述游戏关联关系对应的同步频率组中。
游戏关联关系可以标识出在游戏场景中与玩家对象具有关联关系的对象,该游戏关联关系可以包括较为固定的部分,例如玩家对象的游戏好友,也可以包括较为不固定的部分,如基于不同游戏玩法确定的游戏关联关系,在一些玩法下,游戏场景的精英怪、世界boss、关底首领等均与玩家对象具有游戏关联关系,在一些玩法下,游戏场景中的敌对玩家与玩家对象具有游戏关联关系。
由于游戏关联关系在游戏场景中对游戏进度的推进,任务的完成等均有重要影响,例如敌方行为、友方行为、好友行为、首领行为等均会直接或间接的影响用户对玩家对象的后续控制策略,也就是说,关系对象均属于玩家对象的用户需要特别关注的对象。
故可以将基于游戏关联关系从显示对象中确定出的关系对象调整到与游戏关联关系对应的同步频率组中,例如在游戏场景中,作为显示对象的世界boss距离玩家对象较远,根据距离会被划分到同步频率较大的同步频率组,而基于游戏关联关系能够将世界boss这一显示对象确定为关系对象,并调整到同步频率较小的同步频率组中。
该同步频率组对应的同步频率一般较小,从而使得玩家对象的视野范围内的关系对象可以被更快的基于同步进行行为刷新,提高对用户关心程度的贴合度。
S304:向所述显示对象发送同步频率信息。
其中,所述同步频率信息用于指示所述显示对象基于所在同步频率组对应的同步频率向所述目标对象的客户端发送用于显示的对象状态数据。
在向显示对象发送同步频率信息时,一个显示对象所对应的同步频率信息中所指示的同步频率为该显示对象所处同步频率组的同步频率。由于同步频率组包括多个,从而发送给各个显示对象的同步频率信息中指示的同步频率的大小可以具有区别。
显示对象对应的进程收到该同步频率信息后,会基于同步频率信息所指示的同步频率向目标对象的客户端发送最新的对象状态信息,从而实现目标对象的客户端与显示对象间的同步,具体是指显示对象在交互场景中做出的行为能够被同步到客户端的显示界面上以被操控目标对象的用户观察到。
不同的同步频率能够体现出同步的实时性,较小的同步频率可以让显示对象的行为较为实时的通过目标对象的客户端进行展示,较大的同步频率可以让显示对象的行为稍有延时的通过目标对象的客户端进行展示。
本申请实施例中是以一个被控对象作为目标对象进行的方案说明,针对每个被控对象均可以作为目标对象,并基于图3对应的实施例实现下述技术效果。
由此可见,在需要为交互场景中目标对象确定其视野范围内对象展示时,将这些显示对象划分在多个同步频率组,由于不同的同步频率组对应有不同的同步频率,通过向各个显示对象发送对应的同步频率信息,使得在不同的同步频率的指导下,获取到的对象状态数据在时间维度上被分散开,降低了处理进程需要在同一时刻接收的数据量,从而减少了处理时延,有效控制了在通过客户端显示目标对象的视野范围内的显示对象时的卡顿和异常画面的情况。
在通过S304向所述显示对象发送同步频率信息之后,还可以根据显示对象发送对象状态数据的情况,动态的在多个同步频率组中调整显示对象所处的同步频率组。
在一种可能的实现方式中,所述方法还包括:
S21:获取所述显示对象发送的同步记录。
S22:根据所述同步记录所标识的同步结果,调整所述显示对象所处的同步频率组。
其中,所述同步记录用于标识所述显示对象基于对应的同步频率向所述目标对象的客户端发送对象状态数据的同步结果,所述同步结果包括同步成功或同步失败。
同步成功用于标识显示对象的对象状态数据发送给了目标对象的客户端,同步失败用于标识显示对象的对象状态数据未发送给目标对象的客户端,例如发送中丢失,或者没有发送。
由于基于同步频率,显示对象在目标对象的视野范围内会进行多次对象状态数据的发送,故同步记录可以记录每一次向目标对象的客户端发送对象状态数据的同步结果,或者至少最近几次发送的同步结果。
而且,交互场景中的一个对象可能是不止一个目标对象的显示对象,需要向不同的目标对象以这些目标对象分别指示的同步频率进行对象状态数据的同步。故当一个对象作为不同目标对象的显示对象时,还会为不同的目标对象分别维护对应的同步记录。
本申请不限定显示对象发送同步记录的时机,例如可以是在每完成一次向目标对象的客户端发送对象状态数据后就发送最新的同步记录,也可以是在完成多次对象状态数据的发送后在发送最新的同步记录。
由于同步记录所标识的同步结果可以体现出显示对象的同步成功率,故可以根据同步结果有针对性的将显示对象在多个同步频率组中进行同步频率组的上调或下调。
在一种可能的实现方式中,S22包括:
若通过所述同步记录确定连续多次的同步结果为同步失败,将所述同步记录对应的显示单元从所处的同步频率组下调至同步频率更低的同步频率组;
若通过所述同步记录确定连续多次的同步结果为同步成功,将所述同步记录对应的显示单元从所处的同步频率组上调至同步频率更高的同步频率组。
当一个显示对象基于指示的同步频率连续多次向目标对象的客户端发送对象状态数据都成功了,服务器可以确定该显示对象下一次成功同步的可能性很大,为了提升这类能够高概率同步成功的显示对象在目标对象的视野范围内的显示效果,可以通过将该显示单元从所处的同步频率组上调至同步频率更高的同步频率组的方式,提高之后该显示单元的同步频率,使得在视野范围内该显示对象的行为状态被更为实时的显示出。
同步失败可能是多种原因导致的,如前所述,例如可以是未发送对象状态数据或者发送了但目标对象的客户端未成功接收。当一个显示对象的对象状态数据多次未成功同步,服务器确定该显示对象下一次成功同步的可能性也不高,为了节约系统资源,可以将该显示单元从所处的同步频率组下调至同步频率更低的同步频率组,降低之后该显示单元的同步频率。
由于上述实施例中提及了多种在将显示对象分至多个同步频率组后对显示对象进行同步频率组的调整方式,故在调整后,原本发给该显示对象的同步频率信息所指示的同步频率与该显示对象现在所处的同步频率组的同步频率出现了不一致的情况。为此,本申请实施例提供了在调整了一个显示对象所处的同步频率组后,向该显示对象更新同步频率信息的方式。
以多个同步频率组包括第三频率组和第四频率组为例,在一种可能的实现方式中,所述方法还包括:
若通过所述调整后所述显示对象所处的同步频率组被从所述第三频率组上调或下调到所述第四频率组,根据所述第四频率组对应的同步频率向所述显示对象发送对应的同步频率信息。
本申请不限定第三频率组和第四频率组分别对应的同步频率间的大小关系,只限定第三频率组和第四频率组分别对应的同步频率不同。
通过重新向被调整的显示对象发送更新的同步频率信息,使得该显示对象可以采用调整后同步频率组对应的同步信息对目标对象的客户端发送最新的对象状态数据。
以上的实施例部分主要是以交互场景中的一个被控对象作为目标对象为例进行的说明。由于交互场景中包括大量被控对象,故在确定各个被控对象的视野范围时,一个被控对象不仅可以作为目标对象来确定处于其视野范围内的显示对象,该被控对象还可以作为其他被控对象的显示对象。
接下来以S301中提及的目标对象作为其他被控对象的显示对象的场景进行说明。
在一种可能的实现方式中,所述方法还包括:
S31:获取所述交互场景中交互对象对应的同步频率信息。
其中,所述交互对象为所述交互场景中的被控对象,所述交互对象对应的同步频率信息包括针对所述目标对象的目标同步频率。
S32:根据所述目标同步频率,向所述交互对象的客户端发送用于显示所述目标对象的目标对象状态数据。
在本实施例中,S301提及的目标对象在交互场景中也处于场景中其他被控对象的视野范围内,例如处于S31中提及的交互对象的视野范围内。从而该目标对象也可以被确定为其他被控对象的显示对象,交互对象为任意一个被控对象,在目标对象作为该交互对象的显示对象时,会获取对应该交互对象的同步频率信息,该频率同步信息用于指示目标对象的目标对象状态数据以何种同步频率发送给交互对象的客户端,以用于在交互对象的客户端在交互对象的视野范围内显示该目标对象。
为了提高同步效率,针对向交互对象的客户端所发送的目标对象状态数据,本申请实施例提供了一种确定目标对象状态数据的方式。
在一种可能的实现方式中,S32包括:
S321:在到达所述目标同步频率对应的第i次发送时刻时,确定所述目标对象在第i-1次发送时刻和第i次发送时刻间对应的目标对象状态数据。
S322:在第i次发送时刻向所述交互对象的客户端发送确定出的目标对象状态数据。
基于目标同步频率可以确定基于多长时间发送一次目标对象的目标对象状态数据,该目标对象状态数据为目标对象的对象状态数据。
为了提高效率,每一次发送的目标对象状态数据均为基于目标对象的最新行为状态生成的数据。
第i-1次发送时刻和第i次发送时刻为基于目标同步频率进行多次同步中的相邻两次同步时刻,第i-1次发送时刻和第i次发送时刻间生成的数据为第i次发送时刻应该发送的目标对象状态数据。从而交互对象的客户端可以基于目标对象状态数据显示出目标对象在第i-1次发送时刻和第i次发送时刻间做出的最新行为状态。
为了进一步的提高对象状态数据的同步效率,在执行S32之前,所述方法还包括:
确定对应第i次发送时刻的目标对象状态数据和对应第i-1次发送时刻的目标对象状态数据的一致性参数;
若所述一致性参数所标识的数据差异小于阈值,不在第i次发送时刻向所述交互对象的客户端发送确定出的目标对象状态数据;
若所述一致性参数所标识的数据差异大于或等于所述阈值,执行S322。
也就是说,服务器在每一次发送目标对象的目标对象状态数据给交互对象的客户端前,都会检查本次需要发送的目标对象状态数据和上一次发送给交互对象的客户端的目标对象状态数据间的区别。
为了便于说明,针对基于目标同步频率向交互对象的客户端发送目标对象的目标对象状态数据的过程,将第i-2次发送时刻和第i-1次发送时刻间的时间长度定义为第i-1个同步周期,将第i-1次发送时刻和第i次发送时刻间的时间长度定义为第i个同步周期。第i-1次发送时刻发送的目标对象状态数据为在第i-1个同步周期中基于目标用户的行为状态产生的状态数据,第i次发送时刻发送的目标对象状态数据为在第i个同步周期中基于目标用户的行为状态产生的状态数据。
服务器具体可以通过一致性参数检查这两次确定的目标对象状态数据间的数据差异,如果基于阈值确定数据差异较小,则体现出目标对象在第i个同步周期和第i-1个同步周期的行为状态基本一致,例如目标对象处于的行为状态为静止。这种情况下,第i-1次发送时刻发送的目标对象状态数据已经能够正确体现目标对象的当前行为状态,没有必要在第i次发送时刻再次发送类似的目标对象状态数据,从而减少了客户端获取对象状态数据的数据量,节约了系统资源。
如前所述,服务器通过显示对象发送的同步记录,可以基于同步记录所标识的同步结果,对显示对象所处的同步频率组进行上调或下调。在目标对象作为其他交互对象的显示对象时,也可以根据每次发送目标对象状态数据的情况记录并更新与交互对象对应的同步记录。
在一种可能的实现方式中,所述方法还包括:
根据是否在第i次发送时刻向所述交互对象的客户端发送确定出的目标对象状态数据,生成对应所述交互对象的同步记录。
其中,所述对应所述交互对象的同步记录所标识的同步结果包括同步成功或同步失败,当所述目标对象在到达所述目标同步频率对应的发送时刻时发送了对应的目标对象状态数据时标识为同步成功,当所述目标对象在到达所述目标同步频率对应的发送时刻时未发送对应的目标对象状态数据时标识为同步失败。
通过向交互对象发送对应所述交互对象的同步记录,可以让交互对象对应的处理进程了解目标对象的行为状态的时序变化情况,以基于此在交互对象对应的多个同步频率组中上调或下调目标对象所处的同步频率组。
基于一个游戏场景中具有10000个玩家对象为例,每一个玩家对象都可以作为目标对象,每一个目标对象的AoI内具有9999个显示对象。如果不使用分代算法的话,统一按照10hz的频率(即100ms同步一次)要求这些显示对象向目标对象的客户端进行数据同步判断,每秒需要判断10000*9999*10约等于10亿次,如果将这些显示对象分到2个同步频率组,分别对应的同步频率为10hz和1hz,每个目标对象对应的10hz的同步频率组中有500个显示对象,其余都处于1hz的同步频率组中,那么每秒只需要判断10000*(500*10+9499*1)约等于1.4亿次,大大减少了数据同步判断次数。
使用本申请实施例提供的方案,把万人同屏从不可能变为可能,同时使用分代算法在不影响体验的情况下有针对性的降低了部分显示对象的同步频率,节约了硬件资源。
接下来通过进程/线程的角度,结合交互场景为游戏场景为例,对本申请实施例进行说明。
对于交互场景中的被控对象,在服务器侧除了为其维护Player(玩家)逻辑进程外,还可以拆分出Observed(被观察)进程和Observer(观察者)进程。通过多个进程间的交互实现前述的同步任务,降低了Player逻辑进程的执行压力。
针对一个被控对象进行说明,在该被控对象(例如目标对象)对应的Player逻辑进程中创建了AoIBase和Filter这两个功能对象。
其中,AoIBase功能对象用于输出被控对象进出AoI的事件,实现了例如前述S301的操作。
Filter功能对象负责对AoIBase功能对象的输出进行计算,根据业务逻辑判断是否需要将一个待定对象确定为显示对象,实现了例如前述S302的操作。
Observed进程为对被控对象在远程创建的,作为被控对象的对象状态数据的临时缓存,对于被控对象的数据变化会通过远程调用的方式存储到Observed进程中缓存,并且定期把缓存推给需要这份对象状态数据的客户端,实现了例如前述S32的操作,或者显示对象的Observed进程可以实现例如前述S304的操作。
Observer进程负责控制显示对象的对象状态数据同步到被控对象的客户端的同步频率,实现了例如前述S303的操作。
需要注意的是,交互场景中除了包括被控对象,还会包括非被控对象,例如NPC、首领、怪物、道具等。这些非被控对象除了不需要设置对应的Filter功能对象和Observer进程外,需要设置对应的AoIBase功能对象和Observed进程,实现的功能如上所述,这里不再赘述。
如图4所示的整体架构,各个被控对象的Player逻辑进程中的AoIBase功能对象和Filter功能对象确定出分别对应被控对象的显示对象,并将标识显示对象的观察关系发送给被控对象的Observer进程。
Observer进程基于获取的观察关系对显示对象进行同步频率组的分组,并将分组结果提供给被控对象的Observed进程,其中,分组结果包括显示对象的Observer进程标识和显示对象所在同步频率组对应的同步频率。
各个显示对象的Player逻辑进程会将用于同步的最新的对象状态数据提供给对应的Observed进程,Observed进程会基于目标对象的Observer进程提供的分组结果,周期性提取获取将该显示对象分在同一个同步频率组中的各个Observer进程标识,并基于对应的同步频率将对应的对象状态数据发送给Observer进程标识对应的客户端,客户端通过网关获取到对象状态数据后,通过安装客户端的终端设备显示给用户,以实现显示同步。
Observed进程还可以将反应同步成功/失败的同步记录返回给目标对象的Observer进程,目标对象的Observer进程根据同步记录在多个同步频率组中调整显示对象所处的同步频率组。
具体方式可以为:
AoIBase功能对象→Filter功能对象
AoIBase功能对象通过AoI算法(九宫格算法/十字链表算法)算出一个对象是否初步满足进入/离开AoI的要求,并将满足进入被控对象视野范围的待定对象提交给Filter功能对象。
Filter功能对象→Observer进程
Filter功能对象通过根据客户端当前显示的玩家数量决定AoIBase功能对象提供的待定对象是否可以作为显示对象,并将确定出的显示对象通过观察关系发送给被控对象的Observer进程。
目标对象的Observer进程→显示对象的Observed进程
目标对象的Observer进程负责控制显示对象给目标对象的客户端的同步频率,并把这个同步频率提供给显示对象的Observed进程。
显示对象的Observed进程→目标对象的Client(客户端)
显示对象的Observed进程里面维护了同步频率组信息,标识了有哪些目标对象(可通过Observer进程标识进行标识)对应的客户端需要这个对象的数据,以及对应各个Observer进程标识的同步频率、待同步的对象状态数据的数据序号。
例如交互场景中的一个对象被10个目标对象确定为显示对象,故该显示对象会获取这10个目标对象的Observer进程提供的同步频率。假设同步频率共有两种,分别为100ms和500ms同步一次,且各有5个。为此该显示对象的Observed进程所维护的同步频率组信息可以如图5所示,group_100中标识了要求100ms同步一次的目标对象,一共5个,group_500中标识了要求500ms同步一次的目标对象,一共5个。其中uint64_t observer_id为目标对象的Observer进程标识,uint32_t notify_id为待同步的对象状态数据的数据序号,可以标识对象状态数据的内容和存储位置。
显示对象的Observed进程可以每隔100毫秒进行一次同步判断,根据同步频率组信息调取要求相同同步频率的一组Observer进程标识,基于对应的数据序号从上次同步的对象状态数据开始把缓存中的剩余数据作为本次待同步的对象状态数据同步给该组Observer进程标识对应的客户端,并把基于本次同步更新的同步记录发送给这组Observer进程标识对应的Observer进程。
显示对象的Observed进程→目标对象的Observer进程
显示对象的Observed进程把同步记录同步给目标对象的Observer进程,这些Observer进程拿到同步记录之后可以重新计算该Observed进程所对应显示对象给自己的同步频率并更新给该Observed进程。
接下来说明目标对象的Observer进程对显示对象的分组算法。该算法可以为同步流量限制中的分代算法,这是一个使用配置信息和反馈信息去决定显示对象的Observed进程给目标对象同步对象状态数据的同步频率的算法。
通常对于包括大量对象的交互场景来说,从产品体验上看,不需要每个显示对象都保持很高的同步频率,基于操控目标对象的用户对视野范围的关心程度,主要对目标对象周围的显示对象保持较高的同步频率即可。另外如果一个显示对象持续多次同步均为成功,那么也可以预计该显示对象的对象状态数据未来的一段时间同步失败的可能性很大,可以把这个显示对象的同步频率降低。
针对确定需要显示在目标对象的视野范围内的显示对象,会针对显示对象与目标对象的距离将显示对象划分到对应的同步频率组,并把分组结果同步给显示对象对应的Observed进程,显示对象的Observed进程在一次同步判定后会记录这次同步结果到对应该目标对象的同步记录中,并给目标对象的Observer进行同步该同步记录。
目标对象的Observer进程定期根据每个显示对象的同步记录决定是否这个显示对象所处的同步频率组是否应该上调或下调,以此来降低或提升对应的同步频率。
目标对象的Observer进程针对显示对象确定的多个同步频率组的结果可以如图6所示。
目标对象的Observer进程可以通过分代算法将当前确定的显示对象划分到多个具有不同同步频率的同步频率组中,将显示对象分组的方式可以包括基于设置的距离范围确定各个显示对象的所在的同步频率组,也可以基于游戏玩法等调整特定的显示对象所在的同步频率组,还可以根据从显示对象的Observed进程反馈的同步记录调整各个显示对象所在的同步频率组。
目标对象的Observer进程将分组结果或者调整结果通过同步频率信息告知显示对象的Observed进程,如图6所示,其中uint64_t observer_id为目标对象的Observer进程的标识,uint64_t observed_id为接收该同步频率信息的显示对象的Observed进程的标识,uint32_t frequency为该显示对象所在同步频率组对应的同步频率。
需要说明的是,前述为使用服务器分布式同步的方案,通过对数据同步整个流程的解剖和拆分将计算分布在多个进程/线程去执行,降低了Player逻辑进程的执行压力。上述进程和功能对象所实现的功能也可以通过同一个进程中实现,本申请对此并不限定。
接下来以交互场景为游戏场景为例,针对游戏场景中的一个玩家对象作为目标对象,游戏场景中还包括10个其他玩家对象、1个NPC和一个游戏首领怪。如图7a所示,黑色点为作为目标对象的玩家对象,箭头方向为其观察方向,编号1-10的圆点为10个其他玩家对象,三角形为NPC,五角星为游戏首领怪,该游戏场景示出了目标对象和10个其他玩家对象、1个NPC一起攻击游戏首领怪的场景。
基于目标对象的对象位置和视野参数,服务器确定处于目标对象的视野范围内的显示对象为:6个其他玩家对象(编号分别为1-6)、一个NPC和游戏首领怪。
根据显示对象分别与目标对象间的距离,以及3个同步频率组(频率组1-3),将一共8个显示对象分到频率组1-3中,每个频率组所对应的距离范围如图中虚线所示。
频率组1对应的同步频率为100ms,编号1-2的玩家对象处于该频率组,频率组2对应的同步频率为500ms,编号3-4的玩家对象处于该频率组,频率组3对应的同步频率为800ms,编号5-6的玩家对象、NPC和游戏首领怪处于该频率组。
然后服务器还可以根据游戏玩法确定游戏首领怪和NPC与目标对象具有游戏关联关系,例如游戏首领怪需要击杀,NPC需要保护不被击杀。而与游戏关联关系对应的同步频率组为频率组1,故可以将游戏首领怪和NPC从原频率组3调整到频率组1中。
由此,目标对象的客户端可以更为实时的获取到频率组1中显示对象的数据同步,并通过频率组2和频率组3在时间维度上分散同步数据,使得目标对象的视野范围能够正常的通过客户端显示。
需要说明的是,上述例子中对象数量仅为了方便说明进行了简化,实际交互场景中同时出现的对象数量可以远远大于图示数量。例如图7b示出了在图7a基础上增加更多显示对象的游戏场景示意图,图7b示出的游戏场景700可以为目标对象的客户端所显示目标对象的视野范围(第一人称)内的游戏场景,其中包括了编号1-6的显示对象、NPC和游戏首领怪,除此之外,还可以显示更多的显示对象(例如场景远端的大量未编号对象)。需要注意的是,游戏场景700中还可以包括用户操控目标对象的虚拟控件,例如方向键、攻击键等,为了突出显示场景,上述控件在图7b中未示出。
在前述图2-图7b所对应实施例的基础上,图8为本申请实施例提供的一种数据处理装置的装置结构图,所述数据处理装置800包括确定单元801、划分单元802和发送单元803:
所述确定单元801,用于根据目标对象在交互场景中的对象位置和视野参数,确定所述交互场景中处于所述目标对象的视野范围内的待定对象;
所述确定单元801还用于通过在所述交互场景中所述待定对象与所述目标对象间的距离,根据所述待定对象确定用于在所述目标对象的客户端显示的显示对象;
所述划分单元802,用于将所述显示对象分至多个同步频率组,不同的同步频率组对应有不同的同步频率;
所述发送单元803,用于向所述显示对象发送同步频率信息,所述同步频率信息用于指示所述显示对象基于所在同步频率组对应的同步频率向所述目标对象的客户端发送用于显示的对象状态数据。
在一种可能的实现方式中,所述确定单元还用于根据所述客户端对应的显示对象的数量阈值,基于所述距离由近及远的方式从所述待定对象中确定出数量为所述数量阈值的显示对象。
在一种可能的实现方式中,所述划分单元还用于根据所述显示对象与所述目标对象间的距离所处的距离范围,将所述显示对象分至所述距离范围对应的同步频率组。
在一种可能的实现方式中,所述多个同步频率组包括第一频率组和第二频率组,所述第一频率组对应的同步频率小于所述第二频率组对应的同步频率;所述划分单元还用于:
响应于所述显示对象与所述目标对象间的距离处于第一距离范围,将所述显示对象划分至所述第一频率组;或者,
响应于所述显示对象与所述目标对象间的距离处于第二距离范围,将所述显示对象划分至所述第二频率组,所述第二距离范围所标识的距离大于所述第一距离范围。
在一种可能的实现方式中,所述交互场景为游戏交互场景,所述目标对象为所述游戏交互场景中的玩家对象,所述装置还包括调整单元:
所述确定单元还用于确定所述显示对象中与所述玩家对象具有游戏关联关系的关系对象;
所述调整单元,用于将所述关系对象调整到所述多个同步频率组中与所述游戏关联关系对应的同步频率组中。
在一种可能的实现方式中,所述装置还包括获取单元和调整单元:
所述获取单元,用于获取所述显示对象发送的同步记录,所述同步记录用于标识所述显示对象基于对应的同步频率向所述目标对象的客户端发送对象状态数据的同步结果,所述同步结果包括同步成功或同步失败;
所述调整单元,用于根据所述同步记录所标识的同步结果,调整所述显示对象所处的同步频率组。
在一种可能的实现方式中,所述调整单元还用于:
若通过所述同步记录确定连续多次的同步结果为同步失败,将所述同步记录对应的显示单元从所处的同步频率组下调至同步频率更低的同步频率组;
若通过所述同步记录确定连续多次的同步结果为同步成功,将所述同步记录对应的显示单元从所处的同步频率组上调至同步频率更高的同步频率组。
在一种可能的实现方式中,所述多个同步频率组包括第三频率组和第四频率组,所述发送单元还用于若通过所述调整后所述显示对象所处的同步频率组被从所述第三频率组上调或下调到所述第四频率组,根据所述第四频率组对应的同步频率向所述显示对象发送对应的同步频率信息。
在一种可能的实现方式中,所述装置还包括获取单元:
所述获取单元,用于获取所述交互场景中交互对象对应的同步频率信息,所述交互对象为所述交互场景中的被控对象,所述交互对象对应的同步频率信息包括针对所述目标对象的目标同步频率;
所述发送单元还用于根据所述目标同步频率,向所述交互对象的客户端发送用于显示所述目标对象的目标对象状态数据。
在一种可能的实现方式中,所述发送单元还用于:
在到达所述目标同步频率对应的第i次发送时刻时,确定所述目标对象在第i-1次发送时刻和第i次发送时刻间对应的目标对象状态数据;
在第i次发送时刻向所述交互对象的客户端发送确定出的目标对象状态数据。
在一种可能的实现方式中,所述确定单元还用于:
确定对应第i次发送时刻的目标对象状态数据和对应第i-1次发送时刻的目标对象状态数据的一致性参数;
若所述一致性参数所标识的数据差异小于阈值,不触发所述发送单元执行在第i次发送时刻向所述交互对象的客户端发送确定出的目标对象状态数据的操作;
若所述一致性参数所标识的数据差异大于或等于所述阈值,触发所述发送单元执行所述在第i次发送时刻向所述交互对象的客户端发送确定出的目标对象状态数据的操作。
在一种可能的实现方式中,所述装置还包括生成单元,所述生成单元用于根据是否在第i次发送时刻向所述交互对象的客户端发送确定出的目标对象状态数据,生成对应所述交互对象的同步记录;
其中,所述对应所述交互对象的同步记录所标识的同步结果包括同步成功或同步失败,当所述目标对象在到达所述目标同步频率对应的发送时刻时发送了对应的目标对象状态数据时标识为同步成功,当所述目标对象在到达所述目标同步频率对应的发送时刻时未发送对应的目标对象状态数据时标识为同步失败。
本申请实施例还提供了一种计算机设备,该计算机设备为前述介绍的计算机设备,可以包括终端设备或服务器,前述的数据处理装置可以配置在该计算机设备中。下面结合附图对该计算机设备进行介绍。
若该计算机设备为终端设备,请参见图9所示,本申请实施例提供了一种终端设备,以终端设备为手机为例:
图9示出的是与本申请实施例提供的终端设备相关的手机的部分结构的框图。参考图9,手机包括:射频(Radio Frequency,简称RF)电路1410、存储器1420、输入单元1430、显示单元1440、传感器1450、音频电路1460、无线保真(Wireless Fidelity,简称WiFi)模块1470、处理器1480、以及电源1490等部件。本领域技术人员可以理解,图9中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图9对手机的各个构成部件进行具体的介绍:
RF电路1410可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1480处理。
存储器1420可用于存储软件程序以及模块,处理器1480通过运行存储在存储器1420的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。
输入单元1430可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1430可包括触控面板1431以及其他输入设备1432。触控面板1431,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1431上或在触控面板1431附近的操作),并根据预先设定的程式驱动相应的连接装置。
显示单元1440可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1440可包括显示面板1441。
手机还可包括至少一种传感器1450,比如光传感器、运动传感器以及其他传感器。
音频电路1460、扬声器1461,传声器1462可提供用户与手机之间的音频接口。
处理器1480是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1420内的软件程序和/或模块,以及调用存储在存储器1420内的数据,执行手机的各种功能和处理数据。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,该终端设备所包括的处理器1480还具有以下功能:
根据目标对象在交互场景中的对象位置和视野参数,确定所述交互场景中处于所述目标对象的视野范围内的待定对象;
通过在所述交互场景中所述待定对象与所述目标对象间的距离,根据所述待定对象确定用于在所述目标对象的客户端显示的显示对象;
将所述显示对象分至多个同步频率组,不同的同步频率组对应有不同的同步频率;
向所述显示对象发送同步频率信息,所述同步频率信息用于指示所述显示对象基于所在同步频率组对应的同步频率向所述目标对象的客户端发送用于显示的对象状态数据。
若计算机设备为服务器,本申请实施例还提供一种服务器,请参见图10所示,图10为本申请实施例提供的服务器1500的结构图,服务器1500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,简称CPU)1522(例如,一个或一个以上处理器)和存储器1532,一个或一个以上存储应用程序1542或数据1544的存储介质1530(例如一个或一个以上海量存储设备)。其中,存储器1532和存储介质1530可以是短暂存储或持久存储。存储在存储介质1530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1522可以设置为与存储介质1530通信,在服务器1500上执行存储介质1530中的一系列指令操作。
服务器1500还可以包括一个或一个以上电源1526,一个或一个以上有线或无线网络接口1550,一个或一个以上输入输出接口1558,和/或,一个或一个以上操作系统1541,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于图10所示的服务器结构。
另外,本申请实施例还提供了一种存储介质,所述存储介质用于存储计算机程序,所述计算机程序用于执行上述实施例提供的方法。
本申请实施例还提供了一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例提供的方法。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质可以是下述介质中的至少一种:只读存储器(英文:Read-only Memory,缩写:ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。而且本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (13)
1.一种数据处理方法,其特征在于,所述方法包括:
根据目标对象在交互场景中的对象位置和视野参数,确定所述交互场景中处于所述目标对象的视野范围内的待定对象;
通过在所述交互场景中所述待定对象与所述目标对象间的距离,根据所述待定对象确定用于在所述目标对象的客户端显示的显示对象,其中包括:根据所述客户端对应的显示对象的数量阈值,基于所述距离由近及远的方式从所述待定对象中确定出数量为所述数量阈值的显示对象;
根据所述显示对象与所述目标对象间的距离所处的距离范围,将所述显示对象分至所述距离范围对应的同步频率组,不同的同步频率组对应有不同的同步频率,同步频率的大小与距离范围的远近呈正相关;
向所述显示对象发送同步频率信息,所述同步频率信息用于指示所述显示对象基于所在同步频率组对应的同步频率向所述目标对象的客户端发送用于显示的对象状态数据。
2.根据权利要求1所述的方法,其特征在于,同步频率组包括第一频率组和第二频率组,所述第一频率组对应的同步频率小于所述第二频率组对应的同步频率;所述根据所述显示对象与所述目标对象间的距离所处的距离范围,将所述显示对象分至所述距离范围对应的同步频率组,包括:
响应于所述显示对象与所述目标对象间的距离处于第一距离范围,将所述显示对象划分至所述第一频率组;或者,
响应于所述显示对象与所述目标对象间的距离处于第二距离范围,将所述显示对象划分至所述第二频率组,所述第二距离范围所标识的距离大于所述第一距离范围。
3.根据权利要求1所述的方法,其特征在于,所述交互场景为游戏交互场景,所述目标对象为所述游戏交互场景中的玩家对象,所述方法还包括:
确定所述显示对象中与所述玩家对象具有游戏关联关系的关系对象;
将所述关系对象调整到多个同步频率组中与所述游戏关联关系对应的同步频率组中。
4.根据权利要求1所述的方法,其特征在于,在所述向所述显示对象发送同步频率信息之后,所述方法还包括:
获取所述显示对象发送的同步记录,所述同步记录用于标识所述显示对象基于对应的同步频率向所述目标对象的客户端发送对象状态数据的同步结果,所述同步结果包括同步成功或同步失败;
根据所述同步记录所标识的同步结果,调整所述显示对象所处的同步频率组。
5.根据权利要求4所述的方法,其特征在于,所述根据所述同步记录所标识的同步结果,调整所述显示对象所处的同步频率组,包括:
若通过所述同步记录确定连续多次的同步结果为同步失败,将所述同步记录对应的显示单元从所处的同步频率组下调至同步频率更低的同步频率组;
若通过所述同步记录确定连续多次的同步结果为同步成功,将所述同步记录对应的显示单元从所处的同步频率组上调至同步频率更高的同步频率组。
6.根据权利要求5所述的方法,其特征在于,同步频率组包括第三频率组和第四频率组,所述方法还包括:
若通过所述调整后所述显示对象所处的同步频率组被从所述第三频率组上调或下调到所述第四频率组,根据所述第四频率组对应的同步频率向所述显示对象发送对应的同步频率信息。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述交互场景中交互对象对应的同步频率信息,所述交互对象为所述交互场景中的被控对象,所述交互对象对应的同步频率信息包括针对所述目标对象的目标同步频率;
根据所述目标同步频率,向所述交互对象的客户端发送用于显示所述目标对象的目标对象状态数据。
8.根据权利要求7所述的方法,其特征在于,所述根据所述目标同步频率,向所述交互对象的客户端发送用于显示所述目标对象的目标对象状态数据,包括:
在到达所述目标同步频率对应的第i次发送时刻时,确定所述目标对象在第i-1次发送时刻和第i次发送时刻间对应的目标对象状态数据;
在第i次发送时刻向所述交互对象的客户端发送确定出的目标对象状态数据。
9.根据权利要求8所述的方法,其特征在于,在所述确定所述目标对象在第i-1次发送时刻和第i次发送时刻间对应的目标对象状态数据之前,所述方法还包括:
确定对应第i次发送时刻的目标对象状态数据和对应第i-1次发送时刻的目标对象状态数据的一致性参数;
若所述一致性参数所标识的数据差异小于阈值,不在第i次发送时刻向所述交互对象的客户端发送确定出的目标对象状态数据;
若所述一致性参数所标识的数据差异大于或等于所述阈值,执行所述在第i次发送时刻向所述交互对象的客户端发送确定出的目标对象状态数据的操作。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
根据是否在第i次发送时刻向所述交互对象的客户端发送确定出的目标对象状态数据,生成对应所述交互对象的同步记录;
其中,所述对应所述交互对象的同步记录所标识的同步结果包括同步成功或同步失败,当所述目标对象在到达所述目标同步频率对应的发送时刻时发送了对应的目标对象状态数据时标识为同步成功,当所述目标对象在到达所述目标同步频率对应的发送时刻时未发送对应的目标对象状态数据时标识为同步失败。
11.一种数据处理装置,其特征在于,所述装置包括确定单元、划分单元和发送单元:
所述确定单元,用于根据目标对象在交互场景中的对象位置和视野参数,确定所述交互场景中处于所述目标对象的视野范围内的待定对象;
所述确定单元还用于通过在所述交互场景中所述待定对象与所述目标对象间的距离,根据所述待定对象确定用于在所述目标对象的客户端显示的显示对象,其中包括:根据所述客户端对应的显示对象的数量阈值,基于所述距离由近及远的方式从所述待定对象中确定出数量为所述数量阈值的显示对象;
所述划分单元,用于根据所述显示对象与所述目标对象间的距离所处的距离范围,将所述显示对象分至所述距离范围对应的同步频率组,不同的同步频率组对应有不同的同步频率,同步频率的大小与距离范围的远近呈正相关;
所述发送单元,用于向所述显示对象发送同步频率信息,所述同步频率信息用于指示所述显示对象基于所在同步频率组对应的同步频率向所述目标对象的客户端发送用于显示的对象状态数据。
12.一种计算机设备,其特征在于,所述计算机设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-10中任意一项所述的数据处理方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行权利要求1-10中任意一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210005741.3A CN114344892B (zh) | 2022-01-04 | 2022-01-04 | 一种数据处理方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210005741.3A CN114344892B (zh) | 2022-01-04 | 2022-01-04 | 一种数据处理方法和相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114344892A CN114344892A (zh) | 2022-04-15 |
CN114344892B true CN114344892B (zh) | 2023-07-18 |
Family
ID=81106922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210005741.3A Active CN114344892B (zh) | 2022-01-04 | 2022-01-04 | 一种数据处理方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114344892B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115442274B (zh) * | 2022-08-31 | 2023-05-12 | 重庆长安汽车股份有限公司 | 一种汽车数据上传云端延迟时间的测试方法、装置、设备及介质 |
CN115501600B (zh) * | 2022-09-28 | 2023-07-14 | 广州三七极耀网络科技有限公司 | 游戏内人机角色的控制方法、系统、装置及介质 |
CN116522781B (zh) * | 2023-05-04 | 2024-04-05 | 北京百度网讯科技有限公司 | 样本数据生成方法、模型的训练方法和装置 |
CN116637358B (zh) * | 2023-07-26 | 2023-10-20 | 腾讯科技(深圳)有限公司 | 一种数据传输的方法、相关装置、设备以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109847361A (zh) * | 2019-02-27 | 2019-06-07 | 腾讯科技(深圳)有限公司 | 运动状态的同步方法和装置、存储介质、电子装置 |
CN111228797A (zh) * | 2020-01-13 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机以及可读存储介质 |
CN111760285A (zh) * | 2020-08-13 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 虚拟场景的显示方法、装置、设备及介质 |
CN113018850A (zh) * | 2021-03-31 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 一种交互数据的处理方法以及相关装置 |
CN113457150A (zh) * | 2021-07-16 | 2021-10-01 | 腾讯科技(深圳)有限公司 | 信息提示方法和装置、存储介质及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111991800A (zh) * | 2019-02-22 | 2020-11-27 | 网易(杭州)网络有限公司 | 游戏角色控制方法、装置、设备和存储介质 |
-
2022
- 2022-01-04 CN CN202210005741.3A patent/CN114344892B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109847361A (zh) * | 2019-02-27 | 2019-06-07 | 腾讯科技(深圳)有限公司 | 运动状态的同步方法和装置、存储介质、电子装置 |
CN111228797A (zh) * | 2020-01-13 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机以及可读存储介质 |
CN111760285A (zh) * | 2020-08-13 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 虚拟场景的显示方法、装置、设备及介质 |
CN113018850A (zh) * | 2021-03-31 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 一种交互数据的处理方法以及相关装置 |
CN113457150A (zh) * | 2021-07-16 | 2021-10-01 | 腾讯科技(深圳)有限公司 | 信息提示方法和装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114344892A (zh) | 2022-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114344892B (zh) | 一种数据处理方法和相关装置 | |
EP3713653B1 (en) | Temporary game control by user simulation following loss of active control | |
US9873045B2 (en) | Systems and methods for a unified game experience | |
KR100523785B1 (ko) | 분산 처리 시스템, 분산 처리 방법, 및 그 방법을 이용할수 있는 클라이언트 단말 | |
US20170312629A1 (en) | Video game control server, video game control apparatus, and video game control program product | |
CN106385408A (zh) | 运动状态变化的指示、处理方法及装置 | |
CN111686447B (zh) | 一种虚拟场景中数据处理的方法以及相关装置 | |
CN110860087B (zh) | 虚拟对象控制方法、装置及存储介质 | |
EP2952235B1 (en) | Game device, game control method, game control program, matching server, matching control method, and matching control program | |
US20230415046A1 (en) | Information synchronization method and apparatus, and storage medium | |
CN108965989B (zh) | 一种交互式应用场景的处理方法和装置以及存储介质 | |
JP2024507595A (ja) | 仮想リソースの投入制御方法、装置、コンピュータ機器及び記憶媒体 | |
US20220355202A1 (en) | Method and apparatus for selecting ability of virtual object, device, medium, and program product | |
CN114339444A (zh) | 视频帧的播放时长调整方法、装置、设备及存储介质 | |
CN109758766A (zh) | 一种角色状态同步的方法以及相关装置 | |
CN110898425B (zh) | 信息同步方法和装置、存储介质及电子装置 | |
CN111265867B (zh) | 对局画面的显示方法、装置、终端及存储介质 | |
CN113244620B (zh) | 角色扮演游戏实现方法及电子设备 | |
CN110769904B (zh) | 输出内容处理方法、输出方法、电子设备及存储介质 | |
CN114225412A (zh) | 信息处理方法、装置、计算机设备及存储介质 | |
US10272334B2 (en) | Program and system | |
CN117861194A (zh) | 基于云游戏的设备控制方法、装置、电子设备和可读介质 | |
CN112675538A (zh) | 数据同步方法、装置、设备及介质 | |
CN112843682B (zh) | 数据同步方法、装置、设备及存储介质 | |
WO2024037153A1 (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 |