CN113032160B - 一种数据同步的管理方法以及相关装置 - Google Patents

一种数据同步的管理方法以及相关装置 Download PDF

Info

Publication number
CN113032160B
CN113032160B CN202110265782.1A CN202110265782A CN113032160B CN 113032160 B CN113032160 B CN 113032160B CN 202110265782 A CN202110265782 A CN 202110265782A CN 113032160 B CN113032160 B CN 113032160B
Authority
CN
China
Prior art keywords
component
synchronization
data
counter
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
Application number
CN202110265782.1A
Other languages
English (en)
Other versions
CN113032160A (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 CN202110265782.1A priority Critical patent/CN113032160B/zh
Publication of CN113032160A publication Critical patent/CN113032160A/zh
Application granted granted Critical
Publication of CN113032160B publication Critical patent/CN113032160B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Abstract

本申请公开了一种数据同步的管理方法以及相关装置。通过响应于对象同步进程的启动获取目标对象对应的对象计数器的第一变化信息;若对象计数器发生变化,则检查组件计数器,以得到第二变化信息;然后检查为目标组件配置的属性计数器,以得到第三变化信息;检查组件集合中发生变化的组件属性,以确定同步数据;进而基于同步数据执行对象同步进程。从而实现同步数据的高效判定并提取过程,由于对象、组件以及属性的变化情况均通过不同的计数器进行检测并反映,使得数据同步过程中无需遍历所有的对象、组件以及属性,提高了数据同步的效率。

Description

一种数据同步的管理方法以及相关装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据同步的管理方法以及相关装置。
背景技术
在虚幻引擎4(UnrealEngine4,UE4)中的Gameplay架构中,整个游戏世界称为World,世界里面的各种对象称为Actor,每个Actor包含各自的属性(Property)、组件(Component)以及组件里包含的属性等等。Actor本身只实现了通用的内容,而组件则是实现具体的功能,通过组装不同的组件来实现游戏世界中的各种Actor对象。例如,玩家控制的角色就是一个Actor,它拥有骨骼体组件,拥有移动组件,所以玩家能看见角色是什么样子,控制角色移动,同样也可以组装技能组件,使得角色能释放技能。UE4中的网络同步基本都是围绕着Actor对象实现,包括属性同步、组件同步等。
一般,在UE4中进行网络数据同步时,需要遍历每个对象以及对应的属性、组件等,以确定同步数据。
但是,采用遍历数据的方式,对于一个Actor,即便没有任何属性的变化或者组件属性的变化,也需要进行相同的操作,浪费了大量的系统资源并会提升网络同步耗时,影响数据同步的效率。
发明内容
有鉴于此,本申请提供一种数据同步的管理方法,可以有效提高数据同步的效率。
本申请第一方面提供一种数据同步的管理方法,可以应用于终端设备中包含数据同步的管理功能的系统或程序中,具体包括:
响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息,所述对象计数器响应于所述目标对象的数据变化而变化;
若第一变化信息指示对象计数器发生变化,则检查为所述目标对象配置的组件计数器,以得到第二变化信息,所述组件计数器与所述对象计数器相关联,所述组件计数器响应于所述目标对象对应的组件集合的变化而变化;
基于所述第二变化信息检查为所述目标组件配置的属性计数器,以得到第三变化信息,所述属性计数器响应于所述组件集合中组件属性的变化而变化;
根据所述第三变化信息检查所述组件集合中发生变化的组件属性,以确定同步数据;
基于所述同步数据执行所述对象同步进程。
可选的,在本申请一些可能的实现方式中,所述响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息,包括:
响应于所述对象同步进程的启动,确定所述目标对象是否具有对象主动同步标识;
若所述目标对象具有所述对象主动同步标识,则获取所述目标对象对应的对象计数器的所述第一变化信息。
可选的,在本申请一些可能的实现方式中,所述方法还包括:
若所述目标对象不具有所述对象主动同步标识,则遍历所述目标对象对应的组件集合,以确定所述目标对象是否具有收敛标识;
若所述目标对象具有所述收敛标识,则检查为所述目标对象配置的所述组件计数器,以得到所述第二变化信息。
可选的,在本申请一些可能的实现方式中,所述方法还包括:
若所述目标对象不具有所述收敛标识,则为所述组件集合中的每个组件创建同步执行器;
基于所述同步执行器遍历所述组件集合,以得到所述第二变化信息。
可选的,在本申请一些可能的实现方式中,所述若所述目标对象具有所述对象主动同步标识,包括:
若所述组件集合中每个组件都具有所述对象主动同步标识,则确定所述目标对象具有所述对象主动同步标识;
或;
确定所述组件集合中组件之间的主从关系;
基于所述主从关系确定主要组件;
若所述主要组件具有所述对象主动同步标识,则确定所述目标对象具有所述对象主动同步标识。
可选的,在本申请一些可能的实现方式中,所述若第一变化信息指示对象计数器发生变化,则检查为所述目标对象配置的组件计数器,以得到第二变化信息,包括:
若第一变化信息指示对象计数器发生变化,则确定所述组件集合中的组件是否具有组件主动同步标识;
若所述组件集合中的组件具有所述组件主动同步标识,则检查为所述目标对象配置的所述组件计数器,以得到所述第二变化信息。
可选的,在本申请一些可能的实现方式中,所述方法还包括:
若所述组件集合中的组件不具有所述组件主动同步标识,则遍历所述组件集合中的每个组件属性,以得到所述第二变化信息。
可选的,在本申请一些可能的实现方式中,所述根据所述第三变化信息检查所述组件集合中发生变化的组件属性,以确定同步数据,包括:
根据所述第三变化信息检查所述组件集合中发生变化的组件属性,以确定属性变化信息;
确定所述发生变化的组件属性对应的变化组件和变化帧;
将所述属性变化信息、所述变化组件和所述变化帧进行关联,以确定所述同步数据。
可选的,在本申请一些可能的实现方式中,所述基于所述同步数据执行所述对象同步进程,包括:
确定所述同步数据序列化处理过程中对应的位数阈值M,M为正整数;
基于所述位数阈值将所述同步数据的前N位数据写入缓存数据包,N=M-1,N为正整数;
调用二分法计算所述同步数据的最高位的写入情况;
若所述写入情况指示所述同步数据的最高位可以写入所述缓存数据包,则基于写入所述同步数据的最高位的缓存数据包执行所述对象同步进程。
可选的,在本申请一些可能的实现方式中,所述方法还包括:
若所述写入情况指示所述同步数据的最高位无法写入所述缓存数据包,则基于未写入所述同步数据的最高位的缓存数据包执行所述对象同步进程。
可选的,在本申请一些可能的实现方式中,所述方法还包括:
获取接入的同步设备;
确定所述同步设备对应的同步标记;
对具有所述同步标记的同步设备进行相关性检测,并进行优先级检测,以确定同步序列;
响应于所述同步序列的生成启动所述对象同步进程。
可选的,在本申请一些可能的实现方式中,所述对象同步进程应用于虚幻引擎中,所述目标对象基于所述虚幻引擎配置所得,所述同步数据基于网络进行传输。
可选的,在本申请一些可能的实现方式中,所述数据同步的管理方法应用于区块链设备,所述区块链设备为区块链中的节点。
本申请第二方面提供一种数据同步的管理装置,包括:
获取单元,用于响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息,所述对象计数器响应于所述目标对象的数据变化而变化;
检查单元,用于若第一变化信息指示对象计数器发生变化,则检查为所述目标对象配置的组件计数器,以得到第二变化信息,所述组件计数器与所述对象计数器相关联,所述组件计数器响应于所述目标对象对应的组件集合的变化而变化;
所述检查单元,还用于基于所述第二变化信息检查为所述目标组件配置的属性计数器,以得到第三变化信息,所述属性计数器响应于所述组件集合中组件属性的变化而变化;
确定单元,用于根据所述第三变化信息检查所述组件集合中发生变化的组件属性,以确定同步数据;
管理单元,用于基于所述同步数据执行所述对象同步进程。
可选的,在本申请一些可能的实现方式中,所述获取单元,具体用于响应于所述对象同步进程的启动,确定所述目标对象是否具有对象主动同步标识;
所述获取单元,具体用于若所述目标对象具有所述对象主动同步标识,则获取所述目标对象对应的对象计数器的所述第一变化信息。
可选的,在本申请一些可能的实现方式中,所述获取单元,具体用于若所述目标对象不具有所述对象主动同步标识,则遍历所述目标对象对应的组件集合,以确定所述目标对象是否具有收敛标识;
所述获取单元,具体用于若所述目标对象具有所述收敛标识,则检查为所述目标对象配置的所述组件计数器,以得到所述第二变化信息。
可选的,在本申请一些可能的实现方式中,所述获取单元,具体用于若所述目标对象不具有所述收敛标识,则为所述组件集合中的每个组件创建同步执行器;
所述获取单元,具体用于基于所述同步执行器遍历所述组件集合,以得到所述第二变化信息。
可选的,在本申请一些可能的实现方式中,所述获取单元,具体用于若所述组件集合中每个组件都具有所述对象主动同步标识,则确定所述目标对象具有所述对象主动同步标识;
或;
所述获取单元,具体用于确定所述组件集合中组件之间的主从关系;
所述获取单元,具体用于基于所述主从关系确定主要组件;
所述获取单元,具体用于若所述主要组件具有所述对象主动同步标识,则确定所述目标对象具有所述对象主动同步标识。
可选的,在本申请一些可能的实现方式中,所述检查单元,具体用于若第一变化信息指示对象计数器发生变化,则确定所述组件集合中的组件是否具有组件主动同步标识;
所述检查单元,具体用于若所述组件集合中的组件具有所述组件主动同步标识,则检查为所述目标对象配置的所述组件计数器,以得到所述第二变化信息。
可选的,在本申请一些可能的实现方式中,所述检查单元,具体用于若所述组件集合中的组件不具有所述组件主动同步标识,则遍历所述组件集合中的每个组件属性,以得到所述第二变化信息。
可选的,在本申请一些可能的实现方式中,所述确定单元,具体用于根据所述第三变化信息检查所述组件集合中发生变化的组件属性,以确定属性变化信息;
所述确定单元,具体用于确定所述发生变化的组件属性对应的变化组件和变化帧;
所述确定单元,具体用于将所述属性变化信息、所述变化组件和所述变化帧进行关联,以确定所述同步数据。
可选的,在本申请一些可能的实现方式中,所述管理单元,具体用于确定所述同步数据序列化处理过程中对应的位数阈值M,M为正整数;
所述管理单元,具体用于基于所述位数阈值将所述同步数据的前N位数据写入缓存数据包,N=M-1,N为正整数;
所述管理单元,具体用于调用二分法计算所述同步数据的最高位的写入情况;
所述管理单元,具体用于若所述写入情况指示所述同步数据的最高位可以写入所述缓存数据包,则基于写入所述同步数据的最高位的缓存数据包执行所述对象同步进程。
可选的,在本申请一些可能的实现方式中,所述管理单元,具体用于若所述写入情况指示所述同步数据的最高位无法写入所述缓存数据包,则基于未写入所述同步数据的最高位的缓存数据包执行所述对象同步进程。
可选的,在本申请一些可能的实现方式中,所述管理单元,具体用于获取接入的同步设备;
所述管理单元,具体用于确定所述同步设备对应的同步标记;
所述管理单元,具体用于对具有所述同步标记的同步设备进行相关性检测,并进行优先级检测,以确定同步序列;
所述管理单元,具体用于响应于所述同步序列的生成启动所述对象同步进程。
本申请第三方面提供一种计算机设备,包括:存储器、处理器以及总线系统;所述存储器用于存储程序代码;所述处理器用于根据所述程序代码中的指令执行上述第一方面或第一方面任一项所述的数据同步的管理方法。
本申请第四方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一项所述的数据同步的管理方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述第一方面或者第一方面的各种可选实现方式中提供的数据同步的管理方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
通过响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息,该对象计数器响应于目标对象的数据变化而变化;若第一变化信息指示对象计数器发生变化,则检查为目标对象配置的组件计数器,以得到第二变化信息,组件计数器与对象计数器相关联,组件计数器响应于目标对象对应的组件集合的变化而变化;然后基于第二变化信息检查为目标组件配置的属性计数器,以得到第三变化信息,属性计数器响应于组件集合中组件属性的变化而变化;进一步的根据第三变化信息检查组件集合中发生变化的组件属性,以确定同步数据;进而基于同步数据执行对象同步进程。从而实现同步数据的高效判定并提取过程,由于对象、组件以及属性的变化情况均通过不同的计数器进行检测并反映,使得数据同步过程中无需遍历所有的对象、组件以及属性,减少网络同步中的无谓开销,减小了同步耗时,并提高了数据同步的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为数据同步的管理系统运行的网络架构图;
图2为本申请实施例提供的一种数据同步的管理的流程架构图;
图3为本申请实施例提供的一种数据同步的管理方法的流程图;
图4为本申请实施例提供的一种数据同步的管理方法的场景示意图;
图5为本申请实施例提供的另一种数据同步的管理方法的流程图;
图6为本申请实施例提供的另一种数据同步的管理方法的流程图;
图7为本申请实施例提供的另一种数据同步的管理方法的流程图;
图8为本申请实施例提供的一种数据同步的管理装置的结构示意图;
图9为本申请实施例提供的一种终端设备的结构示意图;
图10为本申请实施例提供的一种服务器的结构示意图;
图11A为本申请实施例提供的一种数据共享系统;
图11B为本申请实施例提供的一种区块链的组成;
图11C为本申请实施例提供的一种区块链节点的输入信息示意图。
具体实施方式
本申请实施例提供了一种数据同步的管理方法以及相关装置,可以应用于终端设备中包含数据同步的管理功能的系统或程序中,通过响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息,该对象计数器响应于目标对象的数据变化而变化;若第一变化信息指示对象计数器发生变化,则检查为目标对象配置的组件计数器,以得到第二变化信息,组件计数器与对象计数器相关联,组件计数器响应于目标对象对应的组件集合的变化而变化;然后基于第二变化信息检查为目标组件配置的属性计数器,以得到第三变化信息,属性计数器响应于组件集合中组件属性的变化而变化;进一步的根据第三变化信息检查组件集合中发生变化的组件属性,以确定同步数据;进而基于同步数据执行对象同步进程。从而实现同步数据的高效判定并提取过程,由于对象、组件以及属性的变化情况均通过不同的计数器进行检测并反映,使得数据同步过程中无需遍历所有的对象、组件以及属性,减少网络同步中的无谓开销,减小了同步耗时,并提高了数据同步的效率。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,对本申请实施例中可能出现的一些名词进行解释。
虚幻引擎4(UnrealEngine4,UE4):是一款游戏引擎。该引擎主要是为了开发第一人称射击游戏而设计,但现在已经被成功地应用于开发潜行类游戏、格斗游戏、角色扮演游戏等多种不同类型的游戏。
网络同步耗时:网络同步是与任何互联网技术相关的概念,是指让不同端看到相同的表现,例如群聊天每个用户都能看到记录,飞行棋游戏中每个玩家看到的棋子位置相同等。对于网络游戏而言,网络同步属于游戏开发中比较重要且复杂的一部分。网络同步耗时即为耗费的时间,这里可以不考虑网络传输时间,专门指UE中获取同步数据和相应数据处理的时间。
序列化与反序列化:序列化(serialization),是指将数据结构转换成可取用格式的过程(用于存储,或经过网络发送)。反序列化(deserialization)即为从一系列字节中提取数据结构的反向操作。此处为把对象转化为可传输的字节序列以及把字节序列还原为对象过程。
UActorChannel:处理Actor本身相关信息的同步,包括自身的同步以及子组件,属性的同步,RPC调用等。每个Connection连接里的每个同步的Actor都对应着一个ActorChannel实例。
应理解,本申请提供的数据同步的管理方法可以应用于终端设备中包含数据同步的管理功能的系统或程序中,例如游戏加速器,具体的,数据同步的管理系统可以运行于如图1所示的网络架构中,如图1所示,是数据同步的管理系统运行的网络架构图,如图可知,数据同步的管理系统可以提供与多个信息源的数据同步的管理过程,即通过终端侧的交互操作触发服务侧进行多个终端的数据同步过程,以在终端侧进行多终端数据的展示;可以理解的是,图1中示出了多种终端设备,终端设备可以为计算机设备,在实际场景中可以有更多或更少种类的终端设备参与到数据同步的管理的过程中,具体数量和种类因实际场景而定,此处不做限定,另外,图1中示出了一个服务器,但在实际场景中,也可以有多个服务器的参与,具体服务器数量因实际场景而定。
本实施例中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,终端以及服务器可以连接组成区块链网络,本申请在此不做限制。
可以理解的是,上述数据同步的管理系统可以运行于个人移动终端,例如:作为游戏加速器这样的应用,也可以运行于服务器,还可以作为运行于第三方设备以提供数据同步的管理,以得到信息源的数据同步的管理处理结果;具体的数据同步的管理系统可以是以一种程序的形式在上述设备中运行,也可以作为上述设备中的系统部件进行运行,还可以作为云端服务程序的一种,具体运作模式因实际场景而定,此处不做限定。
在虚幻引擎4(UnrealEngine4,UE4)中的Gameplay架构中,整个游戏世界称为World,世界里面的各种对象称为Actor,每个Actor包含各自的属性(Property)、组件(Component)以及组件里包含的属性等等。Actor本身只实现了通用的内容,而组件则是实现具体的功能,通过组装不同的组件来实现游戏世界中的各种Actor对象。例如,玩家控制的角色就是一个Actor,它拥有骨骼体组件,拥有移动组件,所以玩家能看见角色是什么样子,控制角色移动,同样也可以组装技能组件,使得角色能释放技能。UE4中的网络同步基本都是围绕着Actor对象实现,包括属性同步、组件同步等。
一般,在UE4中进行网络数据同步时,需要遍历每个对象以及对应的属性、组件等,以确定同步数据。
但是,采用遍历数据的方式,对于一个Actor,即便没有任何属性的变化或者组件属性的变化,也需要进行相同的操作,浪费了大量的系统资源并会提升网络同步耗时,影响数据同步的效率。
为了解决上述问题,本申请提出了一种数据同步的管理方法,该方法应用于图2所示的数据同步的管理的流程框架中,如图2所示,为本申请实施例提供的一种数据同步的管理的流程架构图,用户通过在应用中的交互触发同步操作,从而逐一检测对象计数器、组件计数器以及属性计数器,从而得到同步数据,即将Actor对象以及其组件上的网络同步方式由被动同步(即每帧遍历并比较变化)修改为主动同步的过程。
可以理解的是,本申请所提供的方法可以为一种程序的写入,以作为硬件系统中的一种处理逻辑,也可以作为一种数据同步的管理装置,采用集成或外接的方式实现上述处理逻辑。作为一种实现方式,该数据同步的管理装置通过响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息,该对象计数器响应于目标对象的数据变化而变化;若第一变化信息指示对象计数器发生变化,则检查为目标对象配置的组件计数器,以得到第二变化信息,组件计数器与对象计数器相关联,组件计数器响应于目标对象对应的组件集合的变化而变化;然后基于第二变化信息检查为目标组件配置的属性计数器,以得到第三变化信息,属性计数器响应于组件集合中组件属性的变化而变化;进一步的根据第三变化信息检查组件集合中发生变化的组件属性,以确定同步数据;进而基于同步数据执行对象同步进程。从而实现同步数据的高效判定并提取过程,由于对象、组件以及属性的变化情况均通过不同的计数器进行检测并反映,使得数据同步过程中无需遍历所有的对象、组件以及属性,减少网络同步中的无谓开销,减小了同步耗时,并提高了数据同步的效率。
结合上述流程架构,下面将对本申请中数据同步的管理方法进行介绍,请参阅图3,图3为本申请实施例提供的一种数据同步的管理方法的流程图,该管理方法可以是由服务器执行的,本申请实施例至少包括以下步骤:
301、响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息。
本实施例中,对象同步进程即对于连接到同一个服务器的多个客户端,能将其他远端玩家的数据表现同步过来,如图4所示,图4为本申请实施例提供的一种数据同步的管理方法的场景示意图。图中示出了本端玩家以及需要进行数据表现同步的远端玩家,具体的需要数据表现同步的远端玩家数量因实际场景而定,此处不做限定。
可以理解的是,对象计数器响应于目标对象的数据变化而变化;即在确定对象动作的每帧过程中,会遍历所有的Actor,故可以把Actor同样设置为主动同步(即添加对象计数器),从而在遍历Actor的循环时减少不必要操作,即直接根据对象计数器的变化信息进行每帧对象的变化判断。
在一种可能的场景中,对象同步进程应用于虚幻引擎UE4中,目标对象基于虚幻引擎配置所得,同步数据基于网络进行传输,从而减少网络耗时。
具体的,考虑到不同的对象配置了不同的同步逻辑,故在获取目标对象对应的对象计数器的第一变化信息时可以响应于对象同步进程的启动,确定目标对象是否具有对象主动同步标识,即判断目标对象是否配置了主动同步执行器;若目标对象具有对象主动同步标识,则获取目标对象对应的对象计数器的第一变化信息。
可选的,若目标对象不具有对象主动同步标识,则遍历目标对象对应的组件集合,以确定目标对象是否具有收敛标识;若目标对象具有收敛标识,则检查为目标对象配置的组件计数器,以得到第二变化信息。其中,收敛标识则是由于Component开启主动同步后能够减少遍历未变化属性的开销,但是仍需要遍历Actor中所有的Component并创建其相应的属性同步执行器,即调用FindOrCreateReplicator(),这仍是UE4网络同步中占比多、耗时长的不必要开销。基于此考虑在Actor处对其进行收敛,过滤不需要同步的Component,从而提升Component的同步效率。
可选的,若目标对象不具有收敛标识,则说明需要对组件集合中的每个组件创建同步执行器,即进行变化情况的遍历;然后基于同步执行器遍历组件集合,以得到第二变化信息。
可选的,开启Actor的主动同步可以是需要一定的条件,即条件1:若组件集合中每个组件都具有对象主动同步标识,则确定目标对象具有对象主动同步标识。
条件2:首先确定组件集合中组件之间的主从关系;然后基于主从关系确定主要组件;若主要组件具有对象主动同步标识,则确定目标对象具有对象主动同步标识。
在一种可能的场景中,即判断此Actor中的所有Component均已开启主动同步属性,或者其他Component的同步依赖于主动同步的Component。比如游戏里面的道具或者门之类的Actor对象。
具体的,对于对象同步进程的触发场景,可以是首先获取接入的同步设备;然后确定同步设备对应的同步标记;进而对具有同步标记的同步设备进行相关性检测,并进行优先级检测,以确定同步序列;并响应于同步序列的生成启动对象同步进程,从而保证了数据同步对象的准确性。
302、若第一变化信息指示对象计数器发生变化,则检查为目标对象配置的组件计数器,以得到第二变化信息。
本实施例中,组件计数器与对象计数器相关联,组件计数器响应于目标对象对应的组件集合的变化而变化;关于组件计数器的设定,即由于Component开启主动同步后能够减少遍历未变化属性的开销,但是仍需要遍历Actor中所有的Component并创建其相应的属性同步执行器,即调用FindOrCreateReplicator(),这仍是UE4网络同步中占比多、耗时长的不必要开销。基于此考虑在Actor处对其进行收敛,过滤不需要同步的Component。
具体的,考虑到不同的对象配置了不同的同步逻辑,故在获取目标对象对应的对象计数器的第二变化信息时可以响应于对象同步进程的启动,即若第一变化信息指示对象计数器发生变化,则确定组件集合中的组件是否具有组件主动同步标识;若组件集合中的组件具有组件主动同步标识,即判断组件是否配置了组件主动同步执行器,则检查为目标对象配置的组件计数器,以得到第二变化信息,从而提高了同步过程的准确性,避免了未设置组件主动同步执行器的对象干扰同步结果。
可选的,若组件集合中的组件不具有组件主动同步标识,则遍历组件集合中的每个组件属性,以得到第二变化信息。
303、基于第二变化信息检查为目标组件配置的属性计数器,以得到第三变化信息。
本实施例中,属性计数器响应于组件集合中组件属性的变化而变化;其中,设置Component开启主动同步(bManualReplicates=1)以后,当Component中属性发生变化时,则会修改属性计数器(第三变化信息);在进行网络同步时,Component遍历对比属性变化之前判断属性计数器是否变化,若无则可以裁剪掉后续操作,从而实现了组件属性维度的自动检测。
在一种可能的场景中,上述多个计数器的判断过程可以参见图5所示的流程,图5为本申请实施例提供的另一种数据同步的管理方法的流程图,图中,示出了首先遍历Actor同步属性,然后确定Actor是否开启主动同步,若开启,则进行组件计数器的变化判断,若变化则参见上述实施例301-303的过程,此处不做赘述,若未变化,则说明Actor中没有需要同步的数据,从而结束同步进程,避免了网络耗时的产生。
304、根据第三变化信息检查组件集合中发生变化的组件属性,以确定同步数据。
本实施例中,确定同步数据的过程即确定变化数据的位置,故可以将变化的组件属性依次向组件、对象帧的维度进行关联,从而得到结构化的同步数据,以便于后续的在对端终端的数据同步展示过程。
具体的,对于确定同步数据的过程即首先根据第三变化信息检查组件集合中发生变化的组件属性,以确定属性变化信息;然后确定发生变化的组件属性对应的变化组件和变化帧;进而将属性变化信息、变化组件和变化帧进行关联,以确定同步数据,从而提高了同步数据的结构性。
305、基于同步数据执行对象同步进程。
本实施例中,在获取到Actor需要同步的数据后,接下来需要进行编码和序列化操作转换为字节流,便于网络传输,以实现多个终端之间的同步展示。
可以理解的是,由于UE4中并未明确地界定数据message和字节流,而是实现了FBitWriter、FBitReader(字节流书写器、读取器),并继承此来实现Bunch(数据包),用于网络传输。Actor同步数据的编解码、序列化和反序列化操作都是由其中相应的函数逻辑实现。
其中,函数输入为需要序列化的数据以及允许的阈值:(uint32)Value,ValueMax;即写入字节流的值由ValueMax决定:若Value>ValueMax,则取ValueMax-1,否则取Value;另外,SerializeInt()是按值写入,而WriteIntWrapped()按位截断。例如Value=17,ValueMax =16时(取ValueMax-1即15),SerializeInt()写入1111,而WriteIntWrapped()写入0001(17的二进制为10001,截取后四位)。相同的是两个函数都是遍历Value的所有位数,来决定是否能写入字节流。
从上述编码、序列化过程可以发现,对与数据Value是在for循环中按位处理,从低到高依次判断Value的当前位是否需要截断并写入相应bit,而Value的数据类型是uint32,也就是说函数for循环执行次数最多将达到32次,也就意味着函数效率较低(对称的,FBitReader解码反序列化过程中相应函数效率也低)。
故下面是在编码序列化方面针对UE4存在的效率较低的问题进行了优化。
上述实施例介绍了UE4中FBitWriter的SerializeInt()、WriteIntWrapped()函数处理逻辑,是在for循环中对需要编码的值进行按位遍历并判断是否写入,由于数据类型为uint32,所以最多将有32次循环,降低函数效率。
具体的,参见图6所示的场景,图6为本申请实施例提供的另一种数据同步的管理方法的流程图,图中示出了通过确定同步数据序列化处理过程中对应的位数阈值M(ValueMax),M为正整数;然后基于位数阈值将同步数据(Value)的前N位数据写入缓存数据包,N=M-1,N为正整数;并调用二分法计算同步数据的最高位的写入情况;若写入情况指示同步数据的最高位可以写入缓存数据包,则基于写入同步数据的最高位的缓存数据包执行对象同步进程;若写入情况指示同步数据的最高位无法写入缓存数据包,则基于未写入同步数据的最高位的缓存数据包执行对象同步进程。
具体的,对于上述调用二分法计算同步数据的最高位的写入情况的过程,即首先计算ValueMax位数并减1得到N,因为Value的前N位是一定可以写入buffer的,再单独判断最高位是否可以写入。此时函数的执行效率依赖于ValueMax的位数计算操作,该计算过程为FloorLogTwo()函数,具体如下:
uint 32 pos=0;
if(Value >=1<<16){ Value >>=16;pos +=16;}//第一次循环
if(Value >=1<<8){ Value >>=8;pos +=8;}//第二次循环
if(Value >=1<<4){ Value >>=4;pos +=4;}//第三次循环
if(Value >=1<<2){ Value >>=2;pos +=2;}//第四次循环
if(Value >=1<<1){ pos +=1;}//第五次循环
return (Value==0)?0:pos
即将Value与1左移16位进行比较,若大于,则Value超过16位,将位数pos加上16,并将Value右移16位;继续与1左移8位进行比较,共比较5次,直至最后确定Value的位数。
可以理解的是,FloorLogTwo()采用二分法,uint32类型的数据需要5次二分即可确定位数,所以相比之前最高32次循环,减少至5次循环,从而提升了函数执行效率。
结合上述实施例可知,通过响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息,该对象计数器响应于目标对象的数据变化而变化;若第一变化信息指示对象计数器发生变化,则检查为目标对象配置的组件计数器,以得到第二变化信息,组件计数器与对象计数器相关联,组件计数器响应于目标对象对应的组件集合的变化而变化;然后基于第二变化信息检查为目标组件配置的属性计数器,以得到第三变化信息,属性计数器响应于组件集合中组件属性的变化而变化;进一步的根据第三变化信息检查组件集合中发生变化的组件属性,以确定同步数据;进而基于同步数据执行对象同步进程。从而实现同步数据的高效判定并提取过程,由于对象、组件以及属性的变化情况均通过不同的计数器进行检测并反映,使得数据同步过程中无需遍历所有的对象、组件以及属性,减少网络同步中的无谓开销,减小了同步耗时,并提高了数据同步的效率。
下面结合具体的UE4的网络同步架构进行说明,请参阅图7,图7为本申请实施例提供的另一种数据同步的管理方法的流程图,图中示出了首先获取所有连接到服务器的ClientConnection;然后获取所有需要网络同步的Actor(标记为同步),对每个Connection,进行相关性检测(是否同步给此Connectoin)与优先级排序;并对于所有需要同步的Actor进行所有以下操作:(1)遍历对比Actor的所有属性(跟上次同步的值比较),发生变化则需要同步;(2)遍历所有的组件,调用FindOrCreateReplicator()创建自己的同步执行器,同样的遍历组件自身的所有属性,发生变化则需要同步。进一步的将Actor需要同步的数据(属性信息、组件信息等)进行编码、序列化后封包发送出去。
具体的,在Actor数据同步的过程中,Actor中的FRepLayout维护了需要同步的属性表,先调用ReplicateProperties(),其中会遍历所有属性,进行比较并同步变化值。另外,Actor中每个Component组件同步时,首先调用FindOrCreateReplicator()找到或创建自己的同步执行器,同样对于组件自身的属性,调用ReplicateProperties()进行遍历以及同步。
而本申请在Actor数据同步的过程中为各个数据的不同过程添加了主动同步的逻辑,下面分别进行说明:
对于组件Component的主动同步,为Component添加bManualReplicates(是否开启主动同步)属性,并添加属性计数器ManualReplicateIndex,并实现相应的设置、获取主动同步状态和设置、获取属性计数器方法。对于Component主动同步的改造可以采用如下代码实现:
public:
// 设置Component是否开启主动同步
FORCEINLINE void SetIsManualReplicated(bool ShouldManualReplicate){…}
// 获取Component同步状态,是否开启了主动同步
FORCEINLINE bool GetIsManualReplicated() const {…}
// 若Component开启主动同步,通知所在的Actor
UFUNCTION(BlueprintCallable, Category = Replication)
void ActiveManualReplicate();
// 获取同步属性计数器
FORCEINLINE uint32 GetManualReplicateIndex() const {…}
protected:
// Component是否开启主动同步的标志位,0(未开启)/1(开启)
UPROPERTY(Category = Replication, EditDefaultsOnly,BlueprintReadOnly)
uint8 bManualReplicates : 1;
// 同步属性计数器,记录变化的属性
uint32 ManualReplicateIndex;
可以理解的是,设置Component开启主动同步(bManualReplicates=1)以后,当Component中属性发生变化时,则会修改属性计数器;在进行网络同步时,Component遍历对比属性变化之前判断属性计数器是否变化,若无则可以裁剪掉后续操作,即裁剪掉图7中标记1之后的操作,从而使得Component开启主动同步后减少属性比较操作。
对于Actor对Component主动同步的收敛,由于Component开启主动同步后能够减少遍历未变化属性的开销,但是仍需要遍历Actor中所有的Component并创建其相应的属性同步执行器,即调用FindOrCreateReplicator(),这仍是UE4网络同步中占比多、耗时长的不必要开销。基于此考虑在Actor处对其进行收敛,过滤不需要同步的Component。
具体的,可以在Actor中同样添加bComponentsManualReplicates属性(是否开启收敛),添加Component计数器,并设置相应的方法。对于Actor对主动同步Component收敛的改造可以通过如下代码实现:
public:
// 设置Actor是否开启收敛,对主动同步Component进行过滤
FORCEINLINE void SetIsComponentsManualReplicated(boolShouldManualReplicate) {…}
// 获取Actor收敛状态,是否开启
FORCEINLINE bool GetIsComponentsManualReplicated() const {…}
// Component开启主动同步后调用,增加Component计数器
void ComponentsActiveManualReplicate() {…}
// 获取Component计数器
uint32 GetComponentsActiveManualReplicate() {…}
protected:
// Actor收敛标志位,是否开启了对主动同步component的过滤
UPROPERTY(Category = Replication, EditDefaultsOnly,BlueprintReadOnly)
uint8 bComponentsManualReplicates : 1;
// Component计数器,在开启主动同步后调用ActiveManualReplicate()时会设置
uint32 ComponentsManualReplicateIndex;
可以理解的是,当Actor中任一主动同步的Component中发生属性变化并修改属性计数器时,同时会修改Actor中的Component计数器,若计数器与上次的同步值相比未变化,则可以跳过后续操作,避免FindOrCreateReplicator()引起的不必要开销。即对于图7中标记2之后的操作可以进行避免,从而在Actor开启Component收敛后减少相应操作。
对于Actor对象的主动同步,由于在实现了Component的主动同步以及Actor的收敛,但是每帧仍然会遍历所有的Actor,考虑把Actor同样设置为主动同步,就能够在遍历Actor的循环时减少不必要操作。
具体的,可以在Actor中添加主动同步属性bActorManualReplicates,并复用上述Acotr中的Component计数器,对于Actor主动同步的改造可以通过如下代码实现:
public:
// 设置Actor是否开启主动同步
FORCEINLINE void SetIsActorManualReplicates(boolShouldManualReplicate) {…}
// 获取Actor同步状态,是否开启了主动同步
FORCEINLINE bool GetIsActorManualReplicates() const {…}
protected:
// Actor主动同步标志位
UPROPERTY(Category=Replication,EditDefaultsOnly,BlueprintReadOnly)
uint8 bActorManualReplicates : 1;
可以理解的是,当Actor开启主动同步时,并且此计数器并未发生变化,则可以在Actor的遍历层次减少无谓开销,即减小了图7所示的标记3之后逇操作,从而使得Actor主动同步后减少相应操作。
可选的,开启Actor的主动同步需要一定的条件,即此Actor中的所有Component均已开启主动同步属性,或者其他Component的同步依赖于主动同步的Component。比如游戏里面的道具或者门之类的Actor对象。
通过上述实施例可见,本实施例针对UE4中网络同步存在的耗时长,开销大的问题,提出了相应的技术方案来解决。将Actor以及子组件的被动同步均改造为主动同步,并优化了网络同步包的序列化过程,大幅度降低网络同步耗时的同时,降低了cpu开销。本技术方案一定程度地减少了游戏成本,避免资源浪费,又大大提升了玩家的游戏体验。
为了更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关装置。请参阅图8,图8为本申请实施例提供的一种数据同步的管理装置的结构示意图,管理装置800包括:
获取单元801,用于响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息,所述对象计数器响应于所述目标对象的数据变化而变化;
检查单元802,用于若第一变化信息指示对象计数器发生变化,则检查为所述目标对象配置的组件计数器,以得到第二变化信息,所述组件计数器与所述对象计数器相关联,所述组件计数器响应于所述目标对象对应的组件集合的变化而变化;
所述检查单元802,还用于基于所述第二变化信息检查为所述目标组件配置的属性计数器,以得到第三变化信息,所述属性计数器响应于所述组件集合中组件属性的变化而变化;
确定单元803,用于根据所述第三变化信息检查所述组件集合中发生变化的组件属性,以确定同步数据;
管理单元804,用于基于所述同步数据执行所述对象同步进程。
可选的,在本申请一些可能的实现方式中,所述获取单元801,具体用于响应于所述对象同步进程的启动,确定所述目标对象是否具有对象主动同步标识;
所述获取单元801,具体用于若所述目标对象具有所述对象主动同步标识,则获取所述目标对象对应的对象计数器的所述第一变化信息。
可选的,在本申请一些可能的实现方式中,所述获取单元801,具体用于若所述目标对象不具有所述对象主动同步标识,则遍历所述目标对象对应的组件集合,以确定所述目标对象是否具有收敛标识;
所述获取单元801,具体用于若所述目标对象具有所述收敛标识,则检查为所述目标对象配置的所述组件计数器,以得到所述第二变化信息。
可选的,在本申请一些可能的实现方式中,所述获取单元801,具体用于若所述目标对象不具有所述收敛标识,则为所述组件集合中的每个组件创建同步执行器;
所述获取单元801,具体用于基于所述同步执行器遍历所述组件集合,以得到所述第二变化信息。
可选的,在本申请一些可能的实现方式中,所述获取单元801,具体用于若所述组件集合中每个组件都具有所述对象主动同步标识,则确定所述目标对象具有所述对象主动同步标识;
或;
所述获取单元801,具体用于确定所述组件集合中组件之间的主从关系;
所述获取单元801,具体用于基于所述主从关系确定主要组件;
所述获取单元801,具体用于若所述主要组件具有所述对象主动同步标识,则确定所述目标对象具有所述对象主动同步标识。
可选的,在本申请一些可能的实现方式中,所述检查单元802,具体用于若第一变化信息指示对象计数器发生变化,则确定所述组件集合中的组件是否具有组件主动同步标识;
所述检查单元802,具体用于若所述组件集合中的组件具有所述组件主动同步标识,则检查为所述目标对象配置的所述组件计数器,以得到所述第二变化信息。
可选的,在本申请一些可能的实现方式中,所述检查单元802,具体用于若所述组件集合中的组件不具有所述组件主动同步标识,则遍历所述组件集合中的每个组件属性,以得到所述第二变化信息。
可选的,在本申请一些可能的实现方式中,所述确定单元803,具体用于根据所述第三变化信息检查所述组件集合中发生变化的组件属性,以确定属性变化信息;
所述确定单元803,具体用于确定所述发生变化的组件属性对应的变化组件和变化帧;
所述确定单元803,具体用于将所述属性变化信息、所述变化组件和所述变化帧进行关联,以确定所述同步数据。
可选的,在本申请一些可能的实现方式中,所述管理单元804,具体用于确定所述同步数据序列化处理过程中对应的位数阈值M,M为正整数;
所述管理单元804,具体用于基于所述位数阈值将所述同步数据的前N位数据写入缓存数据包,N=M-1,N为正整数;
所述管理单元804,具体用于调用二分法计算所述同步数据的最高位的写入情况;
所述管理单元804,具体用于若所述写入情况指示所述同步数据的最高位可以写入所述缓存数据包,则基于写入所述同步数据的最高位的缓存数据包执行所述对象同步进程。
可选的,在本申请一些可能的实现方式中,所述管理单元804,具体用于若所述写入情况指示所述同步数据的最高位无法写入所述缓存数据包,则基于未写入所述同步数据的最高位的缓存数据包执行所述对象同步进程。
可选的,在本申请一些可能的实现方式中,所述管理单元804,具体用于获取接入的同步设备;
所述管理单元804,具体用于确定所述同步设备对应的同步标记;
所述管理单元804,具体用于对具有所述同步标记的同步设备进行相关性检测,并进行优先级检测,以确定同步序列;
所述管理单元804,具体用于响应于所述同步序列的生成启动所述对象同步进程。
通过响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息,该对象计数器响应于目标对象的数据变化而变化;若第一变化信息指示对象计数器发生变化,则检查为目标对象配置的组件计数器,以得到第二变化信息,组件计数器与对象计数器相关联,组件计数器响应于目标对象对应的组件集合的变化而变化;然后基于第二变化信息检查为目标组件配置的属性计数器,以得到第三变化信息,属性计数器响应于组件集合中组件属性的变化而变化;进一步的根据第三变化信息检查组件集合中发生变化的组件属性,以确定同步数据;进而基于同步数据执行对象同步进程。从而实现同步数据的高效判定并提取过程,由于对象、组件以及属性的变化情况均通过不同的计数器进行检测并反映,使得数据同步过程中无需遍历所有的对象、组件以及属性,减少网络同步中的无谓开销,减小了同步耗时,并提高了数据同步的效率。
本申请实施例还提供了一种终端设备,如图9所示,是本申请实施例提供的另一种终端设备的结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(personal digital assistant,PDA)、销售终端(point of sales,POS)、车载电脑等任意终端设备,以终端为手机为例:
图9示出的是与本申请实施例提供的终端相关的手机的部分结构的框图。参考图9,手机包括:射频(radio frequency,RF)电路910、存储器920、输入单元930、显示单元940、传感器950、音频电路960、无线保真(wireless fidelity,WiFi)模块970、处理器980、以及电源990等部件。本领域技术人员可以理解,图9中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图9对手机的各个构成部件进行具体的介绍:
RF电路910可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器980处理;另外,将设计上行的数据发送给基站。通常,RF电路910包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noiseamplifier,LNA)、双工器等。此外,RF电路910还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystem of mobile communication,GSM)、通用分组无线服务(general packet radioservice,GPRS)、码分多址(code division multiple access,CDMA)、宽带码分多址(wideband code division multiple access, WCDMA)、长期演进(long term evolution,LTE)、电子邮件、短消息服务(short messaging service,SMS)等。
存储器920可用于存储软件程序以及模块,处理器980通过运行存储在存储器920的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器920可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元930可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元930可包括触控面板931以及其他输入设备932。触控面板931,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板931上或在触控面板931附近的操作,以及在触控面板931上一定范围内的隔空触控操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板931可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器980,并能接收处理器980发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板931。除了触控面板931,输入单元930还可以包括其他输入设备932。具体地,其他输入设备932可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元940可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元940可包括显示面板941,可选的,可以采用液晶显示器(liquid crystaldisplay,LCD)、有机发光二极管(organic light-emitting diode,OLED)等形式来配置显示面板941。进一步的,触控面板931可覆盖显示面板941,当触控面板931检测到在其上或附近的触摸操作后,传送给处理器980以确定触摸事件的类型,随后处理器980根据触摸事件的类型在显示面板941上提供相应的视觉输出。虽然在图9中,触控面板931与显示面板941是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板931与显示面板941集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器950,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板941的亮度,接近传感器可在手机移动到耳边时,关闭显示面板941和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等; 至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路960、扬声器961,传声器962可提供用户与手机之间的音频接口。音频电路960可将接收到的音频数据转换后的电信号,传输到扬声器961,由扬声器961转换为声音信号输出;另一方面,传声器962将收集的声音信号转换为电信号,由音频电路960接收后转换为音频数据,再将音频数据输出处理器980处理后,经RF电路910以发送给比如另一手机,或者将音频数据输出至存储器920以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块970可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi模块970,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器980是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器920内的软件程序和/或模块,以及调用存储在存储器920内的数据,执行手机的各种功能和处理数据。可选的,处理器980可包括一个或多个处理单元;可选的,处理器980可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器980中。
手机还包括给各个部件供电的电源990(比如电池),可选的,电源可以通过电源管理系统与处理器980逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该终端所包括的处理器980还具有执行如上述页面处理方法的各个步骤的功能。
本申请实施例还提供了一种服务器,请参阅图10,图10是本申请实施例提供的一种服务器的结构示意图,该服务器1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)1022(例如,一个或一个以上处理器)和存储器1032,一个或一个以上存储应用程序1042或数据1044的存储介质1030(例如一个或一个以上海量存储设备)。其中,存储器1032和存储介质1030可以是短暂存储或持久存储。存储在存储介质1030的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1022可以设置为与存储介质1030通信,在服务器1000上执行存储介质1030中的一系列指令操作。
服务器1000还可以包括一个或一个以上电源1026,一个或一个以上有线或无线网络接口1050,一个或一个以上输入输出接口1058,和/或,一个或一个以上操作系统1041,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM等等。
上述实施例中由管理装置所执行的步骤可以基于该图10所示的服务器结构。
在一种可能的场景中,本申请中的数据同步的管理的方法应用于区块链设备中,即权威DNS、LDNS或终端为区块链设备,且该区块链设备为区块链中的节点,下面结合附图进行说明;参见图11A所示的数据共享系统,数据共享系统1100是指用于进行节点与节点之间数据共享的系统,该数据共享系统中可以包括多个节点1101,多个节点1101可以是指数据共享系统中各个客户端。每个节点1101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享系统中的任意节点接收到输入信息时,数据共享系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。
对于数据共享系统中的每个节点,均具有与其对应的节点标识,而且数据共享系统中的每个节点均可以存储有数据共享系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至数据共享系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明。
表1节点名称与节点标识的对应关系
数据共享系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图11B,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图11C,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享系统中其他节点的节点标识,将新生成的区块分别发送给其所在的数据共享系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有数据同步的管理指令,当其在计算机上运行时,使得计算机执行如前述图2至图7所示实施例描述的方法中数据同步的管理装置所执行的步骤。
本申请实施例中还提供一种包括数据同步的管理指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图2至图7所示实施例描述的方法中数据同步的管理装置所执行的步骤。
本申请实施例还提供了一种数据同步的管理系统,所述数据同步的管理系统可以包含图8所描述实施例中的数据同步的管理装置,或图9所描述实施例中的终端设备,或者图10所描述的服务器。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,数据同步的管理装置,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (22)

