数据传输方法、装置、电子设备及可读存储介质转让专利

申请号 : CN202110738749.6

文献号 : CN113398568B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 曾衍

申请人 : 广州方硅信息技术有限公司

摘要 :

本申请公开了一种数据传输方法、装置、电子设备及可读存储介质,旨在降低云游戏运行期间对网络资源的占用。其中,数据传输方法包括:获得游戏输入设备的连续多个输入操作,连续多个输入操作中的每个输入操作用于控制目标游戏;根据连续多个输入操作生成操作数据,操作数据用于表征连续多个输入操作;将操作数据发送给用于运行目标游戏的服务器。本申请中,连续多个输入操作被一次性地发送给服务器,而不需要针对每个输入操作分别发送给服务器。如此,本申请可以减少终端与服务器之间的数据传递次数,从而有效降低云游戏运行期间对网络资源的占用。

权利要求 :

1.一种数据传输方法,其特征在于,应用于客户端或系统程序,所述方法包括:基于消息队列机制,周期性地获得多个游戏输入设备在当前周期内的连续多个输入操作,所述连续多个输入操作中的每个输入操作用于控制目标游戏;其中,所述游戏输入设备的数量至少为1个;当所述游戏输入设备的数量为多个时,所述连续多个输入操作是多个游戏输入设备在一段时间内的全部输入操作;

其中,所述游戏输入设备包括键盘,所述键盘中用于控制所述目标游戏的目标按键为n个;

针对所述连续多个输入操作中的每个键盘输入操作,将每个键盘输入操作的按键信息转换为m位的二进制数,作为每个键盘输入操作的输入数据;其中,所述m等于log2n向上取整后的数值,所述n和所述m均为大于0的整数;

根据所述连续多个输入操作中每个输入操作的输入数据,生成操作数据,所述操作数据包括所述每个输入操作的输入数据;

将所述操作数据发送给用于运行所述目标游戏的服务器。

2.根据权利要求1所述的方法,其特征在于,所述根据所述连续多个输入操作生成操作数据,包括:根据所述连续多个输入操作中每个输入操作的输入时间顺序,生成所述操作数据,所述操作数据包括所述每个输入操作,所述每个输入操作在所述操作数据中的排序用于表征所述每个输入操作的输入时间顺序。

3.根据权利要求2所述的方法,其特征在于,所述服务器包括业务服务器和游戏服务器;所述将所述操作数据发送给用于运行所述目标游戏的服务器,包括:将所述操作数据发送给所述业务服务器,使所述业务服务器将所述操作数据解析成所述连续多个输入操作,并按照所述连续多个输入操作中每个输入操作的输入时间顺序,将所述每个输入操作发送给所述游戏服务器。

4.根据权利要求1所述的方法,其特征在于,所述服务器包括业务服务器和游戏服务器,所述业务服务器存储有按键信息与二进制数之间的对应关系;所述将所述操作数据发送给用于运行所述目标游戏的服务器,包括:将所述操作数据发送给所述业务服务器,使所述业务服务器根据所述对应关系,将所述操作数据中每个键盘输入操作的输入数据解析成按键信息,并将解析成的按键信息发送给所述游戏服务器。

5.一种数据传输装置,其特征在于,应用于客户端或系统程序,所述装置包括:输入操作获得模块,用于基于消息队列机制,周期性地获得多个游戏输入设备在当前周期内的连续多个输入操作,所述连续多个输入操作中的每个输入操作用于控制目标游戏;其中,所述游戏输入设备的数量至少为1个;当所述游戏输入设备的数量为多个时,所述连续多个输入操作是多个游戏输入设备在一段时间内的全部输入操作;

其中,所述游戏输入设备包括键盘,所述键盘中用于控制所述目标游戏的目标按键为n个;

操作数据生成模块,用于根据所述连续多个输入操作生成操作数据,所述操作数据用于表征所述连续多个输入操作;

所述操作数据生成模块,还用于:

针对所述连续多个输入操作中的每个键盘输入操作,将每个键盘输入操作的按键信息转换为m位的二进制数,作为每个键盘输入操作的输入数据;其中,所述m等于log2n向上取整后的数值,所述n和所述m均为大于0的整数;

根据所述连续多个输入操作中每个输入操作的输入数据,生成所述操作数据,所述操作数据包括所述每个输入操作的输入数据;

操作数据发送模块,用于将所述操作数据发送给用于运行所述目标游戏的服务器。

6.一种电子设备,其特征在于,包括处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述处理器执行以实现权利要求1至4任一项所述的方法。

7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行权利要求1至4任一项所述的方法。

说明书 :

数据传输方法、装置、电子设备及可读存储介质

技术领域

[0001] 本申请涉及云游戏技术领域,更具体地,涉及一种数据传输方法、装置、电子设备及可读存储介质。

背景技术

[0002] 云游戏是以云计算为基础的游戏方式,在云游戏的运行模式下,服务器用于运行游戏,并将渲染完毕的游戏画面压缩后通过网络传递给终端。而终端通常不需要高端处理器和高端显卡,只需要基本的视频解压能力即可。此外,终端还用于将键盘、鼠标或者手柄等游戏输入设备的输入操作发送给服务器,使服务器根据终端发送的输入操作控制游戏的运行。
[0003] 由于云游戏运行期间,服务器和终端之间需要传递大量的数据(例如输入操作和视频画面等),因此导致云游戏运行期间会占用大量的网络资源。

发明内容

[0004] 鉴于上述问题,本申请实施例提供了一种数据传输方法、装置、电子设备及可读存储介质,旨在降低云游戏运行期间对网络资源的占用。
[0005] 第一方面,本申请实施例提供了一种数据传输方法,所述方法包括:获得游戏输入设备的连续多个输入操作,所述连续多个输入操作中的每个输入操作用于控制目标游戏;根据所述连续多个输入操作生成操作数据,所述操作数据用于表征所述连续多个输入操作;将所述操作数据发送给用于运行所述目标游戏的服务器。
[0006] 第二方面,本申请实施例提供了一种数据传输装置,所述装置包括:输入操作获得模块、操作数据生成模块以及操作数据发送模块;输入操作获得模块用于获得游戏输入设备的连续多个输入操作,所述连续多个输入操作中的每个输入操作用于控制目标游戏;操作数据生成模块用于根据所述连续多个输入操作生成操作数据,所述操作数据用于表征所述连续多个输入操作;操作数据发送模块用于将所述操作数据发送给用于运行所述目标游戏的服务器。
[0007] 第三方面,本申请实施例提供了一种电子设备,包括处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述处理器执行以实现上述的方法。
[0008] 第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行上述的方法。
[0009] 第五方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的方法。
[0010] 本申请实施例提供的技术方案中,通过获得游戏输入设备的连续多个输入操作,并根据连续多个输入操作生成操作数据,由于操作数据可以表征连续多个输入操作,因此操作数据可以表征游戏用户的一连串游戏操作。并且本申请中,还将操作数据发送给服务器,使得连续多个输入操作被一次性地发送给服务器,而不需要针对每个输入操作分别发送给服务器。如此,本申请可以减少终端与服务器之间的数据传递次数,从而有效降低云游戏运行期间对网络资源的占用。

附图说明

[0011] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0012] 图1是本申请一实施例提供的一种实施环境的示意图;
[0013] 图2是本申请一实施例提出的数据传输方法的流程示意图;
[0014] 图3是本申请一实施例提出的基于消息队列机制获取输入操作的示意图;
[0015] 图4是本申请一实施例提出的数据传输装置400的示意图;
[0016] 图5是本申请一实施例提出的用于执行数据传输方法的设备的组成结构示意图。

具体实施方式

[0017] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0018] 云游戏是以云计算为基础的游戏方式,在云游戏的运行模式下,服务器用于运行游戏,并将渲染完毕的游戏画面压缩后通过网络传递给终端。而终端通常不需要高端处理器和高端显卡,只需要基本的视频解压能力即可。此外,终端还用于将键盘、鼠标或者手柄等游戏输入设备的输入操作发送给服务器,使服务器根据终端发送的输入操作控制游戏的运行。由于云游戏运行期间,服务器和终端之间需要传递大量的数据(例如输入操作和视频画面等),因此导致云游戏运行期间会占用大量的网络资源。
[0019] 有鉴于此,本申请实施例提供一种数据传输方法、装置、电子设备及可读存储介质,通过将游戏输入设备的连续多个输入操作聚合成操作数据,再将操作数据发送给服务器,使得连续多个输入操作被一次性地发送给服务器,而不需要针对每个输入操作分别发送给服务器。如此,本申请可以减少终端与服务器之间的数据传递次数,从而有效降低云游戏运行期间对网络资源的占用。
[0020] 下面对本申请实施例提供的数据传输方法涉及的实施环境进行介绍。参考图1,图1是本申请一实施例提供的一种实施环境的示意图。如图1所示,该实施环境可以包括客户端100、业务服务器210、业务数据仓库220、游戏服务器230以及音视频服务器240。
[0021] 如图1所示,运行客户端100的设备可以连接键盘110、鼠标120或者手柄等游戏输入设备,为简化附图,图1中未示出手柄。其中,运行客户端100的设备是具有界面显示功能的设备,比如该设备可以是智能手机、游戏机、平板电脑、笔记本电脑或者台式计算机,但并不局限于此。
[0022] 如图1所示,业务服务器210用于接收客户端100发送的鉴权请求,并从业务数据仓库220读取用于鉴权的用户数据,从而根据读取的用户数据执行鉴权操作。此外,业务服务器210还用于接收游戏服务器230发送的主机列表,主机列表用于表征各个游戏服务器230当前是否空闲。业务服务器210在确定客户端110通过鉴权后,可以根据主机列表,为客户端100分配一个或多个空闲的游戏服务器230。如此,相当于将一个或多个空闲的游戏服务器
230订阅给客户端100。
[0023] 如图1所示,在游戏期间,客户端100会获得键盘110、鼠标120或者手柄等游戏输入设备的连续多个输入操作,客户端100将连续多个输入操作聚合成操作数据,并将操作数据发送给业务服务器210。业务服务器210对操作数据解析成连续多个输入操作,并将每个输入操作发送给客户端100订阅的一个或多个游戏服务器230。游戏服务器230响应于业务服务器发送的输入操作,根据输入操作,渲染出相应的游戏画面,并对渲染完毕的游戏画面进行压缩,以及以推流的方式,将压缩后的游戏画面发送给音视频服务器240。如图1所示,客户端100以拉流的方式,从音视频服务器24获取压缩后的游戏画面,客户端100对压缩后的游戏画面进行解压和显示。
[0024] 如图1所示,客户端100与业务服务器210之间可以由网络300连接,从而客户端100可以基于网络300,向业务服务器210发送鉴权请求和操作数据等。客户端100与音视频服务器240之间也可以由网络300连接,从而客户端100可以基于网络300,从音视频服务器240获取压缩后的游戏画面。
[0025] 其中,网络300可以是无线网络、有线网络或者二者的结合。在一些实施例中,网络300使用标准通信技术和/或协议,网络300通常为因特网,但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark‑up Language,HTML)、可扩展标记语言(Extensible Markup Language,XML)等的技术和/或格式来代表通过网络300交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(Internet Protocol Security,IPsec)等常规加密技术来加密所有或者一些链路。在一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
[0026] 在一些可能的实施场景中,客户端100可以是直播类应用程序(APP),直播类应用程序的用户界面上包括游戏入口控件。直播类应用程序响应于用户对游戏入口控件的点击,从而开始执行与游戏相关的步骤,例如前述发送鉴权请求、获得游戏输入设备的连续多个输入操作、将连续多个输入操作聚合成操作数据等步骤。
[0027] 需要说明的是,以上结合图1提供的实施环境作为本申请多种实施环境中的一种示例,本申请实施例提出的数据传输方法还可以应用于其他实施环境。
[0028] 例如在其他实施环境中,运行客户端的设备可以不连接物理键盘,而是通过其触摸显示屏显示虚拟键盘。客户端获得虚拟键盘的连续多个输入操作,客户端将连续多个输入操作聚合成操作数据,并将操作数据发送给业务服务器。
[0029] 下面将结合附图具体描述本申请的各实施例。
[0030] 参考图2,图2是本申请一实施例提出的数据传输方法的流程示意图。在一些实施环境中,该数据传输方法可以由运行在终端设备中的客户端执行。在另一些实施环境中,该数据传输方法可以直接由终端设备的系统程序执行,其中,终端设备包括但不限于智能手机、游戏机、平板电脑、笔记本电脑或者台式计算机。为便于说明,本申请将执行该数据传输方法的主体(例如客户端或系统程序)简称为执行主体。
[0031] 如图2所示,该数据传输方法包括以下步骤:
[0032] S21:获得游戏输入设备的连续多个输入操作,连续多个输入操作中的每个输入操作用于控制目标游戏。
[0033] 本申请中,游戏输入设备包括以下几种设备中的至少一种:键盘、鼠标、手柄、触摸显示屏、显示在触摸显示屏上的虚拟键盘。
[0034] 其中,如果游戏输入设备为键盘,则键盘的输入操作是指针对键盘按键的敲击操作。例如,针对键盘按键的敲击操作可以用于控制目标游戏中角色的行为,如向前跑动、向后跑动、向左跑动、向后跑动、执行攻击操作或者执行防御操作等。需要说明的是,对于键盘敲击操作具体如何控制目标游戏,本申请不做限定。
[0035] 如果游戏输入设备为鼠标,则鼠标的输入操作是指针对鼠标左键或右键的点击操作。例如,针对鼠标左键或右键的点击操作可以用于控制目标游戏中角色的指向,如角色跑动方向、角色攻击方向或者角色防御方向等。或者例如,针对鼠标左键或右键的点击操作可以用于控制目标游戏中的道具,如控制道具的选择,或者控制道具的捡拾等。需要说明的是,对于鼠标点击操作具体如何控制目标游戏,本申请不做限定。
[0036] 如果游戏输入设备为触摸显示屏,则触摸显示屏的输入操作是指针对触摸显示屏的点触操作。例如,针对触摸显示屏的点触操作可以用于控制目标游戏中角色的行为,如向前跑动、向后跑动、向左跑动、向后跑动、执行攻击操作或者执行防御操作等。或者例如,针对触摸显示屏的点触操作可以用于控制目标游戏中的道具,如控制道具的拿起或放下,或者控制道具的捡拾或搜集等。需要说明的是,对于触摸显示屏点触操作具体如何控制目标游戏,本申请不做限定。
[0037] 本申请中,游戏输入设备的连续多个输入操作是指在一段时间内游戏输入设备的全部输入操作。
[0038] 如果用于控制目标游戏的游戏输入设备的数量为多个,则游戏输入设备的连续多个输入操作是指多个游戏输入设备在一段时间内的全部输入操作。其中,多个是指两个或两个以上。
[0039] 为便于理解,例如用于控制目标游戏的游戏输入设备包括键盘和鼠标,则游戏输入设备的连续多个输入操作是指在一段时间内键盘和鼠标的全部输入操作。需要说明的是,在游戏期间,如果某段时间内用户只快速敲击键盘,则这段时间内游戏输入设备的连续多个输入操作只包括键盘的输入操作。如果某段时间内用户只快速点击鼠标,则这段时间内游戏输入设备的连续多个输入操作只包括鼠标的输入操作。如果某段时间内用户同时敲击键盘和点击鼠标,则这段时间内游戏输入设备的连续多个输入操作只包括键盘和鼠标的输入操作。
[0040] 如果用于控制目标游戏的游戏输入设备的数量为一个,则游戏输入设备的连续多个输入操作是指该游戏输入设备在一段时间内的全部输入操作。
[0041] 为便于理解,例如用于控制目标游戏的游戏输入设备只包括键盘,则游戏输入设备的连续多个输入操作是指在一段时间内键盘的全部输入操作。例如用于控制目标游戏的游戏输入设备只包括鼠标,则游戏输入设备的连续多个输入操作是指在一段时间内鼠标的全部输入操作。
[0042] 本申请中,由于获得了游戏输入设备在一段时间内的全部输入操作,并且每个输入操作均用于控制目标游戏,使得用户的每次游戏操作(例如对键盘按键的敲击,对鼠标左键或右键的点击,或者对触摸显示屏的点触)都会被采集到,并进行后续处理,从而确保了用户游戏操作的连续性,有利于进一步提升用户体验。
[0043] 在一些实施例中,游戏输入设备的数量为多个,执行主体在执行步骤S21时,具体地,可以周期性地获取多个游戏输入设备的连续多个输入操作。例如,执行主体可以周期性地获得多个游戏输入设备在当前周期内的全部输入操作。
[0044] 具体实现时,执行主体可以基于消息队列(Message Queue)机制,周期性地获取多个游戏输入设备的连续多个输入操作。消息队列机制包括消息的生产者、消息的消费者以及消息队列。其中,生产者获得消息后不需要等待消费者处理,而是将消息放入消息队列。消费者不需要向生产者索取消息,而是从消息队列中读取消息。
[0045] 本申请中,每个游戏输入设备各自对应的事件监听器作为消息的生产者,当某个事件监听器监听到相应游戏输入设备的输入操作时,则该事件监听器将该输入操作作为一条消息,并将该条消息放入消息队列。例如当键盘事件监听器监听到键盘的输入操作时,则键盘事件监听器将该输入操作作为一条消息,并将该条消息放入消息队列。例如当鼠标事件监听器监听到鼠标的输入操作时,则鼠标事件监听器将该输入操作作为一条消息,并将该条消息放入消息队列。
[0046] 本申请中,执行主体作为消息的消费者,执行主体周期性地从消息队列中读取出全部消息,从而获得当前周期内的全部输入操作。例如,执行主体每隔500毫秒,从消息队列读取一次消息。执行主体每次从消息队列读取消息时,将消息队列中存放的消息全部读取出。换言之,执行主体每次从消息队列读取的消息是:在上次读取操作和本次读取操作期间,由各个事件监听器放入消息队列的全部消息。
[0047] 为便于理解上述方案,参考图3,图3是本申请一实施例提出的基于消息队列机制获取输入操作的示意图。如图3所示,键盘事件监听器和鼠标事件监听器作为消息的生产者,执行主体(以客户端为例)作为消息的消费者。
[0048] 图3所示的示例中,客户端每500毫秒从消息队列读取一次消息。客户端上一次读取消息的时刻是10点30分15秒025毫秒。为简化附图,图3中未示出客户端上一次读取消息的过程。
[0049] 如图3所示,在10点30分15秒073毫秒时刻,鼠标事件监听器向消息队列放入了输入操作a;在10点30分15秒195毫秒时刻,鼠标事件监听器向消息队列放入了输入操作b;在10点30分15秒316毫秒时刻,键盘事件监听器向消息队列放入了输入操作c;在10点30分15秒385毫秒时刻,键盘事件监听器向消息队列放入了输入操作d;在10点30分15秒441毫秒时刻,键盘事件监听器向消息队列放入了输入操作e。
[0050] 如图3所示,在10点30分15秒525毫秒时刻,再次达到了客户端读取消息的时刻,客户端从消息队列中读取出全部消息,即输入操作a至输入操作f。
[0051] S22:根据连续多个输入操作生成操作数据,操作数据用于表征连续多个输入操作。
[0052] 本申请中,由于操作数据可以表征连续多个输入操作,因此后续将操作数据发送给用于运行目标游戏的服务器后,使得服务器可以根据操作数据确定出游戏输入设备的连续多个输入操作,从而可以根据各个输入操作对目标游戏进行相应控制。
[0053] 具体实现时,执行主体可以将连续多个输入操作组成一个数列或者列表,数列或列表中包括每个输入操作,数列或列表作为生成的操作数据。由于操作数据中包括了每个输入操作,因此操作数据可以表征连续多个输入操作。
[0054] 在一些实施例中,操作数据还可以表征连续多个输入操作的时间顺序,因此后续将操作数据发送给用于运行目标游戏的服务器后,使得服务器可以按照各个输入操作的时间顺序,对目标游戏进行一些列连续控制。
[0055] 为了使得生成的操作数据可以表征连续多个输入操作的时间顺序,执行主体在生成操作数据时,可以根据连续多个输入操作中每个输入操作的输入时间顺序,生成操作数据,操作数据包括每个输入操作,每个输入操作在操作数据中的排序用于表征每个输入操作的输入时间顺序。
[0056] 具体实现时,如前所述,执行主体可以基于消息队列机制获取输入操作。由于每个事件监听器在监听到输入操作后,随即将监听到的输入操作作为一条消息并放入消息队列中,因此消息队列中的多个输入操作是按照输入时间顺序排列的。当执行主体从消息队列中读取出多个输入操作后,读取出的多个输入操作也是按照输入时间顺序排列的。如此,执行主体可以按照读取出的多个输入操作的原有顺序,将多个输入操作合并成一个数列或者列表,作为操作数据。操作数据保留了多个输入操作的原有顺序,因此可以表征每个输入操作的输入时间顺序。
[0057] 需要补充说明的是,本申请中,由于执行主体基于消息队列机制获取输入操作。如此,执行主体每次从消息队列中读取出的连续多个输入操作自动地按照输入时间顺序排列。基于此,执行主体可以直接将读取出的连续多个输入操作合并成操作数据,操作数据中多个输入操作的排序自动符合输入时间顺序。可见,执行主体不需要对获取的多个输入操作进行排序,因此有利于缩短操作数据的生成时间,从而有利于提高游戏的流畅度,提升用户体验。
[0058] S23:将操作数据发送给用于运行目标游戏的服务器。
[0059] 本申请中,执行主体将操作数据发送给服务器,使服务器从操作数据中解析出连续多个输入操作,并按照每个输入操作的输入时间顺序,处理每个输入操作,从而控制目标游戏的运行。
[0060] 在一些可能的实现方式中,如图1所示,用于运行目标游戏的服务器包括业务服务器和游戏服务器,执行主体将操作数据发送给业务服务器,使业务服务器将操作数据解析成连续多个输入操作,并按照连续多个输入操作中每个输入操作的输入时间顺序,将每个输入操作发送给游戏服务器。
[0061] 具体实现时,如前所述,由于操作数据保留了多个输入操作的原有顺序,而多个输入操作的原有顺序可以表征每个输入操作的输入时间顺序。因此业务服务器在解析操作数据和发送输入操作时,可以按照多个输入操作的原有顺序,从操作数据中依次读取出每个输入操作,并且每读取出一个输入操作,就将该输入操作发送给游戏服务器。
[0062] 本申请以上实施例提供的技术方案中,通过获得游戏输入设备的连续多个输入操作,并根据连续多个输入操作生成操作数据,由于操作数据可以表征连续多个输入操作,因此操作数据可以表征游戏用户的一连串游戏操作。并且本申请中,还将操作数据发送给服务器,使得连续多个输入操作被一次性地发送给服务器,而不需要针对每个输入操作分别发送给服务器。如此,本申请可以减少终端与服务器之间的数据传递次数,从而有效降低云游戏运行期间对网络资源的占用。
[0063] 此外,在游戏输入设备包括键盘的情况下,考虑到在游戏期间,用户通常会频繁且快速敲击键盘按键,以达到快速操控游戏的目的,从而体验游戏乐趣。但是由于键盘的按键数量较多,在采用二进制数表征按键信息时,需要一个较长的二进制数才能表示出按键信息。比如,当按键数量等于108时,每个按键信息至少需要7位二进制数表征。又由于执行主体向服务器发送的操作数据中包括键盘的多次输入操作,键盘的每次输入操作需要由一个较长的二进制数表征。因此,执行主体向服务器传递的操作数据是一个数据量比较大的数据。
[0064] 基于上述考虑,在一些实施例中,为了进一步降低云游戏运行期间对网络资源的占用,执行主体在根据连续多个输入操作生成操作数据时,可以采用一定的技术手段,从而降低操作数据的数据量。
[0065] 具体实现时,执行主体可以预先接收服务器发送的对应关系,该对应关系是目标按键与按键编号之间的对应关系。其中,目标按键是指键盘中用于控制目标游戏的按键,按键编号均为自然数,多个目标按键的按键编号从0开始逐渐递增。
[0066] 例如,某款游戏中用于控制该游戏的目标按键有5个,5个目标按键分别为:按键A、按键W、按键D、按键X以及按键S。其中,按键A用于控制游戏角色向左运动,按键W用于控制游戏角色向上运动,按键D用于控制游戏角色向右运动,按键X用于控制游戏角色向下运动,按键S用于控制目标角色执行攻击操作。则执行主体接收到的对应关系形如:按键A‑编号0,按键W‑编号1,按键D‑编号2,按键X‑编号3,按键S‑编号4。
[0067] 需要说明的是,对于不同的游戏,其各自的目标按键数量可能互不相同。为便于说明,本申请将目标按键的数量表示为n个,n为大于0的整数。
[0068] 执行主体在根据连续多个输入操作生成操作数据时,可以生成每个输入操作的输入数据,并根据连续多个输入操作中每个输入操作的输入数据,生成操作数据,操作数据包括每个输入操作的输入数据。
[0069] 其中,执行主体在为每个键盘输入操作生成输入数据时,将每个键盘输入操作的按键信息转换为m位的二进制数,作为每个键盘输入操作的输入数据。其中,m等于log2n向上取整后的数值,n和m均为大于0的整数。具体地,执行主体可以根据预先接收的对应关系,确定出目标按键的数量n,再根据n计算出m。执行主体在为每个键盘输入操作生成输入数据时,根据该键盘输入操作的按键信息和对应关系,确定出该按键信息对应的按键编号,再将确定出的按键编号转换为m位的二进制数。
[0070] 为便于理解上述方案,示例性地,执行主体在进入游戏之前,向业务服务器发送了鉴权请求,鉴权请求携带了目标游戏id。业务服务器响应于该鉴权请求,执行鉴权操作。业务服务器在确定执行主体通过鉴权后,可以根据鉴权请求携带的目标游戏id,查询到目标游戏的对应关系。业务服务器将查询到的对应关系发送给执行主体,假设该对应关系形如:按键A‑编号0,按键W‑编号1,按键D‑编号2,按键X‑编号3,按键S‑编号4。
[0071] 执行主体接收到对应关系后,根据该对应关系,确定键盘中用于控制目标游戏的目标按键为5个,执行主体计算出log25等于2.32,2.32向上取整后等于3,从而确定出参数m等于3。
[0072] 在游戏期间,执行主体每次获得连续多个输入操作时,针对连续多个输入操作中的每个键盘输入操作,根据该键盘输入操作的按键信息和对应关系,确定该按键信息对应的按键编号,并将该按键编号转换为3位的二进制数,作为该键盘输入操作的输入数据。例如某个键盘输入操作的按键信息为D,则根据按键信息D和对应关系,确定出按键信息D对应的按键编号等于2,从而将按键编号2转换为二进制数010,二进制数010作为该键盘输入操作的输入数据。执行主体还根据连续多个输入操作中每个输入操作的输入数据,生成操作数据,从而将操作数据发送给业务服务器。
[0073] 业务服务器存储有按键信息与二进制数之间的对应关系。执行主体将操作数据发送给业务服务器后,使业务服务器根据对应关系,将操作数据中每个键盘输入操作的输入数据解析成按键信息,并将解析成的按键发送给游戏服务器。
[0074] 具体实现时,如前所述,由于操作数据包括了多个输入操作,而每个输入操作是由输入数据表征的。换言之,操作数据中包括多个输入数据,每个输入数据分别代表一个输入操作。因此业务服务器在解析操作数据时,可以按照操作数据中各个输入数据的原有顺序,依次读取出每个输入数据。当执行主体读取到键盘输入操作的输入数据时,根据对应关系,将该输入数据由m位的二进制数转换为对应的按键信息。例如某个键盘输入操作的输入数据形如010,则业务服务器根据对应关系,将输入数据010解析成按键信息D。
[0075] 本申请的以上实施例中,根据目标按键数量n计算出m,从而得到了可以表征所有目标按键的二进制数的最小位数。并且在生成操作数据期间,针对每个键盘输入操作,将键盘输入操作的键盘信息转换为m位的二进制数。可见本申请中,通过上述技术手段,可以使得每个键盘输入操作可以由更短的二进制数表征,从而可以有效降低操作数据的数据量,以进一步降低云游戏运行期间对网络资源的占用。
[0076] 此外,为了进一步满足用户对游戏的个性化配置需求,在一些实施例中,执行主体可以显示关系配置页面,该关系配置页面中包括多个配置控件,每个配置控件分别用于为一种游戏操作配置相应的按键。
[0077] 例如某款游戏中,各种游戏操作与按键的默认关系为:按键A‑向左运动,按键W‑向上运动,按键D‑向右运动,按键X‑向下运动,按键S‑执行攻击操作。用户可以基于关系配置页面中的多个配置控件,将向左运动的按键配置为H,将向上运动的按键配置为U,将向右运动的按键配置为K,将向下运动的按键配置为M,将执行攻击操作的按键配置为J。
[0078] 执行主体可以基于用户的上述配置,调整目标按键与按键编号之间的对应关系。例如,原有的对应关系形如:按键A‑编号0,按键W‑编号1,按键D‑编号2,按键X‑编号3,按键S‑编号4。调整后的对应关系形如:按键H‑编号0,按键U‑编号1,按键K‑编号2,按键M‑编号3,按键J‑编号4。需要说明的是,业务服务器中存储的对应关系(即按键信息与二进制数之间的对应关系)可以不调整。
[0079] 在游戏期间,执行主体每次获得连续多个输入操作时,针对连续多个输入操作中的每个键盘输入操作,根据该键盘输入操作的按键信息和调整后的对应关系,确定该按键信息对应的按键编号,并将该按键编号转换为m位的二进制数,作为该键盘输入操作的输入数据。例如某个键盘输入操作的按键信息为K,则根据按键信息K和调整后的对应关系,确定出按键信息K对应的按键编号等于2,从而将按键编号2转换为二进制数010,二进制数010作为该键盘输入操作的输入数据。
[0080] 执行主体根据连续多个输入操作中每个输入操作的输入数据,生成操作数据,并将操作数据发送给业务服务器,使业务服务器根据对应关系,将操作数据中每个键盘输入操作的输入数据解析成按键信息,并将解析成的按键发送给游戏服务器。
[0081] 具体实现时,如前所述,由于操作数据包括了多个输入操作,而每个输入操作是由输入数据表征的。换言之,操作数据中包括多个输入数据,每个输入数据分别代表一个输入操作。因此业务服务器在解析操作数据时,可以按照操作数据中各个输入数据的原有顺序,依次读取出每个输入数据。当执行主体读取到键盘输入操作的输入数据时,根据对应关系,将该输入数据由m位的二进制数转换为对应的按键信息。例如某个键盘输入操作的输入数据形如010,则业务服务器根据对应关系,将输入数据010解析成按键信息D。
[0082] 参考图4,图4是本申请一实施例提出的数据传输装置400的示意图。如图4所示,数据传输装置400包括:
[0083] 输入操作获得模块410,用于获得游戏输入设备的连续多个输入操作,所述连续多个输入操作中的每个输入操作用于控制目标游戏;
[0084] 操作数据生成模块420,用于根据所述连续多个输入操作生成操作数据,所述操作数据用于表征所述连续多个输入操作;
[0085] 操作数据发送模块430,用于将所述操作数据发送给用于运行所述目标游戏的服务器。
[0086] 在一些具体实现方式中,游戏输入设备的数量为多个,连续多个输入操作是多个游戏输入设备在一段时间内的全部输入操作。
[0087] 在一些具体实现方式中,输入操作获得模块410具体用于:周期性地获得多个游戏输入设备在当前周期内的全部输入操作。
[0088] 在一些具体实现方式中,操作数据生成模块420具体用于:根据连续多个输入操作中每个输入操作的输入时间顺序,生成操作数据,操作数据包括每个输入操作,每个输入操作在操作数据中的排序用于表征每个输入操作的输入时间顺序。
[0089] 在一些具体实现方式中,服务器包括业务服务器和游戏服务器;操作数据发送模块430具体用于:将操作数据发送给业务服务器,使业务服务器将操作数据解析成连续多个输入操作,并按照连续多个输入操作中每个输入操作的输入时间顺序,将每个输入操作发送给游戏服务器。
[0090] 在一些具体实现方式中,游戏输入设备包括键盘,键盘中用于控制目标游戏的目标按键为n个;操作数据生成模块420具体用于:针对连续多个输入操作中的每个键盘输入操作,将每个键盘输入操作的按键信息转换为m位的二进制数,作为每个键盘输入操作的输入数据;其中,m等于log2n向上取整后的数值,n和m均为大于0的整数;根据连续多个输入操作中每个输入操作的输入数据,生成操作数据,操作数据包括每个输入操作的输入数据。
[0091] 在一些具体实现方式中,服务器包括业务服务器和游戏服务器,业务服务器存储有按键信息与二进制数之间的对应关系;操作数据发送模块430具体用于:将操作数据发送给业务服务器,使业务服务器根据对应关系,将操作数据中每个键盘输入操作的输入数据解析成按键信息,并将解析成的按键信息发送给游戏服务器。
[0092] 参考图5,图5是本申请一实施例提出的用于执行数据传输方法的设备的组成结构示意图。
[0093] 图5所示的设备500包括:至少一个处理器510、存储器550、至少一个网络接口520和用户接口530等组件。设备500中的各个组件通过总线系统540耦合在一起,总线系统540用于实现这些组件之间的连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明,在图5中将各种总线都标为总线系统540。
[0094] 处理器510可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
[0095] 用户接口530包括使得能够呈现媒体内容(例如前述流程图、配置栏等)的一个或多个输出装置531,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口530还包括一个或多个输入装置532,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触摸显示屏、摄像头、其他输入按钮和控件。
[0096] 存储器550可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器550可选地包括在物理位置上远离处理器510的一个或多个存储设备。
[0097] 存储器550包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器550旨在包括任意适合类型的存储器。
[0098] 在一些实施例中,存储器550能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
[0099] 操作系统551,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。
[0100] 网络通信模块552,用于经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(Wi‑Fi)、和通用串行总线(USB,Universal Serial Bus)等。
[0101] 呈现模块553,用于经由一个或多个与用户接口530相关联的输出装置531(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口)。
[0102] 输入处理模块554,用于对一个或多个来自一个或多个输入装置532之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
[0103] 在一些实施例中,本申请实施例提供的数据传输装置可以采用软件方式实现,图5示出了存储在存储器550中的数据传输装置400,其可以是程序和插件等形式的软件,至少包括以下软件模块:输入操作获得模块410、操作数据生成模块420以及操作数据发送模块430,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。本申请已在上文中说明各个模块的功能,为避免重复,此处不再说明。
[0104] 在另一些实施例中,本申请实施例提供的数据传输装置可以采用硬件方式实现,作为示例,本申请实施例提供的数据传输装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的流程处理方法。例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field‑Programmable Gate Array)或其他电子元件。
[0105] 本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的数据传输方法。
[0106] 本申请实施例还提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的数据传输方法,例如,如图2示出的数据传输方法。
[0107] 在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD‑ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
[0108] 在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
[0109] 作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper Text Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
[0110] 作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
[0111] 以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。