一种游戏运行方法、装置、存储介质和电子设备与流程
本申请涉及计算机技术领域,更具体地说,涉及一种游戏运行方法、装置、存储介质和电子设备。
背景技术:
随着智能设备的普及,越来越多的人习惯用便携式智能设备进行娱乐游戏。由于受到不同智能设备的硬件配置的差异等因素,使得智能设备对游戏的兼容性差。
随着互联网技术的不断发展,在线游戏应运而生。云游戏为实现在线游戏的一种主要方式,在云游戏中,通过云计算技术几乎可以将所有的游戏数据处理均放到了服务器上,由服务器运行游戏逻辑,将渲染完成的游戏画面传输到客户端,并执行从客户端接收玩家的操作指令。
目前,实现云游戏通常需要在服务器上预先启动多个模拟器,待客户端发送连接请求时为客户端分配一个模拟器。模拟器基于虚拟机运行,由于模拟器运行对所使用的虚拟机的要求较高,在服务器上部署虚拟器和模拟器来启动云游戏不仅耗时长,而且资源消耗高。
技术实现要素:
为解决相关技术中存在的技术问题,本申请实施例提供一种游戏运行方法、装置、存储介质和电子设备,可以有效减少部署在线游戏的时长和资源开销。
为达到上述目的,本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种游戏运行方法,包括:
接收到终端设备发送的针对目标游戏的启动游戏请求,确定为所述终端设备提供游戏服务的目标服务器;
根据所述目标游戏的容器镜像文件,在所述目标服务器上创建用于运行所述目标游戏的游戏容器;所述目标游戏的容器镜像文件是根据操作系统的系统文件和所述目标游戏的安装文件生成的;所述操作系统是支持所述目标游戏运行的操作系统;
建立所述终端设备与所述游戏容器之间的连接;
根据所述终端设备发送的游戏操作指令,通过所述游戏容器运行所述目标游戏,并向所述终端设备返回所述目标游戏运行过程中的游戏画面。
在一种可选的实施例中,根据所述操作系统的镜像文件和目标游戏的安装文件,生成所述目标游戏的容器镜像文件之后,所述方法还包括:
采用分布式存储系统保存所述目标游戏的容器镜像文件;或者,
将所述目标游戏的容器镜像文件保存至镜像文件库中。
在一种可选的实施例中,所述建立所述终端设备与所述游戏容器之间的连接,包括:
建立与所述游戏容器之间的连接,并启动所述游戏容器;
将所述游戏容器返回的游戏容器信息发送给所述终端设备,以建立所述终端设备与所述游戏容器之间的连接。
第二方面,本申请实施例提供一种游戏运行方法,包括:
响应于针对目标游戏的登录操作,展示从后台服务器获取的所述目标游戏的游戏画面;所述目标游戏的游戏画面是所述后台服务器从位于目标服务器上的游戏容器获取的所述目标游戏运行过程中的游戏画面;所述目标服务器为所述后台服务器在接收到终端设备根据所述登录操作生成的启动游戏请求时,确定的为所述终端设备提供游戏服务的服务器;所述游戏容器是根据所述目标游戏的容器镜像文件,在所述目标服务器上创建的;
响应于在游戏运行过程中针对目标游戏的控制操作,展示从后台服务器获取的执行所述控制操作后所述目标游戏的游戏画面。
第三方面,本申请实施例提供一种游戏运行装置,包括:
服务器分配单元,用于接收到终端设备发送的针对目标游戏的启动游戏请求,确定为所述终端设备提供游戏服务的目标服务器;
容器创建单元,用于根据所述目标游戏的容器镜像文件,在所述目标服务器上创建用于运行所述目标游戏的游戏容器;所述目标游戏的容器镜像文件是根据操作系统的系统文件和所述目标游戏的安装文件生成的;所述操作系统是支持所述目标游戏运行的操作系统;
连接创建单元,用于建立所述终端设备与所述游戏容器之间的连接;
画面传输单元,用于根据所述终端设备发送的游戏操作指令,通过所述游戏容器运行所述目标游戏,并向所述终端设备返回所述目标游戏运行过程中的游戏画面。
在一种可选的实施例中,还包括:
容器镜像生成单元,用于根据获取的支持所述目标游戏运行的操作系统的系统文件,得到所述操作系统的镜像文件;根据所述操作系统的镜像文件和目标游戏的安装文件,生成所述目标游戏的容器镜像文件。
在一种可选的实施例中,所述容器镜像生成单元,具体用于:
将所述操作系统的镜像文件转换为适应在容器中运行的容器镜像文件;
根据所述操作系统的容器镜像文件启动文件生成容器;
根据所述目标游戏的安装文件在所述文件生成容器中安装所述目标游戏,得到所述目标游戏的容器镜像文件。
在一种可选的实施例中,所述容器镜像生成单元,具体用于:
根据所述目标游戏的安装文件,得到所述目标游戏的镜像文件;
根据所述操作系统的镜像文件和所述目标游戏的镜像文件,生成所述目标游戏的合成镜像文件;
将所述目标游戏的镜像文件转换为适应在容器中运行的容器文件格式,得到所述目标游戏的容器镜像文件。
在一种可选的实施例中,所述容器镜像生成单元,还用于:
采用分布式存储系统保存所述目标游戏的容器镜像文件;或者,
将所述目标游戏的容器镜像文件保存至镜像文件库中。
在一种可选的实施例中,所述连接创建单元,具体用于:
建立与所述游戏容器之间的连接,并启动所述游戏容器;
将所述游戏容器返回的游戏容器信息发送给所述终端设备,以建立所述终端设备与所述游戏容器之间的连接。
在一种可选的实施例中,还包括:
容器释放单元,用于若接收到所述终端设备发送的退出游戏指令,通知所述目标服务器停止并删除所述游戏容器。
第四方面,本申请实施例提供一种游戏运行方法装置,应用于终端设备,包括:
游戏登录单元,用于响应于针对目标游戏的登录操作,展示从后台服务器获取的所述目标游戏的游戏画面;所述目标游戏的游戏画面是所述后台服务器从位于目标服务器上的游戏容器获取的所述目标游戏运行过程中的游戏画面;所述目标服务器为所述后台服务器在接收到终端设备根据所述登录操作生成的启动游戏请求时,确定的为所述终端设备提供游戏服务的服务器;所述游戏容器是根据所述目标游戏的容器镜像文件,在所述目标服务器上创建的;
游戏展示单元,用于响应于在游戏运行过程中针对目标游戏的控制操作,展示从后台服务器获取的执行所述控制操作后所述目标游戏的游戏画面。
第五方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现第一方面的游戏运行方法。
第六方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现第二方面的游戏运行方法。
第七方面,本申请实施例还提供一种电子设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器实现第一方面的游戏运行方法。
第八方面,本申请实施例还提供一种电子设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器实现第二方面的游戏运行方法。
本申请实施例的游戏运行方法、装置、存储介质和电子设备,在接收到终端设备发送的针对目标游戏的启动游戏请求后,为其分配目标服务器,并根据目标游戏的容器镜像文件在目标服务器上创建游戏容器,通过游戏容器运行目标游戏,向终端设备返回目标游戏的游戏画面。通过创建游戏容器的方式运行游戏,可以减少部署在线游戏的耗时,并有效减少资源开销。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种应用场景示意图;
图2为本申请实施例提供的一种游戏运行方法的交互图;
图3为本申请实施例提供的一种游戏运行方法的游戏登录界面的示意图;
图4为本申请实施例提供的一种游戏运行方法的游戏画面的示意图;
图5为本申请实施例提供的一种游戏运行方法的流程图;
图6为本申请实施例提供的一种游戏运行方法的容器镜像文件生成过程的流程图;
图7为本申请实施例提供的另一种游戏运行方法的流程图;
图8为本申请实施例提供的一种游戏运行装置的结构示意图;
图9为本申请实施例提供的另一种游戏运行装置的结构示意图;
图10为本申请实施例提供的另一种游戏运行装置的结构示意图;
图11为本申请实施例提供的一种电子设备的结构示意图;
图12为本申请实施例提供的另一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
以下对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)云计算(cloudcomputing):是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。云计算的基础能力提供商,会建立云计算资源池平台(简称云平台,一般称为iaas(infrastructureasaservice,即基础设施即服务),在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(例如虚拟化机器,包含操作系统)、存储设备、网络设备。
(2)云游戏(cloudgaming):又可称为游戏点播(gamingondemand),是一种以云计算技术为基础的在线游戏技术。云游戏技术使图形处理与数据运算能力相对有限的轻端设备(thinclient)能运行高品质游戏。在云游戏场景下,云游戏软件并不在万家游戏终端运行,而是在云端服务器中运行。玩家游戏终端无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力与获取玩家输入指令并发送给云端服务器的能力即可。用户选择的云游戏可以在云游戏服务器中运行。云游戏服务器通过音视频获取器获取云游戏软件的音视频流,然后经由音视频编码器编码,再通过实时流传输协议(realtimestreamingprotocol,rtsp)等互联网通信协议将经过编码的音视频流发送至终端设备的游戏客户端。游戏客户端收到经过编码的音视频流后,通过音视频解码器对音视频流进行解码,再由音视频播放器播放游戏的画面和声音,那么用户就可以在终端看到游戏画面以及听到游戏声音。游戏客户端监听用户的输入指令,会根据用户输入的指令进行事件编码,然后经过自定义通信协议,将编码后的输入事件发送到云游戏服务器。云游戏服务器在接收到这些经过编码的输入事件后,将其进行解码,然后再重现用户的输入。
(3)云存储(cloudstorage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(id,identity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(raid,redundantarrayofindependentdisk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
(4)数据库(database):可以理解为电子化的文件柜或存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
(5)预加载:为了让玩家启动在线游戏即可开始玩游戏,在用户启动在线游戏之前,图像识别程序会预先自动控制游戏登录,且通过模拟点击,让游戏启动,并进入到指定的界面,该预先加载到游戏指定界面的阶段为预加载。
下文中所用的词语“示例性”的意思为“用作例子、实施例或说明性”。作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
文中的术语“第一”、“第二”仅用于描述目的,而不能理解为明示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请实施例提供的游戏运行方法的一种应用场景可以参见图1所示,该应用场景中包括后台服务器100、多个终端设备(如终端设备301、302、303等)和多个云游戏服务器400。本申请的实施例中,游戏运行方法所涉及的游戏均以在线游戏为例进行说明。后台服务器100用于对多个云游戏服务器400进行管理和调度,并通过网络200与多个终端设备、多个云游戏服务器400进行通信连接,该网络200可以是但不限于局域网、城域网或广域网等。终端设备301~303可以是便携设备(例如:手机、平板电脑、笔记本电脑等),也可以是智能屏或个人电脑(pc,personalcomputer)等。后台服务器100可以是任何能够提供互联网服务的设备,例如,能够为在线游戏客户端提供在线游戏服务的设备等。后台服务器100可以是一个独立的服务器,也可以是云端服务器,可以包括一台或多台服务器。
下面以终端设备301为例进行说明,当一个云游戏服务器400被分配给终端设备301时,后台服务器100会将上传的操作指令传递到云游戏服务器400中,云游戏服务器400会根据接收到的操作指令作相应的处理。同时,云游戏服务器400的游戏画面会经过后台服务器100传输给终端设备301,用户通过在终端设备301上操作实际运行在云游戏服务器400上的云游戏软件。
相关技术中,云游戏服务器通常采用模拟器的方式运行云游戏,创建一个模拟器时间需要3-4分钟,导致现有的云游戏的部署流程需要的时间长。为了让用户获得比较好的用户体验,在云游戏服务器400分配给终端设备301之前,会对云游戏服务器400上的云游戏软件提前进行预加载。例如,后台服务器100预计有80个用户会玩某一个云游戏时,可以预先对80个云游戏服务器中的该云游戏进行预先启动。当用户通过终端设备301发起请求指定要玩这款云游戏时,后台服务器100直接将已经完成预加载的云游戏服务器400分配给终端设备301。这种云游戏实现方式,会因对多个云游戏服务器的云游戏软件进行预先启动而导致资源消耗高。
为了解决相关技术中存在的部署在线游戏耗时长,资源消耗高的问题,本申请实施例提供了一种游戏运行方法、装置、存储介质和电子设备。
本申请实施例提供的一种游戏运行方法中,用户可以通过终端设备301以浏览器或云游戏客户端的方式访问运行在云端的云游戏服务器401,其中云游戏客户端可以是包含多个云游戏的客户端,云游戏客户端中的云游戏可以进行添加或删除。用户可以通过云游戏客户端分别选择不同的云游戏作为目标在线游戏进行娱乐。当用户通过云游戏客户端访问运行在云端的云游戏服务器时,终端设备301上不需要安装目标在线游戏的客户端,用户打开云游戏客户端,在其中的小游戏界面中找到目标在线游戏。以下实施例中,以终端设备301上安装有云游戏客户端为例进行说明。
在本申请实施例中,终端设备301上安装有云游戏客户端,云游戏客户端中包括多个在线游戏,用户可以从中选择自己喜欢的在线游戏,用户选择的在线游戏下文中称之为目标在线游戏。用户可以使用终端设备301上的云游戏客户端发送针对目标在线游戏的启动游戏请求。后台服务器100接收到终端设备301发送的针对目标在线游戏的启动游戏请求后,会根据用户的终端设备301所在地域和网络情况,在多个云游戏服务器400构成的集群中选择一台连接状况比较好的云游戏服务器作为向终端设备301提供游戏服务的目标服务器,该启动游戏请求会被发送到该目标服务器。本申请实施例中,均以目标服务器是云游戏服务器401为例进行说明。后台服务器100会根据该目标在线游戏的容器镜像文件,在云游戏服务器401上创建用于运行目标在线游戏的游戏容器。然后后台服务器100会建立终端设备301与云游戏服务器401上的该游戏容器之间的连接。从而将云游戏服务器401分配给了终端设备301。在目标在线游戏运行过程中,云游戏服务器401的游戏画面会经过后台服务器100传输给终端设备301,用户可以在终端设备的展示界面中输入对游戏的操作指令,后台服务器100会将用户在终端设备301上传的操作指令传递到云游戏服务器401中,云游戏服务器401会根据这些操作指令作相应处理。从而,用户可以实现在终端设备301上操作实际在云游戏服务器401上运行的云游戏软件。
图2示出了本申请实施例提供的一种游戏运行方法的交互图。该游戏运行方法可以由终端设备、后台服务器、目标服务器协作执行,其中,游戏可以是云游戏,也可以是其他在线游戏。下文实施例以云游戏为例进行说明,如图2所示,该游戏运行方法包括以下步骤:
步骤s201,终端设备向后台服务器发送启动游戏请求。
示例性地,终端设备上可以安装包括目标在线游戏的客户端,或者,目标在线游戏也可以是基于第三方客户端,如即时通讯应用的客户端运行的小游戏,此时,终端设备上可以不安装目标在线游戏的客户端,用户可以打开即时通讯应用的客户端,在其中的小游戏界面中找到目标在线游戏。
用户单击目标在线游戏对应的图标来启动目标在线游戏。终端设备接收到用户针对目标在线游戏的启动操作,向后台服务器发送启动游戏请求。
步骤s202,后台服务器根据启动游戏请求,确定为终端设备提供游戏服务的目标服务器。
示例性地,后台服务器可以是服务器集群中的管理服务器,用于管理服务器集群中的其他服务器。后台服务器也可以是独立于服务器集群的服务器,用于管理服务器集群中的服务器。
后台服务器接收到启动游戏请求,解析启动游戏请求,得到发出该启动游戏请求的用户所在的地域和网络情况,在多个云游戏服务器构成的服务器集群中选择一台连接状况比较好的云游戏服务器,例如云游戏服务器,作为向终端设备提供游戏服务的目标服务器。
步骤s203,后台服务器向目标服务器发送启动游戏指令。
后台服务器根据接收到启动游戏请求向目标服务器发送启动游戏指令。其中,启动游戏指令中可以包括如下信息:目标在线游戏的名称、目标在线游戏的相关文件的存储路径等。
步骤s204,目标服务器根据接收到的启动游戏指令,获取目标游戏的容器镜像文件。
示例性地,目标服务器根据接收到的启动游戏指令中的目标在线游戏的名称,查找到目标在线游戏的容器镜像文件的存储路径,获取目标在线游戏的容器镜像文件。或者,目标服务器根据接收到的启动游戏指令中目标在线游戏的容器镜像文件的存储路径,获取目标在线游戏的容器镜像文件。或者,目标服务器根据接收到的启动游戏指令中的目标在线游戏的名称,查找到目标在线游戏的安装文件,根据目标在线游戏的安装文件生成目标在线游戏的容器镜像文件。
在一些实施例中,目标在线游戏的容器镜像文件可以预先生成并保存在用于存储在线游戏的容器镜像文件的镜像文件库中。目标服务器可以从镜像文件库中下载目标在线游戏的容器镜像文件并存储在本地磁盘中。在另一些实施例中,目标在线游戏的容器镜像文件可以预先生成并保存在分布式存储系统中。
步骤s205,目标服务器根据目标游戏的容器镜像文件,创建用于运行目标游戏的游戏容器。
目标服务器获取到目标在线游戏的容器镜像文件之后,可以将目标在线游戏的容器镜像文件存储在本地磁盘中,然后根据存储在本地磁盘的目标在线游戏的容器镜像文件,创建用于运行目标在线游戏的游戏容器。
步骤s206,后台服务器创建与游戏容器的连接。
步骤s207,后台服务器发送启动目标服务器上的游戏容器的指令。
示例性地,后台服务器100通过adb命令连接到游戏容器,并启动该游戏容器的游戏进程。
步骤s208,目标服务器启动游戏容器。
步骤s209,目标服务器上的游戏容器启动完毕后,向后台服务器发送启动完成反馈信息。
步骤s210,后台服务器根据接收到的启动完成反馈信息,获取游戏容器信息。
示例性地,游戏容器信息包括但不限于:ip信息、端口信息等。游戏容器信息用于后续提供给终端设备,以使终端设备可以根据游戏容器信息发送登录游戏请求。
步骤s211,后台服务器将游戏容器信息发送给终端设备。
步骤s212,终端设备根据接收到的容器信息,向后台服务器发送登录游戏请求。
其中,登录游戏请求包含用户信息,例如游戏账号、密码等。
示例性地,终端设备接收到容器信息后,终端设备301的目标在线游戏客户端显示如图3所示的开始游戏界面。用户点击图3所示的开始游戏界面上的“开始游戏”按钮时,终端设备根据接收到的容器信息,向后台服务器发送登录游戏请求。
步骤s213,后台服务器解析登录游戏请求,获得登录游戏请求中的用户信息。
具体地,后台服务器解析登录游戏请求,获得登录游戏请求中的用户信息,包括但不限于游戏账号、密码。在一些实施例中,后台服务器还根据用户信息,查找预存于系统中的目标在线游戏的用户信息表,根据查找结果在用户信息中标识该用户是否新用户。若在该用户信息表中查找到匹配的用户信息,则说明该用户不是首次登陆目标在线游戏,为老用户。若未在用户信息表中查找到匹配的用户信息,则说明该用户是首次登陆该目标在线游戏,为新用户。
步骤s214,后台服务器将用户信息发送给目标服务器。
步骤s215,目标服务器根据用户信息对游戏容器加载用户配置。
如果目标服务器接收到的用户信息对应的用户不是新用户,目标服务器直接根据用户信息在目标服务器上的游戏容器上加载对应的用户配置,其中,用户配置可能包括:游戏等级、账户余额、经验值、道具等。
如果目标服务器接收到的用户信息对应的用户是新用户,目标服务器直接在目标服务器上的游戏容器上加载出厂配置。
步骤s216,后台服务器将从目标服务器获取的目标游戏的游戏画面传输给终端设备。
在目标服务器运行游戏过程中,后台服务器从目标服务器获取目标在线游戏的游戏画面,并将游戏画面传输给终端设备。示例性地,后台服务器可以按照设定的采样频率从目标服务器目标在线游戏的游戏画面,将采集的游戏画面编码后通过视频流的方式传输给终端设备。
步骤s217,终端设备显示目标游戏的游戏画面。
步骤s218,终端设备响应于用户对终端设备显示的目标游戏的游戏画面的操作,向后台服务器发送操作指令。
示例性地,终端显示的目标在线游戏的游戏画面可以如图4所示,该目标在线游戏为闯关游戏,当前显示的游戏画面为关卡选择画面,画面中包括多个关卡。用户可以在游戏画面中选择目标关卡,以进入目标关卡对应的游戏。例如,用户选择关卡5,终端设备响应于用户在游戏画面中选择关卡5的操作,向后台服务器发送运行关卡5的操作指令。
步骤s219,后台服务器将接收到的操作指令传递给目标服务器。
步骤s220,目标服务器根据接收到的操作指令作相应处理。
步骤s221,终端设备响应于用户退出游戏的操作,向后台服务器发送退出游戏指令。
步骤s222,后台服务器向目标服务器发送删除游戏容器指令。
后台服务器接收到终端设备发送的退出游戏的指令,向目标服务器发送删除游戏容器指令。
步骤s223,目标服务器根据接收到的删除游戏容器指令删除游戏容器。
在一些实施例中,目标服务器接收到删除游戏容器指令后,根据该指令停止对应的游戏容器,并删除游戏容器,将用户的游戏相关信息,如游戏进度信息等传递给后台服务器进行保存,方便用户下次登录游戏时在当前游戏进度处继续进行游戏。
在本申请实施例中,后台服务器接收到终端设备发送的针对目标在线游戏的启动游戏请求,确定为终端设备提供游戏服务的目标服务器,根据目标在线游戏的容器镜像文件,在目标服务器上创建用于运行目标在线游戏的游戏容器;建立终端设备与游戏容器之间的连接,根据终端设备发送的游戏操作指令,通过游戏容器运行目标在线游戏,并向终端设备返回目标在线游戏运行过程中的游戏画面。该方法可以通过响应于接收到的启动游戏请求分配目标服务器,并根据预先创建的目标在线游戏的容器镜像文件创建游戏容器,启动运行后建立与终端设备的连接并向终端设备返回目标在线游戏运行过程中的游戏画面,从而可以减少部署云游戏的耗时,有效减少资源开销。
在一种实施例中,本申请实施例提供的游戏运行方法可以由图1中的后台服务器100执行。图5示出了该游戏运行方法的流程图,如图5所示,该方法可以包括以下步骤:
步骤s501,接收到终端设备发送的针对目标游戏的启动游戏请求,确定为终端设备提供游戏服务的目标服务器。
具体地,用户想使用终端设备打开目标在线游戏a时,用户可以通过点击终端设备上安装的目标在线游戏a的客户端,以发出针对目标在线游戏的启动游戏请求。后台服务器接收到终端设备发送的针对目标在线游戏a的启动游戏请求,确定为终端设备提供游戏服务的目标服务器。
步骤s502,根据目标游戏的容器镜像文件,在目标服务器上创建用于运行目标游戏的游戏容器。
其中,目标游戏的容器镜像文件是根据操作系统的系统文件和目标游戏的安装文件生成的;该操作系统是支持目标游戏运行的操作系统。
具体地,后台服务器根据目标在线游戏a的容器镜像文件,在目标服务器上创建用于运行目标在线游戏的游戏容器。在一些实施例中,目标在线游戏的容器镜像文件是预先生成后集中存储到数据库中,在目标服务器上创建用于运行目标在线游戏的游戏容器时,需要从该数据库下载目标在线游戏的容器镜像文件到目标服务器的本地磁盘上。在另外一些实施例中,目标在线游戏的容器镜像文件是预先生成后存储到云存储系统,在目标服务器上创建用于运行目标在线游戏的游戏容器时,可以直接读取云存储系统上的目标在线游戏的容器镜像文件并在目标服务器上创建游戏容器。
步骤s503,建立终端设备与游戏容器之间的连接。
具体地,在本实施例中,建立终端设备与游戏容器之间的连接的过程包括:后台服务器通过adb的方式建立与游戏容器之间的连接,并启动游戏容器。后台服务器将接收到的游戏容器启动后返回的游戏容器信息发送给终端设备。后台服务器接收终端设备发送的登录游戏请求,登录游戏请求包含用户信息。后台服务器解析登录游戏请求,获得登录游戏请求中的用户信息,将用户信息发送给游戏容器,以使游戏容器加载终端设备对应的用户配置,后台服务器将从目标服务器获取的目标在线游戏的游戏画面传输给终端设备。
示例性地,后台服务器通过adb的方式连接至游戏容器的过程可以采用以下程序代码:
adbconnect192.168.0.xxx:5555
其中,192.168.0.xxx是目标服务器的ip地址,5555是目标服务器的端口号。
后台服务器启动游戏容器,可以参考以下程序代码:
adbshellamstart-ncom.tencent.myapp/.myactivity
游戏容器启动后,后台服务器将获得的游戏容器信息发送给终端设备,其中,游戏容器信息包括但不限于:游戏容器的ip、端口。
终端设备通过得到的游戏容器信息向后台服务器发送登录游戏请求,登录游戏请求包含用户信息,例如账号、密码等。
后台服务器解析登录游戏请求,获得登录游戏请求中的用户信息,并将用户信息发送给游戏容器,以使游戏容器加载终端设备对应的用户配置,从而建立终端设备与游戏容器之间的连接。
建立终端设备与游戏容器之间的连接之后,后台服务器还可以将从目标服务器获取的目标在线游戏的游戏画面传输至终端设备进行显示。
步骤s504,根据终端设备发送的游戏操作指令,通过游戏容器运行目标游戏,并向终端设备返回目标游戏运行过程中的游戏画面。
具体地,后台服务器将终端设备发送的游戏操作指令传递到目标服务器中,目标服务器通过游戏容器执行游戏操作指令。同时,云游戏服务器的游戏画面会经过后台服务器传输给终端设备。
在一种可选的实施例中,本申请实施例中所使用的目标在线游戏的容器镜像文件的生成过程可以如图6所示,包括如下步骤:
步骤s601,根据获取的支持目标游戏运行的操作系统的系统文件,得到操作系统的镜像文件。
可选的,操作系统包括但不限于:android,hongmengos,ios。本申请的以下实施例中,均以操作系统是android为例进行说明。
具体地,后台服务器在ubuntu系统上通过android源码同步工具,使用如下命令来下载android源码:
repoinit-uhttps://android.googlesource.com/platform/manifest-bpie-release
reposync
其中,repo是android的命令行工具,用于对代码管理工具进行部分命令封装。repoinit命令用于下载repo工具并复制manifest仓库,–u用于指定一个网络地址url,其连接到一个manifest仓库;reposync用于下载代码。
上述程序段代码可以实现在指定的网络地址,下载android源码。
接下来,后台服务器执行下面的命令来编译镜像:
sourcebuild/envsetup.sh
make
上面这些命令是通过source命令编译android系统,会在输出目录编译出system.img,vendor.img等android镜像文件,该镜像文件可供google提供的模拟器程序所使用,但容器无法直接使用模拟器的镜像格式,为了能够为容器所用,该镜像文件继续按下述步骤进行后续转化。
步骤s602,根据操作系统的镜像文件和目标游戏的安装文件,生成目标游戏的容器镜像文件。
在一些可选的实施例中,可以通过如下步骤生成目标在线游戏的容器镜像文件:
步骤a1,将操作系统的镜像文件转换为适应在容器中运行的容器镜像文件。
示例性地,为了将操作系统的镜像文件转换为适应在容器中运行的容器镜像文件,首先,后台服务器使用下面的命令来将模拟器镜像先打包成tar文件:
qemu-nbd-c/dev/nbd1-r-frawsystem.img
partprobe/dev/nbd1
mount/dev/nbd1p1/tmp/android-system
tarcpfsystem.tar-c/tmp/android-system.
其中,qemu-nbd-c命令是让/dev/nbd1连接到名为system.img的android镜像;partprobe命令用于读取/dev/nbd1的分区信息;mount命令用于将/dev/nbd1p1挂在android-system之下;然后通过tar命令将android-system打包建立压缩文件。
然后,通过以下示例的代码,实现使用上面创建的system.tar文件和用同样命令生成的vendor.tar文件及dockerfile,编译名为android-cloudgame的容器镜像,从而得到android的镜像文件:
fromscratch
addsystem.tar/
addvendor.tar/vendor
dockerbuild.-tandroid-cloudgame
其中,add命令用于将主机的文件复制到镜像文件中,跟copy一样;
dockerbuild.-tandroid-cloudgame命令行是通过dockerbuild命令,使用当前路径的dockerfile构建容器镜像文件,容器镜像文件名字为android-cloudgame。
在一些实施例中,对android模块中的启动过程,网络还有画面渲染等部分模块的代码进行微调,以使容器镜像文件能更好的在容器环境下正常运行。
步骤a2,根据操作系统的容器镜像文件启动文件,生成容器。
示例性地,后台服务器可以使用下面的命令来启动android容器:
dockerrun-itd–privilegedandroid-cloudgame
其中,dockerrun用于使用容器镜像文件创建并启动容器,上面的代码可以根据名为android-cloudgame的容器镜像文件启动android容器。
步骤a3,根据目标游戏的安装文件在文件生成容器中安装目标游戏,得到目标游戏的容器镜像文件。
示例性地,为了将目标在线游戏安装至文件生成容器中,后台服务器先下载目标在线游戏安装文件(game.apk)至本地磁盘,然后将目标在线游戏安装文件拷贝至文件生成容器中:
dockercpgame.apk{dockerid}:/sdcard
其中,dockercp命令用于容器与主机之间的数据拷贝。
后台服务器在android系统的文件管理器中找到已拷贝至文件生成容器的目标在线游戏安装文件,自动运行安装,安装完成的目标在线游戏会在桌面上显示。后台服务器可以自动运行该目标在线游戏,并进行更新操作,确保当前的游戏内容是最新内容。
完成更新后,后台服务器可以使用以下命令停止文件生成容器:
dockerstop-f{dockerid}
然后用如下的命令将容器内容保存成一个新的镜像:
dockercommit{dockerid}-tandroid-game
其中,dockercommit命令用于从容器创建一个新的镜像。
本申请的实施例中,通过容器镜像文件创建游戏容器,进而可以通过创建游戏容器的方式运行游戏,可以减少部署在线游戏的耗时,并有效减少资源开销。
在另一些可选的实施例中,生成目标在线游戏的容器镜像文件的过程采用与上述方案不同的方法,后台服务器先将目标在线游戏的安装文件进行转换得到目标在线游戏的镜像文件,然后与操作系统的镜像文件一起生成目标在线游戏的合成镜像文件。具体步骤如下:
步骤b1,根据目标游戏的安装文件,得到目标游戏的镜像文件;
步骤b2,根据操作系统的镜像文件和目标游戏的镜像文件,生成目标游戏的合成镜像文件;
步骤b3,将目标游戏的镜像文件转换为适应在容器中运行的容器文件格式,得到目标游戏的容器镜像文件。
生成目标在线游戏的容器镜像文件之后,可以将目标在线游戏的容器镜像文件保存至镜像文件库中,镜像文件库可以是数据库,通过数据库集中存储容器镜像,并提供上传、下载、查看等功能。也可以采用分布式存储系统保存目标在线游戏的容器镜像文件,分布式存储系统可以是nfs文件系统,可以将目标在线游戏的容器镜像文件保存到nfs文件系统。
在一种可选的实施例中,用户通过终端设备体验目标在线游戏结束后退出游戏,终端设备接收到用户退出游戏的操作时,终端设备向后台服务器发送退出游戏指令。后台服务器接收到终端设备发送的退出游戏指令,通知目标服务器停止并删除游戏容器。具体地,后台服务器可以根据接收到的终端设备发出的退出游戏指令,向目标服务器发送删除游戏容器指令,通知目标服务器停止目标在线游戏的游戏容器,并删除该游戏容器。
在该实施例中,后台服务器在监测到用户的退出游戏指令时,停止目标在线游戏的游戏容器之后,删除该游戏容器,可以进一步降低资源消耗,并提升云游戏服务器集群的利用率。
需要说明的是,上述各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
基于同一发明构思,本申请实施例中还提供了另一种在线游戏运行方法,如图7所示。在一种实施例中,该方法可以由终端设备执行,如图1中所示的终端设备301。该方法由终端设备执行时,可以包括如下步骤:
步骤s701,响应于针对目标游戏的登录操作,展示从后台服务器获取的目标游戏的游戏画面。
其中,目标游戏的游戏画面是后台服务器从位于目标服务器上的游戏容器获取的目标游戏运行过程中的游戏画面;目标服务器为后台服务器在接收到终端设备根据登录操作生成的启动游戏请求时,确定的为终端设备提供游戏服务的服务器;游戏容器是根据目标游戏的容器镜像文件,在目标服务器上创建的。
具体地,终端设备响应于用户针对目标在线游戏的登录操作,展示由后台服务器传输给终端设备的云游戏服务器的目标在线游戏画面,如图3所示的画面,实现游戏登录。
步骤s702,响应于在游戏运行过程中针对目标游戏的控制操作,展示从后台服务器获取的执行控制操作后目标游戏的游戏画面。
具体地,终端设备响应于用户在游戏运行过程中针对目标在线游戏的控制操作,展示由后台服务器传输给终端设备的云游戏服务器的执行控制操作后目标在线游戏的游戏画面,实现在终端设备上操作实际在游戏容器上运行的目标在线游戏。
终端设备还可以响应于用户退出游戏的操作,向后台服务器发送退出游戏指令,以使后台服务器通知目标服务器停止并删除游戏容器。
基于同一发明构思,本申请实施例中还提供了一种游戏运行装置,该游戏运行装置布设在后台服务器中。由于该装置是本申请实施例的应用于后台服务器的游戏运行方法对应的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见上述方法的实施,重复之处不再赘述。
图8示出了本申请实施例提供的一种游戏运行装置的结构示意图,如图8所示,该游戏运行装置包括:服务器分配单元801、容器创建单元802、连接创建单元803和画面传输单元804;其中,
服务器分配单元801,用于接收到终端设备发送的针对目标游戏的启动游戏请求,确定为终端设备提供游戏服务的目标服务器;
容器创建单元802,用于根据目标游戏的容器镜像文件,在目标服务器上创建用于运行目标游戏的游戏容器;目标游戏的容器镜像文件是根据操作系统的系统文件和目标游戏的安装文件生成的;该操作系统是支持目标游戏运行的;
连接创建单元803,用于建立终端设备与游戏容器之间的连接;
画面传输单元804,用于根据终端设备发送的游戏操作指令,通过游戏容器运行目标游戏,并向终端设备返回目标游戏运行过程中的游戏画面。
图9示出了本申请实施例提供的另一种游戏运行装置的结构示意图,如图9所示,该游戏运行装置,还包括:
镜像文件生成单元901,用于根据获取的支持目标游戏运行的操作系统的系统文件,得到操作系统的镜像文件;根据操作系统的镜像文件和目标游戏的安装文件,生成目标游戏的容器镜像文件。
在一种可选的实施例中,镜像文件生成单元901,具体用于:
将操作系统的镜像文件转换为适应在容器中运行的容器镜像文件;
根据操作系统的容器镜像文件启动文件生成容器;
根据目标游戏的安装文件在文件生成容器中安装目标游戏,得到目标游戏的容器镜像文件。
在一种可选的实施例中,镜像文件生成单元901,具体用于:
根据目标游戏的安装文件,得到目标游戏的镜像文件;
根据操作系统的镜像文件和目标游戏的镜像文件,生成目标游戏的合成镜像文件;
将目标游戏的镜像文件转换为适应在容器中运行的容器文件格式,得到目标游戏的容器镜像文件。
在一种可选的实施例中,上述游戏运行装置还包括:
容器释放单元902,用于若接收到终端设备发送的退出游戏指令,通知目标服务器停止并删除游戏容器。
基于同一发明构思,本申请实施例中还提供了另一种游戏运行装置,该游戏运行装置布设在终端设备中。由于该装置是本申请实施例的应用于终端设备的游戏运行方法对应的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见上述方法的实施,重复之处不再赘述。
图10示出了本申请实施例提供的另一种游戏运行装置的结构示意图,如图10所示,该游戏运行装置,布设于终端设备,包括:
游戏登录单元1001,用于响应于针对目标游戏的登录操作,展示从后台服务器获取的目标游戏的游戏画面;目标游戏的游戏画面是后台服务器从位于目标服务器上的游戏容器获取的目标游戏运行过程中的游戏画面;目标服务器为后台服务器在接收到终端设备根据登录操作生成的启动游戏请求时,确定的为终端设备提供游戏服务的服务器;游戏容器是根据目标游戏的容器镜像文件,在目标服务器上创建的;
游戏展示单元1002,用于响应于在游戏运行过程中针对目标游戏的控制操作,展示从后台服务器获取的执行控制操作后目标游戏的游戏画面。
基于同一发明构思,本申请实施例中还提供了一种电子设备。在一种实施例中,该电子设备可以是服务器,如图1所示的后台服务器100。在该实施例中,电子设备的结构可以如图11所示,包括存储器111,通讯模块113以及一个或多个处理器112。
存储器111,用于存储处理器112执行的计算机程序。存储器111可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行游戏功能所需的程序等;存储数据区可存储各种游戏信息和操作指令集等。
存储器111可以是易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram);存储器111也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flashmemory),硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd)、或者存储器701是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器111可以是上述存储器的组合。
处理器112,可以包括一个或多个中央处理单元(centralprocessingunit,cpu)或者为数字处理单元等等。处理器112,用于调用存储器111中存储的计算机程序时实现上述游戏运行方法。
通讯模块113用于与终端设备和其他服务器进行通信。
本申请实施例中不限定上述存储器111、通讯模块113和处理器112之间的具体连接介质。本公开实施例在图11中以存储器111和处理器112之间通过总线114连接,总线114在图11中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线114可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器111中存储有计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请实施例的游戏运行方法。处理器112用于执行上述的游戏运行方法。
在另一种实施例中,电子设备可以是终端设备。在该实施例中,电子设备的结构可以如图12所示,包括:通信组件210、存储器220、显示单元230、摄像头240、传感器250、音频电路260、蓝牙模块270、处理器280等部件。
通信组件210用于与服务器进行通信。在一些实施例中,可以包括wifi(wirelessfidelity,电路无线保真)模块,wifi模块属于短距离无线传输技术,电子设备通过wifi模块可以帮助用户收发信息。
存储器220可用于存储软件程序及数据。处理器280通过运行存储在存储器220的软件程序或数据,从而执行终端设备301的各种功能以及数据处理。存储器220可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。存储器220存储有使得终端设备301能运行的操作系统。本申请中存储器220可以存储操作系统及各种应用程序,还可以存储执行本申请实施例游戏运行方法的代码。
显示单元230还可用于显示由用户输入的信息或提供给用户的信息以及终端设备301的各种菜单的图形用户界面(graphicaluserinterface,gui)。具体地,显示单元230可以包括设置在终端设备301正面的显示屏232。其中,显示屏132可以采用液晶显示器、发光二极管等形式来配置。显示单元230可以用于显示本申请实施例中的在线游戏的游戏画面。
显示单元230还可用于接收输入的数字或字符信息,产生与终端设备301的用户设置以及功能控制有关的信号输入,具体地,显示单元230可以包括设置在终端设备301正面的触摸屏231,可收集用户在其上或附近的触摸操作,例如点击按钮,拖动滚动框等。
其中,触摸屏231可以覆盖在显示屏232之上,也可以将触摸屏231与显示屏232集成而实现终端设备301的输入和输出功能,集成后可以简称触摸显示屏。本申请中显示单元230可以显示应用程序以及对应的操作步骤。
摄像头240可用于捕获静态图像,用户可以将摄像头240拍摄的图像通过云游戏客户端发送给后台服务器或其他游戏用户。摄像头240可以是一个,也可以是多个。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(chargecoupleddevice,ccd)或互补金属氧化物半导体(complementarymetal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给处理器280转换成数字图像信号。
终端设备还可以包括至少一种传感器250,比如加速度传感器251、距离传感器252、指纹传感器253、温度传感器254。终端设备还可配置有陀螺仪、气压计、湿度计、温度计、红外线传感器、光传感器、运动传感器等其他传感器。
音频电路260、扬声器261、麦克风262可提供用户与终端设备301之间的音频接口。音频电路260可将接收到的音频数据转换后的电信号,传输到扬声器261,由扬声器261转换为声音信号输出。终端设备301还可配置音量按钮,用于调节声音信号的音量。另一方面,麦克风262将收集的声音信号转换为电信号,由音频电路260接收后转换为音频数据,再将音频数据输出至通信组件210以发送给比如另一终端设备302,或者将音频数据输出至存储器220以便进一步处理。本申请中麦克风262可以获取用户的语音。
蓝牙模块270用于通过蓝牙协议来与其他具有蓝牙模块的蓝牙设备进行信息交互。例如,终端设备可以通过蓝牙模块270与同样具备蓝牙模块的可穿戴电子设备(例如智能手表)建立蓝牙连接,从而进行数据交互。
处理器280是终端设备的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器220内的软件程序,以及调用存储在存储器220内的数据,执行终端设备的各种功能和处理数据。在一些实施例中,处理器280可包括一个或多个处理单元;处理器280还可以集成应用处理器和基带处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,基带处理器主要处理无线通信。可以理解的是,上述基带处理器也可以不集成到处理器280中。本申请中处理器280可以运行操作系统、应用程序、用户界面显示及触控响应,以及本申请实施例的游戏运行方法。另外,处理器280与显示单元230耦接。
本申请实施例还提供了一种计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请任一实施例的游戏运行方法。
在一些可能的实施方式中,本申请提供的游戏运行方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的游戏运行方法的步骤,例如,计算机设备可以执行如图5所示的步骤s501~s504的游戏运行方法的流程。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除