1.一种数据同步的管理方法,其特征在于,包括:
响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息,所述对象计数器响应于所述目标对象的数据变化而变化;
若第一变化信息指示对象计数器发生变化,则检查为所述目标对象配置的组件计数器,以得到第二变化信息,所述组件计数器与所述对象计数器相关联,所述组件计数器响应于所述目标对象对应的组件集合的变化而变化;
基于所述第二变化信息检查为目标组件配置的属性计数器,以得到第三变化信息,所述属性计数器响应于所述组件集合中组件属性的变化而变化;
根据所述第三变化信息检查所述组件集合中发生变化的组件属性,以确定同步数据;
基于所述同步数据执行所述对象同步进程;
其中,所述响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息,包括:
响应于所述对象同步进程的启动,确定所述目标对象是否具有对象主动同步标识;
若所述目标对象具有所述对象主动同步标识,则获取所述目标对象对应的对象计数器的所述第一变化信息;
若所述目标对象不具有所述对象主动同步标识,则遍历所述目标对象对应的组件集合,以确定所述目标对象是否具有收敛标识;
若所述目标对象具有所述收敛标识,则检查为所述目标对象配置的所述组件计数器,以得到所述第二变化信息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标对象不具有所述收敛标识,则为所述组件集合中的每个组件创建同步执行器;
基于所述同步执行器遍历所述组件集合,以得到所述第二变化信息。
3.根据权利要求1所述的方法,其特征在于,所述若所述目标对象具有所述对象主动同步标识,包括:
若所述组件集合中每个组件都具有所述对象主动同步标识,则确定所述目标对象具有所述对象主动同步标识;
或;
确定所述组件集合中组件之间的主从关系;
基于所述主从关系确定主要组件;
若所述主要组件具有所述对象主动同步标识,则确定所述目标对象具有所述对象主动同步标识。
4.根据权利要求1所述的方法,其特征在于,所述若第一变化信息指示对象计数器发生变化,则检查为所述目标对象配置的组件计数器,以得到第二变化信息,包括:
若第一变化信息指示对象计数器发生变化,则确定所述组件集合中的组件是否具有组件主动同步标识;
若所述组件集合中的组件具有所述组件主动同步标识,则检查为所述目标对象配置的所述组件计数器,以得到所述第二变化信息。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述组件集合中的组件不具有所述组件主动同步标识,则遍历所述组件集合中的每个组件属性,以得到所述第二变化信息。
6.根据权利要求1所述的方法,其特征在于,所述根据所述第三变化信息检查所述组件集合中发生变化的组件属性,以确定同步数据,包括:
根据所述第三变化信息检查所述组件集合中发生变化的组件属性,以确定属性变化信息;
确定所述发生变化的组件属性对应的变化组件和变化帧;
将所述属性变化信息、所述变化组件和所述变化帧进行关联,以确定所述同步数据。
7.根据权利要求1所述的方法,其特征在于,所述基于所述同步数据执行所述对象同步进程,包括:
确定所述同步数据序列化处理过程中对应的位数阈值M,M为正整数;
基于所述位数阈值将所述同步数据的前N位数据写入缓存数据包,N=M-1,N为正整数;
调用二分法计算所述同步数据的最高位的写入情况;
若所述写入情况指示所述同步数据的最高位可以写入所述缓存数据包,则基于写入所述同步数据的最高位的缓存数据包执行所述对象同步进程。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
若所述写入情况指示所述同步数据的最高位无法写入所述缓存数据包,则基于未写入所述同步数据的最高位的缓存数据包执行所述对象同步进程。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述方法还包括:
获取接入的同步设备;
确定所述同步设备对应的同步标记;
对具有所述同步标记的同步设备进行相关性检测,并进行优先级检测,以确定同步序列;
响应于所述同步序列的生成启动所述对象同步进程。
10.根据权利要求1所述的方法,其特征在于,所述对象同步进程应用于虚幻引擎中,所述目标对象基于所述虚幻引擎配置所得,所述同步数据基于网络进行传输。
11.一种数据同步的管理装置,其特征在于,包括:
获取单元,用于响应于对象同步进程的启动,获取目标对象对应的对象计数器的第一变化信息,所述对象计数器响应于所述目标对象的数据变化而变化;
检查单元,用于若第一变化信息指示对象计数器发生变化,则检查为所述目标对象配置的组件计数器,以得到第二变化信息,所述组件计数器与所述对象计数器相关联,所述组件计数器响应于所述目标对象对应的组件集合的变化而变化;
所述检查单元,还用于基于所述第二变化信息检查为目标组件配置的属性计数器,以得到第三变化信息,所述属性计数器响应于所述组件集合中组件属性的变化而变化;
确定单元,用于根据所述第三变化信息检查所述组件集合中发生变化的组件属性,以确定同步数据;
管理单元,用于基于所述同步数据执行所述对象同步进程;
其中,所述获取单元具体用于:
响应于所述对象同步进程的启动,确定所述目标对象是否具有对象主动同步标识;
若所述目标对象具有所述对象主动同步标识,则获取所述目标对象对应的对象计数器的所述第一变化信息;
若所述目标对象不具有所述对象主动同步标识,则遍历所述目标对象对应的组件集合,以确定所述目标对象是否具有收敛标识;
若所述目标对象具有所述收敛标识,则检查为所述目标对象配置的所述组件计数器,以得到所述第二变化信息。
12.根据权利要求11所述的管理装置,其特征在于,所述获取单元,具体用于:
若所述目标对象不具有所述收敛标识,则为所述组件集合中的每个组件创建同步执行器;
基于所述同步执行器遍历所述组件集合,以得到所述第二变化信息。
13.根据权利要求11所述的管理装置,其特征在于,所述获取单元具体用于:
若所述组件集合中每个组件都具有所述对象主动同步标识,则确定所述目标对象具有所述对象主动同步标识;
或;
确定所述组件集合中组件之间的主从关系;
基于所述主从关系确定主要组件;
若所述主要组件具有所述对象主动同步标识,则确定所述目标对象具有所述对象主动同步标识。
14.根据权利要求11所述的管理装置,其特征在于,所述检查单元,具体用于:
若第一变化信息指示对象计数器发生变化,则确定所述组件集合中的组件是否具有组件主动同步标识;
若所述组件集合中的组件具有所述组件主动同步标识,则检查为所述目标对象配置的所述组件计数器,以得到所述第二变化信息。
15.根据权利要求14所述的管理装置,其特征在于,所述检查单元具体用于:
若所述组件集合中的组件不具有所述组件主动同步标识,则遍历所述组件集合中的每个组件属性,以得到所述第二变化信息。
16.根据权利要求11所述的管理装置,其特征在于,所述确定单元具体用于:
根据所述第三变化信息检查所述组件集合中发生变化的组件属性,以确定属性变化信息;
确定所述发生变化的组件属性对应的变化组件和变化帧;
将所述属性变化信息、所述变化组件和所述变化帧进行关联,以确定所述同步数据。
17.根据权利要求11所述的管理装置,其特征在于,所述管理单元,具体用于:
确定所述同步数据序列化处理过程中对应的位数阈值M,M为正整数;
基于所述位数阈值将所述同步数据的前N位数据写入缓存数据包,N=M-1,N为正整数;
调用二分法计算所述同步数据的最高位的写入情况;
若所述写入情况指示所述同步数据的最高位可以写入所述缓存数据包,则基于写入所述同步数据的最高位的缓存数据包执行所述对象同步进程。
18.根据权利要求17所述的管理装置,其特征在于,所述管理单元,具体用于若所述写入情况指示所述同步数据的最高位无法写入所述缓存数据包,则基于未写入所述同步数据的最高位的缓存数据包执行所述对象同步进程。
19.根据权利要求11-18任一项所述的管理装置,其特征在于,所述管理单元具体用于:
获取接入的同步设备;
确定所述同步设备对应的同步标记;
对具有所述同步标记的同步设备进行相关性检测,并进行优先级检测,以确定同步序列;
响应于所述同步序列的生成启动所述对象同步进程。
20.根据权利要求11所述的管理装置,其特征在于,所述对象同步进程应用于虚幻引擎中,所述目标对象基于所述虚幻引擎配置所得,所述同步数据基于网络进行传输。
21.一种计算机设备,其特征在于,所述计算机设备包括处理器以及存储器:
所述存储器用于存储程序代码;所述处理器用于根据所述程序代码中的指令执行权利要求1至10任一项所述的数据同步的管理方法。
22.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述权利要求1至10任一项所述的数据同步的管理方法。
CN202110265782.1A 2021-03-11 2021-03-11 一种数据同步的管理方法以及相关装置 Active CN113032160B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110265782.1A CN113032160B (zh) 2021-03-11 2021-03-11 一种数据同步的管理方法以及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110265782.1A CN113032160B (zh) 2021-03-11 2021-03-11 一种数据同步的管理方法以及相关装置

