CN103023872B - 一种云游戏服务平台 - Google Patents
一种云游戏服务平台 Download PDFInfo
- Publication number
- CN103023872B CN103023872B CN201210466093.8A CN201210466093A CN103023872B CN 103023872 B CN103023872 B CN 103023872B CN 201210466093 A CN201210466093 A CN 201210466093A CN 103023872 B CN103023872 B CN 103023872B
- Authority
- CN
- China
- Prior art keywords
- game
- server
- streaming media
- client computer
- media server
- 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
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了一种云游戏服务平台,包括:控制服务器集群、流媒体服务器集群和游戏服务器集群;控制服务器用于为客户机分配流媒体服务器和游戏服务器;流媒体服务器用于将客户机发送的游戏操作指令转发给游戏服务器,并将游戏服务器产生的流媒体码流转发给客户机;游戏服务器包括游戏进程管理模块、音视频抓取模块、编码模块和操作指令模拟模块,用于将所述的游戏操作指令模拟至游戏程序中。本发明云游戏服务平台能够使用户无需自建高端PC用作游戏机,只要使用一台低配置的PC,并接入高速网络即可,且能享受到较佳的游戏体验。
Description
技术领域
本发明属于游戏服务技术领域,具体涉及一种云游戏服务平台。
背景技术
上一个十年,是个人电脑高速发展的时代,计算机硬件性能越来越强,处理的任务越来越多。随着游戏开发水平的提高,高端游戏画面越来越逼真,尤其是以3D画面水平颇高。而这些绚丽画面的实现离不开高端的硬件支持,因而游戏运行环境配置要求越来越高,这些配置包括CPU、内存、显卡等。随着游戏不断升级更新,这些高配置的机器也将逐步淘汰。这种无止境的硬件升级更新给游戏用户带来巨大的资源浪费,如何为游戏用户节约钱袋成为游戏厂商和运营商不得不考虑的问题。
云计算是继八十年代大型计算机到客户端-服务器的大转变之后的又一种巨变。云计算(cloudcomputing),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。云计算的核心思想,是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。提供资源的网络被称为“云”。
当前,在云计算领域研究开发和推广应用等方面,处于领先的公司仍然是一些技术先进、实力雄厚的世界级知名公司:微软、谷歌、亚马逊、IBM等。他们积极投入研发并努力将其成果推广应用,如:网络移动磁盘,全球数据备份中心、云存储基础架构、云计算结构体系、云技术推广应用的实施标准、云安全保障体系等。云计算研究成果的推广应用,为解决游戏用户资源浪费提供了新的途径。
随着网络宽带进入千家万户,家庭带宽逐步提高,资费也逐步下调,特别是家庭光宽带的兴起,云游戏的概念也随之而生。云游戏是云计算和游戏相结合的产物,其通过云计算和云存储系统来构建一个庞大的、超能的游戏服务器集群,在云服务器上运行各种游戏,然后服务器将画面进行渲染并压缩,随后将这些视频流实时的传回到用户的电脑上,而用户接收画面后,再向服务器发送操作指令。游戏体验非常逼真,就和在自己的电脑上运行游戏一样。用户无需要下载、安装大容量的游戏程序,免除了软件系统和设备性能升级限制等问题。
虽然云游戏使用方式简单、轻巧、方便,但是背后却消耗着大量的资源,如:服务器端资源开销极大;对网络环境要求极高、带宽开销极大;某些游戏对响应延迟要求十分苛刻、网络稳定性要求很高等。可见,云游戏在解决用户硬件问题的同时还给了用户强大的带宽承载,但是目前我国的宽带流量平均值低于2MB/S,所以从客观上也阻挠了网络质量的提升、云游戏的推广。
综上所述,目前云游戏存在以下几点主要问题:
1、由于高端游戏运行消耗大量的硬件资源,所以每台云游戏服务器只能运行少许数目的游戏,因此提高每台云游戏服务器运行的游戏数目、节约云游戏运营成本是当前的首要任务;
2、相比于传统的网络游戏和单机游戏,云游戏的用户体验还是存在不小的差距,诸如游戏画面延迟时间较长,分辨率较低等问题目前是急需解决的。
发明内容
针对现有技术所存在的上述技术缺陷,本发明提供了一种云游戏服务平台,用户只需一台低配客户机即能在服务平台上畅游运行各种游戏,且能享受到较佳的游戏体验。
一种云游戏服务平台,包括:控制服务器集群、流媒体服务器集群和游戏服务器集群;
所述的流媒体服务器集群包含有多台流媒体服务器,所述的游戏服务器集群包含有多台游戏服务器;
所述的控制服务器集群包含有多台控制服务器,所述的控制服务器用于接收客户机发送的游戏启动指令和游戏关闭指令,并根据游戏启动指令从流媒体服务器集群和游戏服务器集群中分别选取出一台流媒体服务器和一台游戏服务器分配给该客户机,以使客户机通过所述的流媒体服务器与所述的游戏服务器连接,同时将所述的游戏启动指令和游戏关闭指令转发给游戏服务器;
所述的流媒体服务器用于将客户机发送的游戏操作指令转发给游戏服务器,并将游戏服务器产生的流媒体码流转发给客户机;
所述的游戏服务器包括:
游戏进程管理模块,用于根据游戏启动指令或游戏关闭指令分别开启或关闭对应未运行的游戏程序;
音视频抓取模块,用于实时采集游戏程序的音频和视频;
编码模块,用于对采集到的音频和视频进行编码,得到流媒体码流;
操作指令模拟模块,用于将所述的游戏操作指令模拟至游戏程序中。
优选地,所述的游戏服务器还包括虚拟化多开模块,其根据游戏启动指令或游戏关闭指令分别开启或关闭对应已运行的游戏程序;能够在一台游戏服务器上同时运行多个同款游戏程序。
优选地,所述的控制服务器连接有认证服务器,其用于对客户机进行身份认证;能够帮助平台建立安全公平的运营体系。
优选地,所述的编码模块采用CUDA并行计算技术对采集到的视频进行编码;能够大大减少视频编码所消耗的CPU资源,可以保证在多路视频并行编码的情况下,也可以为游戏腾出CPU资源,保证游戏的顺畅运行。
优选地,所述的编码模块采用开源FAAC编码技术对采集到的音频进行编码;可以用更短的CPU指令周期完成编码,提高了编码效率,降低了音频延迟。
优选地,所述的音视频抓取模块采用Hook技术实时采集游戏程序的音频和视频;其能抓取各类游戏图像和声音。
优选地,所述的操作指令模拟模块采用Hook技术将游戏操作指令模拟至游戏程序中;使游戏能正常读取到客户端发送过来的键盘、鼠标信息,达到模拟地目的。
优选地,所述的控制服务器实时获取流媒体服务器集群和游戏服务器集群的负载信息,并从流媒体服务器集群和游戏服务器集群中分别选取出一台负载最小的流媒体服务器和一台负载最小的游戏服务器分配给客户机;能够使流媒体服务器集群和游戏服务器集群中各服务器负载均衡。
本发明云游戏服务平台能够使用户无需自建高端PC用作游戏机,只要使用一台低配置的PC、移动终端、电视机顶盒等设备,并接入高速网络即可。所有用户的游戏都在云游戏服务平台上运行,使用独特的高压缩比视频压缩技术将渲染完成的画面传输到用户的客户端显示,延迟低至10ms。用户无需下载游戏,只要登陆该平台,选择想要加入的游戏就可以直接加入战局。
相对传统游戏不仅需要繁琐的购买、下载、安装等过程,更需要用户主机拥有高效的CPU、内存、显卡等硬件支持;而云游戏作为全新的体验模式,对用户终端的硬件性能要求非常低,普通的PC机、机顶盒、移动终端设备都可以体验本发明的云游戏;用户只需要连接到网络,对屏幕上的视频进行操作就可以体验到各类且丰富的游戏应用。
附图说明
图1是本发明的云游戏服务平台的结构示意图。
图2是本发明游戏服务器的结构示意图。
图3是本发明的云游戏服务平台的交互示意图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
如图1所示,一种云游戏服务平台包括:认证服务器、云游戏客户端(1)、云游戏服务器端(2)和游戏列表(3)。
云游戏客户端通过互联网与云游戏服务器端连接,为用户提供跨平台游戏体验。这些客户平台包括低端PC机(Window、MAC操作系统)、电视机顶盒,移动终端设备(iOS、Android手机),平板电脑(苹果iPad、微软Surface、三星Galaxy),Flash在线播放等。
云游戏服务器端是整个云游戏服务平台的核心部分,其主要包括控制服务器集群、流媒体服务器集群、游戏服务器集群。
游戏列表主要是由第三方游戏厂商提供的游戏包,其包括目前流行的单机游戏和少许网络游戏。
由于云游戏客户端是在不同的客户平台上实现的,所以涉及到的开发语言包括C++,Java和Object-C等。客户端由以下模块组成:
通信模块,主要用于向控制服务器集群发送认证请求信息、游戏启动指令和游戏关闭指令;向流媒体服务器集群发送游戏操作指令,并接收流媒体服务器集群转发的流媒体码流;控制指令传输采用TCP协议,流媒体码流传输采用RTP/RTSP协议。
解码渲染模块,用于对流媒体码流进行解码并在终端渲染显示。根据硬件设备的不同,采用硬件解码和软件解码。硬件解码就是H.264算法在数字信号处理器DSP上实现,并详细设计DSP嵌入式解码器的结构、算法优化以及改进方向等。
认证服务器主要功能是验证用户账号的合法性,只有通过验证的账号才能登录云游戏服务器端。从图1中可以看出,控制服务器会连接认证服务器。用户登录基本流程是,客户端发送账号和密码到认证服务器验证,如果验证通过,认证服务器会给用户分配一个SessionKey,并把这个SessionKey发送给客户端、控制服务器、流媒体服务器,在后续进入游戏过程中,控制服务器、流媒体服务将验证SessionKey合法性,如果和客户端携带的SessionKey不一致,将无法成功开启游戏服务。
云游戏服务器端采用高性能高并发的架构设计。控制服务器在服务器组中也起到负载均衡作用,主要职责是将客户端的游戏请求分配给负载最小的流媒体服务器和游戏服务器,并不需要知道游戏将在哪台游戏服务器上开启运行,只需要知道在某台流媒体服务器上接收流媒体码流和发送游戏控制指令就可以了。流媒体服务器起到网关(Gate)的作用,主要职责是将客户端和游戏服务器隔离,客户端程序直接与这些流媒体服务器通信,并不需要知道具体的游戏服务器内部架构,包括它们的IP、端口、网络通信模型(完成端口或epoll)等。客户端只与流媒体服务器相连,通过流媒体服务器转发数据包间接地与游戏服务器交互。同样地,游戏服务器也不直接和客户端通信,发给客户端的协议都通过流媒体服务器进行转发。
根据网络游戏的规模和设计的不同,服务器集群中服务器的数量是不尽相同的。本实施方式设计的服务器组架构如图1中服务器组A所示,虽然加大了服务器的设计复杂度,但却带来了以下几点好处:
(1)控制服务器作为流媒体和游戏服务器的控制者,分配游戏请求给负载最小的流媒体服务器和游戏服务器,使组中的各个服务器资源得到充分有效的利用。
(2)控制服务器在游戏开启成功后,将负载最小的流媒体服务器的通信信息应答给客户端,从而简化了客户端配置流媒体服务器信息。
(3)流媒体服务器作为网络通信的中转站,负责维护将内网和外网隔离开,使外部无法直接访问内部服务器,保障内网服务器的安全,一定程度上减少外部的攻击。
(4)流媒体服务器负责解析数据包、超时处理和一定逻辑处理,这样可以提前过滤掉错误包和非法数据包。
(5)客户端程序只需建立与流媒体服务器的连接即可进入游戏,无需与其它游戏服务器同时建立多条连接,节省了客户端和服务器程序的网络资源开销。
服务器组架构还需注意以下可能导致负面效果的两个情况:如何避免控制服务器成为高负载情况下的通讯瓶颈问题,以及由于控制服务器的单节点故障导致整组服务器无法对外提供服务的问题。对于上述两个问题本实施方式采用“多控制服务器”技术加以解决。“多控制服务器”就是同时存在多个控制服务器,如图1服务器组A和B中都有一台控制服务器。若服务器组A中的控制服务器宕机时,它只会影响到本服务器组不能增加新的客户端,已加入本服务器组的客户端不受任何影响,新的客户端可以加入到服务器组B中。
云游戏服务器端增加服务器组可以通过NetScaler设备来完成。NetScaler是由第三方厂商提供的负载均衡(LoadBalance)设备,可帮助企业构建具有弹性、可扩展性和操作简便性等公共云服务的重要特征和功能的先进企业云网络。它在一个简便易用的平台上结合了高速负载均衡和内容交换、数据压缩、内容缓存、SSL加速、应用流可视性和强大的应用防火墙。如图1所示,NetScaler可以分发高并发的请求给服务器组A和B,也可以部署更多的服务器组来分担高并发请求的负载问题,如增加服务器组C、D、E......。
从图1中的服务器组A可以看出,一组服务器包括控制服务器、流媒体服务器集群和游戏服务器集群。
控制服务器由以下模块组成:
通信管理模块,开启两个侦听服务,一个用于侦听客户端的连接请求(TCP/HTTP),主要负责维护客户端与流媒体服务器、游戏服务器之间的网络连接与通讯;另一个用于侦听流媒体和游戏服务器集群的连接请求(TCP)。当接收到连接请求时创建连接信息并保存,当客户端离开或异常时断开连接并释放连接资源信息。
服务器管理模块,包括服务器基本信息注册、游戏列表信息注册、服务器负载信息更新三个功能。服务器基本信息注册用于存储游戏服务器和流媒体服务器的基本信息,包括IP地址、端口、最大负载数、服务器类型等。游戏列表信息注册用于登记游戏服务器上部署的游戏的种类,以及每种游戏在该游戏服务器上运行的最大实例数。服务器负载信息更新是指对接收到游戏服务器汇报的当前运行的游戏数目和流媒体服务器汇报的当前连接数目等负载信息进行更新。
客户端请求转发模块,分为两部分:一是将客户端认证请求转发给认证服务器,根据认证结果获取会话密钥(SessionKey),并决定是否为客户端继续提供服务;二是收到客户端游戏请求后,将验证会话密钥合法性,然后根据流媒体服务器和游戏服务器定时汇报的负载信息,并将请求和会话密钥转发给负载最小的流媒体服务器和游戏服务器处理,其好处是将客户端大量的并发请求分担到多台流媒体服务器和游戏服务器上分别处理,减少客户端等待响应的时间。最后将会话密钥、流媒体服务器的外网IP地址和端口、内网IP地址和端口分别返回给客户端和转发给游戏服务器。
流媒体服务器由以下模块组成:
通信管理模块,主要负责在用户游戏过程中负责维持游戏服务器与客户端之间的网络连接和通讯。此模块将开启四个侦听服务和一个连接请求;四个侦听服务包括:(1)用于侦听客户端发送游戏控制指令的TCP连接;(2)用于侦听客户端请求游戏音视频码流的RTSP连接;(3)用于侦听游戏服务器接收游戏控制指令的TCP连接;(4)用于侦听游戏服务器发送游戏音视频码流的RTP连接。一个连接请求为流媒体服务器开启时主动向控制服务器发起连接请求。如果连接失败,流媒体服务器将定时发送连接请求,直到连接成功为止。
注册汇报模块,主要由基本信息注册和负载信息汇报两个功能组成。流媒体服务器开启后,如果与控制服务器连接成功,它将把自己的基本信息发送给控制服务器,基本信息包括:最大负载数、提供给客户端连接的IP地址和端口,提供给游戏服务器连接的IP地址和端口等。负载信息汇报功能定时汇报流媒体服务器当前的会话和连接数目。
会话管理模块,根据收到控制服务器转发的游戏请求创建一个游戏会话实例,并将收到会话密钥(SessionKey)保存在会话实例中。创建成功后将会话信息返回给控制服务器,最终客户端将获取会话信息及外网IP地址和端口,游戏服务器将获取会话信息及内网IP地址和端口。客户端将用外网IP地址和端口与流媒体服务器建立游戏控制指令连接和音视频码流传输连接。然后对客户端发来的一些协议作简单的逻辑处理,其中包括验证会话密钥合法性。最后发送会话信息加入游戏会话,同时将两个连接绑定在游戏会话中。同理,游戏服务器与流媒体服务器建立两个连接的过程类似。如果游戏退出时,根据提供的会话信息将游戏会话中的四个连接关闭并释放资源,最后再释放游戏会话。
游戏服务器主要负责开启配置游戏列表中的游戏进程,然后抓取游戏的音视频数据进行编码,并实时地传输给流媒体服务器。接收客户端发送的游戏控制指令时,模拟键盘、鼠标、手柄消息来操控游戏进程。如图2所示,从软件架构角度来看,游戏服务器分成以下几个模块:
注册汇报模块,主要由基本信息注册、游戏信息注册和负载信息汇报三个功能组成。游戏服务器开启后与控制服务器建立连接,将把自己的基本信息发送给控制服务器进行注册,紧接着将配置的游戏列表信息发送给控制服务器进行登记。游戏列表信息包括:游戏编号、游戏运行的最大实例数等。负载信息汇报功能是定时汇报游戏服务器当前运行的游戏进程数目。
游戏进程管理模块,包括开启游戏进程服务、创建游戏指令与音视频传输连接、游戏进程监控三个功能。当收到控制服务器转发的游戏请求时,根据提供的游戏编号从游戏列表获取该游戏的基本信息,初始化该游戏的音视频数据抓取方式、键盘鼠标模拟方式、编码实例,然后向负载小的流媒体发起连接请求,建立游戏指令的TCP连接和音视频数据传输的RTP连接。前述动作执行正常的情况下,开启游戏进程服务,注入游戏动态链接库(GSDll.dll),并将开启的游戏基本信息写入共享内存中。最后唤醒游戏进程,并开始编码。创建独立的线程来检测游戏进程的活动状态。如果检测到游戏进程正常/非正常退出,需要向控制服务器报告游戏会话结束信息,并终止与流媒体服务器之间的连接,以便服务器之间执行资源释放操作。
游戏图像抓取模块,在游戏动态链接库(GSDll.dll)中利用Hook技术,拦截了DX8、DX9、DX10、DX11的Present函数;拦截了OpenGL的WglSwapBuffers函数;更改了GDI窗口的消息处理函数并拦截WM_PAINT事件。达到抓取DirectX类、OpenGL类、GDI类游戏图像地目的。动态链接库抓取到的游戏画面将写入共享内存中,游戏服务器根据游戏编号和游戏进程句柄从共享内存中获取对应的游戏画面数据,并进行视频编码。
游戏声音抓取模块,在游戏动态链接库(GSDll.dll)中利用Hook技术,拦截了DirectSound的DirectSoundCreate、DirectSoundCreate8函数;拦截了waveOpen函数;拦截了XAudio的CreateMasteringVoice函数。使采用DirectSound、waveOut、XAudio等技术进行声音处理的游戏,将游戏的声音输出到指定的虚拟音频设备,并对特定的虚拟音频设备进行声音采集,达到抓取游戏声音地目的,而且每款运行的游戏声音互不干扰。动态链接库抓取到的游戏音频数据将写入共享内存中,游戏服务器根据游戏编号和游戏进程句柄从共享内存中获取对应的游戏音频数据,并进行音频编码。
视频编码模块,采用了H264视频编码格式,它是一种被广泛使用的高精度视频的录制和压缩格式。传统情况下,游戏服务器采用CPU对游戏画面进行H264视频编码,这样会非常消耗CPU资源,一块高性能的CPU也很难支持多路H264并行编码。针对上述问题,本实施方式对游戏服务器进行了优化改进,充分利用显卡(CUDA)的GPU资源进行H264编码,大大减少编码所消耗的CPU资源,在多路H264并行编码的情况下,保证游戏的顺畅运行。同时也为游戏节约了大量CPU资源,这样可以在同台服务器上运行更多的游戏进程。
音频编码模块,采用了AAC音频编码技术,在开源FAAC的基础上进行了算法优化和指令优化,大篇幅使用汇编语言替代C/C++语言,编码效率成倍提升。算法优化是指采用性能更加好的算法进行替代;指令优化是指利用了现在处理器的一些新指令集,比如MMX、SSE、SSE2、SSE3、SSE4等,利用这些新的指令集,做同样的事情,可以用更短的CPU指令周期完成。在性能上,优化后的AAC音频编码器较优化前有3倍的提升,提高了编码效率,降低了音频延迟。
操作指令模拟模块,在游戏动态链接库(GSDll.dll)中利用Hook技术,拦截了GetKeyState、GetAsyncKeyState、GetKeyboardState、RawInput相关函数、DirectInput相关函数。当游戏服务器收到客户端发送的游戏控制指令消息,将其写入共享内存中,使游戏进程通过动态链接库能正常读取客户端发送的游戏控制指令,达到模拟键盘、鼠标信息的目的。
虚拟化多开模块,利用Ring3APIHook技术,Hook了通用检测游戏多实例的函数,比如:命名内核对象、进程名称、窗口标题(窗口类)、公共或临时文件等。通过这种方法实现的虚拟化多开技术,相比真正虚拟机实现的虚拟化多开技术具有更好的性能。
图3给出客户端与服务器之间数据通讯的主要流程,从这些流程能看出各种服务器之间是如何数据交互和协同工作的。云游戏服务平台交互流程包含了服务器注册、客户端登录认证,客户端开启游戏请求、客户端操作游戏流程和客户端关闭游戏请求五个流程。以下我们从众多云游戏客户端中选取个人电脑(PC)来说明交互流程:
服务器注册流程:包括第①和②步。
①、游戏服务器启动后,将自己的基本信息和从配置文件中读取的游戏列表信息发送给控制服务器进行注册登记,成功后控制服务器标注该游戏服务器准备就绪。
②、流媒体服务器启动后,将自己的基本信息发送给控制服务器进行注册登记,成功后控制服务器标注该流媒体服务器准备就绪。
客户端登录认流程:包括第③、④和⑤步。
③、客户端将用户名和密码信息发送给控制服务器。
④、控制服务器将用户名和密码信息转发给认证服务器;认证服务器收到后验证用户的账号是否合法,验证通过后,会给用户分配一个会话密钥(SessionKey),并返回给控制服务器。
⑤、控制服务器将在本地保存用户会话密钥,并将会话密钥返回给客户端。
客户端开启游戏请求流程:包括第⑥、⑦、⑧、⑨、⑩、和步。
⑥、客户端通过互联网发送开启游戏请求给控制服务器,请求中包含会话密钥(SessionKey);控制服务器将验证用户的合法性,然后通过负载均衡功能计算出负载最小的流媒体服务器和游戏服务器,并获取服务器的连接信息,分配全局唯一的游戏会话编号。
⑦、控制服务器将游戏会话编号、会话密钥及其他信息发送给负载最小流媒体服务器;流媒体服务器将创建游戏会话实例,并保存会话实例和会话密钥。
⑧、流媒体服务器将创建游戏会话结果返回给控制服务器。
⑨、控制服务器再将游戏编号、游戏会话编号、负载最小的流媒体连接信息一起发送给游戏服务器。
⑩、游戏服务器根据收到的游戏会话编号、负载最小的流媒体连接信息与流媒体服务器建立两个连接(游戏控制指令TCP连接和流媒体传输RTP连接);然后根据游戏会话编号加入流媒体服务器的游戏会话实例,并将这两个连接绑定在游戏会话实例中。
连接成功后,游戏服务器根据游戏编号从游戏队列中获取游戏基本信息,开启游戏进程,注入游戏动态连接库(GSDll.dll),插入游戏记录到共享内存中,然后唤醒游戏进程。
游戏服务器将游戏开启的结果返回给控制服务器。
控制服务器将负载小的流媒体服务器的外网连接信息和全局唯一的游戏会话编号返回给客户端。
客户端收到流媒体服务器的外网连接信息和全局唯一的游戏会话编号后,先与流媒体服务器建立两个连接(游戏控制指令TCP连接和流媒体传输RTSP连接);流媒体服务器根据客户端发送的会话密钥验证用户的合法性,然后再根据会话编号加入游戏会话实例,并将这两个连接绑定在游戏会话实例中。
客户端操作游戏流程:包括第和步。根据上述的步骤可以知道,整个游戏通信握手准备就绪后,流媒体服务器与客户端、游戏服务器之间保持了四个连接,这些连接是决定用户能否操控游戏的关键。
游戏准备就绪后,客户端向流媒体服务器发送游戏控制指令。
流媒体服务器收到游戏指令后,根据提供的游戏会话编号找到与游戏服务器的TCP连接,然后将游戏控制指令转发给游戏服务器。
游戏服务器收到游戏指令后,进行解析指令得到消息类型,然后根据消息类型确认消息的输入方式(键盘、鼠标、手柄),输入方式的相关信息写入共享内存中。
游戏进程调用注入的动态链接库从共享内存中读取输入方式的相关信息,然后通过拦截的键盘、鼠标输入函数来操控游戏;游戏操控时变动的画面和声音分别写入视频和音频共享内存中。
游戏服务器从视频共享内存中读取视频数据进行视频编码,从音频共享内存中读取音频数据进行音频编码;然后通过RTP连接将编码后的音视频数据发送给流媒体服务器。
流媒体服务器根据提供的游戏会话编号找到与客户端的RTSP连接,音视频数据发送给客户端。
Claims (1)
1.一种云游戏服务平台,其特征在于,包括:控制服务器集群、流媒体服务器集群和游戏服务器集群;
所述的控制服务器集群包含有多台控制服务器,所述的控制服务器用于接收客户机发送的游戏启动指令和游戏关闭指令,并根据游戏启动指令从流媒体服务器集群和游戏服务器集群中分别选取出一台流媒体服务器和一台游戏服务器分配给该客户机,以使客户机通过所述的流媒体服务器与所述的游戏服务器连接,同时将所述的游戏启动指令和游戏关闭指令转发给游戏服务器;
所述的流媒体服务器用于将客户机发送的游戏操作指令转发给游戏服务器,并将游戏服务器产生的流媒体码流转发给客户机;
所述的游戏服务器包括:
游戏进程管理模块,用于根据游戏启动指令或游戏关闭指令分别开启或关闭对应未运行的游戏程序;
音视频抓取模块,用于实时采集游戏程序的音频和视频;
编码模块,用于对采集到的音频和视频进行编码,得到流媒体码流;
操作指令模拟模块,用于将所述的游戏操作指令模拟至游戏程序中;
虚拟化多开模块,其根据游戏启动指令或游戏关闭指令分别开启或关闭对应已运行的游戏程序;
所述的控制服务器连接有认证服务器,其用于对客户机进行身份认证;所述的编码模块采用CUDA并行计算技术对采集到的视频进行编码,采用开源FAAC编码技术对采集到的音频进行编码;所述的音视频抓取模块采用Hook技术实时采集游戏程序的音频和视频;所述的操作指令模拟模块采用Hook技术将游戏操作指令模拟至游戏程序中;
所述的控制服务器实时获取流媒体服务器集群和游戏服务器集群的负载信息,并从流媒体服务器集群和游戏服务器集群中分别选取出一台负载最小的流媒体服务器和一台负载最小的游戏服务器分配给客户机;
所述的客户机开启游戏请求的具体流程如下:
1.1客户机通过互联网发送开启游戏请求给控制服务器,请求中包含会话密钥;控制服务器将验证用户的合法性,然后通过负载均衡功能计算出负载最小的流媒体服务器和游戏服务器,并获取服务器的连接信息,分配全局唯一的游戏会话编号;
1.2控制服务器将游戏会话编号、会话密钥及其他信息发送给负载最小流媒体服务器;流媒体服务器将创建游戏会话实例,并保存会话实例和会话密钥;
1.3流媒体服务器将创建游戏会话结果返回给控制服务器;
1.4控制服务器再将游戏编号、游戏会话编号、负载最小的流媒体连接信息一起发送给游戏服务器;
1.5游戏服务器根据收到的游戏会话编号、负载最小的流媒体连接信息与流媒体服务器建立两个连接:游戏控制指令TCP连接和流媒体传输RTP连接;然后根据游戏会话编号加入流媒体服务器的游戏会话实例,并将这两个连接绑定在游戏会话实例中;
1.6连接成功后,游戏服务器根据游戏编号从游戏队列中获取游戏基本信息,开启游戏进程,注入游戏动态连接库,插入游戏记录到共享内存中,然后唤醒游戏进程;
1.7游戏服务器将游戏开启的结果返回给控制服务器;
1.8控制服务器将负载小的流媒体服务器的外网连接信息和全局唯一的游戏会话编号返回给客户机;
1.9客户机收到流媒体服务器的外网连接信息和全局唯一的游戏会话编号后,先与流媒体服务器建立两个连接:游戏控制指令TCP连接和流媒体传输RTSP连接;流媒体服务器根据客户机发送的会话密钥验证用户的合法性,然后再根据会话编号加入游戏会话实例,并将这两个连接绑定在游戏会话实例中;
所述的客户机进行游戏操作的具体流程如下:
2.1游戏准备就绪后,客户机向流媒体服务器发送游戏控制指令;
2.2流媒体服务器收到游戏指令后,根据提供的游戏会话编号找到与游戏服务器的TCP连接,然后将游戏控制指令转发给游戏服务器;
2.3游戏服务器收到游戏指令后,进行解析指令得到消息类型,然后根据消息类型确认消息的输入方式,输入方式的相关信息写入共享内存中;
2.4游戏进程调用注入的动态链接库从共享内存中读取输入方式的相关信息,然后通过拦截的键盘、鼠标输入函数来操控游戏;游戏操控时变动的画面和声音分别写入视频和音频共享内存中;
2.5游戏服务器从视频共享内存中读取视频数据进行视频编码,从音频共享内存中读取音频数据进行音频编码;然后通过RTP连接将编码后的音视频数据发送给流媒体服务器;
2.6流媒体服务器根据提供的游戏会话编号找到与客户机的RTSP连接,音视频数据发送给客户机;
所述游戏服务器及流媒体服务器的注册流程如下:
3.1游戏服务器启动后,将自己的基本信息和从配置文件中读取的游戏列表信息发送给控制服务器进行注册登记,成功后控制服务器标注该游戏服务器准备就绪;
3.2流媒体服务器启动后,将自己的基本信息发送给控制服务器进行注册登记,成功后控制服务器标注该流媒体服务器准备就绪;
所述客户机的登录认证流程如下:
4.1客户机将用户名和密码信息发送给控制服务器;
4.2控制服务器将用户名和密码信息转发给认证服务器;认证服务器收到后验证用户的账号是否合法,验证通过后,会给用户分配一个会话密钥,并返回给控制服务器;
4.3控制服务器将在本地保存用户会话密钥,并将会话密钥返回给客户机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210466093.8A CN103023872B (zh) | 2012-11-16 | 2012-11-16 | 一种云游戏服务平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210466093.8A CN103023872B (zh) | 2012-11-16 | 2012-11-16 | 一种云游戏服务平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103023872A CN103023872A (zh) | 2013-04-03 |
CN103023872B true CN103023872B (zh) | 2016-01-06 |
Family
ID=47972003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210466093.8A Active CN103023872B (zh) | 2012-11-16 | 2012-11-16 | 一种云游戏服务平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103023872B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3693068A1 (en) * | 2019-02-07 | 2020-08-12 | NCSoft Corporation | Method and apparatus for controlling game |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103491379A (zh) * | 2013-09-25 | 2014-01-01 | 浙江宇视科技有限公司 | 一种提升智能分析性能的方法和装置 |
CN103513989B (zh) * | 2013-09-30 | 2017-01-04 | 广州华多网络科技有限公司 | 按键数据获取方法及装置 |
CN103561062B (zh) * | 2013-10-18 | 2017-04-05 | 北京奇虎科技有限公司 | 应用执行方法、设备和系统 |
CN104683252B (zh) * | 2013-11-26 | 2018-05-11 | 北京畅游天下网络技术有限公司 | 一种应用于游戏网络的网关连入方法与系统 |
CN103763307B (zh) * | 2013-12-30 | 2017-03-08 | 华中科技大学 | 一种带宽优化方法及系统 |
CN105337110A (zh) * | 2014-08-08 | 2016-02-17 | 北京嘉岳同乐极电子有限公司 | 一种智能插座 |
CN104202417A (zh) * | 2014-09-16 | 2014-12-10 | 腾讯科技(深圳)有限公司 | 基于云计算的信息处理方法、客户端、云服务器及系统 |
CN104363277A (zh) * | 2014-11-13 | 2015-02-18 | 上海交通大学 | 云游戏分布式系统中带宽资源分配管理系统及其管理方法 |
CN104639325A (zh) * | 2014-12-31 | 2015-05-20 | 广州蓝海彤翔网络科技有限公司 | 一种基于统一认证的云游戏系统及方法 |
CN104536763B (zh) * | 2015-01-08 | 2017-03-08 | 炫彩互动网络科技有限公司 | 一种模拟现实的网络游戏实现方法 |
JP6646319B2 (ja) * | 2015-09-30 | 2020-02-14 | ソニー・インタラクティブエンタテインメント エルエルシー | クラウドゲームのためのマルチユーザデモストリーミングサービス |
US10449448B2 (en) * | 2015-10-15 | 2019-10-22 | Sony Interactive Entertainment America Llc | Method for improving game streaming performance in the cloud |
CN105376244A (zh) * | 2015-11-27 | 2016-03-02 | 深圳市望尘科技有限公司 | 一种以基于云端服务器进行人工智能和物理仿真计算的网络游戏实现方法 |
CN105749550A (zh) * | 2016-02-24 | 2016-07-13 | 戴佳佳 | iOS系统手机游戏录像方法 |
CN105916047A (zh) * | 2016-05-17 | 2016-08-31 | 武汉斗鱼网络科技有限公司 | 一种基于弹幕控制的游戏操作方法及装置 |
CN106302219A (zh) * | 2016-08-08 | 2017-01-04 | 深圳市东方时代新媒体有限公司 | 一种重度游戏在智能电视呈现的方法和系统 |
US11014011B2 (en) * | 2017-10-20 | 2021-05-25 | Microsoft Technology Licensing, Llc | Cross-platform interactive streaming |
CN108066986B (zh) * | 2017-10-26 | 2021-04-02 | 咪咕互动娱乐有限公司 | 一种流媒体确定方法及装置和存储介质 |
CN110034828B (zh) * | 2018-01-12 | 2021-11-19 | 网宿科技股份有限公司 | 云应用的音频采集方法及服务器 |
CN114968478A (zh) * | 2018-03-06 | 2022-08-30 | 华为技术有限公司 | 一种数据处理的方法、装置、服务器和系统 |
CN108446146B (zh) * | 2018-03-22 | 2022-03-08 | 北京奇艺世纪科技有限公司 | 一种游戏数据采集方法及装置 |
CN108829402A (zh) * | 2018-05-21 | 2018-11-16 | 西安万像电子科技有限公司 | 应用程序的多开方法及系统、存储介质和处理器 |
CN108815842A (zh) * | 2018-06-01 | 2018-11-16 | 网宿科技股份有限公司 | 一种运行云游戏的方法、设备和系统 |
CN112639731A (zh) * | 2018-07-24 | 2021-04-09 | 奇跃公司 | 应用共享 |
CN109304031B (zh) * | 2018-09-19 | 2021-11-02 | 电子科技大学 | 一种基于异构智能终端的虚拟化云游戏平台 |
CN109587118B (zh) * | 2018-11-11 | 2021-05-11 | 长沙摩智云计算机科技有限公司 | Android网游的分布式支持多终端和多网络的系统 |
CN109840058A (zh) * | 2019-01-07 | 2019-06-04 | 烽火通信科技股份有限公司 | 云游戏数据采集方法及系统 |
CN109771939B (zh) * | 2019-01-15 | 2022-07-12 | 网易(杭州)网络有限公司 | 游戏服务器调整方法与装置、存储介质、电子设备 |
CN110025957B (zh) * | 2019-03-04 | 2023-04-21 | 深圳威尔视觉传媒有限公司 | 一种云游戏服务器端架构、客户端和系统 |
CN110327621A (zh) * | 2019-04-24 | 2019-10-15 | 上海恺英网络科技有限公司 | 用于网络游戏客户端匹配的方法及设备 |
CN111861854A (zh) * | 2019-04-30 | 2020-10-30 | 华为技术有限公司 | 用于图形渲染的方法及装置 |
TWI755742B (zh) * | 2019-05-30 | 2022-02-21 | 聯發科技股份有限公司 | 客戶側延遲改善方法、主處理器以及處理電路 |
CN110368686A (zh) * | 2019-07-03 | 2019-10-25 | 上海闻泰信息技术有限公司 | 云游戏实现方法、装置、云端服务器、终端及介质 |
CN110448894A (zh) * | 2019-08-09 | 2019-11-15 | 广州点云科技有限公司 | 一种基于云游戏的联机方法和装置 |
CN110548284A (zh) * | 2019-08-13 | 2019-12-10 | 广州点云科技有限公司 | 一种基于云游戏的分屏互动方法和装置 |
CN110548281B (zh) * | 2019-08-19 | 2023-07-21 | 广州点云科技有限公司 | 一种基于云游戏端的虚拟按键方法 |
CN110652726B (zh) * | 2019-09-27 | 2022-10-25 | 杭州顺网科技股份有限公司 | 一种基于图像识别和音频识别的游戏辅助系统 |
CN110798477B (zh) * | 2019-11-06 | 2022-03-18 | 江苏视博云信息技术有限公司 | 数据传输方法、设备、管理平台及云游戏系统架构 |
CN111064700B (zh) * | 2019-11-07 | 2022-04-29 | 咪咕互动娱乐有限公司 | 云游戏的下载方法、装置及系统 |
CN110841278A (zh) * | 2019-11-14 | 2020-02-28 | 珠海金山网络游戏科技有限公司 | 一种云游戏实现方法及装置 |
CN111803925B (zh) * | 2019-12-03 | 2023-04-18 | 厦门雅基软件有限公司 | 云游戏的转发服务器的调度方法、装置及可读存储介质 |
CN113018868B (zh) * | 2019-12-09 | 2023-02-10 | 华为技术有限公司 | 云游戏登录方法、装置和系统 |
CN111208960B (zh) * | 2019-12-26 | 2023-05-09 | 杭州顺网科技股份有限公司 | 基于抽帧控制和时间同步算法的远程显示降延迟方法 |
CN111214828A (zh) * | 2020-01-03 | 2020-06-02 | 北京小米移动软件有限公司 | 游戏运行方法、装置、设备、介质及云端游戏平台 |
CN111327910A (zh) * | 2020-01-21 | 2020-06-23 | 广州虎牙科技有限公司 | 应用程序的操作控制方法、装置、设备及存储介质 |
CN111346378B (zh) * | 2020-02-26 | 2022-01-14 | 腾讯科技(深圳)有限公司 | 游戏画面传输方法、装置、存储介质和设备 |
CN111447485A (zh) * | 2020-03-31 | 2020-07-24 | 广州微算互联信息技术有限公司 | 一种实时的云游戏录制视频方法、系统、装置及存储介质 |
CN111569417A (zh) * | 2020-04-30 | 2020-08-25 | 北京视博云信息技术有限公司 | 一种云游戏的外设数据传输方法及系统 |
CN111589108A (zh) * | 2020-05-21 | 2020-08-28 | 深圳云鹭科技有限公司 | 一种基于云计算的云游戏系统及方法 |
CN111632373B (zh) * | 2020-05-30 | 2021-05-28 | 腾讯科技(深圳)有限公司 | 一种启动游戏的方法、装置及计算机可读存储介质 |
CN111596885B (zh) * | 2020-07-23 | 2020-11-17 | 腾讯科技(深圳)有限公司 | 音频数据处理方法、服务器及存储介质 |
CN111951366B (zh) * | 2020-07-29 | 2021-06-15 | 北京蔚领时代科技有限公司 | 一种云原生3d场景游戏方法和系统 |
CN112073185B (zh) * | 2020-08-11 | 2023-06-30 | 广州点云科技有限公司 | 云游戏安全传输方法及装置 |
CN112044079B (zh) * | 2020-10-14 | 2023-02-07 | 腾讯科技(深圳)有限公司 | 一种游戏运行方法、装置、存储介质和电子设备 |
CN112672206A (zh) * | 2020-12-17 | 2021-04-16 | 四川长虹电器股份有限公司 | 一种提供智能电视低延时模式的方法 |
CN113015019B (zh) * | 2021-03-09 | 2023-02-28 | 北京百度网讯科技有限公司 | 数据处理方法、装置和系统 |
CN112791385A (zh) * | 2021-03-22 | 2021-05-14 | 腾讯科技(深圳)有限公司 | 游戏运行方法、装置、控制设备以及服务器 |
CN114428670A (zh) * | 2022-03-16 | 2022-05-03 | 浙江云针信息科技有限公司 | 一种实现Windows应用串流的方法及系统 |
CN115801747B (zh) * | 2023-01-11 | 2023-06-02 | 厦门简算科技有限公司 | 一种基于arm架构的云服务器及音视频数据传输方法 |
CN116328290A (zh) * | 2023-05-22 | 2023-06-27 | 安徽海马云科技股份有限公司 | 实现云游戏联机对战的方法、装置、存储介质及电子设备 |
CN117258277B (zh) * | 2023-10-11 | 2024-05-07 | 河南西瓜文化传媒有限公司 | 基于云计算的云游戏服务平台及游戏资源分配方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571900A (zh) * | 2010-12-08 | 2012-07-11 | 中国电信股份有限公司 | 一种实现远端实时操控的系统和方法 |
-
2012
- 2012-11-16 CN CN201210466093.8A patent/CN103023872B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571900A (zh) * | 2010-12-08 | 2012-07-11 | 中国电信股份有限公司 | 一种实现远端实时操控的系统和方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3693068A1 (en) * | 2019-02-07 | 2020-08-12 | NCSoft Corporation | Method and apparatus for controlling game |
Also Published As
Publication number | Publication date |
---|---|
CN103023872A (zh) | 2013-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103023872B (zh) | 一种云游戏服务平台 | |
WO2017088484A1 (zh) | 基于云计算的实时离屏渲染方法、装置及系统 | |
EP4223379A1 (en) | Cloud gaming processing method, apparatus and device, and storage medium | |
US20120088584A1 (en) | Virtualization system and method for hosting applications | |
CN105072190A (zh) | 一种实时性桌面云的实现方法及系统 | |
KR102203381B1 (ko) | 애플리케이션을 스트리밍하고 재생하기 위한 방법 및 전자통신 네트워크 | |
CN106390449A (zh) | 一种基于图形虚拟化技术的云游戏框架 | |
WO2017092311A1 (zh) | 视频数据的获取方法、装置及系统 | |
CN104823180A (zh) | 分布式跨平台用户界面和应用投影 | |
WO2024037110A1 (zh) | 数据处理方法、装置、设备以及介质 | |
US20170201563A1 (en) | Video data providing method, video playback method, device, and system | |
CN102855133A (zh) | 一种计算机处理单元交互式系统 | |
CN104067627B (zh) | 一种视频重定向的方法、装置、系统及计算机可读介质 | |
WO2014089793A1 (zh) | 一种视频重定向的方法、装置、系统及计算机可读介质 | |
CN105451071A (zh) | 一种视频流的处理方法、装置和系统 | |
CN104040995B (zh) | 多媒体重定向方法以及多媒体服务器以及计算机系统 | |
CN107402782A (zh) | 一种用于在直播软件中加载插件的方法及装置 | |
CN102857531A (zh) | 一种基于云计算的远程交互式系统 | |
US11803606B2 (en) | Device augmentation of real time communications | |
CN113766146B (zh) | 音视频处理方法、装置、电子设备及存储介质 | |
CN103873924B (zh) | 一种视频重定向的方法、装置、系统 | |
WO2019100364A1 (zh) | 一种云视频平台中的动态资源调配方法 | |
US9987556B2 (en) | Virtualization system and method for hosting applications | |
CN104639325A (zh) | 一种基于统一认证的云游戏系统及方法 | |
CN116233209A (zh) | 一种gpu云渲染服务远程管理调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |