具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
虚拟场景:是应用程序在终端上运行时显示(或提供)的虚拟环境。该虚拟环境可以是对真实世界的仿真环境,也可以是半仿真半虚构的环境,还可以是纯虚构的环境。虚拟场景可以是二维虚拟环境、2.5维虚拟环境和三维虚拟环境中的任意一种,本申请对此不加以限定。
虚拟角色:是指在虚拟环境中的可活动对象,该可活动对象可以是虚拟人物、虚拟动物、动漫人物等,比如:在三维虚拟场景中显示的人物、动物或物品等,虚拟对象是基于动画骨骼技术创建的三维立体模型,每个虚拟对象在三维虚拟场景中具有自身的形状和体积,占据三维虚拟场景中的一部分空间。
数据结构:数据结构(Data Structure)是指带有结构特性的数据元素的集合,在本申请中可以是虚拟角色数据元素集合,例如,虚拟角色的生命值(Hit Point)、魔法值(Magic Point)以及技能冷却表等,都会在数值化后记录在该虚拟角色的数据结构中。
主循环函数:在每次系统逻辑帧开始时候被调用的函数,其功能是处理需要在当前系统逻辑帧中常规要处理的内容,例如,处理当前系统辑帧中所有的虚拟角色的属性恢复(回复生命值或魔法值),或者处理当前系统辑帧中所有的角色的移动行为。
状态逻辑帧函数:为了使虚拟角色自有的状态逻辑帧能能够正常的运行而加入的运算函数,在该状态逻辑帧函数中会根据暂停标记来控制状态逻辑帧的变化,例如,在系统逻辑帧自增1的情况下,当前的状态逻辑帧是否进行自增1的操作。
状态结算函数:根据对应的状态变化标记,在每次状态发生变化或者要获取状态的时候需要执行的函数,目的是让获取的数值保持正确,例如,要获取某个指定虚拟角色的技能冷却时间的剩余时长,而该虚拟角色当前的状态逻辑帧上有冷却时间加速标记,那么在实际获取虚拟角色的技能冷却时间的剩余时长的时候,会调用一次技能冷却时间的状态结算函数,用于计算技能冷却时间加速后技能冷却时间实际的结束时间,其时间参考系是状态逻辑帧。
在本申请中,提供了一种虚拟角色的状态控制方法及装置、计算设备及计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。
计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
其中,处理器120可以执行图2所示方法中的步骤。图2是示出了根据本申请一实施例的虚拟角色的状态控制方法的示意性流程图,应用于服务器,所述服务器端通过通信网络与至少两个客户端进行数据交互,包括步骤202至步骤208。
步骤202:根据每个客户端创建的虚拟角色,构建每个虚拟角色对应的至少一个状态逻辑帧时间轴。
在本申请的实施例中,“逻辑帧”是指在游戏等应用程序中以1/16秒为1帧,每经过1/16秒该逻辑帧就会自增1帧。同时,在服务器和每个终端中,本申请不再使用系统逻辑帧时间轴(既全体玩家共有的参考时间)作为时间参考,而在每个玩家的客户端中设置至少一个状态逻辑帧时间轴,例如,虚拟角色的技能冷却时间对应的状态逻辑帧时间轴和增益效果的持续时间对应的状态逻辑帧时间轴等,并保持服务器和每个终端状态逻辑帧时间轴保持同步。
步骤204:响应于任一客户端指向目标虚拟角色的状态变化请求,在所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中添加状态变化标记并通知所述目标虚拟角色对应的客户端。
在本申请的实施例中,在多人在线网络游戏中,玩家通过任一客户端运行游戏程序的过程中,玩家可以通过控制游戏中的虚拟角色,对位于同一服务器内其他玩家控制的目标虚拟角色在特定的游戏模式或虚拟场景中释放技能,即产生一个对指向目标虚拟角色的状态变化请求,服务器响应于任一客户端指向目标虚拟角色的状态变化请求,在所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中添加状态变化标记并通知所述目标虚拟角色对应的客户端。
具体而言,玩家通过技能来触发技能或者增益效果的暂停或者加减速功能,服务器在收到请求后会分析请求,如果是暂停请求,就给目标虚拟角色打上暂停的标记;如果是加/减速请求,在每个技能冷却计时器上打上加速标记并记录加速开始游戏逻辑帧,并通知到客户端,也执行一次操作,让服务器和客户端计算同步。
步骤206:在按照统一的系统逻辑帧时间轴以逻辑帧为单位对每个虚拟角色进行处理的过程中,根据所述状态变化标记维持或改变目标虚拟角色对应的至少一个状态逻辑帧时间轴中的状态逻辑帧的运行。
在本申请的实施例中,如图3所示,按照统一的系统逻辑帧时间轴以逻辑帧为单位对每个虚拟角色进行处理,包括步骤302至步骤304。
步骤302:在所述系统逻辑帧时间轴中的每一逻辑帧的开始时刻,调用每个虚拟角色对应的主循环函数对每个虚拟角色的行为、属性参数或状态参数进行处理。
步骤304:在所述系统逻辑帧时间轴中的每一逻辑帧的结束时刻,对每个虚拟角色的视觉效果、外观效果或动画效果进行处理。
具体而言,在客户端的虚拟角色对应的数据结构中记录其自身的时间逻辑帧,该时间逻辑帧在游戏初始化的时候设置为0,每帧游戏逻辑会调用每个虚拟角色的主循环函数,在该主循环函数中,会增加一个处理客户端个人定制化时间逻辑帧的函数,也就是说每次系统逻辑帧触发主循环调用时候,都会触发一次个人定制化时间逻辑帧的状态逻辑帧函数。
在本申请的实施例中,在所述主循环函数中包括状态逻辑帧函数,如图4所示,根据所述状态变化标记维持或改变目标虚拟角色对应的至少一个状态逻辑帧时间轴中的状态逻辑帧的运行,包括步骤402至步骤406。
步骤402:通过目标虚拟角色对应的状态逻辑帧函数,判断所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中是否存在状态变化标记;若是,则执行步骤404;若否,则执行步骤406。
步骤404:根据所述状态变化标记的对应的标记类型改变对应的至少一个状态逻辑帧时间轴中的状态逻辑帧的运行。
步骤406:将所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中的状态逻辑帧自增1。
在上述实施例中,在状态逻辑帧函数中,如果没有特殊设置,状态逻辑帧时间轴中的状态逻辑帧每次会自增1,在特殊参数设置时候,例如,冷却时间暂停,个状态逻辑帧本次会跳过自增1的操作。
步骤208:根据所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中的状态逻辑帧,对所述目标虚拟角色的执行状态进行控制。
在本申请的实施例中,在所述主循环函数中包括状态结算函数,如图5所示,所示步骤208具体包括步骤502至步骤504。
步骤502:根据所述目标虚拟角色对应的状态变化参数以及至少一个状态逻辑帧时间轴中的状态逻辑帧,通过所述状态结算函数重新计算所述执行状态的结束时间。
步骤504:将所述执行状态的结束时间与所述系统逻辑帧时间轴进行同步。
可选地,所述执行状态包括所述虚拟角色的技能冷却时间、增益效果的持续时间和减益效果的持续时间。
本申请通过拆分独立每个玩家角色上的游戏逻辑帧,实现了单独控制单个玩家的虚拟角色身上的技能冷却时间、增益效果的持续时间和减益效果的持续时间,实现了原来无法实现的个性化定制功能,在执行效率上非常高效,能够满足大量玩家同时在线的情况。
在本申请的实施例中,如图6所示,在所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中添加状态变化标记,包括步骤602至步骤606。
步骤602:根据每个客户端创建的虚拟角色,构建每个虚拟角色对应的数据结构。
步骤604:响应于任一客户端指向目标虚拟角色的状态变化请求,在所述目标虚拟角色对应的数据结构中添加状态变化参数。
步骤606:根据所述状态变化参数,在所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中添加状态变化标记。
在本申请的实施例中,如图7所示,通过在个虚拟角色对应的技能或者增益效果的数据结构中记录的是每个客户端的游戏逻辑帧结束时间,使得游戏程序在调用设置玩家技能冷却时间接口的时候,根据数据结构中记录的数据对技能冷却持续时间、技能冷却暂停时间或者是技能冷却加速时间进行设置,使得服务器和客户端中的技能冷却系统和增益效果计时系统就能按照设定的冷却时间,在个人定制化的冷却时间参数作用下使得目标虚拟角色以期望的方式运行。
本申请通过拆分独立每个玩家角色上的游戏逻辑帧,实现了单独控制单个玩家角色身上的技能冷却时间和增益效果的计时时间,实现了原来无法实现的玩家独立计时功能,提高了游戏的可玩性和执行效率,能够满足大量玩家同时在线的情况。
其中,处理器120可以执行图8所示方法中的步骤。图8是示出了根据本申请一实施例的虚拟角色的状态控制方法的示意性流程图,应用于客户端,所述服务器端通过通信网络与至少两个客户端进行数据交互,包括步骤802至步骤806。
步骤802:构建虚拟角色对应的数据结构和至少一个状态逻辑帧时间轴。
步骤804:生成指向目标虚拟角色的状态变化请求并将所述状态变化请求发送至服务器。
步骤806:在按照统一的系统逻辑帧时间轴以逻辑帧为单位对所述目标虚拟角色进行处理的过程中,所述目标虚拟角色对应的客户端响应于服务器的通知,改变所述目标虚拟角色的执行状态并进行展示。
在本申请的实施例中,所述目标虚拟角色对应的客户端响应于服务器的通知,改变所述目标虚拟角色的执行状态并进行展示,包括步骤902至步骤906。
步骤902:响应于服务器的通知,调用目标虚拟角色对应的主循环函数中的状态逻辑帧函数。
步骤904:通过所述状态逻辑帧函数在所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中添加状态变化标记。
步骤906:根据所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中的状态变化标记,确认当前状态逻辑帧以及当前状态逻辑帧对应的所述目标虚拟角色的执行状态并进行展示。
在本申请的实施例中,确认当前状态逻辑帧以及当前状态逻辑帧对应的所述目标虚拟角色的执行状态并进行展示,包括步骤1002至步骤1004。
步骤1002:调用所述主循环函数中的状态结算函数,通过所述状态结算函数兵根据当前状态逻辑帧,计算出所述目标虚拟角色的执行状态的剩余时间。
步骤1004:将所述目标虚拟角色的执行状态的剩余时间通过用户交互界面进行展示。
在本申请的实施例中,在玩家角色的主循环函数中,还会调用一次技能冷却时间系统的状态结算函数,例如,冷却时间结算函数和增益效果结算函数,在这些状态结算函数中,也会根据之前设定的时间相关的配置项,重新计算实际技能冷却时间或者增益效果的结束时间来保持时间的同步。
图11示出了本说明书一实施例的虚拟角色的状态控制方法,该虚拟角色的状态控制方法以对网络游戏中的虚拟角色A将虚拟角色B的技能冷却时间暂停5秒为例进行描述,包括步骤1102至步骤1112。
步骤1102:玩家A通过客户端A控制虚拟角色A,向玩家B通过客户端B控制的虚拟角色B释放“技能冷却时间暂停5秒”的技能。
步骤1104:服务器响应于客户端A指向虚拟角色B的“技能冷却时间暂停5秒”的状态变化请求,在虚拟角色B对应的数据结构中添加“暂停5秒”的状态变化参数。
步骤1106:在所述虚拟角色B对应的技能冷却时间状态逻辑帧时间轴中添加“暂停5秒”对应的状态变化标记并同步至客户端B。
步骤1108:在按照统一的系统逻辑帧时间轴以逻辑帧为单位对虚拟角色B进行处理的过程中,根据所述“暂停5秒”对应的状态变化标记维持虚拟角色B对应的技能冷却时间状态逻辑帧时间轴中的状态逻辑帧暂停5秒对应的帧数。
步骤1110:客户端B在虚拟角色B对应的技能冷却时间状态逻辑帧时间轴中的状态逻辑帧同步暂停5秒对应的帧数并通过交互界面显示给玩家B。
步骤1112:在5秒时间段经过后,虚拟角色B对应的技能冷却时间状态逻辑帧时间轴中的状态逻辑恢复正常的自增1操作,继续按照与系统逻辑帧时间轴同步计算技能冷却剩余的时间。
与上述方法实施例相对应,本说明书还提供了虚拟角色的状态控制装置实施例,图12示出了本说明书一个实施例的虚拟角色的状态控制装置的结构示意图。如图12所示,该装置包括服务器,所述服务器端通过通信网络与至少两个客户端进行数据交互,所述服务器包括:
个人时间轴配置模块1201,被配置为根据每个客户端创建的虚拟角色,构建每个虚拟角色对应的至少一个状态逻辑帧时间轴;
状态标记模块1202,被配置为响应于任一客户端指向目标虚拟角色的状态变化请求,在所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中添加状态变化标记并通知所述目标虚拟角色对应的客户端;
逻辑处理模块1203,被配置为在按照统一的系统逻辑帧时间轴以逻辑帧为单位对每个虚拟角色进行处理的过程中,根据所述状态变化标记维持或改变目标虚拟角色对应的至少一个状态逻辑帧时间轴中的状态逻辑帧的运行;
状态控制模块1204,被配置为根据所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中的状态逻辑帧,对所述目标虚拟角色的执行状态进行控制。
可选地,所述状态标记模块1202进一步被配置为:
根据每个客户端创建的虚拟角色,构建每个虚拟角色对应的数据结构;
响应于任一客户端指向目标虚拟角色的状态变化请求,在所述目标虚拟角色对应的数据结构中添加状态变化参数;
根据所述状态变化参数,在所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中添加状态变化标记。
可选地,所述逻辑处理模块1203进一步被配置为:
在所述系统逻辑帧时间轴中的每一逻辑帧的开始时刻,调用每个虚拟角色对应的主循环函数对每个虚拟角色的行为、属性参数或状态参数进行处理;
在所述系统逻辑帧时间轴中的每一逻辑帧的结束时刻,对每个虚拟角色的视觉效果、外观效果或动画效果进行处理。
可选地,所述逻辑处理模块1203进一步被配置为:
通过目标虚拟角色对应的状态逻辑帧函数,判断所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中是否存在状态变化标记;
若是,则根据所述状态变化标记的对应的标记类型改变对应的至少一个状态逻辑帧时间轴中的状态逻辑帧的运行;
若否,则将所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中的状态逻辑帧自增1。
可选地,所述状态控制模块1204进一步被配置为:
根据所述目标虚拟角色对应的状态变化参数以及至少一个状态逻辑帧时间轴中的状态逻辑帧,通过所述状态结算函数重新计算所述执行状态的结束时间;
将所述执行状态的结束时间与所述系统逻辑帧时间轴进行同步。
与上述方法实施例相对应,本说明书还提供了虚拟角色的状态控制装置实施例,图13示出了本说明书一个实施例的虚拟角色的状态控制装置的结构示意图。如图13所示,该装置包括至少两个客户端,所述服务器端通过通信网络与至少两个客户端进行数据交互,所述客户端包括:
玩家时间轴配置模块1301,被配置为构建虚拟角色对应的数据结构和至少一个状态逻辑帧时间轴;
状态变化请求模块1302,被配置为生成指向目标虚拟角色的状态变化请求并将所述状态变化请求发送至服务器;
状态执行模块1303,被配置为在按照统一的系统逻辑帧时间轴以逻辑帧为单位对所述目标虚拟角色进行处理的过程中,所述目标虚拟角色对应的客户端响应于服务器的通知,改变所述目标虚拟角色的执行状态并进行展示。
可选地,所述状态执行模块1303进一步被配置为:
响应于服务器的通知,调用目标虚拟角色对应的主循环函数中的状态逻辑帧函数;
通过所述状态逻辑帧函数在所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中添加状态变化标记;
根据所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中的状态变化标记,确认当前状态逻辑帧以及当前状态逻辑帧对应的所述目标虚拟角色的执行状态并进行展示。
可选地,所述状态执行模块1303进一步被配置为:
调用所述主循环函数中的状态结算函数,通过所述状态结算函数兵根据当前状态逻辑帧,计算出所述目标虚拟角色的执行状态的剩余时间;
将所述目标虚拟角色的执行状态的剩余时间通过用户交互界面进行展示。
本申请通过拆分独立每个玩家角色上的游戏逻辑帧,实现了单独控制单个玩家的虚拟角色身上的技能冷却时间、增益效果的持续时间和减益效果的持续时间,实现了原来无法实现的个性化定制功能,在执行效率上非常高效,能够满足大量玩家同时在线的情况。
需要说明的是,装置权利要求中的各组成部分应当理解为实现该程序流程各步骤或该方法各步骤所必须建立的功能模块,各个功能模块并非实际的功能分割或者分离限定。由这样一组功能模块限定的装置权利要求应当理解为主要通过说明书记载的计算机程序实现该解决方案的功能模块构架,而不应当理解为主要通过硬件方式实现该解决方案的实体装置。
本申请一实施例还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现以下步骤:
根据每个客户端创建的虚拟角色,构建每个虚拟角色对应的至少一个状态逻辑帧时间轴;
响应于任一客户端指向目标虚拟角色的状态变化请求,在所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中添加状态变化标记并通知所述目标虚拟角色对应的客户端;
在按照统一的系统逻辑帧时间轴以逻辑帧为单位对每个虚拟角色进行处理的过程中,根据所述状态变化标记维持或改变目标虚拟角色对应的至少一个状态逻辑帧时间轴中的状态逻辑帧的运行;
根据所述目标虚拟角色对应的至少一个状态逻辑帧时间轴中的状态逻辑帧,对所述目标虚拟角色的执行状态进行控制。
本申请一实施例还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现以下步骤:
构建虚拟角色对应的数据结构和至少一个状态逻辑帧时间轴;
生成指向目标虚拟角色的状态变化请求并将所述状态变化请求发送至服务器;
在按照统一的系统逻辑帧时间轴以逻辑帧为单位对所述目标虚拟角色进行处理的过程中,所述目标虚拟角色对应的客户端响应于服务器的通知,改变所述目标虚拟角色的执行状态并进行展示。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述虚拟角色的状态控制方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该计算机可读存储介质的技术方案与上述的虚拟角色的状态控制方法的技术方案属于同一构思,计算机可读存储介质的技术方案未详细描述的细节内容,均可以参见上述虚拟角色的状态控制方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。