发明内容
有鉴于此,本发明提供了一种游戏技能同步执行方法及装置、计算设备及计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本发明实施例的第一方面,提供了一种游戏技能同步执行方法,所述方法用于服务器,包括:
接收客户端上传的技能发出指令,获取与所述游戏技能发出指令对应的游戏技能的属性信息并基于所述属性信息确定与所述技能发出指令对应的技能的预测点和命中点;
根据所述属性信息得到所述游戏技能在所述命中点对应的命中效果数据和顿帧时长,并在所述预测点向所述客户端下发顿帧指令;
根据所述属性信息和所述顿帧时长确定同步点;
根据所述命中效果数据得到并向所述客户端下发后续效果数据,在所述命中点等待所述客户端完成顿帧效果至同步点;
根据所述后续效果数据完成所述游戏技能。
可选地,在获取与所述游戏技能发出指令对应的游戏技能的属性信息之后,还包括:
基于所述游戏技能的属性信息为所述游戏技能设置时间轴;
基于所述属性信息确定所述游戏技能的命中时刻;
在所述时间轴上将所述命中时刻标记为所述游戏技能的命中点;
根据所述命中点确定所述游戏技能的预测点。
可选地,根据所述命中点确定所述游戏技能的预测点,包括;
在所述时间轴上基于所述命中点和预设的时间间隔确定所述游戏技能的预测点。
可选地,根据所述属性信息得到所述游戏技能在所述命中点对应的命中效果数据,包括:
基于所述属性信息生成所述与所述游戏技能对应的技能碰撞框和所述技能碰撞框的运动轨迹;
控制所述技能碰撞框沿所述运动轨迹运动至预测点,在所述预测点得到在所述命中点对应的所述游戏技能的命中效果数据。
可选地,在所述预测点得到在所述命中点对应的所述游戏技能的命中效果数据,包括:
在所述碰撞框内有交互对象存在的情况下,确定所述游戏技能命中;
根据所述交互对象和所述游戏技能的属性信息得到在所述游戏技能在所述命中点的命中效果数据。
可选地,在根据所述属性信息得到所述游戏技能在所述命中点对应的命中效果数据和顿帧时长之后,还包括:
将所述命中效果数据存储至预设的存储空间;
在再次执行所述游戏技能时,从所述存储空间中调用所述命中效果数据。
可选地,根据所述属性信息和所述顿帧时长确定同步点,包括:
根据所述属性信息获取顿帧时长;
在所述时间轴上的所述命中点处结合所述顿帧时长得到同步点。
可选地,根据所述后续效果数据完成所述游戏技能,包括:
在所述同步点基于所述后续效果数据结束所述技能。
根据本发明实施例的第二方面,提供了一种游戏技能同步执行方法,所述方法用于客户端,包括:
上传技能发出指令至服务器,从所述服务器获取与所述游戏技能发出指令对应的游戏技能的属性信息;
根据所述属性信息得到与所述游戏技能对应的命中效果数据,执行所述游戏技能对应的技能动作,渲染所述游戏技能的效果;
接收所述服务器下发的顿帧指令,基于所述属性信息得到所述游戏技能的顿帧时长,根据所述顿帧指令确定所述游戏技能的命中点和所述游戏技能的同步点;
在所述命中点执行顿帧效果至所述同步点;
在所述命中点接收所述服务器下发的后续效果数据,基于所述后续效果数据完成所述游戏技能并渲染所述技能的后续效果。
可选地,执行所述游戏技能对应的技能动作,渲染所述游戏技能的效果,包括:
基于所述游戏技能的属性信息确定所述技能对应的准备时长;
在所述准备时长执行所述游戏技能对应的动作;
经过所述准备时长后渲染所述游戏技能的效果。
可选地,基于所述属性信息得到所述游戏技能的顿帧时长,根据所述顿帧指令确定所述游戏技能的命中点和所述游戏技能的同步点,包括:
基于所述游戏技能的属性信息为所述游戏技能设置时间轴;
基于所述属性信息确定所述游戏技能的命中时刻;
在所述时间轴上将所述命中时刻标记为所述游戏技能的命中点;
根据所述顿帧时长与所述命中点在所述时间轴上确定所述游戏技能的同步点。
根据本发明实施例的第三方面,提供了一种游戏技能同步执行装置,用于服务器,所述装置包括:
第一接收模块,被配置为接收客户端上传的技能发出指令,获取与所述游戏技能发出指令对应的游戏技能的属性信息并基于所述属性信息确定与所述技能发出指令对应的技能的预测点和命中点;
顿帧指令模块,被配置为根据所述属性信息得到所述游戏技能在所述命中点对应的命中效果数据和顿帧时长,并在所述预测点向所述客户端下发顿帧指令;
确定模块,被配置为根据所述属性信息和所述顿帧时长确定同步点;
后续效果模块,被配置为根据所述命中效果数据得到并向所述客户端下发后续效果数据,在所述命中点等待所述客户端完成顿帧效果至同步点;
完成模块,被配置为根据所述后续效果数据完成所述游戏技能。
根据本发明实施例的第四方面,提供了一种游戏技能同步执行装置,用于客户端,所述装置包括:
上传模块,被配置为上传技能发出指令至服务器,从所述服务器获取与所述游戏技能发出指令对应的游戏技能的属性信息;
渲染模块,被配置为根据所述属性信息得到与所述技能对应的命中效果数据,执行所述游戏技能对应的技能动作,渲染所述游戏技能的效果;
第二接收模块,被配置为接收所述服务器下发的顿帧指令,基于所述属性信息得到所述游戏技能的顿帧时长,根据所述顿帧指令确定所述游戏技能的命中点和所述游戏技能的同步点;
执行模块,被配置为在所述命中点执行顿帧效果至所述同步点;
第三接收模块,被配置为在所述命中点接收所述服务器下发的后续效果数据,基于所述后续效果数据完成所述游戏技能并渲染所述技能的后续效果。
根据本发明实施例的第五方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现上述任一段所述方法的步骤。
根据本发明实施例的第六方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现上述任一段所述方法的步骤。
本发明提供了应用于服务器的一种游戏技能同步执行方法及装置,首先通过服务器接收客户端上传的技能发出指令,接着确定所述技能的属性信息并基于所述属性信息确定与所述技能对应的预测点和命中点,进而根据所述命中点和所述技能的属性信息确定同步点,所述服务器在所述预测点向所述客户端下发顿帧指令,所述服务器在所述命中点等待所述客户端完成所述技能的顿帧效果至同步点,所述客户端在所述命中点执行顿帧效果至同步点,在所述同步点,所述服务器和所述客户端同时执行所述技能的命中效果并完成所述技能。通过上述操作,实现了服务器与客户端在所述同步点对应的时刻执行的技能可以精准匹配。
本发明还提供了应用于客户端的一种游戏技能同步执行方法及装置,在客户端执行技能的过程中,基于服务器下发的在预设时间差后执行技能命中效果的指令,并在同步点与服务器同步执行游戏技能,确保了在预设时间差后客户端和服务器执行的技能可以精准匹配,实现了技能同步执行的效果。
并且,客户端基于接收服务器下发的各种数据和指令生成和执行技能,可以防止在客户端利用外挂作弊,提高了游戏公平性;在客户端中执行“顿帧”的命中效果,提高了游戏的技能打击感,增加了玩家的用户体验。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
MMORPG游戏:是大型多人在线角色扮演游戏(Massively Multiplayer OnlineRole-Playing Game)的英文简写,在游戏中玩家都要扮演一个虚构角色,并控制该角色的许多活动。
buff:是指网络游戏中各种增益或减益的状态,通常是使用技能为自己或队友增加,也可以通过使用道具获得增益效果。
顿帧:是指攻击方命中目标后,攻击方动作、特效,受击方动作、特效,短暂暂停的表现效果。
技能前摇:是指在动作游戏中,技能释放前(或执行动作前)的准备动作。
技能后摇:是指攻击结束以后的收尾动作。
游戏外挂:是指利用电脑技术针对一个或多个网络游戏,通过改变软件的部分程序制作而成的作弊程序。
在本发明中,提供了一种游戏技能同步执行方法及装置、计算设备及计算机可读存储介质,在下面的实施例中逐一进行详细说明。
本实施例提供了一种游戏技能同步执行方法,用于服务器,参见图1,图1为本实施例提供的用于服务器的游戏技能同步执行方法的流程示意图,包括步骤S102至步骤S110。
S102:接收客户端上传的技能发出指令,获取与所述游戏技能发出指令对应的游戏技能的属性信息并基于所述属性信息确定与所述技能发出指令对应的技能的预测点和命中点。
在大型网游系统中,服务器不仅仅用于存储和交换数据,也包含了负责玩家在游戏内行为的逻辑处理,而这个过程无法在玩家的客户端中完成。在游戏运行的过程中,每一个客户端都需要与服务器建立连接,并且在每一个客户端中只能“关注”到本客户端对应的角色所执行的技能或动作;而对于其他客户端对应的角色,则需要根据服务器下发的数据或者指令进行同步表现。因此服务器作为整个网游系统中“大脑”,由服务器进行整个游戏运行的统筹策划。
在进行游戏的过程中,服务器接收由客户端上传的、根据玩家的操作获取的技能发出指令,服务器在接收到所述技能发出指令后,会确定与所述技能发出指令对应的游戏技能,接着获取与所述游戏技能对应的属性信息,所述属性信息可以包括游戏技能的命中时刻、游戏技能的持续时间等。在所述服务器确定所述游戏技能的命中点后,还会根据所述命中点确定在所述命中点之前,提前告知客户端的预测点。
通过服务器接收客户端上传的技能发出指令,获取与所述技能发出指令对应的游戏技能的属性信息,并基于所述技能发出指令和所述属性信息确定所述游戏技能的预测点和命中点,保证了服务器可以准确地获知游戏技能的命中时刻,并在所述命中时刻之前的预测点通知客户端,确保了所述客户端可以和所述服务器在同一时刻完成技能的命中。
在本实施例的一种可选实施方案中,在获取与所述游戏技能发出指令对应的游戏技能的属性信息之后,还包括:
基于所述游戏技能的属性信息为所述游戏技能设置时间轴;
基于所述属性信息确定所述游戏技能的命中时刻;
在所述时间轴上将所述命中时刻标记为所述游戏技能的命中点;
根据所述命中点确定所述游戏技能的预测点。
在本实施例的一种可选实施方案中,根据所述命中点确定所述游戏技能的预测点,包括;
在所述时间轴上基于所述命中点和预设的时间间隔确定所述游戏技能的预测点。
在实际应用中,服务器获取了游戏技能的属性信息后,还会根据所述属性信息为所述技能设置时间轴,所述时间轴用于表现所述游戏技能在执行的过程中经过的时间点,所述时间轴的长度为所述游戏技能的执行时长。如图2所示,图2为服务器设置的时间轴示意图,其中,图2中的时间轴用于表示一个游戏技能的执行过程,按照箭头方向(也是时间流向)进行执行。图2中的201表示服务器为所述游戏技能设置的预测点,图2中的202表示服务器为所述游戏技能设置的命中点。所述命中点即为所述游戏技能的命中时刻,在所述命中时刻之前,服务器还会根据预设的时间间隔设置预测点,如30ms或20ms,所述预测点用于通知服务器在预设的时间间隔后确定所述游戏技能发生命中并执行所述游戏技能的命中效果。并且,在所述时间轴上的每一个时间点都具有对应的所述技能的运动状态。
通过设置时间轴,并将所述游戏技能的命中时刻标记为所游戏技能的命中点,并在所命中点前设置预测点,保证了服务器和客户端可以有效的确定同一个游戏技能在一个确定的时刻发生命中,并且,通过服务器通知客户端所述游戏技能发生命中,也避免了游戏外挂修改游戏数据的作弊情况。
S104:根据所述属性信息得到所述游戏技能在所述命中点对应的命中效果数据和顿帧时长,并在所述预测点向所述客户端下发顿帧指令。
游戏技能是游戏中战斗的一个重要部分,游戏中的战斗可以由技能触发,游戏中的技能实际上是一套完整的逻辑。在MMORPG游戏中,将提前设计好的游戏技能对应的属性信息存储于服务器,如游戏技能的命中效果数据或是某一游戏技能在命中时的顿帧时长。例如采用配置表的形式,将游戏技能的效果用数据抽象出来,然后依据数据来控制游戏技能的执行。在游戏制作的过程中,可以通过更改属性字段来配置出不同的属性信息。例如在配置表中可以设置:游戏技能的释放过程表,包括技能准备时间,技能可以命中距离等等;各种游戏角色的状态,静态或动态的属性等等;角色状态表,游戏角色在某个状态下能使用或被使用的技能或者buff;以及技能的伤害计算公式等。所述命中效果数据可以包括所述游戏技能在命中时刻,也就是所述命中点的表现效果,例如流血或被击飞等;所述游戏技能在命中时会发生顿帧,在所述属性信息中也保存了所述游戏技能顿帧持续的时间,也就是上述的顿帧时长。
所述服务器在确定所述游戏技能命中后,会向所述客户端发送顿帧指令,所述顿帧指令用于通知客户端在所述游戏技能命中后表现顿帧的效果。
根据所述服务器向所述客户端下发顿帧指令,有效的保证了所述客户端能够有可靠的指令执行顿帧的效果,进一步保证了所述客户端表现游戏效果的准确性。
在本实施例的一种可选实施方案中,根据所述属性信息得到所述游戏技能在所述命中点对应的命中效果数据,包括:
基于所述属性信息生成所述与所述游戏技能对应的技能碰撞框和所述技能碰撞框的运动轨迹;
控制所述技能碰撞框沿所述运动轨迹运动至预测点,在所述预测点得到在所述命中点对应的所述游戏技能的命中效果数据。
在实际应用中,游戏技能会设置用于表现所述游戏技能运动轨迹的碰撞框,在所述碰撞框接触到目标时,即可认为所述游戏技能命中了目标。在服务器设置时间轴并在所述时间轴上设置预测点和命中点后,控制所述碰撞框运动至所述预测点,在所述预测点根据所述技能的属性信息得到在所述命中点的命中效果数据。所述命中效果数据可以包括所述技能命中的展现的动画效果、技能的目标被击中后的动作等。
通过设置技能的碰撞框,并基于所述碰撞框的运动确定所述技能是否命中目标,保证了服务器可以准确、快速的获取技能的效果,并提前获取所述技能的命中效果数据,也保证了可以有效的减小服务器计算的负荷。
在本实施例的一种可选实施方案中,在所述预测点得到在所述命中点对应的所述游戏技能的命中效果数据,包括:
在所述碰撞框内有交互对象存在的情况下,确定所述游戏技能命中;
根据所述交互对象和所述游戏技能的属性信息得到在所述游戏技能在所述命中点的命中效果数据。
在实际应用中,服务器会基于游戏技能的属性信息生成与所述游戏技能对应的技能碰撞框,例如“射箭”这一技能,服务器会按照射出的箭的长度为箭设置碰撞框,在碰撞框的运动过程中,若所述碰撞框内存在有交互对象,即认为箭命中了目标,接着根据所述交互对象和所述技能的属性信息得到所述技能在命中点的命中效果数据。沿用上例,在箭的飞行过程中,若箭的命中目标为人物角色,所述命中效果数据中可以包含所述人物角色在被命中后的流血效果。
又例如,在箭的飞行过程中,若在命中目标前,箭的碰撞框内出现了障碍物,则确定箭未命中目标,并且在命中障碍物前的预测点,服务器会根据障碍物的种类确定命中效果数据,例如所述障碍物为一棵树,则所述命中效果数据中即可包含“箭插在树上”这一画面效果。
在所述游戏执行的过程中,根据所述游戏技能碰撞框内是否存在交互对象确定命中效果数据,进一步保证了服务器可以流畅、准确的判断技能的命中效果,并根据交互对象的不同也会得到不同的命中效果数据,也提升了玩家游戏体验,丰富了游戏内容。
在本实施例的一个可选实施方案中,在根据所述属性信息得到所述游戏技能在所述命中点对应的命中效果数据和顿帧时长之后,还包括:
将所述命中效果数据存储至预设的存储空间;
在再次执行所述游戏技能时,从所述存储空间中调用所述命中效果数据。
在实际应用中,服务器获取命中效果数据之后,需要将所述命中效果数据存储至预先设置的存储空间中,目的是在下一次执行相同的游戏技能时,可以方便、快捷的调用已经生成的命中效果数据,无需服务器再一次生成,减小了服务器的计算量,也减小了服务器的负荷。
S106:根据所述属性信息和所述顿帧时长确定同步点。
在本实施例的一种可选实施方案中,根据所述属性信息和所述顿帧时长确定同步点,包括:
根据所述属性信息获取顿帧时长;
在所述时间轴上的所述命中点处结合所述顿帧时长得到同步点。
在实际应用中,服务器会根据所述游戏技能的属性信息获取所述游戏技能的顿帧时长,例如某一游戏技能,在命中目标后会有1S的停顿效果,也就是顿帧时长,服务器在获取所述顿帧时长后,在与所述游戏技能对应的时间轴上的命中点,添加所述顿帧时长的时间长度后得到同步点。所述同步点用于服务器与客户端同步执行游戏技能命中后的效果。
服务器根据顿帧时长结合命中点得到同步点,进一步保证了服务器和客户端在执行游戏技能时可以同步执行,保证了服务器和客户端的一致性,也确保了客户端根据服务器设置的时刻与服务器同步执行游戏技能的效果,避免了使用游戏外挂的情况。
S108:根据所述命中效果数据得到并向所述客户端下发后续效果数据,在所述命中点等待所述客户端完成顿帧效果至同步点。
在实际应用中,服务器得到命中效果数据后,会根据所述命中效果数据得到所述游戏技能的后续效果数据,接着向客户端下发所述后续效果数据。所述后续效果数据表示所述游戏技能在命中目标后,游戏技能与被命中的目标展示的效果。沿用上述箭的例子,例如箭命中某一游戏人物后,在命中时所述游戏人物会表现流血的效果,在箭命中后,所述游戏人物会执行后退、倒地的动作,所述后退、倒地的动作即为后续效果数据。
服务器向客户端下发所述后续效果数据后,会根据所述游戏技能的顿帧时长进行等待,等待所述客户端命中所述游戏技能、进行顿帧并展示画面效果,所述客户端完成上述步骤的时刻即为同步点。
通过服务器等待客户端至同步点,进一步保证了服务器和客户端可以准确的同步执行游戏技能,提升了游戏玩家的用户体验。
S110:根据所述后续效果数据完成所述游戏技能。
服务器在等待客户端至同步点后,会根据所述后续效果完成所述游戏技能。沿用上例,箭在命中目标后,所述目标会执行流血、后退和倒地的动作,箭也会插在目标身上,所述目标倒地后会维持一小段时间,在这一小段时间后,倒地的目标会消失,所述目标消失后,插在所述目标身上的箭也会一起消失,在所述目标和箭都消失后,即可认为所述游戏技能执行完毕。
根据后续效果数据完成所述游戏技能,保证了可以提升游戏内容的丰富度,使得游戏技能更加完整生动,进一步提升了用户体验。
本实施例提供了应用于服务器的一种游戏技能同步执行方法,首先通过服务器接收客户端上传的技能发出指令,接着确定所述技能的属性信息并基于所述属性信息确定与所述技能对应的预测点和命中点,进而根据所述命中点和所述技能的属性信息确定同步点,所述服务器在所述预测点向所述客户端下发顿帧指令,所述服务器在所述命中点等待所述客户端完成所述技能的顿帧效果至同步点,所述客户端在所述命中点执行顿帧效果至同步点,在所述同步点,所述服务器和所述客户端同时执行所述技能的命中效果并完成所述技能。通过上述操作,实现了服务器与客户端在所述同步点对应的时刻执行的技能可以精准匹配。
另外,通过服务器向客户端下发属性信息,也保证了可以避免游戏外挂对游戏的干扰,提升了玩家的游戏体验。
其次,通过服务器对游戏技能设置对应的时间轴,也确保了游戏技能可以按照预设的执行流程准确地执行,并且在所述时间轴上添加游戏技能的预测点、命中点以及命中点,也可以保证所述游戏技能可以在预设的时间点准确的执行。
本实施例提供了一种游戏技能同步执行方法,用于客户端,参见图3,图3展示了本实施例中游戏技能同步执行方法的流程示意图,包括步骤S302~步骤S310。
S302:上传技能发出指令至服务器,从所述服务器获取与所述游戏技能发出指令对应的游戏技能的属性信息。
在实际应用中,客户端在接收游戏玩家的操作指令后,会根据所述操作指令确定需要释放的技能,并将所述技能对应的技能发出指令上传至服务器,接着从服务器获取所述游戏技能对应的属性信息。其中,所述属性信息包括所述游戏技能的命中效果数据和所述游戏技能执行时游戏中角色的动作等。
具体地,在本实施例提供的游戏技能同步执行方法中,服务器接收客户端上传的技能发出指令后,向客户端下发所述技能对应的属性。所述属性信息包括技能的技能发出角度、技能运动的速度等,所述属性信息可以对技能双方(攻击方和被攻击方)产生影响,因此需要由服务器统一下发,防止在游戏客户端“作弊”的行为。
客户端从服务器接收游戏技能对应的属性信息,保证了客户端可以由服务器统一下发的游戏技能的属性信息,避免了利用游戏外挂对所述属性信息进行修改的情况。
S304:根据所述属性信息得到与所述游戏技能对应的命中效果数据,执行所述游戏技能对应的技能动作,渲染所述游戏技能的效果。
在实际应用中,客户端会基于从服务器接收到的游戏技能的属性信息得到对应的命中效果数据,在接收到所述命中效果数据后,所述游戏技能开始执行,在所述游戏技能实际释放前,客户端还会根据所述游戏技能的属性信息控制游戏角色执行一定的动作,所述动作即为“技能前摇”。
进一步地,在本实施例中,由于服务器在接收到技能发出指令后,立即执行所述技能,而不需要执行在客户端中存在的“技能前摇”,因此服务器相比于客户端具有一个相当于“技能前摇”时间长度的时间差。利用所述时间差,可以弥补所述服务器和所述客户端在通信时的网络延迟,因此,所述时间差,也就是技能前摇的时间长度需要长于一般情况下的网络延迟时间。
在执行技能前摇后,所述游戏技能会根据预设的运动轨迹进行运动并命中目标,在命中目标后,客户端会基于所述游戏技能的属性信息渲染所述游戏技能命中目标后的效果。
通过客户端执行技能前摇,保证了可以通过设置技能前摇来避免服务器与客户端之间通信的延迟,并且基于所述命中效果数据渲染游戏技能的效果,保证了游戏技能可以清晰、准确的展示对应的效果,提升了玩家的用户体验。
在本实施例一个可选地实施方案中,执行所述游戏技能对应的技能动作,渲染所述游戏技能的效果,包括:
基于所述游戏技能的属性信息确定所述技能对应的准备时长;
在所述准备时长执行所述游戏技能对应的动作;
经过所述准备时长后渲染所述游戏技能的效果。
在实际应用中,所述游戏技能的准备时长即为技能前摇的时间长度,客户端基于所述游戏技能的属性信息可以确定准备时长,并在所述准备时长内控制游戏中的人物执行对应的动作,在所述人物执行完成对应的动作后,即可开始渲染所述游戏技能的画面效果。
沿用上述箭的例子,在客户端控制游戏人物射出箭之后,游戏人物会在预设的时间间隔内执行“取箭,拉弓,射箭”这一套动作,在上述一套动作执行完成后,游戏人物会将箭射出,在将箭射出的时刻,客户端开始渲染箭的飞行轨迹和飞行效果。
通过客户端在于所述游戏技能对应的准备时长中执行对应的动作,确保了可以通过预设的准备时长避免客户端与服务器之间的通信延迟,进一步提升了服务器和客户端之间通信的流畅性,也确保了游戏可以流畅的运行,避免了因网络延迟出现的卡顿现象。
S306:接收所述服务器下发的顿帧指令,基于所述属性信息得到所述游戏技能的顿帧时长,根据所述顿帧指令确定所述游戏技能的命中点和所述游戏技能的同步点。
在实际应用中,在客户端接收到所述服务器下发的顿帧指令后,会基于所述游戏技能的属性信息得到所述游戏技能的顿帧时长,并基于所述顿帧指令确定所述游戏技能的命中点和所述游戏技能的同步点。需要说明的是,客户端是在预测点接收服务器下发的顿帧指令的。
例如,沿用上述箭的例子,箭在命中目标后会有一个1s的画面停顿效果,“1S的停顿”即为所述游戏技能对应的属性信息中的顿帧时长。在客户端接收到服务器的顿帧指令后,确定箭会在预设的时间间隔后命中目标,并确定命中目标的时刻即为所述游戏技能的命中点,在所述命中点执行顿帧的1s后,确定1s后的点为客户端与服务器同步执行游戏技能的同步点。
根据服务器的顿帧指令确定命中点和同步点,确保了客户端可以和服务器同步执行游戏技能,保证了客户端与服务器的一致性。
在本实施例一个可选地实施方案中,基于所述属性信息得到所述游戏技能的顿帧时长,根据所述顿帧指令确定所述游戏技能的命中点和所述游戏技能的同步点,包括:
基于所述游戏技能的属性信息为所述游戏技能设置时间轴;
基于所述属性信息确定所述游戏技能的命中时刻;
在所述时间轴上将所述命中时刻标记为所述游戏技能的命中点;
根据所述顿帧时长与所述命中点在所述时间轴上确定所述游戏技能的同步点。
在实际应用中,与服务器同理,客户端也会为所述游戏技能设置对应的时间轴,并且,每一个游戏技能均对应一个时间轴,客户端为游戏技能设置的时间轴与所述服务器与所述游戏技能设置的时间轴相同。
在游戏技能的属性信息中,包括了所述游戏技能的命中时刻,客户端会将所述命中时刻在所述时间轴上进行标记,并将所述命中时刻作为所述游戏技能的命中点。在确定所使用游戏技能的命中点后,客户端还会根据所述游戏技能的顿帧时长确定与服务器的同步点。在所述时间轴上,将所述命中点加上所述顿帧时长即可得到所述同步点。
通过客户端为游戏技能设置时间轴,并将所述游戏技能的命中时刻标记为所游戏技能的命中点,并在所命中点前设置预测点,保证了服务器和客户端可以有效的确定同一个游戏技能在一个确定的时刻发生命中,并且,通过服务器通知客户端所述游戏技能发生命中,也避免了游戏外挂修改游戏数据的作弊情况。
S308:在所述命中点执行顿帧效果至所述同步点。
在实际应用中,客户端在游戏技能命中后根据预设的顿帧时长展示顿帧的画面效果。在所述时间轴上,客户端在所述游戏技能的命中点开始执行顿帧效果,经过预设的游戏技能的顿帧时长后到达所述同步点。
例如,沿用上述箭的例子,技能“射箭”预设的顿帧时长为2S,客户端在确定所述技能“射箭”命中目标后,会减缓游戏画面的效果,在1.5S后加速播放与所述“射箭”技能对应的画面效果。
需要说明的是,在实际应用中,若所述游戏技能在执行的过程中网络波动较大,客户端无法顺利的接收服务器下发的顿帧指令,此时客户端放弃执行顿帧效果,并在时间轴上将命中点改为同步点,在所述同步点与服务器同步执行后续的技能效果。服务器与客户端同理,若在所述游戏技能的执行过程中,网络波动较大,此时服务器无法顺利的在所述预测点向所述客户端下发顿帧指令,则服务器不再在所述命中点等待客户端,将服务器设置的时间轴上的命中点改为同步点,并与所述客户端在所述命中点同步执行后续的技能效果。
通过客户端在所述命中点执行顿帧指令并渲染顿帧的画面效果,保证了所述游戏技能有良好的画面效果,增强了玩家释放技能时的打击感;并且根据网络波动的情况决定是否执行顿帧指令,进一步提升了游戏的流畅性。
S310:在所述命中点接收所述服务器下发的后续效果数据,基于所述后续效果数据完成所述游戏技能并渲染所述技能的后续效果。
在实际应用中,客户端在确定所述游戏技能命中后,在所述命中点接收服务器下发的后续效果数据,所述后续效果数据包括游戏技能在命中目标后展示的效果,如目标倒地、生命值减少,或是游戏技能命中后的画面效果数据,在客户端接收所述后续效果数据后,基于所述后续效果数据在客户端的展示页面中渲染所述游戏技能的后续效果,如上述的游戏人物倒地的画面效果。
本发明实施例提供的应用于客户端的一种游戏技能同步执行方法,客户端基于接收到技能发出指令以及预设的游戏的属性信息,配置与所述游戏技能对应的时间轴,并在所述时间轴上标记所述游戏技能的命中点;然后基于所述游戏技能的属性信息确定顿帧时长,并且在时间轴上基于所述顿帧时长得到同步点,通过上述操作,使得在游戏技能执行至所述同步点时,服务器和客户端同步执行技能命中效果,实现游戏技能在服务器和客户端可以准确匹配,进而提高游戏打击感,也提升了玩家在游戏过程中的战斗体验。
下面以一个具体的游戏场景对本发明提供的一种游戏技能同步执行方法进行进一步说明。如图4所示,图4展示了本实施例提供的一种游戏技能同步执行方法的流程示意图,包括步骤S402至步骤S420。
S402:客户端上传技能发出指令至服务器。
在一个具体的游戏场景中,客户端通过游戏玩家的操作指令确定需要释放的游戏技能,并在游戏玩家确定需要释放所述游戏技能A后,向服务器上传所述技能A的技能发出指令。
S404:服务器接收客户端上传的技能发出指令,获取与所述技能发出指令对应的游戏技能的属性信息并基于所述属性信息确定与所述技能发出指令对应的游戏技能的预测点和命中点。
在服务器接收所述客户端上传技能发出指令后,服务器根据所述技能发出指令获取与所述技能A对应的属性信息,技能A的属性信息包括:“持续2S,顿帧时长1S,前摇动作:拔剑,命中效果:出血,敌方生命值减少100点”。
在服务器获取所述技能A的属性信息后,基于所述属性信息为所述技能A设置对应的时间轴,如图5所示,图5为服务器为游戏技能A设置的时间轴示意图。图5中501表示技能A的开始执行的时间点,502表示技能A的预测点,503表示技能A的命中点,504为技能A与客户端的同步点;在所述开始执行的时间点501和所述预测点502之间的时间段X为技能A执行技能的技能前摇时间,所述预测点502和所述命中点503之间的时间段Y为技能A的顿帧时长。
在实际应用中,在网络游戏运行的过程中,为了防止客户端通过游戏外挂作弊,因此在客户端中涉及到技能攻击双方的数据,所述客户端均通过接受服务器下发的数据来获得。
S406:客户端根据所述属性信息得到与所述游戏技能对应的命中效果数据,执行所述游戏技能对应的技能动作,渲染所述游戏技能的效果。
在服务器为所述技能A设置时间轴的同时,客户端也会为所述技能A设置相同的时间轴,与服务器设置的时间轴不同的是,客户端设置的时间轴中不包含预测点,仅在于服务器对应的时间点接收服务器下发的数据。
S408:服务器根据所述属性信息得到所述游戏技能在所述命中点对应的命中效果数据和顿帧时长,并在所述预测点向所述客户端下发顿帧指令。
S410:客户端接收所述服务器下发的顿帧指令,基于所述属性信息得到所述游戏技能的顿帧时长,根据所述顿帧指令确定所述游戏技能的命中点和所述游戏技能的同步点。
S412:服务器根据所述属性信息和所述顿帧时长确定同步点。
S414:服务器根据所述命中效果数据得到并向所述客户端下发后续效果数据,在所述命中点等待所述客户端完成顿帧效果至同步点。
S416:客户端在所述命中点执行顿帧效果至所述同步点。
S418:客户端在所述命中点接收所述服务器下发的后续效果数据,基于所述后续效果数据完成所述游戏技能并渲染所述技能的后续效果。
S420:服务器根据所述后续效果数据完成所述游戏技能。
如图6所示,图6为服务器和客户端设置的时间轴并进行交互的示意图,其中,上部的时间轴为服务器的时间轴,下部的时间轴为客户端的时间轴,601为技能A开始执行的时间点,602为服务器接收客户端上传的技能发出指令的时间点,603为服务器设置的预测点,604为服务器设置的命中点,605为客户端设置的命中点,605和604均处于同一时刻,606为服务器设置的同步点,607为客户端设置的同步点,606和607均处于同一时刻,608为服务器结束技能A的时间点,609为客户端结束技能A的时间点,608和609均处于同一时刻。
客户端在技能A发出后开始执行,并在开始执行的时间点向服务器上传技能发出指令,服务器接收到所述技能发出指令后向服务器下发技能A的属性信息:“持续2S,顿帧时长1S,前摇动作:拔剑,命中效果:出血,敌方生命值减少100点”,客户端在接收到技能A的属性信息后,经过预设的技能A的前摇时间后,在于服务器时间轴上的与预测点对应的时间点接收到服务器下发的顿帧指令,此时客户端确定在预设的时间间隔1S后技能A会命中目标。需要说明的是,在客户端之前服务器已经获知了技能A的命中。
客户端在接收到顿帧指令后,确定所述技能A的碰撞框中存在交互对象“敌人”,如图7所示,图7为释放技能A时客户端的场景示意图,图7中701为释放技能A的、由玩家控制的游戏角色,702为技能A的释放目标“敌人”,703为技能A的碰撞框。在所述碰撞框703接触到“敌人”702后,客户端确认技能A在命中点命中了目标,此时服务器也执行技能A至命中点并确认命中目标,并且服务器在所述命中点开始等待客户端执行顿帧效果。在所述命中点客户端根据技能A的顿帧时长“1S”,在前0.5S内减缓画面的播放速度,并在后0.5S内进行加速,保证在1S内完成技能A的命中效果展示。
在客户端完成顿帧效果的展示、服务器完成对客户端的等待后,所述服务器和所述客户端均到达时间轴上的同步点,表明服务器和客户端在同步点标记的时刻开始同步执行游戏技能。
并在技能A执行通过所述同步点时,客户端和服务器开始同步执行技能A的后续效果:“敌方倒地”。如图8所示,图8为技能A释放后客户端的游戏场景示意图,其中801为释放技能A的由玩家控制的游戏角色,802为受到技能A攻击的敌方游戏角色。在所述技能A命中目标“敌人”后,802在被技能A命中后,客户端展示后续效果“敌方倒地”,此时对应的,客户端中展示的画面如图8所示,“敌方”倒地。需要说明的是,客户端渲染所述后续效果是在时间轴上的同步点至时间轴的终点这一时间间隔内完成的。
通过本实施例提供的一种游戏技能同步执行方法,服务器和客户端分别对同一个游戏技能设置时间轴,有效地保证了客户端和服务器可以准确的执行技能并在相同的时间点进行同步,确保了游戏的流畅性,提升了玩家的游戏体验。
并且,通过服务器和客户端在同步点同步执行技能,保证了客户端在顿帧效果完成后,可以准确地与服务器同步执行游戏技能,进一步保证了技能执行的过程中,客户端和服务器可以准确的同步执行游戏技能。
本实施例提供了一种游戏技能同步执行装置,用于服务器,参见图9,所述装置包括:
接收模块902,被配置为接收客户端上传的技能发出指令,获取与所述游戏技能发出指令对应的游戏技能的属性信息并基于所述属性信息确定与所述技能发出指令对应的技能的预测点和命中点;
属性信息模块904,被配置为根据所述属性信息得到所述游戏技能在所述命中点对应的命中效果数据和顿帧时长,并在所述预测点向所述客户端下发顿帧指令;
同步点模块906,被配置为根据所述属性信息和所述顿帧时长确定同步点;
等待模块908,被配置为根据所述命中效果数据得到并向所述客户端下发后续效果数据,在所述命中点等待所述客户端完成顿帧效果至同步点;
完成模块910,被配置为根据所述后续效果数据完成所述游戏技能。
所述装置还包括:
第一时间轴模块912,所述第一时间轴模块912被配置为基于所述游戏技能的属性信息为所述游戏技能设置时间轴;
基于所述属性信息确定所述游戏技能的命中时刻;
在所述时间轴上将所述命中时刻标记为所述游戏技能的命中点;
根据所述命中点确定所述游戏技能的预测点。
所述第一时间轴模块912被进一步配置为在所述时间轴上基于所述命中点和预设的时间间隔确定所述游戏技能的预测点。
所述属性信息模块904被进一步配置为基于所述属性信息生成所述与所述游戏技能对应的技能碰撞框和所述技能碰撞框的运动轨迹;
控制所述技能碰撞框沿所述运动轨迹运动至预测点,在所述预测点得到在所述命中点对应的所述游戏技能的命中效果数据。
所述属性信息模块904被进一步配置为在所述碰撞框内有交互对象存在的情况下,确定所述游戏技能命中;
根据所述交互对象和所述游戏技能的属性信息得到在所述游戏技能在所述命中点的命中效果数据。
所述装置还包括:
存储模块914,被配置为将所述命中效果数据存储至预设的存储空间;
在再次执行所述游戏技能时,从所述存储空间中调用所述命中效果数据。
所述同步点模块906被进一步配置为根据所述属性信息获取顿帧时长;
在所述时间轴上的所述命中点处结合所述顿帧时长得到同步点。
所述完成模块910被进一步配置为在所述同步点基于所述后续效果数据结束所述技能。
本发明提供了应用于服务器的一种游戏技能同步执行装置,首先通过服务器接收客户端上传的技能发出指令,接着确定所述技能的属性信息并基于所述属性信息确定与所述技能对应的预测点和命中点,进而根据所述命中点和所述技能的属性信息确定同步点,所述服务器在所述预测点向所述客户端下发顿帧指令,所述服务器在所述命中点等待所述客户端完成所述技能的顿帧效果至同步点,所述客户端在所述命中点执行顿帧效果至同步点,在所述同步点,所述服务器和所述客户端同时执行所述技能的命中效果并完成所述技能。通过上述操作,实现了服务器与客户端在所述同步点对应的时刻执行的技能可以精准匹配。
另外,通过服务器向客户端下发属性信息,也保证了可以避免游戏外挂对游戏的干扰,提升了玩家的游戏体验。
其次,通过服务器对游戏技能设置对应的时间轴,也确保了游戏技能可以按照预设的执行流程准确地执行,并且在所述时间轴上添加游戏技能的预测点、命中点以及命中点,也可以保证所述游戏技能可以在预设的时间点准确的执行。
本实施例提供了一种游戏技能同步执行装置,用于客户端,如图10所示,所述装置包括:
上传模块1002,被配置为上传技能发出指令至服务器,从所述服务器获取与所述游戏技能发出指令对应的游戏技能的属性信息;
渲染模块1004,被配置为根据所述属性信息得到与所述游戏技能对应的命中效果数据,执行所述游戏技能对应的技能动作,渲染所述游戏技能的效果;
确定模块1006,被配置为接收所述服务器下发的顿帧指令,基于所述属性信息得到所述游戏技能的顿帧时长,根据所述顿帧指令确定所述游戏技能的命中点和所述游戏技能的同步点;
顿帧模块1008,被配置为在所述命中点执行顿帧效果至所述同步点;
后续效果模块1010,被配置为在所述命中点接收所述服务器下发的后续效果数据,基于所述后续效果数据完成所述游戏技能并渲染所述技能的后续效果。
所述渲染模块1004被进一步配置为基于所述游戏技能的属性信息确定所述技能对应的准备时长;
在所述准备时长执行所述游戏技能对应的动作;
经过所述准备时长后渲染所述游戏技能的效果。
所述确定模块1006被进一步配置为基于所述游戏技能的属性信息为所述游戏技能设置时间轴;
基于所述属性信息确定所述游戏技能的命中时刻;
在所述时间轴上将所述命中时刻标记为所述游戏技能的命中点;
根据所述顿帧时长与所述命中点在所述时间轴上确定所述游戏技能的同步点。
本发明还提供了应用于客户端的一种游戏技能同步执行装置,在客户端执行技能的过程中,基于服务器下发的在预设时间差后执行技能命中效果的指令,并在同步点与服务器同步执行游戏技能,确保了在预设时间差后客户端和服务器执行的技能可以精准匹配,实现了技能同步执行的效果。
并且,客户端基于接收服务器下发的各种数据和指令生成和执行技能,可以防止在客户端利用外挂作弊,提高了游戏公平性;在客户端中执行“顿帧”的命中效果,提高了游戏的技能打击感,增加了玩家的用户体验。
上述为本实施例的一种用于服务器和客户端的游戏技能同步执行装置的示意性方案。需要说明的是,该装置的技术方案与前述的用于服务器的游戏技能同步执行方法以及用于客户端的游戏技能同步执行方法的技术方案属于同一构思,所述游戏技能同步执行装置的技术方案未详细描述的细节内容,均可以参见前述的游戏技能同步执行方法的技术方案的描述。所述游戏技能同步执行方法包括的具体内容已在前述实施例中提供,在此不再赘述。
本实施例提供了一种计算设备1100,参见图11所示。
图11是示出了根据本说明书一实施例的计算设备1100的结构框图。该计算设备1100的部件包括但不限于存储器1110和处理器1120。处理器1120与存储器1110通过总线1130相连接,数据库1150用于保存数据。
计算设备1100还包括接入设备1140,接入设备1140使得计算设备1100能够经由一个或多个网络1160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备1140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备1100的上述部件以及图11中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图11所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备1100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备1100还可以是移动式或静止式的服务器。
其中,处理器1120可以执行前述实施例提供的技能同步执行的方法中的步骤。具体步骤在本实施例不再赘述。
本发明一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述游戏技能同步执行方法中的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的游戏技能同步执行方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见前述技能同步执行的方法的技术方案的描述。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本发明优选实施例只是用于帮助阐述本发明。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。