一种云游戏实现方法及系统的制作方法

文档序号:7997942阅读:257来源:国知局
一种云游戏实现方法及系统的制作方法
【专利摘要】本申请提供了一种云游戏实现方法及系统,包括:服务器接收客户端的控制指令,其中,所述客户端的数量≥2;所述服务器根据所述控制指令生成相应的原始云游戏画面数据;所述服务器抓取和编码所述原始云游戏画面数据,并根据所述客户端的数量复制编码后的所述原始云游戏画面数据;所述服务器将所述原始云游戏画面数据和所述复制后的云游戏画面数据分别传送至所述客户端。本申请实现了多人多屏通过同一个服务器在线玩同一款单机云游戏。
【专利说明】-种云游戏实现方法及系统

【技术领域】
[0001] 本申请涉及云计算领域,特别是涉及一种云游戏的实现方法及系统。

【背景技术】
[0002] 云计算指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获 得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获 得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算(Cloud Computing)是网格计算(Grid Computing)、分布式计算(DistributedComputing)、并行计 算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络 技术发展融合的产物。
[0003] 基于云计算的云游戏开拓了云计算的应用范围。在普通云游戏模式下,所有游戏 都在服务器端运行,客户端发出的操作指令传输给云服务器,云服务器根据该指令将相应 的游戏程序进行渲染,并将渲染完毕后的游戏画面压缩后通过网络传送给用户。在这种模 式下,客户端与云服务器是一一对应的关系,即一个服务器只接受来自一个客户端的指令, 并将游戏画面对应地传送至该客户端,即使玩多人单机游戏也只能由多个玩家通过同一个 键盘发出指令给服务器。这样,玩家玩多人单机游戏就只能限制在一个终端设备上,增加了 游戏操作的复杂性和玩家的不便。


【发明内容】

[0004] 本申请所要解决的技术问题是提供一种云游戏实现方法,包括:
[0005] 服务器接收客户端的控制指令,其中,所述客户端的数量> 2 ;
[0006] 所述服务器根据所述控制指令生成相应的原始云游戏画面数据;
[0007] 所述服务器抓取和编码所述原始云游戏画面数据,并根据所述客户端的数量复制 编码后的所述原始云游戏画面数据;
[0008] 所述服务器将所述原始云游戏画面数据和所述复制后的云游戏画面数据分别传 送至所述客户端。
[0009] 优选地,所述服务器根据所述控制指令生成相应的原始云游戏画面数据进一步包 括:
[0010] 所述服务器根据发出所述控制指令的客户端的标识判断所述控制指令是否属于 预定义指令;
[0011] 若所述控制指令属于预定义指令,则直接根据所述预定义指令生成相应的原始云 游戏画面数据;
[0012] 若所述控制指令不属于预定义指令,则将所述控制指令转换为预定义指令,再根 据所述预定义指令生成相应的原始云游戏画面数据。
[0013] 优选地,所述服务器根据发出所述控制指令的客户端的标识判断所述控制指令是 否属于预定义指令。
[0014] 优选地,在所述服务器接收客户端的控制指令步骤之前还包括:
[0015] 测试服务器至客户端的网络状况,以确定所述客户端的网络状况是否达到网络状 况阈值条件;
[0016] 若达到所述网络状况阈值条件,则将所述云游戏接入所述客户端;
[0017] 若未达到所述网络状况阈值条件,则提示所述云游戏不能接入所述客户端。
[0018] 优选地,所述客户端的控制指令包括键盘控制指令和鼠标控制指令。
[0019] 相应的,本申请还提供了一种云游戏实现系统,包括:
[0020] 接收装置,用于服务器接收客户端的控制指令,其中,所述客户端的数量> 2 ;
[0021] 原始画面数据生成装置,用于所述服务器根据所述控制指令生成相应的原始云游 戏画面数据;
[0022] 画面数据复制装置,用于所述服务器抓取和编码所述原始云游戏画面数据,并根 据所述客户端的数量复制编码后的所述原始云游戏画面数据;
[0023] 传送装置,用于所述服务器将所述原始云游戏画面数据和所述复制后的云游戏画 面数据分别传送至所述客户端。
[0024] 优选地,所述原始画面数据生成装置进一步包括:
[0025] 判断模块,用于所述服务器判断所述控制指令是否属于预定义指令;若所述控制 指令属于预定义指令,则直接根据所述预定义指令生成相应的原始云游戏画面数据;若所 述控制指令不属于预定义指令,则将所述控制指令转换为预定义指令,再根据所述预定义 指令生成相应的原始云游戏画面数据。
[0026] 优选地,还包括识别装置,用于识别发出所述控制指令的客户端的标识,并根据发 出所述控制指令的客户端的标识判断所述控制指令是否属于预定义指令。
[0027] 优选地,还包括测试装置,用于测试服务器至客户端的网络状况,以确定所述客户 端的网络状况是否达到网络状况阈值条件;若达到所述网络状况阈值条件,则将云游戏接 入所述客户端;若未达到所述网络状况阈值条件,则继续测试所述服务器至客户端的网络 状况。
[0028] 优选地,所述客户端的控制指令经由键盘或鼠标输入。
[0029] 与现有技术相比,本申请包括以下优点:
[0030] 1.云服务器根据客户端的控制指令生成相应的原始云游戏画面数据,抓取和编码 所述画面数据之后复制与客户端数量相同的所述画面数据,并传送至相对应的客户端,从 而实现了多人多屏通过同一个服务器在线玩同一款单机云游戏。
[0031] 2.云服务器通过判断控制指令是哪一个客户端发送的而决定是否将该指令转换 为云服务器中生成云游戏画面数据模块能够识别的指令,从而实现同一台云服务器准确地 处理不同用户的指令。

【专利附图】

【附图说明】
[0032] 图1是本申请一种云游戏实现方法的流程图。
[0033] 图2是本申请一种云游戏实现系统的示意图。

【具体实施方式】
[0034] 为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本申请作进一步详细的说明。
[0035] 参照图1,示出了本申请一种云游戏实现方法的流程图。
[0036] 步骤S11 :服务器接收客户端的控制指令,其中,所述客户端的数量> 2。
[0037] 所述客户端安装在用户终端设备上,用户终端设备包括PC机、电视、便携终端、平 板、投影机等具有显示和解码能力的装置。
[0038] 所述客户端是指由游戏开发商所开发的软件,该软件具有接收画面数据和网络通 信数据的能力,以及解码能力。
[0039] 云服务器主要有两种类型,一种是VPS服务器,该服务器采用虚拟软件,VZ、VM或 自有虚拟化工具、在一台物理服务器上虚拟出一个或多个类似独立服务器的部分,每个部 分都有云服务器的一个镜像或一个服务组件,都可以做单独的操作系统或独立的运行服务 进程,管理方法同服务器一样;一种是本专利的发明人自主研发的V0S服务器,该服务器主 要有两个功能:(a)将第三方游戏运行在SANDBOX中,通过SANDBOX隔离游戏创建的内核对 象,避免游戏互相干扰,通过HOOK DirectX系列API抓取游戏视频画面和音频,传送给压 缩模块压缩并传输至客户端;(b)接受来自客户端的键盘、鼠标、手柄等输入设备的操作指 令,通过SendMessage和Directlnput将这些操作指令发送给运行中的游戏进程。优选地, 本发明采用V0S服务器。
[0040] 客户端发送的控制指令通过输入装置输入客户端,输入装置包括键盘或鼠标。每 一个用户终端设备上安装一个客户端软件,因此客户端的数量与用户终端设备的数量相 同。在本发明一实施例中,多个用户在多个终端设备上玩同一款游戏。
[0041] 优选地,在所述服务器接收客户端的控制指令步骤之前还包括:测试服务器至客 户端的网络状况,以确定所述客户端的网络状况是否达到网络状况阈值条件;若达到所述 网络状况阈值条件,则将所述云游戏接入所述客户端;若未达到所述网络状况阈值条件,则 提示所述云游戏不能接入所述客户端。
[0042] 所述网络状况包括网络带宽、网络连通状况、网络连接速度。在本发明一实施例 中,网络状况为网络带宽。
[0043] "网络带宽"是指网络数据传输率,是以"字节/秒"为单位,网络带宽也可以认为 是网速(流量),两者之间的关系如下:
[0044] 带宽/8=流量,
[0045] 即 lM/8=lMps/8=1024Kps/8=128k/s。
[0046] "网络连通状况"是指客户端到某一服务器是否连通,若连通,则可以从该服务器 下载数据,若不连通,则不能从该服务器下载数据。
[0047] "网络连接速度"是指客户端连接到某一服务器的实时速度,若网络节点多,即从 客户端到服务器设置的路由器、交换机及数据转换设备较多,则进行数据转换耗费的时间 就长,网络连接速度便慢,若网络节点少,则进行数据转换耗费的时间短,网络连接速度便 快。
[0048] 测试服务器至客户端的网络状况所使用的第一种方法为自所述多个可用的远端 服务器下载预置文件;以及统计所述预置文件的下载速度。
[0049] 该方法是在每个服务器中预置一专用于测试的文件,当测试程序启动时,服务器 将该文件发送至客户端,则预置文件的下载速度为:
[0050] 预置文件的下载速度=预置文件的大小/下载时间。
[0051] 预置文件的下载速度就是网速,该网速为下行网速。
[0052] 测试服务器至客户端的网络状况所使用的第二种方法为向所述多个可用的远端 服务器发送连接请求;以及统计所述多个可用的远端服务器反馈所述连接请求的响应时 间。
[0053] 该方法是通过使用ping (因特网包探索器)程序测试网络连通状况和网络连接 速度。ping也叫时延,是tcp/ip协议的一部分,ping发送一个ICMP (Internet Control Messages Protocol,即因特网信报控制协议)请求数据包,回声请求消息给目的地并报告 是否收到所希望的ICMP回声应答。其应用格式为:ping+IP地址。该命令还可以加许多参 数使用,在本发明一实施例中,ping命令的格式为ping+网站域名。
[0054] Ping程序的运行结果包括响应时间,若运行结果包括响应时间,则说明客户端与 服务器能够连通,并且响应时间越短,说明客户端与服务器的连接速度越快;若运行结果没 有响应时间,如运行结果为"Request timed out",则说明客户端与服务器不能连接。在本 发明一实施例中,测试服务器至客户端的网络状况使用第一种方法。
[0055] 所述网络状况阈值条件包括两种情况:
[0056] (1)设定最低网络带宽,以该最低网络带宽作为网络状况阈值条件,若被测试的服 务器至客户端的网络状况高于或等于最低网络带宽,则认为被测试的服务器至客户端的网 络状况达到网络状况阈值条件,将云游戏接入该客户端,用户可以开始玩该游戏;若低于最 低网络带宽,则认为被测试的服务器至客户端的网络状况未达到网络状况阈值条件,提示 用户所述云游戏不能接入所述客户端。
[0057] (2)以网络中存在网络带宽与被测试的客户端的网络带宽相同或相近的客户端作 为网络状况阈值条件,若存在与被测试的客户端的网络带宽相同或相近的客户端,则认为 被测试的服务器至客户端的网络状况达到网络状况阈值条件,将云游戏接入该客户端,用 户可以开始玩该游戏;若不存在,则认为被测试的服务器至客户端的网络状况未达到网络 状况阈值条件,提示用户所述云游戏不能接入所述客户端,在该情况下可以继续测试服务 器至客户端的网络状况,直至测试到存在与被测试的客户端的网络带宽相同或相近的客户 端。
[0058] 步骤S12 :所述服务器根据所述控制指令生成相应的原始云游戏画面数据。
[0059] 所述云服务器中具有生成云游戏画面数据的进程,该进程根据客户端发送的控制 指令渲染游戏画面,生成游戏画面数据,但不显示该画面。例如,用户指示游戏中的角色发 射一发子弹,生成云游戏画面数据的进程根据该指令渲染出该角色发射一发子弹后的整个 画面。
[0060] 优选地,所述服务器根据发出所述控制指令的客户端的标识判断所述控制指令是 否属于预定义指令;若所述控制指令属于预定义指令,则直接根据所述预定义指令生成相 应的原始云游戏画面数据;若所述控制指令不属于预定义指令,则将所述控制指令转换为 预定义指令,再根据所述预定义指令生成相应的原始云游戏画面数据。
[0061] 所述服务器通过识别发出控制指令的客户端的标识来区分客户端,客户端的标识 可以以下几种方式获得:(1)将客户端的标识与用户的账号绑定;(2)服务器赋予客户端以 标识;(3)将客户端的标识与客户端的IP地址绑定。在本发明一实施例中,客户端的标识 与用户的账号绑定,服务器通过识别用户的账号识别客户端。
[0062] 由于客户端有多个,在一个单机游戏中,部分游戏程序会规定多个用户分别使用 同一个键盘上的几套不同的按键输入控制指令,例如,在2人单机游戏中,设定1P通过 WSADF五个按键控制游戏,2P通过丨丨一一0五个按键控制游戏。为了实现多人多屏在线 玩单机游戏,以及为了统一客户端的操作,本发明将客户端设置为多个用户使用各自键盘 上的同一套按键输入控制指令,例如,在2人单机游戏中,设定2个客户端均通过WSADF五 个按键控制游戏。通过这五个按键所发出的指令即为所述的预定义指令。在本发明一实施 例中,所述生成云游戏画面数据的进程仅能识别预定义指令。
[0063] 键盘上有一个称为键盘编码器的处理器(Intel 8048或兼容芯片)专门用来扫描 收集所有按键按下和松开的状态信息(即扫描码),并发送到主机主板上键盘控制器中。当 一个键被按下时,键盘发送的扫描码称为接通扫描码(Make code),或简称为接通码;当一 个被按下的键放开时发送的扫描码被称为断开扫描码(Break code),或简称为断开码。 [0064] 主机键盘控制器专门用来对接收到的键盘扫描码进行解码,并把解码后的数据发 送到操作系统的键盘数据队列中。因为每个按键的接通和断开码都是不同的,所以键盘控 制器根据扫描码就可以确定用户在操作哪个键。整个键盘上所有按键的接通和断开码就组 成了键盘的一个扫描码集(Scan Code Set)。根据计算机的发展,目前已有三套扫描码集可 供使用。
[0065] 第一套扫描码集:原始XT键盘扫描码集。第二套扫描码集:现代键盘默认使用的 扫描码集,通常称为AT键盘扫描码集。第三套扫描码集:PS/2键盘扫描码集。AT键盘默认 发送的是第二套扫描码集。虽然如此,主机键盘控制器为了与PC/XT的软件兼容,仍然会把 所有接收到的第二套键盘扫描码转换成第一套扫描码。
[0066] 当用户通过鼠标输入控制指令时,服务器通过识别客户端的标识来区分是哪一个 客户端发出鼠标控制指令,而不需要进行指令的转换,用户的移动、点击等动作指令均属于 预定义指令。
[0067] 鼠标大致分机械式,光机式和光电式,其工作原理是基本相同的,即都是通过将鼠 标的移动方向与距离转换为坐标偏移量,以实现光标的定位。机械式鼠标底部装有一个可 四向滚动的胶质小球。这个小球在滚动时会带动一对转轴转动(分别为X转轴、Y转轴),在 转轴的末端有一个圆形的译码轮,译码轮上附有金属导电片与电刷直接接触。当转轴转动 时,这些金属导电片与电刷就会依次接触,出现"接通"或"断开"两种形态,前者对应二进制 数"1"、后者对应二进制数"0"。接下来,这些二进制信号被送交鼠标内部的专用芯片作解 析处理并产生对应的坐标变化信号。只要鼠标在平面上移动,小球就会带动转轴转动,进而 使译码轮的通断情况发生变化,产生一组组不同的坐标偏移量,反应到屏幕上,就是光标可 随着鼠标的移动而移动。光机式鼠标同样拥有一个胶质的小滚球,并连接着Χ、γ转轴,所不 同的是光机鼠标不再有圆形的译码轮,代之的是两个带有栅缝的光栅码盘,并且增加了发 光二极管和感光芯片。当鼠标在桌面上移动时,滚球会带动Χ、γ转轴的两只光栅码盘转动, 而X、Υ发光二极管发出的光便会照射在光栅码盘上,由于光栅码盘存在栅缝,在恰当时机 二极管发射出的光便可透过栅缝直接照射在两颗感光芯片组成的检测头上。如果接收到光 信号,感光芯片便会产生" 1"信号,若无接收到光信号,则将之定为信号"0"。接下来,这些 信号被送入专门的控制芯片内运算生成对应的坐标偏移量,确定光标在屏幕上的位置。光 电式鼠标是通过检测鼠标器的位移,将位移信号转换为电脉冲信号,再通过程序的处理和 转换来控制屏幕上的光标箭头的移动。光电鼠标用光电传感器代替了滚球。还有一种可以 代替光电鼠标的光学鼠标,其核心部件是发光二极管、微型摄像头、光学引擎和控制芯片。 工作时发光二极管发射光线照亮鼠标底部的表面,同时微型摄像头以一定的时间间隔不断 进行图像拍摄。鼠标在移动过程中产生的不同图像传送给光学引擎进行数字化处理,最后 再由光学引擎中的定位DSP芯片对所产生的图像数字矩阵进行分析。由于相邻的两幅图像 总会存在相同的特征,通过对比这些特征点的位置变化信息,便可以判断出鼠标的移动方 向与距离,这个分析结果最终被转换为坐标偏移量实现光标的定位。
[0068] 所述控制指令是指鼠标在屏幕上的移动、点击等动作指令,以及键盘按下或抬起 等动作指令。控制指令通过软件接口获取。所述软件接口为API。在本发明一实施例中,客 户端安装windows操作系统,客户端鼠标的移动方向与距离和键盘的按下或抬起等指令分 别转换为光标的位置和按键扫描码之后,通过调用windows自带的相应的API函数获取光 标的位置和键盘的代码,并通过调用网络通信函数,如socket将光标的位置和键盘的代码 信息通过网络传输给云服务器端,云服务器端通过调用接收函数接收光标的位置和键盘的 代码信息。
[0069] 若客户端通过约定的键盘按键或鼠标发送控制指令,则所述控制指令属于预定义 指令;反之,则所述控制指令不属于预定义指令。若所述控制指令属于预定义指令,则将所 述预定义指令发送至生成云游戏画面数据的进程,该进程识别出所述指令,并根据该指令 生成相应的原始云游戏画面数据;若所述控制指令不属于预定义指令,则根据所述控制指 令与预定义指令的映射关系将所述控制指令转换为预定义指令,再根据所述预定义指令生 成相应的原始云游戏画面数据。
[0070] 优选地,所述客户端的控制指令包括键盘控制指令和鼠标控制指令。
[0071] 在本发明一实施例中,云游戏为2人单机游戏,游戏程序设定1P通过WSADF五个 键盘按键控制游戏,2P通过丨丨一一0五个按键控制游戏,这两套按键即是预定义指令所 对应的按键。在游戏时,1P和2P玩家在客户端均通过WSADF五个按键输入游戏控制指令, 由于1P玩家使用的按键是预定义指令约定的按键,因此,只需要将2P玩家输入的游戏控制 指令映射(转换)为丨丨一一〇五个按键所对应的指令,映射关系如下:
[0072] 表1非预定义指令按键与预定义指令按键的映射关系

【权利要求】
1. 一种云游戏实现方法,包括: 服务器接收客户端的控制指令,其中,所述客户端的数量> 2 ; 所述服务器根据所述控制指令生成相应的原始云游戏画面数据; 所述服务器抓取和编码所述原始云游戏画面数据,并根据所述客户端的数量复制编码 后的所述原始云游戏画面数据; 所述服务器将所述原始云游戏画面数据和所述复制后的云游戏画面数据分别传送至 所述客户端。
2. 根据权利要求1所述的方法,其特征在于,所述服务器根据所述控制指令生成相应 的原始云游戏画面数据进一步包括: 所述服务器根据发出所述控制指令的客户端的标识判断所述控制指令是否属于预定 义指令; 若所述控制指令属于预定义指令,则直接根据所述预定义指令生成相应的原始云游戏 画面数据; 若所述控制指令不属于预定义指令,则将所述控制指令转换为预定义指令,再根据所 述预定义指令生成相应的原始云游戏画面数据。
3. 根据权利要求2所述的方法,其特征在于,所述服务器根据发出所述控制指令的客 户端的标识判断所述控制指令是否属于预定义指令。
4. 根据权利要求1所述的方法,其特征在于,在所述服务器接收客户端的控制指令步 骤之前还包括: 测试服务器至客户端的网络状况,以确定所述客户端的网络状况是否达到网络状况阈 值条件; 若达到所述网络状况阈值条件,则将所述云游戏接入所述客户端; 若未达到所述网络状况阈值条件,则提示所述云游戏不能接入所述客户端。
5. 根据权利要求1所述的方法,其特征在于,所述客户端的控制指令包括键盘控制指 令和鼠标控制指令。
6. -种云游戏实现系统,包括: 接收装置,用于服务器接收客户端的控制指令,其中,所述客户端的数量> 2 ; 原始画面数据生成装置,用于所述服务器根据所述控制指令生成相应的原始云游戏画 面数据; 画面数据复制装置,用于所述服务器抓取和编码所述原始云游戏画面数据,并根据所 述客户端的数量复制编码后的所述原始云游戏画面数据; 传送装置,用于所述服务器将所述原始云游戏画面数据和所述复制后的云游戏画面数 据分别传送至所述客户端。
7. 根据权利要求6所述的系统,其特征在于,所述原始画面数据生成装置进一步包括: 判断模块,用于所述服务器判断所述控制指令是否属于预定义指令;若所述控制指令 属于预定义指令,则直接根据所述预定义指令生成相应的原始云游戏画面数据;若所述控 制指令不属于预定义指令,则将所述控制指令转换为预定义指令,再根据所述预定义指令 生成相应的原始云游戏画面数据。
8. 根据权利要求6所述的系统,其特征在于,还包括识别装置,用于识别发出所述控制 指令的客户端的标识,并根据发出所述控制指令的客户端的标识判断所述控制指令是否属 于预定义指令。
9. 根据权利要求6所述的系统,其特征在于,还包括测试装置,用于测试服务器至客户 端的网络状况,以确定所述客户端的网络状况是否达到网络状况阈值条件;若达到所述网 络状况阈值条件,则将云游戏接入所述客户端;若未达到所述网络状况阈值条件,则继续测 试所述服务器至客户端的网络状况。
10. 根据权利要求6所述的系统,其特征在于,所述客户端的控制指令经由键盘或鼠标 输入。
【文档编号】H04L29/06GK104092711SQ201310110538
【公开日】2014年10月8日 申请日期:2013年4月1日 优先权日:2013年4月1日
【发明者】邓迪 申请人:云联(北京)信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1