Publications (2)

Publication Number Publication Date
CN113032160A CN113032160A (zh) 2021-06-25
CN113032160B true CN113032160B (zh) 2024-01-30

Family

ID=76469906

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110265782.1A Active CN113032160B (zh) 2021-03-11 2021-03-11 一种数据同步的管理方法以及相关装置

Country Status (1)

Country Link
CN (1) CN113032160B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114367981B (zh) * 2021-12-28 2023-04-07 达闼机器人股份有限公司 对象控制方法、装置、设备和存储介质
CN116303791A (zh) * 2023-03-22 2023-06-23 合肥申威睿思信息科技有限公司 一种基于加速系统的数据同步方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104935634A (zh) * 2015-04-27 2015-09-23 南京大学 基于分布共享存储的移动设备数据共享方法
CN105103130A (zh) * 2012-12-20 2015-11-25 甲骨文国际公司 用于实现可扩展争用自适应统计计数器的系统和方法
CN105190559A (zh) * 2012-12-20 2015-12-23 甲骨文国际公司 用于实现存储更新概率值的共享概率计数器的系统和方法
CN108572613A (zh) * 2017-03-14 2018-09-25 欧姆龙株式会社 控制装置、信息处理方法
CN110639207A (zh) * 2019-09-20 2020-01-03 北京代码乾坤科技有限公司 游戏数据同步方法、装置、存储介质及处理器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10740349B2 (en) * 2015-06-22 2020-08-11 Microsoft Technology Licensing, Llc Document storage for reuse of content within documents
CN106993200B (zh) * 2017-04-18 2019-05-31 腾讯科技(深圳)有限公司 一种数据的直播方法、相关设备及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105103130A (zh) * 2012-12-20 2015-11-25 甲骨文国际公司 用于实现可扩展争用自适应统计计数器的系统和方法
CN105190559A (zh) * 2012-12-20 2015-12-23 甲骨文国际公司 用于实现存储更新概率值的共享概率计数器的系统和方法
CN104935634A (zh) * 2015-04-27 2015-09-23 南京大学 基于分布共享存储的移动设备数据共享方法
CN108572613A (zh) * 2017-03-14 2018-09-25 欧姆龙株式会社 控制装置、信息处理方法
CN110639207A (zh) * 2019-09-20 2020-01-03 北京代码乾坤科技有限公司 游戏数据同步方法、装置、存储介质及处理器

