CN111318012B - 游戏数据的传输方法及装置 - Google Patents
游戏数据的传输方法及装置 Download PDFInfo
- Publication number
- CN111318012B CN111318012B CN202010112992.2A CN202010112992A CN111318012B CN 111318012 B CN111318012 B CN 111318012B CN 202010112992 A CN202010112992 A CN 202010112992A CN 111318012 B CN111318012 B CN 111318012B
- Authority
- CN
- China
- Prior art keywords
- combat
- transmitted
- instruction
- game
- command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
-
- 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/40—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 characterised by details of platform network
- A63F2300/407—Data transfer via internet
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种游戏数据的传输方法及装置。其中,该方法包括:对待传输战斗指令进行字符串去重处理,得到处理后的待传输战斗指令,其中,上述待传输战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态;在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令。本发明解决了现有技术中游戏服务器与游戏客户端之间同步指令数据时,存在网络流量消耗较大的技术问题。
Description
技术领域
本发明涉及数据传输领域,具体而言,涉及一种游戏数据的传输方法及装置。
背景技术
随着游戏行业的发展,手机游戏的玩法类型也日渐丰富。当中有一些游戏类型需要为玩家提高非常低的响应延迟,如动作类游戏、即时战略游戏等。而另一方面,为了公平性,防止玩家在客户端本地使用各种篡改游戏状态的方法作弊,游戏战斗系统的结算需要在服务器进行计算。因此在需要保证公平,逻辑在服务器结算的同时又需要降低响应延迟的情况下,服务器向客户端发送当前游戏状态的间隔是当前影响响应延迟的关键因素。
传统的状态同步方法中,采用以一个比较大的时间间隔(一般为200ms-1000ms)将服务器的状态同步到客户端,而客户端在两个同步间隔之间本地推算游戏状态,但这会给玩家带来比较大的响应延迟甚至一些本地表现不同步。而传统的帧同步方法,则是以理论最小间隔:一帧,即服务器一次完整运算逻辑的间隔(一般约8ms-100ms)将服务器的战斗状态同步到客户端。当所有状态都通过帧同步确定时则不存在本地表现不同步的问题,但一个明显代价则是网络流量的消耗会提升。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种游戏数据的传输方法及装置,以至少解决现有技术中游戏服务器与游戏客户端之间同步指令数据时,存在网络流量消耗较大的技术问题。
根据本发明实施例的一个方面,提供了一种游戏数据的传输方法,包括:对待传输战斗指令进行字符串去重处理,得到处理后的待传输战斗指令,其中,上述待传输战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态;在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令。
根据本发明实施例的另一方面,还提供了一种游戏数据的传输装置,包括:处理模块,用于对待传输战斗指令进行字符串去重处理,得到处理后的待传输战斗指令,其中,上述待传输战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态;同步模块,用于在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令。
根据本发明实施例的另一方面,还提供了一种存储介质,上述存储介质包括存储的程序,其中,在上述程序运行时控制上述存储介质所在设备执行任意一项上述的游戏数据的传输方法。
根据本发明实施例的另一方面,还提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行任意一项上述的游戏数据的传输方法。
在本发明实施例中,通过对待传输战斗指令进行字符串去重处理,得到处理后的待传输战斗指令,其中,上述待传输战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态;在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令,达到了在游戏服务器与游戏客户端之间同步指令数据时,降低网络流量消耗的目的,从而实现了保证游戏服务器与游戏客户端之间游戏战斗状态同步的技术效果,进而解决了现有技术中游戏服务器与游戏客户端之间同步指令数据时,存在网络流量消耗较大的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种游戏数据的传输方法的流程图;
图2是根据本发明实施例的一种可选的游戏数据的传输方法的流程图;
图3是根据本发明实施例的一种可选的游戏数据的传输方法的流程图;
图4是根据本发明实施例的一种可选的游戏数据的传输方法的流程图;
图5是根据本发明实施例的一种游戏数据的传输装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种游戏数据的传输方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种游戏数据的传输方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,对待传输战斗指令进行字符串去重处理,得到处理后的待传输战斗指令,其中,上述待传输战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态;
步骤S104,在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令。
在本发明实施例中,通过对待传输战斗指令进行字符串去重处理,得到处理后的待传输战斗指令,其中,上述待传输战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态;在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令,达到了在游戏服务器与游戏客户端之间同步指令数据时,降低网络流量消耗的目的,从而实现了保证游戏服务器与游戏客户端之间游戏战斗状态同步的技术效果,进而解决了现有技术中游戏服务器与游戏客户端之间同步指令数据时,存在网络流量消耗较大的技术问题。
在本申请实施例中,可以保证在不强制玩家更新游戏客户端、保证逻辑是服务器运算仲裁并将状态帧同步至游戏客户端的前提下,可以有效解决游戏服务器同步指令数据至游戏客户端消耗网络流量过大的技术问题。
本申请实施例中,即使在用户拥有不同版本的游戏客户端时,通过对待传输指令的再编码与前缀压缩,结合对传输二进制数据串的流式压缩,大幅减少了服务器帧同步状态到客户端的网络流量,可以大幅减少战斗指令传输消耗的网络流量。
作为一种可选的实施例,由于每场战斗都传输了大量的字符串,而字符串的种类较少,且总体服从长尾分布,所以对于每场战斗,新增一个字符串同步指令,游戏服务器端均维护一个字符串对应整形的字典,通过字符串同步指令按帧同步该字典到客户端,同时将战斗指令中的字符串替换为字典中对应的整形,如此战斗指令传输过程中,通过省去了同步大量重复的字符串,减少了所需传输的字节。
作为一种可选的实施例,由于游戏中的待传输战斗指令在时间上是有连续性的,例如,较常见的指令参数格式为:实体id-组件名-功能函数名-函数参数,而在短时间内,往往是某个实体连续进行了函数调用,而这些函数往往也是属于同一个组件,因此,按照该格式组织的相邻的待传输战斗指令的前缀是相同的,在待传输战斗指令为定长指令的前提下,发送待传输战斗指令时若发现当前待传输战斗指令与前一条待传输战斗指令的前缀相同,则可以省略掉待传输战斗指令中的相同前缀,然后存入数据结构进行发送。
并且,当游戏客户端缓存了上一条接收到的战斗指令后,若发现当前接收到的战斗指令与指令默认长度不同时,即可认为发生了重复前缀的省略,通过缓存的前一条战斗指令的前缀即可还原当前接收到的战斗指令,因此,本申请实施例通过对待传输战斗指令进行前缀省略处理,可以减少需要传输战斗指令的重复字节。
作为另一种可选的实施例,如果将待传输战斗指令的一个参数看成单词,则发现在同一帧内,重复的单词不多,但是在整场战斗中,重复的单词很多。也即,如果使用通用的压缩算法压缩每一帧的二进制数据串,会导致其压缩率非常低,因为每次只是针对当前帧的信息建立字典,能利用的数据冗余非常少。因此,在压缩算法的选择上,本申请实施例通过选择流式压缩算法以获得不错的压缩率。
需要说明的是,该流式压缩算法的压缩率高的原理在于可以根据每帧压缩的数据,持续地进行压缩字典地更新,可采取的流式压缩算法例如Zstandrad算法。
在一种可选的实施例中,对上述待传输战斗指令进行字符串去重处理,得到上述处理后的待传输战斗指令包括以下至少之一:
步骤S202,对上述待传输战斗指令进行字符串去重处理,将上述待传输战斗指令从字符串数据格式转化为字典数据格式,得到上述处理后的待传输战斗指令;
步骤S204,对上述待传输战斗指令进行前缀去重处理,省略上述待传输战斗指令中采用相同前缀的部分战斗指令中的重复前缀,得到上述处理后的待传输战斗指令。
可选的,上述步骤S202至步骤S204,属于游戏脚本层的逻辑,可以通过更新脚本逻辑更新给用户。
作为一种可选的实施例,在一个游戏逻辑帧的开始时刻,会在一个计时器的调度下,在上一帧的所有工作完成后,间隔一段时间后进入如下步骤:
游戏战斗的所有逻辑的运行,即根据玩家的输入在当前帧进行各种游戏状态的计算,在整个逻辑运行的过程中,需要同步的状态变化都会转化为约定的待传输战斗指令,按其发生的顺序存储到一个顺序存储的数据结构中;将本帧所有战斗指令中的其参数位必然是字符串的参数进行重编码,编码为一个整形。
在一种可选的实施例中,在对上述待传输战斗指令进行字符串去重处理之前,上述方法还包括:
步骤S302,检测上述待传输战斗指令中待去重处理的字符串是否存在于服务器字典中,其中,上述服务器字典为预先建立的与上述传输战斗指令对应的字典;
步骤S304,若检测到上述待去重处理的字符串未存在于上述服务器字典中,则确定无需对上述待传输战斗指令进行字符串去重处理,并在上述服务器字典中建立上述待去重处理的字符串与目标整型数值的对应关系;
步骤S306,若检测到上述待去重处理的字符串存在于上述服务器字典中,则执行对上述待传输战斗指令进行字符串去重处理的步骤。
在一种可选的实施例中,图2是根据本发明实施例的一种可选的游戏数据的传输方法的流程图,如图2所示,对上述待传输战斗指令进行字符串去重处理,包括:
步骤S402,获取预先建立的上述待去重处理的字符串与上述目标整型数值的对应关系;
步骤S404,依据上述对应关系,将上述待去重处理的字符串替换为上述目标整型数值。
在本申请实施例中,由于游戏服务器和游戏客户端都维护了一个字符串对应整形的字典,若字符串不在服务器字典中,则本次不将该字符串编码,在服务器字典中新建一个该字符串与目标整型数值(整数)的对应关系,该字符串与目标整型数值都未曾在字典中出现,同时向指令存储结构中,在目前处理的待传输战斗指令的后面增加一条指令,该指令的功能为在客户端字典内插入这对字符串与目标整型数值的对应关系。若字符串在服务器字典中,则通过服务器字典,将指令中的字符串替换为对应目标整型数值。
在一种可选的实施例中,仍如图2所示,对上述待传输战斗指令进行前缀去重处理,包括:
步骤S502,根据上述待传输战斗指令的存储顺序,遍历指令缓存区域中当前帧的每一条待传输战斗指令,其中,上述游戏服务器在当前游戏中的每场战斗开始前,初始化上述指令缓存区域,上述指令缓存区域用于根据指令类型缓存上述待传输战斗指令;
步骤S504,若上述指令缓存区域中存在与上述待传输战斗指令类型相同的缓存战斗指令,则检测上述待传输战斗指令与上述缓存战斗指令是否具有相同的前缀;
步骤S506,若检测结果为是,则将上述待传输战斗指令存储至上述指令缓存区域,并在去除上述待传输战斗指令的前缀之后,将上述处理后的待传输战斗指令存储目标被数据结构。
在一种可选的实施例中,若上述指令缓存区域中不存在与上述待传输战斗指令类型相同的缓存战斗指令,则直接将上述待传输战斗指令存储至上述指令缓存区域中。
作为另一种可选的实施例,可以但不限于通过以下方式将本帧所有的指令进行前缀省略:由于服务器会在战斗开始前初始化一个指令缓存,该缓存可以按指令类型缓存对应指令内容。按指令存储顺序遍历本帧所有的待传输战斗指令,对于每一条被遍历的待传输战斗指令,如果与当前的待传输战斗指令类型相同的缓存战斗指令不存在,则将当前的待传输战斗指令记录到指令缓存区域中。
在上述可选的实施例中,如果与当前的待传输战斗指令类型相同的缓存战斗指令存在过,则将当前的待传输战斗指令与指令缓存区域中的缓存战斗指令进行比对,若两者具有相同的前缀,则将存储结构中当前的待传输战斗指令相同的前缀部分删掉,然后将该条待传输战斗指令的完整形式覆盖存储到指令缓存区域中。
在一种可选的实施例中,仍如图2所示,在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令之前,上述方法还包括:
步骤S602,检测上述游戏客户端是否支持解压缩处理格式;
步骤S604,若检测到上述游戏客户端支持上述解压缩处理格式,则按照预设压缩方式对上述处理后的待传输战斗指令进行压缩处理,得到压缩结果,以在上述游戏客户端与上述游戏服务端之间同步上述压缩结果;
步骤S606,若检测到上述游戏客户端不支持上述解压缩处理格式,则直接执行在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令的步骤。
在上述可选的实施例中,在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令之前,检测上述游戏客户端是否支持解压缩处理格式;若检测到上述游戏客户端支持上述解压缩处理格式,则按照预设压缩方式对上述处理后的待传输战斗指令进行压缩处理,得到压缩结果,即可以通过将用于存储上述处理后的待传输战斗指令的存储结构,通过某种序列化方法(例如,python中的msgpack库)转化为二进制数据串,并在上述游戏客户端与上述游戏服务端之间同步上述二进制数据串。在本申请实施例中,可以通过远程方法调用的方式,将二进制数据串/压缩过后的二进制数据串传输给游戏客户端。
可选的,上述msgpack库为一个存储数据的Python类型实例与二进制字节串进行相互转换的库,其他可选方案还可以为cpickle库与json库。
作为一种可选的实施例,本申请实施例中采用流式压缩算法对二进制数据串进行压缩,可以采取的算法例如Zstandard算法,流式压缩算法还有其他的一些可选算法,例如,deflate、lz4、lzo等算法。
在一种可选的实施例中,图3是根据本发明实施例的一种可选的游戏数据的传输方法的流程图,如图3所示,在对待传输战斗指令进行字符串去重处理之前,上述方法还包括:
步骤S702,接收来自上述游戏客户端的连接请求,其中,上述连接请求中携带有上述游戏客户端的引擎版本号;
步骤S704,确定与上述引擎版本号对应的压缩策略;
步骤S706,将上述压缩策略返回至上述游戏客户端,其中,上述游戏客户端用于依据上述压缩策略处理接收到的压缩结果,得到上述待传输战斗指令。
可选的,在每场战斗开始前发生(即进行战斗指令传输之前),游戏客户端向游戏服务器发起战斗连接申请时,可以同时告知游戏服务器自己的客户端引擎版本号,游戏服务器通过该引擎版本号判定游戏客户端是否支持压缩处理格式,进而再确定是否制定压缩流程策略,并且同时考虑一些全局变量来制定压缩策略,以此允许随时全局开启/关闭本申请实施例中的压缩处理流程。
并且,在确定与上述引擎版本号对应的压缩策略之后,游戏服务器将制定的压缩策略回传给游戏客户端,游戏客户端后续可以依据上述压缩策略处理接收到的压缩结果,得到上述待传输战斗指令。
需要说明的是,本申请实施例所提供的游戏数据的传输方法,是建立在服务器客户端之间的通讯使用可靠的连接层协议的情况下进行的,因而在对本申请实施例进行说明时,不予考虑通讯时出现丢包的情况。
在一种可选的实施例中,在通过对待传输战斗指令进行预处理,得到处理后的待传输战斗指令之前,上述方法还包括:
步骤S802,在检测到上述当前帧的上一帧结束之后,在计时器的调度下进入上述当前帧,并获取当前帧的游戏运算逻辑产生的战斗状态;
步骤S804,依据上述战斗状态生成上述待传输战斗指令;
步骤S806,按照上述待传输战斗指令的指令生成时间,预先将上述待传输战斗指令存储至目标数据结构。
作为一种可选的实施例,在一个游戏逻辑帧的开始时刻,会在一个计时器的调度下,在上一帧的所有工作完成后,间隔一段时间后进入如下步骤:
游戏战斗的所有逻辑的运行,即根据玩家的输入在当前帧进行各种游戏状态的计算,在整个逻辑运行的过程中,需要同步的状态变化都会转化为约定的待传输战斗指令,按其发生的顺序存储到一个顺序存储的数据结构中。
作为另一种可选的实施例,图4是根据本发明实施例的一种可选的游戏数据的传输方法的流程图,如图4所示,本申请实施例游戏客户端侧的工作运行流程如下所示:
步骤S902,发送连接请求至游戏服务器,其中,上述连接请求中携带有游戏客户端的引擎版本号,游戏服务器用于确定与引擎版本号对应的压缩策略;
步骤S904,接收游戏服务器返回的压缩策略,其中,游戏客户端用于依据该压缩策略对处理后的战斗指令进行还原处理。
步骤S906,接收游戏服务器发送的二进制数据串。
步骤S908,检测游戏服务器是否对二进制数据串进行压缩处理。
步骤S910,若检测到游戏服务器对二进制数据串进行压缩处理,则按照预设解压缩方式对二进制数据串进行压缩处理,得到解压缩后二进制数据串。
步骤S912,通过对二进制数据串进行反序列化处理,得到存储有处理后的目标战斗指令的数据结构。
步骤S914,通过对处理后的待传输战斗指令进行还原处理,得到目标战斗指令,其中,该目标战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态。
需要说明的是,游戏客户端可以提前申请缓存游戏服务器的消息队列,保证了一定会接收并处理游戏服务器的战斗从第一帧开始的所有帧数据,并且,针对每场战斗的每一帧,可以包括以下步骤:
在一个游戏逻辑帧的开始时刻,在一个计时器的调度下,在上一帧的所有工作完成后,间隔一段时间后进入如下步骤:从缓存服务器消息的消息队列中获取当前帧的二进制数据串,需要说明的是,获取结果可能为空。游戏客户端使用与游戏服务器侧的压缩策略(流式压缩算法)对应的解压缩策略,对游戏服务器同步过来的二进制数据串进行解压处理。
在本申请实施例中,游戏客户端还可以使用与游戏服务器对应的方法,对二进制数据串进行反序列化,并将存储战斗指令的顺序存储至目标数据结构,对传输战斗指令进行前缀补全,其具体方法步骤如下所示:游戏客户端会在接收到第一条服务器帧数据前初始化一个指令缓存区域,该指令缓存区域可以按照指令类型缓存对应指令内容,按照顺序遍历存储结构的每一条接收到的战斗指令,对于每一条被遍历的接收到的战斗指令:如果与本条接收到的战斗指令类型相同的缓存战斗指令未出现过,将本条接收到的战斗指令加入指令缓存区域中,该接收到的战斗指令为默认长度。
需要说明的是,上述默认长度指的是该条指令在没用前缀省略方法进行压缩时的指令格式的长度,其长度与指令类型有关;并且,对于发送/接收到的某类型的第一条战斗指令,由于没有对其进行省略前缀处理,因此,其长度也必然是该战斗指令在完整格式下的默认长度。
如果与本条接收到的指令类型相同的战斗指令出现过,则判断接收到的战斗指令的长度,如果接收到的战斗指令的长度与默认长度相同,则不作处理;若接收到的战斗指令的长度小于默认长度,则可知其省略了前缀,则从指令缓存区域中获取该条接收到的指令类型相同的上一条接收到的指令,取其前缀补全当前接收到的指令至默认长度。并且,无论接收到的指令是否经过补全,将当前接收到的指令的完整形式覆盖存储到指令缓存区域中。
并且,游戏客户端还可以按照时间顺序遍历目标存储结构的每一条战斗指令:若指令为客户端字典操作指令,使用该客户端字典操作指令修改客户端字典;否则,检测当前接收到的指令的字符串参数位上的数据是否是字符串,若是目标整型数值,则通过客户端字典读取出对应的二进制字符串,将该参数位修改为该二进制字符串,进而可以通过根据解压、解码得到的游戏服务器传输的战斗指令,并且按照顺序执行还原游戏服务器中的战斗状态变化。
实施例2
根据本发明实施例,还提供了一种用于实施上述游戏数据的传输方法的装置实施例,图5是根据本发明实施例的一种游戏数据的传输装置的结构示意图,如图5所示,上述游戏数据的传输装置,包括:处理模块50和同步模块52,其中:
处理模块50,用于对待传输战斗指令进行字符串去重处理,得到处理后的待传输战斗指令,其中,上述待传输战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态;同步模块52,用于在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;或者,上述各个模块以任意组合的方式位于不同的处理器中。
此处需要说明的是,上述处理模块50和同步模块52对应于实施例1中的步骤S102至步骤S104,上述模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在计算机终端中。
需要说明的是,本实施例的可选或优选实施方式可以参见实施例1中的相关描述,此处不再赘述。
上述的游戏数据的传输装置还可以包括处理器和存储器,上述处理模块50和同步模块52等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元,上述内核可以设置一个或以上。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
根据本申请实施例,还提供了一种存储介质实施例。可选地,在本实施例中,上述存储介质包括存储的程序,其中,在上述程序运行时控制上述存储介质所在设备执行上述任意一种游戏数据的传输方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中,上述存储介质包括存储的程序。
可选地,在程序运行时控制存储介质所在设备执行以下功能:对待传输战斗指令进行字符串去重处理,得到处理后的待传输战斗指令,其中,上述待传输战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态;在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令。
根据本申请实施例,还提供了一种处理器实施例。可选地,在本实施例中,上述处理器用于运行程序,其中,上述程序运行时执行上述任意一种游戏数据的传输方法。
本申请实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:对待传输战斗指令进行字符串去重处理,得到处理后的待传输战斗指令,其中,上述待传输战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态;在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:对待传输战斗指令进行字符串去重处理,得到处理后的待传输战斗指令,其中,上述待传输战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态;在游戏客户端与游戏服务端之间同步上述处理后的待传输战斗指令。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种游戏数据的传输方法,其特征在于,包括:
对待传输战斗指令进行字符串去重处理,得到处理后的待传输战斗指令,其中,所述待传输战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态;
在游戏客户端与游戏服务端之间同步所述处理后的待传输战斗指令。
2.根据权利要求1所述的方法,其特征在于,对所述待传输战斗指令进行字符串去重处理,得到所述处理后的待传输战斗指令包括以下至少之一:
对所述待传输战斗指令进行字符串去重处理,将所述待传输战斗指令从字符串数据格式转化为字典数据格式,得到所述处理后的待传输战斗指令;
对所述待传输战斗指令进行前缀去重处理,省略所述待传输战斗指令中采用相同前缀的部分战斗指令中的重复前缀,得到所述处理后的待传输战斗指令。
3.根据权利要求2所述的方法,其特征在于,在对所述待传输战斗指令进行字符串去重处理之前,所述方法还包括:
检测所述待传输战斗指令中待去重处理的字符串是否存在于服务器字典中,其中,所述服务器字典为预先建立的与所述传输战斗指令对应的字典;
若检测到所述待去重处理的字符串未存在于所述服务器字典中,则确定无需对所述待传输战斗指令进行字符串去重处理,并在所述服务器字典中建立所述待去重处理的字符串与目标整型数值的对应关系;
若检测到所述待去重处理的字符串存在于所述服务器字典中,则执行对所述待传输战斗指令进行字符串去重处理的步骤。
4.根据权利要求3所述的方法,其特征在于,对所述待传输战斗指令进行字符串去重处理,包括:
获取预先建立的所述待去重处理的字符串与所述目标整型数值的对应关系;
依据所述对应关系,将所述待去重处理的字符串替换为所述目标整型数值。
5.根据权利要求2所述的方法,其特征在于,对所述待传输战斗指令进行前缀去重处理,包括:
根据所述待传输战斗指令的存储顺序,遍历指令缓存区域中当前帧的每一条待传输战斗指令,其中,所述游戏服务器在当前游戏中的每场战斗开始前,初始化所述指令缓存区域,所述指令缓存区域用于根据指令类型缓存所述待传输战斗指令;
若所述指令缓存区域中存在与所述待传输战斗指令类型相同的缓存战斗指令,则检测所述待传输战斗指令与所述缓存战斗指令是否具有相同的前缀;
若检测结果为是,则将所述待传输战斗指令存储至所述指令缓存区域,并在去除所述待传输战斗指令的前缀之后,将所述处理后的待传输战斗指令存储目标被数据结构。
6.根据权利要求5所述的方法,其特征在于,若所述指令缓存区域中不存在与所述待传输战斗指令类型相同的缓存战斗指令,则直接将所述待传输战斗指令存储至所述指令缓存区域中。
7.根据权利要求1所述的方法,其特征在于,在游戏客户端与游戏服务端之间同步所述处理后的待传输战斗指令之前,所述方法还包括:
检测所述游戏客户端是否支持解压缩处理格式;
若检测到所述游戏客户端支持所述解压缩处理格式,则按照预设压缩方式对所述处理后的待传输战斗指令进行压缩处理,得到压缩结果,以在所述游戏客户端与所述游戏服务端之间同步所述压缩结果;
若检测到所述游戏客户端不支持所述解压缩处理格式,则直接执行在游戏客户端与游戏服务端之间同步所述处理后的待传输战斗指令的步骤。
8.根据权利要求1所述的方法,其特征在于,在对待传输战斗指令进行字符串去重处理之前,所述方法还包括:
接收来自所述游戏客户端的连接请求,其中,所述连接请求中携带有所述游戏客户端的引擎版本号;
确定与所述引擎版本号对应的压缩策略;
将所述压缩策略返回至所述游戏客户端,其中,所述游戏客户端用于依据所述压缩策略处理接收到的压缩结果,得到所述待传输战斗指令。
9.根据权利要求1所述的方法,其特征在于,在通过对待传输战斗指令进行预处理,得到处理后的待传输战斗指令之前,所述方法还包括:
在检测到所述当前帧的上一帧结束之后,在计时器的调度下进入所述当前帧,并获取当前帧的游戏运算逻辑产生的战斗状态;
依据所述战斗状态生成所述待传输战斗指令;
按照所述待传输战斗指令的指令生成时间,预先将所述待传输战斗指令存储至目标数据结构。
10.一种游戏数据的传输装置,其特征在于,包括:
处理模块,用于对待传输战斗指令进行字符串去重处理,得到处理后的待传输战斗指令,其中,所述待传输战斗指令用于反映游戏服务器中当前帧的游戏运算逻辑产生的战斗状态;
同步模块,用于在游戏客户端与游戏服务端之间同步所述处理后的待传输战斗指令。
11.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至9中任意一项所述的游戏数据的传输方法。
12.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至9中任意一项所述的游戏数据的传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010112992.2A CN111318012B (zh) | 2020-02-24 | 2020-02-24 | 游戏数据的传输方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010112992.2A CN111318012B (zh) | 2020-02-24 | 2020-02-24 | 游戏数据的传输方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111318012A CN111318012A (zh) | 2020-06-23 |
CN111318012B true CN111318012B (zh) | 2023-04-25 |
Family
ID=71165221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010112992.2A Active CN111318012B (zh) | 2020-02-24 | 2020-02-24 | 游戏数据的传输方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111318012B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685413A (zh) * | 2020-12-28 | 2021-04-20 | 北京像素软件科技股份有限公司 | 一种游戏配置表的读取方法、装置、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017006197A (ja) * | 2015-06-17 | 2017-01-12 | 株式会社ローレル・コード | アクションゲームにおける操作方法およびプログラム |
CN107930112A (zh) * | 2017-11-15 | 2018-04-20 | 杭州电魂网络科技股份有限公司 | 游戏数据传输方法及装置 |
CN108777664A (zh) * | 2018-05-31 | 2018-11-09 | 深圳市腾讯网络信息技术有限公司 | 一种数据包处理方法及其设备、系统、存储介质 |
CN109246214A (zh) * | 2018-09-10 | 2019-01-18 | 北京奇艺世纪科技有限公司 | 一种提示音获取方法、装置、终端及服务器 |
CN109586896A (zh) * | 2018-11-14 | 2019-04-05 | 陕西师范大学 | 一种基于哈希前缀树的数据完整性验证方法 |
-
2020
- 2020-02-24 CN CN202010112992.2A patent/CN111318012B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017006197A (ja) * | 2015-06-17 | 2017-01-12 | 株式会社ローレル・コード | アクションゲームにおける操作方法およびプログラム |
CN107930112A (zh) * | 2017-11-15 | 2018-04-20 | 杭州电魂网络科技股份有限公司 | 游戏数据传输方法及装置 |
CN108777664A (zh) * | 2018-05-31 | 2018-11-09 | 深圳市腾讯网络信息技术有限公司 | 一种数据包处理方法及其设备、系统、存储介质 |
CN109246214A (zh) * | 2018-09-10 | 2019-01-18 | 北京奇艺世纪科技有限公司 | 一种提示音获取方法、装置、终端及服务器 |
CN109586896A (zh) * | 2018-11-14 | 2019-04-05 | 陕西师范大学 | 一种基于哈希前缀树的数据完整性验证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111318012A (zh) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110366033B (zh) | 一种视频播放方法、装置、设备及存储介质 | |
JP2986319B2 (ja) | 準静的データを圧縮し展開する方法 | |
CN112087633B (zh) | 视频解码方法、装置及存储介质 | |
US20190320194A1 (en) | Virtual frame buffer system and method | |
EP3410302B1 (en) | Graphic instruction data processing method, apparatus | |
CN111901666B (zh) | 图像处理方法、装置、电子设备以及存储介质 | |
JP2009506456A (ja) | 任意のフォーマットにおけるラージオブジェクトの通信のためのリモートプロトコルサポート | |
CN108156509B (zh) | 视频播放方法、装置及用户终端 | |
CN103873886B (zh) | 一种处理图像信息的方法、装置及系统 | |
CN111318012B (zh) | 游戏数据的传输方法及装置 | |
AU2002234168B2 (en) | Method and apparatus for encoding information using multiple passes and decoding in a single pass | |
CN106937127B (zh) | 一种智能搜索准备的显示方法及其系统 | |
CN105727556B (zh) | 一种图像绘制的方法、相关设备及系统 | |
CN116842205A (zh) | 一种游戏回放方法、装置及存储介质 | |
US20030123544A1 (en) | Encoding system using motion vectors to represent frame-to-frame changes, wherein a decoder uses predictions of motion vectors in decoding | |
CN104219537B (zh) | 视频数据处理的方法、装置及系统 | |
WO2018068250A1 (zh) | 处理数据的方法、装置、芯片和摄像头 | |
CN108668170B (zh) | 图像信息处理方法及装置、存储介质 | |
CN114116234B (zh) | 一种基于浏览器的三维场景模型解压缩加载方法 | |
CN110392262B (zh) | 一种压缩虚拟桌面图像的方法及装置 | |
CN115250351A (zh) | 用于图像数据的压缩方法、解压方法及相关产品 | |
CN114003546B (zh) | 一种多通道开关量复合编码设计方法和装置 | |
CN116614676B (zh) | 在消息同步中虚拟人物动画重播的方法、系统及存储介质 | |
JP7304419B2 (ja) | 送信装置、送信方法及びプログラム | |
US20220046237A1 (en) | Methods of parameter set selection in cloud gaming system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |