一种云游戏实现方法及装置
技术领域
本申请涉及云计算技术领域,特别涉及一种云游戏实现方法及装置、计算设备和计算机可读存储介质。
背景技术
随着近年来游戏产业、终端技术和网络带宽的高速发展,云计算技术的日趋成熟,云游戏也随之产生,用户的终端设备与云端高性能计算资源互联,使游戏不在局限于终端设备本身。
但是,在现有的云游戏中,云游戏服务器端都是采用虚拟机技术,在服务器中虚拟出多个操作系统的虚拟机,每个虚拟机分配给客户端的一位玩家远程接入使用,但是这种方案下,介于服务器的性能,服务器能承受接入的用户的数量是有限的,在使用相关厂商的虚拟机时需要使用相应的客户端的操作系统,并且每个虚拟机需要交纳价格不菲的授权使用费,导致现有技术的成本居高不下,并且在用户同时通过云游戏调用服务器的第三方应用时会出现资源冲突的问题。
那么,如何使得服务器能接入更多的用户,降低云游戏的成本,使用户使用任意客户端即可体验云游戏,就是目前亟待解决的问题。
发明内容
有鉴于此,本申请实施例提供了一种云游戏实现方法及装置、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本申请实施例的第一方面,提供了一种云游戏实现方法,用于服务器,包括:
接收客户端的用户操作信息,并将所述用户操作信息转换为对应的控制指令;
根据所述控制指令处理对应的云游戏,生成与所述控制指令对应的操作数据;
拦截并获取所述操作数据;
将所述操作数据进行编码,获得对应的编码数据;
将所述编码数据传输至所述客户端。
可选的,所述服务器包括预设的与所述云游戏对应的软件工具开发包;
将所述用户操作信息转换为对应的控制指令,包括:
根据所述用户操作信息和所述软件工具开发包,获取与所述用户操作信息对应的控制指令。
可选的,生成与所述控制指令对应的操作数据,包括:
生成与所述控制指令对应的游戏数据,或生成与所述控制指令对应的游戏数据和第三方数据。
可选的,生成与所述控制指令对应的游戏数据,包括:
生成与所述控制指令对应的画面数据和音频数据。
可选的,拦截并获取所述操作数据,包括:
使用消息拦截机制从画面输出接口截取所述画面数据;
使用消息拦截机制从音频输出接口截取所述音频数据。
可选的,将所述操作数据进行编码,获得对应的编码数据,包括:
将所述画面数据绘制在预设显存中,生成待编码画面;
利用图像编码函数对所述待编码画面进行编码,获得对应的画面编码数据;
利用音频编码函数对所述音频数据进行编码,获得对应的音频编码数据。
可选的,生成与所述控制指令对应的游戏数据和第三方数据,包括:
生成与所述控制指令对应的画面数据、音频数据和第三方数据。
可选的,拦截并获取所述操作数据,包括:
使用消息拦截机制从画面输出接口截取所述画面数据;
使用消息拦截机制从音频输出接口截取所述音频数据;
使用消息拦截机制从所述云游戏接口截取所述第三方数据。
可选的,将所述操作数据进行编码,获得对应的编码数据,包括:
将所述画面数据绘制在预设显存中,生成待编码画面;
利用图像编码函数对所述待编码画面进行编码,获得对应的画面编码数据;
利用音频编码函数对所述音频数据进行编码,获得对应的音频编码数据;
利用数据编码函数对所述第三方数据进行编码,获得对应的第三方编码数据。
根据本申请实施例的第二方面,提供了一种云游戏实现方法,用于客户端,包括:
接收用户操作信息,并将所述用户操作信息传输至服务器。
接收服务器传输的与所述用户操作信息对应的编码数据;
对所述编码数据进行解码,获得对应的解码数据;
根据所述解码数据执行对应的操作。
可选的,接收服务器传输的与所述用户操作信息对应的编码数据,包括:
接收服务器传输的与所述用户操作信息对应的游戏数据,或接收服务器传输的与所述用户操作信息对应的游戏数据和第三方数据。
可选的,接收服务器传输的与所述用户操作信息对应的游戏数据,包括:
接收服务器传输的与所述用户操作信息对应的画面数据和音频数据。
可选的,根据所述解码数据执行对应的操作,包括:
播放所述画面数据和所述音频数据。
可选的,接收服务器传输的与所述用户操作信息对应的游戏数据和第三方数据,包括:
接收服务器传输的与所述用户操作信息对应的画面数据、音频数据和第三方数据。
可选的,根据所述解码数据执行对应的操作,包括:
播放所述画面数据和所述音频数据;
根据所述第三方数据执行对应的第三方程序。
根据本申请实施例的第三方面,提供了一种云游戏实现方法,包括:上述实施例的第一方面所述的任意一种云游戏实现方法和上述实施例的第二方面所述的任意一项云游戏实现方法。
根据本申请实施例的第四方面,提供了一种云游戏实现装置,用于服务器,包括:
接收转换模块,被配置为接收客户端的用户操作信息,并将所述用户操作信息转换为对应的控制指令;
生成模块,被配置为根据所述控制指令处理对应的云游戏,生成与所述控制指令对应的操作数据;
拦截模块,被配置为拦截并获取所述操作数据;
编码模块,被配置为将所述操作数据进行编码,获得对应的编码数据;
传输模块,被配置为将所述编码数据传输至所述客户端。
可选的,所述服务器包括预设的与所述云游戏对应的软件工具开发包;
所述接收转换模块,进一步被配置为根据所述用户操作信息和所述软件工具开发包,获取与所述用户操作信息对应的控制指令。
可选的,所述生成模块,进一步被配置为生成与所述控制指令对应的游戏数据,或生成与所述控制指令对应的游戏数据和第三方数据。
可选的,所述生成模块,进一步被配置为生成与所述控制指令对应的画面数据和音频数据。
可选的,所述拦截模块,进一步被配置为使用消息拦截机制从画面输出接口截取所述画面数据;使用消息拦截机制从音频输出接口截取所述音频数据。
可选的,所述编码模块,进一步被配置为将所述画面数据绘制在预设显存中,生成待编码画面;利用图像编码函数对所述待编码画面进行编码,获得对应的画面编码数据;利用音频编码函数对所述音频数据进行编码,获得对应的音频编码数据。
可选的,所述生成模块,进一步被配置为生成与所述控制指令对应的画面数据、音频数据和第三方数据。
可选的,所述拦截模块,进一步被配置为使用消息拦截机制从画面输出接口截取所述画面数据;使用消息拦截机制从音频输出接口截取所述音频数据;使用消息拦截机制从所述云游戏接口截取所述第三方数据。
可选的,所述编码模块,进一步被配置为将所述画面数据绘制在预设显存中,生成待编码画面;利用图像编码函数对所述待编码画面进行编码,获得对应的画面编码数据;利用音频编码函数对所述音频数据进行编码,获得对应的音频编码数据;利用数据编码函数对所述第三方数据进行编码,获得对应的第三方编码数据。
根据本申请实施例的第五方面,提供了一种云游戏实现装置,用于客户端,包括:
接收传输模块,被配置为接收用户操作信息,并将所述用户操作信息传输至服务器。
接收模块,被配置为接收服务器传输的与所述用户操作信息对应的编码数据;
解码模块,被配置为对所述编码数据进行解码,获得对应的解码数据;
执行模块,被配置为根据所述解码数据执行对应的操作。
可选的,所述接收模块,进一步被配置为接收服务器传输的与所述用户操作信息对应的游戏数据,或接收服务器传输的与所述用户操作信息对应的游戏数据和第三方数据。
可选的,所述接收模块,进一步被配置为接收服务器传输的与所述用户操作信息对应的画面数据和音频数据。
可选的,所述执行模块,进一步被配置为播放所述画面数据和所述音频数据。
可选的,所述接收模块,进一步被配置为接收服务器传输的与所述用户操作信息对应的画面数据、音频数据和第三方数据。
可选的,所述执行模块,进一步被配置为播放所述画面数据和所述音频数据;根据所述第三方数据执行对应的第三方程序。
根据本申请实施例的第六方面,提供了一种云游戏实现装置,包括:上述实施例的第四方面所述的任意一种云游戏实现装置和上述实施例的第五方面所述的任意一项云游戏实现装置。
根据本申请实施例的第七方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述云游戏实现方法的步骤。
根据本申请实施例的第八方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述云游戏实现方法的步骤。
本申请实施例中的云游戏实现方法,通过应用于服务器,接收客户端的操作指令,并转换为对应的控制指令,根据控制指令控制处理云游戏,并直接从相应的接口中拦截获取对应的操作数据,将所述操作数据经过编码后传输至客户端,实现对云游戏的操作。游戏画面和声音无需在服务器端显示,节约了服务器的资源,可以使每台服务器上接入更多数量的客户端,从而提高了云游戏的接入效率,同时无需使用虚拟化技术,可以摆脱现有的虚拟机方案,大幅节省了虚拟化授权费用,降低了游戏成本。
本申请实施例中的云游戏实现方法,通过应用于客户端,向服务器发送用户操作信息,接收服务器发送的编码数据,在将所述编码数据进行解码后,即可播放对应的画面数据和音频数据,客户端只需具备基本的解码功能播放功能即可体验游戏内容,在目前的主流操作系统中均具备这样的功能,因此云游戏客户端可以做到与平台无关,也与客户端的配置无关,用户可以使用任意终端作为客户端体验游戏乐趣,提升了用户体验。
附图说明
图1是本申请实施例提供的计算设备的结构框图;
图2是本申请实施例提供的应用于服务器的云游戏实现方法的流程图;
图3是本申请另一实施例提供的应用于服务器的云游戏实现方法的流程图;
图4是本申请实施例提供的应用于客户端的云游戏实现方法的流程图;
图5是本申请另一实施例提供的应用于客户端的云游戏实现方法的流程图;
图6是本申请实施例提供的应用于服务器的云游戏实现装置的结构示意图;
图7是本申请实施例提供的应用于客户端的云游戏实现装置的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
云游戏:指以云计算为基础的游戏方式,在云游戏的运行模式下,所有游戏都在服务器端运行,并将渲染完毕后的游戏画面压缩后通过网络传送给用户。在客户端,用户的游戏设备不需要任何高端处理器和显卡,只需要基本的视频解压能力就可以了。
消息拦截机制:可以监视系统或者进程中的各种事件消息,截获发往目标窗口的消息并进行处理。
显存:也被叫做帧缓存,它的作用是用来存储显卡芯片处理过或者即将提取的渲染数据。如同计算机的内存一样,显存是用来存储要处理的图形信息的部件。
在本申请中,提供了一种云游戏实现方法及装置、计算设备和计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图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至步骤210。
步骤202:接收客户端的用户操作信息,并将所述用户操作信息转换为对应的控制指令。
云游戏是指基于云计算技术的游戏方式,游戏在服务器上运行,客户端不需要下载、安装、也不需要考虑客户端配置,只要有网络,就能玩运算量非常大的游戏。客户端包括个人电脑、机顶盒、移动终端等。
云游戏可以是一个独立的游戏,用户使用客户端输入用户名和密码登录云游戏,与云游戏的服务器进行通信,即可进行游戏操作;云游戏也可以是从属于一个游戏平台,用户通过客户端输入用户名和密码登录云游戏平台,在云游戏平台的众多游戏中选择一款游戏进行游戏。
用户操作信息有很多种,例如在个人电脑上运行云游戏,使用键盘和鼠标对云游戏进行操作,又例如在手机中通过触屏对云游戏进行操作等。
可选的,所述服务器包括预设的与所述云游戏对应的软件工具开发包(SDK);将所述用户操作信息转换为对应的控制指令,包括:根据所述用户操作信息和所述软件工具开发包(SDK),获取与所述用户操作信息对应的控制指令。
在本申请提供的实施例中,以某赛车游戏为例,用户使用个人电脑操作该赛车游戏,长按键盘的“W”键,服务器接收客户端传输过来的用户操作信息为“长按W键”,并将该操作信息传入SDK中,通过SDK得知“长按W键”对应的控制指令为“控制赛车前进”。
在本申请提供的另一实施例中,以某第一人称射击类游戏为例,用户使用手机操作该游戏,在手机中点击手机屏幕画面中的射击键,服务器接收客户端传输过来的用户操作信息为“点击射击键”,将该操作信息传入SDK中,通过SDK得知“点击射击键”对应的控制指令为“射击”。
在本申请提供的又一实施例中,以某第一人称射击类游戏为例,用户使用手机操作该游戏,在手机中点击对话框,服务器接收客户端传输过来的用户操作信息为“点击对话框”,将该操作信息传入SDK中,通过SDK得知“点击对话框”对应的控制指令为“调用输入法”。
步骤204:根据所述控制指令处理对应的云游戏,生成与所述控制指令对应的操作数据。
根据所述控制指令对云游戏进行对应的处理,生成与所述控制指令对应的操作数据。
可选的,生成与所述控制指令对应的操作数据,包括:生成与所述控制指令对应的游戏数据。
可选的,生成与所述控制指令对应的游戏数据,包括:生成与所述控制指令对应的画面数据和音频数据。
在本申请提供的实施例中,以某赛车游戏为例,控制指令为“控制赛车前进”,则控制云游戏中的目标赛车前进,同时生成与赛车前进相关的数据,即赛车前进的画面和赛车引擎轰鸣的声音。
在本申请提供的另一实施例中,以某第一人称射击类游戏为例,控制指令为“射击”,对应的生成与射击相关的数据,即游戏人物扣动扳机的动作和枪声。
步骤206:拦截并获取所述操作数据。
可选的,使用消息拦截机制从画面输出接口截取所述画面数据;使用消息拦截机制从音频输出接口截取所述音频数据。
钩子技术(HOOK)又叫钩子函数,是一种消息拦截机制,它可以监视系统或者进程中的各种事件消息,截获发往目标窗口的消息,并进行自定义处理。常见的如屏幕取词、监视日志、截获键盘鼠标的输入等等。
通过钩子技术(HOOK)从画面输出接口拦截并获取相关画面数据,从音频输出接口拦截并获取相关音频数据,使得相关画面数据不会传输至服务器显示区域,相关音频数据也不会在服务器播放。
在本申请提供的实施例中,以某赛车游戏为例,使用钩子技术从显卡输出接口中获取对应的赛车前进的画面数据,使用钩子技术从声卡输出接口中获取对应的赛车引擎轰鸣的声音数据。
在本申请提供的另一实施例中,以某第一人称射击类游戏为例,使用钩子技术从显卡输出接口中获取对应的游戏人物扣动扳机的动作的画面数据,使用钩子技术从声卡输出接口中获取对应的枪声的声音数据。
步骤208:将所述操作数据进行编码,获得对应的编码数据。
可选的,所述步骤208包括下述步骤S2081~S2083。
S2081、将所述画面数据绘制在预设显存中,生成待编码画面。
显存是用来存储要处理的图形信息的部件,在获取画面数据之后,将获取的所述云游戏的画面数据绘制到预先设置的显存中,获取等待被编码的游戏画面。
S2082、利用图像编码函数对所述待编码画面进行编码,获得对应的画面编码数据。
将所述待编码画面传入编码系统,利用显卡硬编码技术对所述待编码画面进行编码,获得对应的画面编码数据。硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践。显卡硬编码技术即在显卡使用硬编码的技术。
S2083、利用音频编码函数对所述音频数据进行编码,获得对应的音频编码数据。
将所述音频数据传入编码系统,利用中央处理器对所述音频数据进行编码,获取对应的音频编码数据。
步骤210:将所述编码数据传输至所述客户端。
将生成的编码数据进行封装,将封装后的编码数据通过网络传输至所述客户端。
可选的,将所述画面编码数据和所述音频编码数据传入内存,在内存中,分别对所述画面编码数据和所述音频编码数据进行数据封装,将封装后的画面编码数据和音频编码数据传输至所述客户端。
本申请实施例提供的云游戏实现方法,应用于服务器,通过接收客户端的操作指令,并转换为对应的控制指令,根据控制指令控制处理云游戏,并直接从相应的接口中拦截获取对应的操作数据,将所述操作数据经过编码后传输至客户端,实现对云游戏的操作。游戏画面和声音无需在服务器端显示,即无需使用虚拟化技术,可以摆脱虚拟机方案,不仅可以大幅节省了虚拟化授权费用,而且可以使每台服务器上接入更多数量的客户端,从而提高了云游戏的接入效率,降低了游戏成本。
图3示出了本申请另一实施例的云游戏实现方法的流程图,所述云游戏实现方法应用于服务器,包括步骤302至步骤316。
步骤302:接收客户端的用户操作信息,并将所述用户操作信息转换为对应的控制指令。
步骤302与上述步骤202的方法一致,关于步骤302的具体解释,参见前述实施例中的步骤202的详细内容,在此就不再赘述。
步骤304:根据所述控制指令处理对应的云游戏,生成与所述控制指令对应的画面数据、音频数据和第三方数据。
在实际应用中,控制指令有时会是调用第三方程序的,如调用输入法,调用浏览器等,此时除了生成画面数据和音频数据外,还会生成第三方数据,所述第三方数据包含了调用第三方程序的调用参数等信息。
在本申请提供的实施例中,控制指令为“调用输入法”,即用户需要输入文字信息,此时会生成一条调用信息,包括调用输入法的指令。
在本申请提供的另一实施例中,控制指令为“打开浏览器”,即用户需要调用浏览器,此时会生成一条调用浏览器的信息,包括打开浏览器、网址、用户名称等信息。
步骤306:使用消息拦截机制从画面输出接口截取所述画面数据,使用消息拦截机制从音频输出接口截取所述音频数据。
通过钩子技术(HOOK)从画面输出接口拦截并获取相关画面数据,从音频输出接口拦截并获取相关音频数据,使得相关画面数据不会传输至服务器显示区域,相关音频数据也不会在服务器播放。
步骤308:使用消息拦截机制从所述云游戏接口截取所述第三方数据。
在同一个服务器中,同时会运行若干个云游戏,在操作云游戏的过程中不可避免的会调用服务器中的第三方应用,例如浏览器、输入法等,当至少两个云游戏需要同时调用同一个第三方应用程序时,则会引起系统内部的资源冲突,导致延迟严重,用户体验很差。
通过钩子技术(HOOK)拦截并获取所述第三方数据。使得该第三方数据不会在服务器端调用相关的第三方应用程序,并会在后续的数据传递过程中将所述第三方数据传递至客户端,将相应的调用第三方应用程序的操作转移至客户端,解决服务器端的资源冲突问题,降低游戏延迟。
在本申请提供的实施例中,以“调用输入法”为例,游戏画面中的对话框闪动光标,云游戏接口中输出“调用本机输入法”的命令参数,通过HOOK技术从云游戏的接口中拦截并获取所述命令参数,进而阻止在服务器中实际调用服务器的输入法。
在本申请提供的另一实施例中,以“打开浏览器”为例,除了获取游戏的画面数据和音频数据外,在云游戏中生成一条“打开浏览器”的命令参数,所述命令参数还包括网址、用户账户等相关信息。通过HOOK技术从云游戏的接口中拦截并获取所述命令参数,进而阻止在服务器中实际调用服务器中的浏览器。
步骤310:将所述画面数据绘制在预设显存中,生成待编码画面。
显存是用来存储要处理的图形信息的部件,在获取画面数据之后,将获取的所述云游戏的画面数据绘制到预先设置的显存中,获取等待被编码的游戏画面。
步骤312:利用图像编码函数对所述待编码画面进行编码,获得对应的画面编码数据,利用音频编码函数对所述音频数据进行编码,获得对应的音频编码数据。
利用显卡硬编码技术或H264编码技术或H265编码技术对所述待编码画面进行编码获得对应的画面编码数据,利用中央处理器对所述音频数据进行编码获得对应的音频编码数据。
步骤314:利用数据编码函数对所述第三方数据进行编码,获得对应的第三方编码数据。
利用Base64编码或Base62编码或Base32编码等数据编码技术对所述第三方数据进行编码,获得对应的第三方编码数据。
步骤316:将画面编码数据、音频编码数据和第三方编码数据传输至所述客户端。
将生成的编码数据包括画面编码数据、音频编码数据、第三方编码数据分别进行封装,将封装后的画面编码数据、音频编码数据、第三方编码数据传输至客户端。
本申请实施例提供的云游戏实现方法,应用于服务器,通过接收客户端的操作指令,并转换为对应的控制指令,根据控制指令控制处理云游戏,并直接从相应的接口中拦截获取对应的操作数据,将所述操作数据经过编码后传输至客户端,实现对云游戏的操作。除了游戏画面和声音无需在服务器端显示,当云游戏调用第三方应用程序时,避免了因为同一台服务器中多个云游戏同时调用同一个应用程序时引起的冲突问题,使用本方法,可以摆脱虚拟机方案,不仅可以大幅节省虚拟化授权费用,而且可以使每台服务器上接入更多数量的客户端,从而提高了云游戏的接入效率,降低了游戏成本,避免了调用服务器内部程序时的冲突,提升了用户体验,增加了游戏的可玩性。
图4示出了本申请另一实施例的云游戏实现方法的流程图,所述云游戏实现方法应用于客户端,包括步骤402至步骤408。
步骤402:接收用户操作信息,并将所述用户操作信息传输至服务器。
用户在玩云游戏时,需要对根据云游戏进行相应的操作,例如,通过按键盘上的特定键操控游戏中人物的移动;点击手机屏幕上显示的射击按钮进行开枪;拖动鼠标实现游戏中人物视角的变化等。
客户端接收用户在玩游戏过程中的用户操作信息,并将所述用户操作信息传输至服务器。
在本申请提供的实施例中,客户端接收用户长按W键的操作信息,并将所述操作信息传输至服务器。
在本申请提供的另一实施例中,客户端接收用户点击屏幕显示的射击按钮的操作信息,并将所述操作信息传输至服务器。
步骤404:接收服务器传输的与所述用户操作信息对应的编码数据。
将用户操作传输至服务器之后,需等待服务器传输回与所述用户操作信息对应的编码数据,在服务器传输与所述用户操作信息对应的编码数据时,接收所述编码数据。
可选的,接收服务器传输的与所述用户操作信息对应的编码数据,包括:接收服务器传输的与所述用户操作信息对应的游戏数据。
服务器传输的编码数据为与所述用户操作行为对应的相关的游戏数据。
可选的,接收服务器传输的与所述用户操作信息对应的游戏数据,包括:接收服务器传输的与所述用户操作信息对应的画面数据和音频数据。
服务器传输的与所述用户操作行为相关的游戏数据包括游戏的画面数据和游戏的音频数据。
在本申请提供的实施例中,以某赛车游戏为例,操作信息为长按W键,服务器根据所述操作生成相应的画面数据和音频数据,客户端接收服务器传输的所述画面数据和音频数据经过编码后的编码数据。
步骤406:对所述编码数据进行解码,获得对应的解码数据。
对接收的编码数据进行解码,获得对应的解码数据,即获得对应的画面数据和音频数据。
在本申请提供的实施例中,以某赛车游戏为例,用户长按W键,客户端对接收的编码数据进行解码后,获得对应的赛车前进的游戏画面和赛车引擎的轰鸣声。
在本申请的另一实施例中,以某射击类游戏为例,用户点击屏幕显示的射击按钮,客户端对服务器传输的编码数据进行解码后,获得对应的开枪的动作画面和枪声。
步骤408:根据所述解码数据执行对应的操作。
可选的,根据所述解码数据执行对应的操作,包括:播放所述画面数据和所述音频数据。
解码数据为画面数据和音频数据时,对应的执行播放相应的画面数据和音频数据,此时用户操作信息对应的游戏画面即可呈现在客户端,实现用户通过客户端玩运行在服务器的云游戏。
本申请实施例提供的云游戏实现方法,应用于客户端,通过向服务器发送用户操作信息,接收服务器发送的编码数据,在将所述编码数据进行解码后,即可播放对应的画面数据和音频数据,客户端只需具备基本的解码功能播放功能即可体验游戏内容,在目前的主流操作系统中均具备这样的功能,因此云游戏客户端可以做到与平台无关,也与客户端的配置无关,用户可以使用任意终端作为客户端体验游戏乐趣,提升了用户体验。
图5示出了本申请另一实施例的云游戏实现方法的流程图,所述云游戏实现方法应用于客户端,包括步骤502至步骤508。
步骤502:接收用户操作信息,并将所述用户操作信息传输至服务器。
步骤502与上述步骤402的方法一致,关于步骤502的具体解释,参见前述实施例中的步骤402的详细内容,在此就不再赘述。
步骤504:接收服务器传输的与所述用户操作信息对应的游戏数据和第三方数据。
可选的,接收服务器传输的与所述用户操作信息对应的游戏数据和第三方数据,包括:接收服务器传输的与所述用户操作信息对应的画面数据、音频数据和第三方数据。
当用户操作传输至服务器后,等待服务器传输回与所述用户操作信息对应的游戏数据和第三方数据,可选的,游戏数据包括画面数据和音频数据,因此客户端需要等待服务器传回与所述用户操作信息对应的画面数据、音频数据和第三方数据,其中,第三方数据为用户在操作过程中涉及到的调用游戏程序之外的第三方应用程序的信息,如调用浏览器、调用输入法等。
在本申请提供的实施例中,以用户点击游戏中的官网链接的操作行为为例,客户端接收服务器发送的画面编码数据、音频编码数据和第三方编码数据。
步骤506:对所述编码数据进行解码,获得对应的解码数据。
对所述编码数据进行解码,即对所述画面编码数据、音频编码数据和第三方编码数据进行解码。获得对应的画面数据、音频数据和第三方数据,其中第三方数据中包括调用指令和调用参数信息。
步骤508:播放所述画面数据和所述音频数据,根据所述第三方数据执行对应的第三方程序。
解码数据为画面数据和音频数据时,对应的执行播放相应的画面数据和音频数据。
解码数据为第三方数据时,根据第三方数据中的调用指令和调用参数信息进行相关的操作。
在本申请提供的实施例中,以调用浏览器打开游戏官网为例,第三方数据中包括了调用浏览器的指令和需要打开网页的网络链接,客户端根据调用指令调用客户端自身的浏览器,并将需要打开网页的网络链接输入浏览的相应位置,实现调用浏览器并打开官网的目的。
本申请实施例提供的云游戏实现方法,应用于客户端,通过向服务器发送用户操作信息,接收服务器发送的编码数据,在将所述编码数据进行解码后,获得相应的画面数据、音频数据和第三方数据,除去正常的播放游戏画面数据和音频数据外,根据第三方数据,执行对应的第三方应用程序的调用,无需调用服务器中的第三方应用,实现了云游戏的去虚拟化。
本申请实施例还公开一种云游戏实现方法,包括前述实施例中用于服务器的云游戏实施方法和前述实施例中用于客户端的云游戏实施方法。
与上述方法实施例相对应,本申请还提供了云游戏实现装置实施例,图6示出了本申请一个实施例的应用于服务器的云游戏实现装置的结构示意图。如图6所示,该装置包括:
接收转换模块602,被配置为接收客户端的用户操作信息,并将所述用户操作信息转换为对应的控制指令。
生成模块604,被配置为根据所述控制指令处理对应的云游戏,生成与所述控制指令对应的操作数据。
拦截模块606,被配置为拦截并获取所述操作数据。
编码模块608,被配置为将所述操作数据进行编码,获得对应的编码数据。
传输模块610,被配置为将所述编码数据传输至所述客户端。
可选的,所述服务器包括预设的与所述云游戏对应的软件工具开发包;
所述接收转换模块602,进一步被配置为根据所述用户操作信息和所述软件工具开发包,获取与所述用户操作信息对应的控制指令。
可选的,所述生成模块604,进一步被配置为生成与所述控制指令对应的游戏数据,或生成与所述控制指令对应的游戏数据和第三方数据。
可选的,所述生成模块604,进一步被配置为生成与所述控制指令对应的画面数据和音频数据。
可选的,所述拦截模块606,进一步被配置为使用消息拦截机制从画面输出接口截取所述画面数据;使用消息拦截机制从音频输出接口截取所述音频数据。
可选的,所述编码模块608,进一步被配置为将所述画面数据绘制在预设显存中,生成待编码画面;利用图像编码函数对所述待编码画面进行编码,获得对应的画面编码数据;利用音频编码函数对所述音频数据进行编码,获得对应的音频编码数据。
可选的,所述生成模块604,进一步被配置为生成与所述控制指令对应的画面数据、音频数据和第三方数据。
可选的,所述拦截模块606,进一步被配置为使用消息拦截机制从画面输出接口截取所述画面数据;使用消息拦截机制从音频输出接口截取所述音频数据;使用消息拦截机制从所述云游戏接口截取所述第三方数据。
可选的,所述编码模块608,进一步被配置为将所述画面数据绘制在预设显存中,生成待编码画面;利用图像编码函数对所述待编码画面进行编码,获得对应的画面编码数据;利用音频编码函数对所述音频数据进行编码,获得对应的音频编码数据;利用数据编码函数对所述第三方数据进行编码,获得对应的第三方编码数据。
本申请实施例提供的云游戏实现装置,应用于服务器,通过接收客户端的操作指令,并转换为对应的控制指令,根据控制指令控制处理云游戏,并直接从相应的接口中拦截获取对应的操作数据,将所述操作数据经过编码后传输至客户端,实现对云游戏的操作。除了游戏画面和声音无需在服务器端显示,当云游戏调用第三方应用程序时,避免了因为同一台服务器中多个云游戏同时调用同一个应用程序时引起的冲突问题,可以摆脱虚拟机方案,不仅可以大幅节省了虚拟化授权费用,而且可以使每台服务器上接入更多数量的客户端,避免了调用服务器内部程序时的冲突,从而提高了云游戏的接入效率,降低了游戏成本。
与上述方法实施例相对应,本申请还提供了云游戏实现装置实施例,图7示出了本申请一个实施例的应用于客户端的云游戏实现装置的结构示意图。如图7所示,该装置包括:
接收传输模块702,被配置为接收用户操作信息,并将所述用户操作信息传输至服务器。
接收模块704,被配置为接收服务器传输的与所述用户操作信息对应的编码数据;
解码模块706,被配置为对所述编码数据进行解码,获得对应的解码数据;
执行模块708,被配置为根据所述解码数据执行对应的操作。
可选的,所述接收模块704,进一步被配置为接收服务器传输的与所述用户操作信息对应的游戏数据,或接收服务器传输的与所述用户操作信息对应的游戏数据和第三方数据。
可选的,所述接收模块704,进一步被配置为接收服务器传输的与所述用户操作信息对应的画面数据和音频数据。
可选的,所述执行模块708,进一步被配置为播放所述画面数据和所述音频数据。
可选的,所述接收模块704,进一步被配置为接收服务器传输的与所述用户操作信息对应的画面数据、音频数据和第三方数据。
可选的,所述执行模块708,进一步被配置为播放所述画面数据和所述音频数据;根据所述第三方数据执行对应的第三方程序。
本申请实施例提供的云游戏实现装置,应用于客户端,通过向服务器发送用户操作信息,接收服务器发送的编码数据,在将所述编码数据进行解码后,获得相应的画面数据、音频数据和第三方数据,除去正常的播放游戏画面数据和音频数据外,根据第三方数据,执行对应的第三方应用程序的调用,无需调用服务器中的第三方应用,实现了云游戏的去虚拟化。
本申请实施例公开一种云游戏实现装置,包括前述实施例中用于服务器的云游戏实施装置和前述实施例中用于客户端的云游戏实施装置。
本申请一实施例中还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述的云游戏实现方法的步骤。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述云游戏实现方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的云游戏实现方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述云游戏实现方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。