Also Published As

Publication number Publication date
CN113032160A (zh) 2021-06-25

Similar Documents

Publication Publication Date Title
US11025963B2 (en) Data processing method, apparatus, and system for live streaming page
CN110141864B (zh) 一种游戏自动测试方法、装置及终端
US10645559B2 (en) Bluetooth connection method and terminal
CN113032160B (zh) 一种数据同步的管理方法以及相关装置
US10491535B2 (en) Adaptive data synchronization
CN111544886A (zh) 一种画面显示的方法以及相关装置
CN110265006A (zh) 唤醒方法、主节点、从节点和存储介质
CN105183296A (zh) 交互界面显示方法及装置
US20150178667A1 (en) Method, apparatus, and communication system of updating user data
WO2018000692A1 (zh) 数据同步方法、系统及用于数据同步的用户终端和服务端
CN110460862B (zh) 一种直播处理的方法、终端设备及存储介质
WO2015062400A1 (zh) 视频通道分配管理方法和相关设备及通信系统
CN116841794A (zh) 一种数据的校验方法、装置以及存储介质
CN113965915B (zh) 数据处理方法和电子设备
CN112245906B (zh) 数据同步方法、装置、电子设备及存储介质
CN106209601B (zh) 状态更新消息的推送方法及装置
CN114756714A (zh) 一种图数据的处理方法、装置以及存储介质
CN117544588B (zh) 信息传输方法、系统和相关装置
CN112153154A (zh) 一种数据传输的方法以及相关装置
CN106899624A (zh) 一种更新关联账户信息的方法和装置
CN116644128A (zh) 一种基于区块链的数据处理方法、装置以及存储介质
CN106230709B (zh) 一种聊天信息区别同步的方法及装置
WO2015058537A1 (zh) 视频通道管理方法和相关设备及通信系统
CN106358070B (zh) 多媒体文件上传方法及装置
CN112891933B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40047282

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant