CN111744177A - 游戏数据处理方法和装置、存储介质和电子设备 - Google Patents
游戏数据处理方法和装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN111744177A CN111744177A CN202010738506.8A CN202010738506A CN111744177A CN 111744177 A CN111744177 A CN 111744177A CN 202010738506 A CN202010738506 A CN 202010738506A CN 111744177 A CN111744177 A CN 111744177A
- Authority
- CN
- China
- Prior art keywords
- game
- game program
- frame
- logic
- interruption
- 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.)
- Granted
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/40—Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
- A63F13/44—Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment involving timing of operations, e.g. performing an action within a time slot
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/538—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for performing operations on behalf of the game client, e.g. rendering
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种游戏数据处理方法和装置、存储介质和电子设备,其中,该方法包括:在运行的第一游戏程序出现中断的情况下,获取第一游戏程序在中断之前的一组逻辑帧,其中,在第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立;对一组逻辑帧中的逻辑进行批量执行,得到第一游戏程序在中断之前的最后逻辑状态;在第一游戏程序的中断消除时,在第一游戏程序中根据最后逻辑状态对最后一个UI帧进行画面渲染,并在第一游戏程序中从最后逻辑状态开始继续运行。采用上述技术方案,解决了相关技术中,在对游戏数据进行处理时,对于不同的游戏类型和游戏表现,存在用户体验差、开发难度大的问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种游戏数据处理方法和装置、存储介质和电子设备。
背景技术
目前,对于不同的对战游戏类型来说,例如,休闲,竞技,敏捷,物理小游戏等游戏类型,需要根据具体的游戏类型和游戏应用场景,采用不同的逻辑架构。
例如,有的游戏采用服务端计算逻辑,客户端只负责渲染表现的方式,但是,在有网络延迟时,会影响游戏表现,影响用户体验;有的游戏采用玩家各自玩单机,中途同步分数,结算使同步胜负的方式,但是,在这种方式下,玩家之间无法交互、且玩家的画面不同步,影响用户体验;有的游戏采用回合开始同步指令,回合结束同步状态的方式,但是,在有网络延迟时,会出现玩家之间的画面不同步的现象;有的游戏会采用逻辑帧严格同步的方式,但是,对于不同的客户端,在实际应用中,难以做到严格保证一致性。
针对相关技术中,在对游戏数据进行处理时,对于不同的游戏类型和游戏表现,存在用户体验差、开发难度大的问题,尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种游戏数据处理方法和装置、存储介质和电子设备,以至少解决相关技术中,在对游戏数据进行处理时,对于不同的游戏类型和游戏表现,存在用户体验差、开发难度大的技术问题。
根据本发明实施例的一个方面,提供了一种游戏数据处理方法,包括:在运行的第一游戏程序出现中断的情况下,获取上述第一游戏程序在上述中断之前的一组逻辑帧,其中,在上述第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立;对上述一组逻辑帧中的逻辑进行批量执行,得到上述第一游戏程序在上述中断之前的最后逻辑状态;在上述第一游戏程序的上述中断消除时,在上述第一游戏程序中根据上述最后逻辑状态对最后一个UI帧进行画面渲染,并在上述第一游戏程序中从上述最后逻辑状态开始继续运行,其中,上述最后一个UI帧为上述第一游戏程序在上述中断之前的最后一个UI帧。
根据本发明实施例的另一方面,还提供了一种游戏数据处理装置,包括:第一获取单元,用于在运行的第一游戏程序出现中断的情况下,获取上述第一游戏程序在上述中断之前的一组逻辑帧,其中,在上述第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立;第一处理单元,用于对上述一组逻辑帧中的逻辑进行批量执行,得到上述第一游戏程序在上述中断之前的最后逻辑状态;第二处理单元,用于在上述第一游戏程序的上述中断消除时,在上述第一游戏程序中根据上述最后逻辑状态对最后一个UI帧进行画面渲染,并在上述第一游戏程序中从上述最后逻辑状态开始继续运行,其中,上述最后一个UI帧为上述第一游戏程序在上述中断之前的最后一个UI帧。
根据本发明实施例的又一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述游戏数据处理方法的各种可选实现方式中提供的方法。
根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述游戏数据处理方法。
通过本发明,对于第一游戏应用程序中的游戏框架来说,设置逻辑帧和UI帧相互独立,在运行的第一游戏程序出现中断的情况下,获取第一游戏应用程序在中断之前的一组逻辑帧,将一组逻辑帧中的逻辑进行批量执行,得到第一游戏程序在中断之前的最后逻辑状态,只要第一游戏程序的中断消除时,只需要在第一游戏程序中根据最后逻辑状态对最后一个UI帧进行画面渲染,以及在第一游戏程序中从最后逻辑状态开始继续运行,即可以使第一游戏程序继续运行,其中,上述最后一个UI帧为上述第一游戏程序在上述中断之前的最后一个UI帧。采用上述技术方案,由于第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立,在运行的第一游戏程序出现中断的情况下,通过批量执行一组逻辑帧得到中断之前最后逻辑状态,在第一游戏程序中断消除的时刻,不需要对全部的中断画面进行渲染,而仅仅需要根据最后逻辑状态渲染最后一个UI帧即可,由于逻辑帧和UI帧相互独立,逻辑帧的运行也可以不用考虑UI帧,只需要从最后逻辑状态开始继续运行即可,这种方式在出现中断时,游戏画面表现较好,提高了用户体验,对于逻辑帧来说,极大地提高了计算效率。并且,这种方式可以通用性强,可移植性好,能够适用于多种游戏类型和游戏表现场景。解决了相关技术中,在对游戏数据进行处理时,对于不同的游戏类型和游戏表现,存在用户体验差、开发难度大的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种游戏数据处理方法的应用环境的示意图;
图2是根据本发明实施例的一种可选的游戏数据处理方法的流程示意图;
图3是根据本发明实施例的一种可选的第一游戏程序中断过程的示意图;
图4是根据本发明实施例的一种可选的游戏框架的整体架构图示意图;
图5是根据本发明实施例的一种可选的帧同步逻辑框架的UML类图的示意图;
图6是根据本发明实施例的另一种可选的双层状态机的示意图;
图7是根据本发明实施例的一种可选的Box2d物理引擎和帧同步结合的代码注入的示意图;
图8是根据本发明实施例的一种可选的游戏数据处理装置的结构示意图;
图9是根据本发明实施例的一种可选的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例中涉及到的技术术语包括:
1、帧同步:客户端发送游戏输入指令到服务器,服务器广播转发所有客户端的输入指令,客户端根据收到的所有游戏指令来做游戏运算和显示,多个客户端表现效果完全一致的一种技术方案。
2、帧同步框架:游戏逻辑和渲染分离,单向依赖解耦合的程序技术架构。
3、追帧复盘:指重启游戏或者网络断线重连后游戏逻辑的恢复和继续。
4、一致性校验:帧同步游戏每一帧运行后校验不同的客户端运行结果是否完全一致。
5、UI:泛指游戏渲染表现。
6、渲染帧率:游戏渲染画面每秒刷新的频率,通常为60帧。
7、网络帧率:服务端每秒下发的帧同步指令频率,通常为16帧或者30帧。
8、逻辑帧率:游戏逻辑每秒运算的频率,通常与网络帧率保持一致或者更高。
根据本发明实施例的一个方面,提供了一种游戏数据处理方法。可选地,上述游戏数据处理方法可以但不限于应用于如图1所示的应用环境中。如图1所示,在终端设备102运行的第一游戏程序出现中断的情况下,服务器104获取上述第一游戏程序在上述中断之前的一组逻辑帧,其中,在上述第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立;对上述一组逻辑帧中的逻辑进行批量执行,得到上述第一游戏程序在上述中断之前的最后逻辑状态;在上述第一游戏程序的上述中断消除时,在终端设备102上的上述第一游戏程序中根据上述最后逻辑状态对最后一个UI帧进行画面渲染,并在上述第一游戏程序中从上述最后逻辑状态开始继续运行,其中,上述最后一个UI帧为上述第一游戏程序在上述中断之前的最后一个UI帧。以上仅为一种示例,本申请实施例在此不作限定。
需要说明的是,上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
可选地,上述方法可以应用于多种对战游戏类型,策略对战游戏,休闲类型游戏,竞技类型游戏,敏捷类型游戏,物理小游戏,例如,即时战略游戏(Real-Time StrategyGame,简称RTS),多人在线战术竞技游戏(Multiplayer Online Battle Arena,简称MOBA)、H5对战小游戏等的场景中,本实施例在此不作任何限定。
可选地,在本实施例中,上述终端设备可以是配置有目标客户端的终端设备,可以包括但不限于以下至少之一:手机(如Android手机、iOS手机等)、笔记本电脑、平板电脑、掌上电脑、MID(Mobile Internet Devices,移动互联网设备)、PAD、台式电脑、智能电视等。目标客户端可以是视频客户端、即时通信客户端、浏览器客户端、教育客户端等。上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、WIFI及其他实现无线通信的网络。上述服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群,或者是云服务器。上述只是一种示例,本实施例对此不做任何限定。
可选地,在本实施例中,作为一种可选的实施方式,该方法可以由服务器执行,也可以由终端设备执行,或者由服务器和终端设备共同执行,本实施例中,以由服务器(例如,上述服务器104)执行为例进行说明。如图2所示,上述游戏数据处理方法的流程可以包括步骤:
步骤S202,在运行的第一游戏程序出现中断的情况下,获取上述第一游戏程序在上述中断之前的一组逻辑帧,其中,在上述第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立。
步骤S204,对上述一组逻辑帧中的逻辑进行批量执行,得到上述第一游戏程序在上述中断之前的最后逻辑状态。
步骤S206,在上述第一游戏程序的上述中断消除时,在上述第一游戏程序中根据上述最后逻辑状态对最后一个UI帧进行画面渲染,并在上述第一游戏程序中从上述最后逻辑状态开始继续运行,其中,上述最后一个UI帧为上述第一游戏程序在上述中断之前的最后一个UI帧。
可选地,上述第一游戏应用程序可以为多种对战游戏类型,休闲类型游戏,竞技类型游戏,敏捷类型游戏,物理小游戏,例如,即时战略游戏(Real-Time Strategy Game,简称RTS),多人在线战术竞技游戏(Multiplayer Online Battle Arena,简称MOBA),H5对战小游戏等,本实施例在此不作任何限定。
对于第一游戏程序来说,该第一游戏程序所使用的游戏框架下的逻辑帧和UI帧被设置为相互独立。其中,逻辑帧用于实现第一游戏程序中的预测/回滚算法,UI帧用于实现第一游戏程序的游戏画面渲染表现,通过设置辑帧和UI帧相互独立,能够分别实现预表现和预测/回滚算法,不仅非常容易实现,而且在开发对手感要求比较高的即时操作游戏时也非常方便。
在上述第一游戏程序运行过程中出现中断的情况下,如果由于网络问题使第一游戏程序出现中断,如图3所示,可以在第一游戏程序中断开始时刻和中断消除时刻之间的任意一个时刻,去获取第一游戏程序在中断之前的一组逻辑帧。
然后,在第一游戏程序中断开始时刻和中断消除时刻之间的任意一个时刻,对上述一组逻辑帧中的逻辑进行批量执行,得到第一游戏程序在第一游戏程序中断之前的最后逻辑状态。
最后,只要第一游戏程序的中断消除,即可以在第一游戏程序中根据最后逻辑状态对最后一个UI帧的游戏画面进行渲染,同时,从得到的最后逻辑状态开始继续运行第一游戏程序,其中,上述最后一个UI帧为上述第一游戏程序在上述中断之前的最后一个UI帧。
需要说明的是,可以在第一游戏程序中断消除之前,预先获取最后逻辑状态,也可在第一游戏程序中断消除时刻获取最后逻辑状态。可理解,本申请实施例对具体在什么时刻获取逻辑状态不作任何限定。
举例来说,如图3所示,当第一游戏程序出现中断的情况下,可以在第一游戏程序中断开始时刻和第一游戏程序中断消除时刻的任一时刻,通过网络层将第一游戏程序中断之前的所有逻辑帧(如上述一组逻辑帧)传输给第一游戏程序对应的服务器,第一游戏程序对应的服务器根据所有逻辑帧,运行到第一游戏程序中断之前的最后逻辑状态。上述所有逻辑帧可以一起执行,不用等UI帧,不用考虑UI中帧率的问题,也不用考虑UI帧中平滑显示的问题。并且,可以在第一游戏程序中断开始时刻和第一游戏程序中断消除时刻的任一时刻,获取第一游戏程序中断之前的最后逻辑状态。在第一游戏程序中断消除时刻,假设第一游戏程序中断了10分钟,则不用渲染中断了的10分钟的全部游戏画面,而仅需要渲染最后一个UI帧的游戏画面即可,并且从最后逻辑状态开始继续运行第一游戏程序。
按照上述方式实现追帧复盘,不管是网络卡顿,还是游戏重启,只需要网络层提供连续的帧数据(一组逻辑帧),游戏逻辑自动支持追帧复盘,由于逻辑帧与UI帧分离,追帧复盘时,连续的帧数据(一组逻辑帧)可以一次性执行完,UI效果直接跳过,只渲染最后一个UI帧,达到了追帧复盘的效果。
通过本实施例,对于第一游戏应用程序中的游戏框架来说,设置逻辑帧和UI帧相互独立,在运行的第一游戏程序出现中断的情况下,获取第一游戏应用程序在中断之前的一组逻辑帧,将一组逻辑帧中的逻辑进行批量执行,得到第一游戏程序在中断之前的最后逻辑状态,只要第一游戏程序的中断消除时,只需要在第一游戏程序中根据最后逻辑状态对最后一个UI帧进行画面渲染,以及在第一游戏程序中从最后逻辑状态开始继续运行,即可以使第一游戏程序继续运行,其中,上述最后一个UI帧为上述第一游戏程序在上述中断之前的最后一个UI帧。采用上述技术方案,由于第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立,在运行的第一游戏程序出现中断的情况下,通过批量执行一组逻辑帧得到中断之前最后逻辑状态,在第一游戏程序中断消除的时刻,不需要对全部的中断画面进行渲染,而仅仅需要根据最后逻辑状态渲染最后一个UI帧即可,由于逻辑帧和UI帧相互独立,逻辑帧的运行也可以不用考虑UI帧,只需要从最后逻辑状态开始继续运行即可,这种方式在出现中断时,游戏画面表现较好,提高了用户体验,对于逻辑帧来说,极大地提高了计算效率。并且,这种方式可以通用性强,可移植性好,能够适用于多种游戏类型和游戏表现场景。解决了相关技术中,在对游戏数据进行处理时,对于不同的游戏类型和游戏表现,存在用户体验差、开发难度大的问题。
可选地,在本实施例中,上述对上述一组逻辑帧中的逻辑进行批量执行,得到上述第一游戏程序在上述中断之前的最后逻辑状态,包括:在上述第一游戏程序的上述中断消除时,对上述一组逻辑帧中的逻辑进行批量执行,得到上述第一游戏程序在上述中断之前的最后逻辑状态。
可选地,可以在第一游戏程序中断消除的时刻,开始对一组逻辑帧中的逻辑进行批量执行,来得到第一游戏程序在上述中断之前的最后逻辑状态。
通过本实施例,只要第一游戏程序中断消除,就开始批量执行一组逻辑帧中的逻辑,来得到最后逻辑状态,使第一游戏程序可以在中断消除的时刻,立即从最后逻辑状态开始继续运行,保证了第一游戏程序运行的准确率。
可选地,在本实施例中,上述方法还包括:在上述第一游戏程序中检测到第一逻辑帧的情况下,通过上述第一逻辑帧触发上述第一游戏程序中的第一物理引擎进行更新,其中,在上述第一游戏程序中的游戏框架下的上述第一物理引擎被设置为允许被逻辑帧触发更新。
可选地,第一游戏程序的游戏框架下创建第一物理引擎,该第一物理引擎可以理解为模拟真实事件(例如,碰撞)的引擎。并且,可以通过逻辑帧触发该物理引擎的更新。
在对战游戏中,需要保证两个客户端保持物理引擎的更新(更新物理引擎模拟的事件中的物体的状态,例如,位置,速度,旋转,碰撞信息等)的频率一致,通过逻辑帧触发物理引擎的更新,可以使两个客户端保持一致。
当第一游戏程序中检测到了第一逻辑帧,可以通过该第一逻辑帧触发第一物理引擎进行更新,对于运行第一游戏程序对应的第一客户端,可以通过上述第一物理引擎使第一客户端更新为第一状态。
例如,以桌球游戏为例,在第一客户端上的第一游戏程序运行过程中,当台球杆击中桌球时,即可以检测到台球杆击中桌球对应的第一逻辑帧,此时,可以通过该第一逻辑帧更新第一物理引擎,使第一客户端更新为第一状态。
可选地,在本实施例中,上述方法还包括:在第二游戏程序中检测到第二逻辑帧的情况下,通过上述第二逻辑帧触发上述第二游戏程序中的第二物理引擎进行更新,其中,在上述第二游戏程序中的上述游戏框架下的上述第二物理引擎被设置为允许被逻辑帧触发更新,上述第一游戏程序和上述第二游戏程序为同一游戏的不同客户端,上述第一游戏程序和上述第二游戏程序当前运行相同的一局游戏,上述第一逻辑帧和上述第二逻辑帧为上述一局游戏中产生的同步的逻辑帧,上述第一逻辑帧和上述第二逻辑帧用于将上述第一物理引擎和上述第二物理引擎更新到同步的状态。
可选地,上述第一游戏程序和上述第二游戏程序为同一游戏的不同客户端,上述第二游戏程序中的上述游戏框架下的上述第二物理引擎被设置为允许被逻辑帧触发更新,上述第一游戏程序和上述第二游戏程序当前运行相同的一局游戏。
当第二游戏程序的运行过程中检测到了第二逻辑帧,可以通过该第二逻辑帧触发第二游戏程序中的第二物理引擎进行更新,对于运行第二游戏程序对应的第二客户端,可以通过上述第二物理引擎使第二客户端更新为第二状态。
例如,以桌球游戏为例,在第二客户端上的第二游戏程序运行过程中,当台球杆击中桌球时,即可以检测到台球杆击中桌球对应的第二逻辑帧,此时,可以通过该第二逻辑帧更新第二物理引擎,使第二客户端更新为第二状态。
其中,上述第一逻辑帧和上述第二逻辑帧为上述一局游戏中产生的同步的逻辑帧,上述第一逻辑帧和上述第二逻辑帧用于将上述第一物理引擎和上述第二物理引擎更新到同步的状态。
通过本实施例,通过第一逻辑帧和第二逻辑帧,能够使运行同一游戏的两个客户端保持同步,达到了游戏状态同步的效果。
可选地,在本实施例中,上述方法还包括:获取第一运算函数执行计算得到的第一输出结果,其中,上述第一运算函数为在更新上述第一物理引擎的过程中执行计算的函数;对上述第一运算函数的第一输出结果执行调整操作,得到第二输出结果,其中,在上述第一游戏程序中的游戏框架下设置有上述调整操作,上述调整操作用于使得在不同的操作平台,或,不同的浏览器,或,不同的终端中对上述第一运算函数执行计算,得到相同的输出结果,其中,上述第一游戏程序运行在上述不同的操作平台,或,上述不同的浏览器,或,上述不同的终端上。
可选地,对于第一游戏程序来说,可以运行在不同的操作平台,或,不同的浏览器,或,不同的终端上。例如,在多人对战游戏中,不同的用户使用不同的操作平台,或,不同的浏览器,或,不同的终端。
在上述第一游戏程序中检测到第一逻辑帧的情况下,以及通过上述第一逻辑帧触发第一物理引擎进行更新的过程中,可以通过第一运算函数计算上述第一物理引擎的更新结果,获取第一运算函数执行计算得到的第一输出结果,然后,对上述第一运算函数的第一输出结果执行调整操作,得到第二输出结果。
其中,在上述第一游戏程序中的游戏框架下设置有上述调整操作,上述调整操作能够使在不同的操作平台,或,不同的浏览器,或,不同的终端中对上述第一运算函数执行计算,并得到相同的输出结果。
例如,上述第一运算函数可以为一种Math函数,通过调整操作在不同的平台(安卓或苹果)或不同的浏览器,或不同的终端的调用同一个Math函数,并得到相同的输出结果。
通过本实施例,对于运行在不同的操作平台,或,不同的浏览器,或,不同的终端的第一游戏程序来说,通过上述调整操作,能够使得在不同的操作平台,或,不同的浏览器,或,不同的终端中对上述第一运算函数执行计算,并得到相同的输出结果,保证了同步性。
可选地,在本实施例中,上述对上述第一运算函数的第一输出结果执行调整操作,得到第二输出结果,包括:对上述第一运算函数的上述第一输出结果执行浮点数截取操作,得到上述第二输出结果,其中,上述浮点数截取操作用于将上述第一输出结果中的浮点数截取到预定位数。
可选地,可以通过对上述第一运算函数的上述第一输出结果执行浮点数截取操作,来得到上述第二输出结果,其中,上述浮点数截取操作用于将上述第一输出结果中的浮点数截取到预定位数。
具体地,在上述游戏框架下,使用逻辑帧驱动物理引擎的更新,保证多个客户端物理引擎执行的帧数量是一致的,对物理库中使用的部分Math函数进行了替换,通过浮点数截断的方式保证不同平台、浏览器和终端中Math函数输出的一致性。禁止Node对象的坐标和旋转数据的变更自动同步到物理对象的物理参数上,只允许UI读取物理对象的物理参数,避免不一致的产生,物理对象的物理参数只允许在逻辑帧中修改,达到多平台、浏览器、终端的完全一致性。
可选地,在本实施例中,上述方法还包括:在上述第一游戏程序中按照第一渲染参数对目标UI帧中的第一渲染对象进行渲染;在上述第一渲染参数与上述第一渲染对象的参考渲染参数不同的情况下,将与上述第一渲染对象对应的第一物理对象的物理参数保持在参考物理参数,其中,上述第一渲染对象与上述第一物理对象用于表示同一个对象,在上述第一游戏程序中的游戏框架下,UI帧中的渲染对象的渲染参数与上述参考渲染参数之间的差值被禁止同步到与上述渲染对象表示同一个对象的物理对象。
可选地,上述渲染对象可以理解为一种Node对象,是在UI上渲染的对象。上述物理对象可以是物理引擎模拟出的对象。Node对象可能因不同的平台而变化,当Node对象在不同平台渲染效果不同时,在上述第一游戏程序中的游戏框架下,Node对象在不同平台产生的变化被禁止对物理对象产生变化。
在上述第一游戏程序中的游戏框架下,通过UI帧中的第一渲染参数来控制第一渲染对象的渲染画面的参数,通过参考物理参数控制与上述第一渲染对象对应的第一物理对象。其中,上述第一渲染对象与上述第一物理对象用于表示同一个对象。并且,UI帧中的渲染对象的渲染参数与上述参考渲染参数之间的差值被禁止同步到与上述渲染对象表示同一个对象的物理对象。
在上述第一游戏程序中按照第一渲染参数对目标UI帧中的第一渲染对象进行渲染,当上述第一渲染参数与上述第一渲染对象的参考渲染参数不同的情况下,将与上述第一渲染对象对应的第一物理对象的物理参数保持在参考物理参数。
例如,第一渲染对象在不同的终端、或平台、或浏览器上的分辨率、像素不同,但是第一渲染对象对应的第一物理对象在不同的终端、或平台、或浏览器上是相同的。
可理解,上述仅为一种示例,本实施例在此不作任何限定。
通过本实施例,通过设置UI帧中的渲染对象的渲染参数与上述参考渲染参数之间的差值被禁止同步到与上述渲染对象表示同一个对象的物理对象的方式,能够更加易于控制同一个物理对象在不同平台、或浏览器或终端上的同步,提高了同步效率。
需要说明的是,相关技术中的对战游戏的开发有四种架构:
一,通过服务器实现状态同步的游戏,如多人轮流画画类游戏:
常见实现:服务端计算逻辑,客户端只负责渲染表现;
网络影响:网络延迟会影响游戏表现;
追帧复盘:同步服务器最新状态即可;
优点:安全性好;
缺陷:开发成本高,同步数据流量大。
二,类单机对战游戏,如双人对战类游戏:
常见实现:玩家各自玩单机,中途同步分数,结算同步胜负;
网络影响:游戏中网络波动不影响体验,不会卡顿,仅结算需要等待网络;
追帧复盘:不支持,游戏实际已暂停或重启;
优点:开发成本低;
缺陷:表现体验差,玩家之间无法交互,画面不同步,安全性差。
三,帧同步+回合状态同步的游戏,如双人桌球实时对战游戏:
常见实现:回合开始同步指令,回合结束同步状态;
网络影响:回合开始和结束需要逻辑帧驱动,必须等待数据回包才能开始和进入下回合;
追帧复盘:同步回合开始指令和回合结束状态,在状态之间快速跃迁;
优点:技术难度相对低(难以实现一致性校验的替代方案);
缺陷:限特定游戏,回合中画面可能不同步。
四,严格帧同步的游戏,如双人实时对战游戏:
常见实现:UI和数据严格分离,只同步指令;
网络影响:每个关键指令操作均需要等回包,网络卡顿会导致游戏反馈延迟,非常容易实现预表现,预测回滚等算法;
追帧复盘:默认支持,逻辑帧fixedUpdate驱动逻辑,可跳过渲染,快速演算;
优点:通用,扩展性好,服务端工作量小,录像小;
缺陷:必须严格要求保证一致性。
以上四种现有的技术方案根据游戏类型和表现不同,均有各种应用场景和优缺点,为了减少开发者的开发难度,使开发者能够使用一个通用的游戏框架,需要开发一个能够支持以上全部的应用场景的游戏框架,下面结合可选示例对本发明中的游戏数据处理方法中的游戏框架进行说明。
本发明实施例中的游戏框架能够支持快速开发数个H5帧同步实时对战小游戏,以及多种对战游戏类型,休闲类型游戏,竞技类型游戏,敏捷类型游戏,物理小游戏,例如,即时战略游戏(Real-Time Strategy Game,简称RTS),多人在线战术竞技游戏(MultiplayerOnline Battle Arena,简称MOBA)等,同时支持追帧复盘,支持2D物理引擎的精确同步模拟等,如使用CocosCreator和Laya等游戏引擎开发,可运行于iOS和Android系统,Mac OS系统,Windows系统,即时通讯应用上的小游戏等。其中,开发语言可以为TypeScript。
在一种可选的实施例中,本发明实施例中的游戏框架的整体架构图如图4所示,整体架构垂直划分为4层,上层模块单向依赖下层模块,至底向上分别为:
Platform层:游戏运行平台;
Framework层:CocosCreator Engine和Laya Engine为游戏引擎,cc.Component和Laya Component为游戏通用组件,GameSDKh和JSBridge为游戏数据接口和Native层通讯接口;GameKit则为核心的帧同步逻辑框架,完全由TS TypeScript实现无依赖与平台及引擎均无关;
Template层:不同游戏内容相似部分的数据复用基类,逻辑复用模板,UI组件复用模板和复用资源;
GamePlay层:不同游戏需要各自实现部分。
在一种可选的实施例中,帧同步逻辑框架的UML类图如图5所示,整个帧同步逻辑框架的核心部分由Game类组成,Game类中包含几个模块:
Context<T>:上下文对象引用,在不同平台表现为不同的上下文对象;
System:逻辑System抽象基类;
Engine:核心逻辑引擎,逻辑System管理器,管理和驱动不同的System,负责每帧固定更新逻辑和延时定时器的触发;
FSM:提供轻量状态机,负责游戏状态管理;
Res:资源加载和管理;
GameData:核心游戏数据,包含玩家和玩家数据;
GameFSM:内置通用游戏状态机;
RunningFSM:留给开发者自定义的运行时状态机;
Pool:对象池,管理对象的预实例化和回收/复用;
Audio:轻量音效播放接口封装;
Random:帧同步逻辑随机数生成器;
Log:轻量级日志打印;
Util:工具封装类;
Config:配置类;
Player:玩家基类;
on/emit:轻量级消息接口,用于同步调用UI模块,实现代码解耦;
Game类的update由GamePlay脚本驱动(UI表现),fixedUpdate由LockStep驱动(逻辑更新),达到UI和逻辑分离的效果;如果update和fixedUpdate均由GamePlay驱动,则表现为单机游戏;如果只更新fixedUpdate,则表现为Console运行方式,各模块相互独立,整个架构非常的灵活。
其中,双层状态机如图6所示,具体如下:
GameFSM:定义游戏通用状态机,定义通用状态:初始化,加载,运行,结束和数据上报;
RunningFSM:游戏运行状态机,绿色部分由开发者自由配置;
需要说明的是,双人或者多人轮流玩一个盘面的游戏,只需要一个状态机即可;双人或者多人分别玩多个盘面的游戏,根据需要可分别定义每个玩家自己的状态机。
在一种可选的实施例中,将Box2d物理引擎和帧同步结合,通过代码注入的方式,避免了直接改动引擎源码,在物理引擎的Step函数中加入hook函数,控制物理引擎的模拟,实现网络帧驱动物理引擎的Step函数,非常容易实现网络帧和逻辑帧的分离(只需要在网络帧的间隔中进行逻辑帧插值即可,达到高逻辑帧率流畅运行)。
其中,Box2D是一个用于模拟2D刚体物体的C++引擎。Box2d不是一种计算机编程语言,也不是一种游戏编程软件,不需要复杂的安装与配置。它是一个强大的开源物理游戏引擎,用来模拟2D刚体物体运动和碰撞。
如图7所示,Box2d物理引擎和帧同步结合方案的具体步骤如下:
1、设置物理引擎enabledAccumulator参数为true;
2、设置物理引擎FIXED_TIME_STEP值,如果和网络帧率不一致,则需要实现逻辑帧插值;
3、通过代码注入禁止Cocos引擎UI系统对物理引擎数据的改动,只允许表现层读取逻辑数据;
4、通过代码注入修改物理引擎使用到的导致不一致问题的数学函数等;
5、通过代码注入方式拦截Step函数,根据收到的数据帧决定是否执行当前Step。
其中,需要说明的是,本发明中的游戏框架提供的游戏逻辑开发套件、GameKit模块、以及基于该框架开发的游戏逻辑和数据部分,本身没有平台依赖,纯粹使用TypeScript实现。如果推广到其他游戏平台如Unity3D等,可以直接将TypeScript语言通过手动或者自动的方式装换为其他平台对应的编程语言如C#,以此达到框架的移植和游戏逻辑的复用。
通过本发明实施例,基于以上游戏框架,使用上述游戏框架开发不同游戏时,主要有以下六大优势:
1、开发效率提升:单个游戏只需要实现GamePlay部分,Data定义,GameLogic实现,UI展现功能即可共享整个框架提供的所有特性,极大限度的提高了开发效率。
2、支持多种游戏类型,玩法,功能扩展:
支持多种对战类型:双人,多人,人机混战;
支持多种游戏类型:策略对战,多人即时操作,物理对战,敏捷,Moba等均可;
支持扩展实现通用的观战系统,录像系统等。
3、应用预表现、预测/回滚算法:
由于逻辑和UI分离,面向数据开发,实现预表现和预测/回滚算法极为容易,开发即时操作对手感要求比较高的游戏非常方便。
4、自动化测试提高代码质量:
GameLogic部分脱离UI展现后可以独立运行于Console(主机、控制台),可以很方便执行自动化测试,如传统的方式测试1局游戏需要花费2-5分钟,只运行逻辑测试1秒内则能够运行超过100局游戏,可快速暴露代码异常,极大提高代码质量和稳定性。
5、AI扩展性:
GameLogic部分可以单独打包为lib库形式供AI框架调用,可以很方便的接入机器学习,强化学习等通用算法,实现通用游戏AI。
6、跨引擎跨语言移植能力:
GameLogic部分使用TypeScript脚本开发,无框架外依赖;
CocosCreator和Laya相互移植不需要额外工作即可直接复用核心逻辑代码;
使用工具将TypeScript语言转换为C#,可实现核心逻辑代码复用,重新开发UI部分即可将游戏移植到Unity等平台。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的又一方面,还提供了一种游戏数据处理装置,如图8所示,该装置包括:
第一获取单元802,用于在运行的第一游戏程序出现中断的情况下,获取上述第一游戏程序在上述中断之前的一组逻辑帧,其中,在上述第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立;
第一处理单元804,用于对上述一组逻辑帧中的逻辑进行批量执行,得到上述第一游戏程序在上述中断之前的最后逻辑状态;
第二处理单元806,用于在上述第一游戏程序的上述中断消除时,在上述第一游戏程序中根据上述最后逻辑状态对最后一个UI帧进行画面渲染,并在上述第一游戏程序中从上述最后逻辑状态开始继续运行,其中,上述最后一个UI帧为上述第一游戏程序在上述中断之前的最后一个UI帧。
通过本实施例,对于第一游戏应用程序中的游戏框架来说,设置逻辑帧和UI帧相互独立,在运行的第一游戏程序出现中断的情况下,获取第一游戏应用程序在中断之前的一组逻辑帧,将一组逻辑帧中的逻辑进行批量执行,得到第一游戏程序在中断之前的最后逻辑状态,只要第一游戏程序的中断消除时,只需要在第一游戏程序中根据最后逻辑状态对最后一个UI帧进行画面渲染,以及在第一游戏程序中从最后逻辑状态开始继续运行,即可以使第一游戏程序继续运行,其中,上述最后一个UI帧为上述第一游戏程序在上述中断之前的最后一个UI帧。采用上述技术方案,由于第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立,在运行的第一游戏程序出现中断的情况下,通过批量执行一组逻辑帧得到中断之前最后逻辑状态,在第一游戏程序中断消除的时刻,不需要对全部的中断画面进行渲染,而仅仅需要根据最后逻辑状态渲染最后一个UI帧即可,由于逻辑帧和UI帧相互独立,逻辑帧的运行也可以不用考虑UI帧,只需要从最后逻辑状态开始继续运行即可,这种方式在出现中断时,游戏画面表现较好,提高了用户体验,对于逻辑帧来说,极大地提高了计算效率。并且,这种方式可以通用性强,可移植性好,能够适用于多种游戏类型和游戏表现场景。解决了相关技术中,在对游戏数据进行处理时,对于不同的游戏类型和游戏表现,存在用户体验差、开发难度大的问题。
作为一种可选的技术方案,上述第一处理单元,还用于在上述第一游戏程序的上述中断消除时,对上述一组逻辑帧中的逻辑进行批量执行,得到上述第一游戏程序在上述中断之前的最后逻辑状态。
作为一种可选的技术方案,上述装置还包括:第三处理单元,用于在上述第一游戏程序中检测到第一逻辑帧的情况下,通过上述第一逻辑帧触发上述第一游戏程序中的第一物理引擎进行更新,其中,在上述第一游戏程序中的游戏框架下的上述第一物理引擎被设置为允许被逻辑帧触发更新。
作为一种可选的技术方案,上述装置还包括:第四处理单元,用于在第二游戏程序中检测到第二逻辑帧的情况下,通过上述第二逻辑帧触发上述第二游戏程序中的第二物理引擎进行更新,其中,在上述第二游戏程序中的上述游戏框架下的上述第二物理引擎被设置为允许被逻辑帧触发更新,上述第一游戏程序和上述第二游戏程序为同一游戏的不同客户端,上述第一游戏程序和上述第二游戏程序当前运行相同的一局游戏,上述第一逻辑帧和上述第二逻辑帧为上述一局游戏中产生的同步的逻辑帧,上述第一逻辑帧和上述第二逻辑帧用于将上述第一物理引擎和上述第二物理引擎更新到同步的状态。
作为一种可选的技术方案,上述装置还包括:第二获取单元,用于获取第一运算函数执行计算得到的第一输出结果,其中,上述第一运算函数为在更新上述第一物理引擎的过程中执行计算的函数;第五处理单元,用于对上述第一运算函数的第一输出结果执行调整操作,得到第二输出结果,其中,在上述第一游戏程序中的游戏框架下设置有上述调整操作,上述调整操作用于使得在不同的操作平台,或,不同的浏览器,或,不同的终端中对上述第一运算函数执行计算,得到相同的输出结果,其中,上述第一游戏程序运行在上述不同的操作平台,或,上述不同的浏览器,或,上述不同的终端上。
作为一种可选的技术方案,上述第五处理单元,还用于对上述第一运算函数的上述第一输出结果执行浮点数截取操作,得到上述第二输出结果,其中,上述浮点数截取操作用于将上述第一输出结果中的浮点数截取到预定位数。
作为一种可选的技术方案,上述装置还包括:第一渲染单元,用于在上述第一游戏程序中按照第一渲染参数对目标UI帧中的第一渲染对象进行渲染;第六处理单元,用于在上述第一渲染参数与上述第一渲染对象的参考渲染参数不同的情况下,将与上述第一渲染对象对应的第一物理对象的物理参数保持在参考物理参数,其中,上述第一渲染对象与上述第一物理对象用于表示同一个对象,在上述第一游戏程序中的游戏框架下,UI帧中的渲染对象的渲染参数与上述参考渲染参数之间的差值被禁止同步到与上述渲染对象表示同一个对象的物理对象。
根据本发明的实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,在运行的第一游戏程序出现中断的情况下,获取上述第一游戏程序在上述中断之前的一组逻辑帧,其中,在上述第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立;
S2,对上述一组逻辑帧中的逻辑进行批量执行,得到上述第一游戏程序在上述中断之前的最后逻辑状态;
S3,在上述第一游戏程序的上述中断消除时,在上述第一游戏程序中根据上述最后逻辑状态对最后一个UI帧进行画面渲染,并在上述第一游戏程序中从上述最后逻辑状态开始继续运行,其中,上述最后一个UI帧为上述第一游戏程序在上述中断之前的最后一个UI帧。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来命令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取器)、磁盘或光盘等。
根据本发明实施例的又一个方面,还提供了一种用于实施上述游戏数据处理方法的电子设备,该电子设备可以是图1所示的终端设备或服务器。本实施例以该电子设备为服务器为例来说明。如图9所示,该电子设备包括存储器902和处理器904,该存储器902中存储有计算机程序,该处理器904被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,在运行的第一游戏程序出现中断的情况下,获取上述第一游戏程序在上述中断之前的一组逻辑帧,其中,在上述第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立;
S2,对上述一组逻辑帧中的逻辑进行批量执行,得到上述第一游戏程序在上述中断之前的最后逻辑状态;
S3,在上述第一游戏程序的上述中断消除时,在上述第一游戏程序中根据上述最后逻辑状态对最后一个UI帧进行画面渲染,并在上述第一游戏程序中从上述最后逻辑状态开始继续运行,其中,上述最后一个UI帧为上述第一游戏程序在上述中断之前的最后一个UI帧。
可选地,本领域普通技术人员可以理解,图9所示的结构仅为示意,其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图9中所示更多或者更少的组件(如网络接口等),或者具有与图9所示不同的配置。
其中,存储器902可用于存储软件程序以及模块,如本发明实施例中的游戏数据处理方法和装置对应的程序命令/模块,处理器904通过运行存储在存储器902内的软件程序以及模块,从而执行各种功能应用以及热更新,即实现上述的游戏数据处理方法。存储器902可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器902可进一步包括相对于处理器904远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。作为一种示例,如图9所示,上述存储器902中可以但不限于包括上述游戏数据处理装置中的第一获取单元802,第一处理单元804、第二处理单元806。此外,还可以包括但不限于上述游戏数据处理装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置906用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置906包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置906为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:连接总线908,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来命令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干命令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (15)
1.一种游戏数据处理方法,其特征在于,包括:
在运行的第一游戏程序出现中断的情况下,获取所述第一游戏程序在所述中断之前的一组逻辑帧,其中,在所述第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立;
对所述一组逻辑帧中的逻辑进行批量执行,得到所述第一游戏程序在所述中断之前的最后逻辑状态;
在所述第一游戏程序的所述中断消除时,在所述第一游戏程序中根据所述最后逻辑状态对最后一个UI帧进行画面渲染,并在所述第一游戏程序中从所述最后逻辑状态开始继续运行,其中,所述最后一个UI帧为所述第一游戏程序在所述中断之前的最后一个UI帧。
2.根据权利要求1所述的方法,其特征在于,所述对所述一组逻辑帧中的逻辑进行批量执行,得到所述第一游戏程序在所述中断之前的最后逻辑状态,包括:
在所述第一游戏程序的所述中断消除时,对所述一组逻辑帧中的逻辑进行批量执行,得到所述第一游戏程序在所述中断之前的最后逻辑状态。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一游戏程序中检测到第一逻辑帧的情况下,通过所述第一逻辑帧触发所述第一游戏程序中的第一物理引擎进行更新,其中,在所述第一游戏程序中的游戏框架下的所述第一物理引擎被设置为允许被逻辑帧触发更新。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在第二游戏程序中检测到第二逻辑帧的情况下,通过所述第二逻辑帧触发所述第二游戏程序中的第二物理引擎进行更新,其中,在所述第二游戏程序中的所述游戏框架下的所述第二物理引擎被设置为允许被逻辑帧触发更新,所述第一游戏程序和所述第二游戏程序为同一游戏的不同客户端,所述第一游戏程序和所述第二游戏程序当前运行相同的一局游戏,所述第一逻辑帧和所述第二逻辑帧为所述一局游戏中产生的同步的逻辑帧,所述第一逻辑帧和所述第二逻辑帧用于将所述第一物理引擎和所述第二物理引擎更新到同步的状态。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取第一运算函数执行计算得到的第一输出结果,其中,所述第一运算函数为在更新所述第一物理引擎的过程中执行计算的函数;
对所述第一运算函数的第一输出结果执行调整操作,得到第二输出结果,其中,在所述第一游戏程序中的游戏框架下设置有所述调整操作,所述调整操作用于使得在不同的操作平台,或,不同的浏览器,或,不同的终端中对所述第一运算函数执行计算,得到相同的输出结果,其中,所述第一游戏程序运行在所述不同的操作平台,或,所述不同的浏览器,或,所述不同的终端上。
6.根据权利要求5所述的方法,其特征在于,所述对所述第一运算函数的第一输出结果执行调整操作,得到第二输出结果,包括:
对所述第一运算函数的所述第一输出结果执行浮点数截取操作,得到所述第二输出结果,其中,所述浮点数截取操作用于将所述第一输出结果中的浮点数截取到预定位数。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一游戏程序中按照第一渲染参数对目标UI帧中的第一渲染对象进行渲染;
在所述第一渲染参数与所述第一渲染对象的参考渲染参数不同的情况下,将与所述第一渲染对象对应的第一物理对象的物理参数保持在参考物理参数,其中,所述第一渲染对象与所述第一物理对象用于表示同一个对象,在所述第一游戏程序中的游戏框架下,UI帧中的渲染对象的渲染参数与所述参考渲染参数之间的差值被禁止同步到与所述渲染对象表示同一个对象的物理对象。
8.一种游戏数据处理的装置,其特征在于,包括:
第一获取单元,用于在运行的第一游戏程序出现中断的情况下,获取所述第一游戏程序在所述中断之前的一组逻辑帧,其中,在所述第一游戏程序中的游戏框架下的逻辑帧和UI帧被设置为相互独立;
第一处理单元,用于对所述一组逻辑帧中的逻辑进行批量执行,得到所述第一游戏程序在所述中断之前的最后逻辑状态;
第二处理单元,用于在所述第一游戏程序的所述中断消除时,在所述第一游戏程序中根据所述最后逻辑状态对最后一个UI帧进行画面渲染,并在所述第一游戏程序中从所述最后逻辑状态开始继续运行,其中,所述最后一个UI帧为所述第一游戏程序在所述中断之前的最后一个UI帧。
9.根据权利要求8所述的装置,其特征在于,所述第一处理单元,还用于在所述第一游戏程序的所述中断消除时,对所述一组逻辑帧中的逻辑进行批量执行,得到所述第一游戏程序在所述中断之前的最后逻辑状态。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第三处理单元,用于在所述第一游戏程序中检测到第一逻辑帧的情况下,通过所述第一逻辑帧触发所述第一游戏程序中的第一物理引擎进行更新,其中,在所述第一游戏程序中的游戏框架下的所述第一物理引擎被设置为允许被逻辑帧触发更新。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第四处理单元,用于在第二游戏程序中检测到第二逻辑帧的情况下,通过所述第二逻辑帧触发所述第二游戏程序中的第二物理引擎进行更新,其中,在所述第二游戏程序中的所述游戏框架下的所述第二物理引擎被设置为允许被逻辑帧触发更新,所述第一游戏程序和所述第二游戏程序为同一游戏的不同客户端,所述第一游戏程序和所述第二游戏程序当前运行相同的一局游戏,所述第一逻辑帧和所述第二逻辑帧为所述一局游戏中产生的同步的逻辑帧,所述第一逻辑帧和所述第二逻辑帧用于将所述第一物理引擎和所述第二物理引擎更新到同步的状态。
12.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第二获取单元,用于获取第一运算函数执行计算得到的第一输出结果,其中,所述第一运算函数为在更新所述第一物理引擎的过程中执行计算的函数;
第五处理单元,用于对所述第一运算函数的第一输出结果执行调整操作,得到第二输出结果,其中,在所述第一游戏程序中的游戏框架下设置有所述调整操作,所述调整操作用于使得在不同的操作平台,或,不同的浏览器,或,不同的终端中对所述第一运算函数执行计算,得到相同的输出结果,其中,所述第一游戏程序运行在所述不同的操作平台,或,所述不同的浏览器,或,所述不同的终端上。
13.根据权利要求12所述的装置,其特征在于,所述第五处理单元,还用于对所述第一运算函数的所述第一输出结果执行浮点数截取操作,得到所述第二输出结果,其中,所述浮点数截取操作用于将所述第一输出结果中的浮点数截取到预定位数。
14.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至7任一项中所述的方法。
15.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至7任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010738506.8A CN111744177B (zh) | 2020-07-28 | 2020-07-28 | 游戏数据处理方法和装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010738506.8A CN111744177B (zh) | 2020-07-28 | 2020-07-28 | 游戏数据处理方法和装置、存储介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111744177A true CN111744177A (zh) | 2020-10-09 |
CN111744177B CN111744177B (zh) | 2021-06-25 |
Family
ID=72712246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010738506.8A Active CN111744177B (zh) | 2020-07-28 | 2020-07-28 | 游戏数据处理方法和装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111744177B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112516598A (zh) * | 2020-11-20 | 2021-03-19 | 网易(杭州)网络有限公司 | 游戏服务故障的处理方法、装置、服务器及介质 |
CN113350782A (zh) * | 2021-06-15 | 2021-09-07 | 网易(杭州)网络有限公司 | 处理网络游戏异常的方法、装置、存储介质及计算机设备 |
CN113885361A (zh) * | 2021-10-18 | 2022-01-04 | 上海交通大学医学院附属瑞金医院 | 一种对延时不敏感的康复装备远程力控系统 |
CN114257830A (zh) * | 2021-12-21 | 2022-03-29 | 广州方硅信息技术有限公司 | 直播游戏互动方法、系统、装置及计算机设备 |
CN114840809A (zh) * | 2022-05-24 | 2022-08-02 | 深圳市畅娱时空网络科技有限公司 | 一种基于定点数的精确物理系统同步方法 |
WO2024174576A1 (zh) * | 2023-02-21 | 2024-08-29 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014040535A1 (en) * | 2012-09-13 | 2014-03-20 | Tencent Technology (Shenzhen) Company Limited | Information management method and device |
CN107147947A (zh) * | 2017-05-11 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 关键帧识别方法及装置 |
CN108289246A (zh) * | 2017-11-30 | 2018-07-17 | 腾讯科技(成都)有限公司 | 数据处理方法、装置、存储介质和电子装置 |
CN108379832A (zh) * | 2018-01-29 | 2018-08-10 | 珠海金山网络游戏科技有限公司 | 一种游戏同步方法和装置 |
CN109032059A (zh) * | 2018-07-25 | 2018-12-18 | 山东大学 | 一种控制器逻辑柔性的编码、通信方法及装置 |
CN110908864A (zh) * | 2019-11-11 | 2020-03-24 | 腾讯科技(深圳)有限公司 | 一种设备卡顿的处理方法、装置、设备和介质 |
CN111167116A (zh) * | 2019-09-29 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种平滑显示的方法、终端和计算机存储介质 |
-
2020
- 2020-07-28 CN CN202010738506.8A patent/CN111744177B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014040535A1 (en) * | 2012-09-13 | 2014-03-20 | Tencent Technology (Shenzhen) Company Limited | Information management method and device |
CN107147947A (zh) * | 2017-05-11 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 关键帧识别方法及装置 |
CN108289246A (zh) * | 2017-11-30 | 2018-07-17 | 腾讯科技(成都)有限公司 | 数据处理方法、装置、存储介质和电子装置 |
CN108379832A (zh) * | 2018-01-29 | 2018-08-10 | 珠海金山网络游戏科技有限公司 | 一种游戏同步方法和装置 |
CN109032059A (zh) * | 2018-07-25 | 2018-12-18 | 山东大学 | 一种控制器逻辑柔性的编码、通信方法及装置 |
CN111167116A (zh) * | 2019-09-29 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种平滑显示的方法、终端和计算机存储介质 |
CN110908864A (zh) * | 2019-11-11 | 2020-03-24 | 腾讯科技(深圳)有限公司 | 一种设备卡顿的处理方法、装置、设备和介质 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112516598A (zh) * | 2020-11-20 | 2021-03-19 | 网易(杭州)网络有限公司 | 游戏服务故障的处理方法、装置、服务器及介质 |
CN112516598B (zh) * | 2020-11-20 | 2024-05-28 | 网易(杭州)网络有限公司 | 游戏服务故障的处理方法、装置、服务器及介质 |
CN113350782A (zh) * | 2021-06-15 | 2021-09-07 | 网易(杭州)网络有限公司 | 处理网络游戏异常的方法、装置、存储介质及计算机设备 |
CN113885361A (zh) * | 2021-10-18 | 2022-01-04 | 上海交通大学医学院附属瑞金医院 | 一种对延时不敏感的康复装备远程力控系统 |
CN113885361B (zh) * | 2021-10-18 | 2023-06-27 | 上海交通大学医学院附属瑞金医院 | 一种对延时不敏感的康复装备远程力控系统 |
CN114257830A (zh) * | 2021-12-21 | 2022-03-29 | 广州方硅信息技术有限公司 | 直播游戏互动方法、系统、装置及计算机设备 |
CN114840809A (zh) * | 2022-05-24 | 2022-08-02 | 深圳市畅娱时空网络科技有限公司 | 一种基于定点数的精确物理系统同步方法 |
WO2024174576A1 (zh) * | 2023-02-21 | 2024-08-29 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111744177B (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111744177B (zh) | 游戏数据处理方法和装置、存储介质和电子设备 | |
CN107222510B (zh) | 一种游戏同步方法、系统及相关设备 | |
US11229842B2 (en) | Method and apparatus for synchronously playing animation, storage medium, and electronic apparatus | |
US8069258B1 (en) | Local frame processing to apparently reduce network lag of multiplayer deterministic simulations | |
US8480498B2 (en) | Synchronizing mission progress in cooperative games | |
RU2571251C2 (ru) | Система обработки информации, способ обработки информации, программа обработки информации, считываемый компьютером носитель записи, на котором хранится программа обработки информации | |
US9751011B2 (en) | Systems and methods for a unified game experience in a multiplayer game | |
CN112156457B (zh) | 一种游戏副本展示方法以及装置 | |
CN113262481B (zh) | 游戏中的互动方法、装置、设备及存储介质 | |
US9675885B2 (en) | Game system, a controlling method of the game system thereof, and a non-transitory computer-readable storage medium thereof | |
CN110298907B (zh) | 一种虚拟角色动作控制方法及装置、计算设备及存储介质 | |
WO2021021341A1 (en) | Local game execution for spectating and spectator game play | |
CN108965989B (zh) | 一种交互式应用场景的处理方法和装置以及存储介质 | |
CN111228824A (zh) | 游戏观战方法、装置、计算机可读介质及电子设备 | |
CN112169327A (zh) | 一种云游戏的控制方法以及相关装置 | |
KR20230006518A (ko) | 가상 객체를 위한 스킬 선택 방법 및 장치, 그리고 디바이스, 매체 및 프로그램 제품 | |
JP2023502074A (ja) | ビデオゲームでのサーバベースのヘルプマップの生成 | |
US11925861B2 (en) | System for multiview games experience | |
US20240198222A1 (en) | Replay editor in video games | |
JP2024072870A (ja) | ビデオゲームにおけるサーバベースのビデオヘルプ | |
US20230088206A1 (en) | Method and apparatus for controlling virtual object, device, storage medium, and program product | |
US10191722B1 (en) | Event synchronization for development computing system | |
CN116617649A (zh) | 行为状态的同步方法、装置和电子设备 | |
CN111111208A (zh) | 目标应用的启动方法和装置、存储介质及电子装置 | |
US20240216803A1 (en) | Method and apparatus for processing in game, terminal device, and storage medium |
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: 40030892 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |