一种云游戏的图像渲染方法

文档序号:623972 发布日期:2021-05-11 浏览:14次 >En<

阅读说明:本技术 一种云游戏的图像渲染方法 (Image rendering method of cloud game ) 是由 黄颖 于 2021-01-14 设计创作,主要内容包括:本发明涉及一种云游戏的图像渲染方法,该方法在云游戏过程中,使客户端和服务器建立三个连接,分别用于传输操作指令流、渲染指令流和图像流,服务器在操作指令流中获取客户端负载信息,根据负载信息调节渲染指令流和图像流的比例关系。该方法有利于提高云游戏中的图像渲染效率,提高资源利用率。(The invention relates to an image rendering method of a cloud game, which is characterized in that in the process of the cloud game, a client and a server are connected and respectively used for transmitting an operation instruction stream, a rendering instruction stream and an image stream, the server obtains client load information in the operation instruction stream, and the proportional relation between the rendering instruction stream and the image stream is adjusted according to the load information. The method is beneficial to improving the image rendering efficiency in the cloud game and improving the resource utilization rate.)

一种云游戏的图像渲染方法

【技术领域】

本发明属于计算机领域,尤其涉及一种云游戏的图像渲染方法。

【背景技术】

云游戏是以云计算为基础的游戏方式,在云游戏的运行模式下,所有游戏都在服务器端运行,而作为游戏设备的客户端不需要太高端的性能设备,只需要接受服务器端的游戏画面,并且无需游戏的下载和安装过程。尤其在5G发展起来后,基于5G的高带宽、低时延特性,云游戏具有广阔的发展空间。

典型的云游戏有两种类型:第一种类型下,由服务器完成游戏画面的所有计算,生成每一帧的游戏画面图像,从而形成由连续的图像帧组成的图像流,服务器将图像流发送给客户端,客户端按序显示每一帧游戏画面图像。在第一种类型下,客户端实际上只需要将用户的游戏指令发送给服务器,然后从服务器接收图像流进行播放,对客户端的性能要求很低,但是对服务器的性能要求很高。

第二种类型下,服务器并没有生成最终的游戏画面图像,而是通过游戏逻辑的计算,生成图形库的渲染指令(例如openGL的渲染指令),服务器通过生成每一帧游戏图像的渲染指令,形成渲染指令流,将渲染指令流发送给客户端,由客户端对渲染指令进行解析和执行,生成相应的游戏画面图像。在第二种类型下,由服务器进行逻辑计算、生成渲染指令,承担了大部分的计算工作,由客户端执行渲染指令,执行一部分工作,可以充分利用客户端的能力,降低服务器的压力,同时渲染指令流相对于图像流,对网络带宽的开销较小。但是,相对于第一种类型而言,第二种类型对客户端的性能有一定的要求,然而目前客户端的情况复杂,尤其在使用智能手机进行云游戏时,智能手机的性能有高有低,其负载的变化波动也较大,手机性能和负载的变化很容易影响渲染指令的执行效率。

发明内容

为了解决现有技术中的上述问题,本发明提供了一种云游戏的图像渲染方法。

本发明采用的技术方案具体如下:

一种云游戏的图像渲染方法,包括以下步骤:

步骤100:客户端与服务器之间建立三个连接,其中,第一连接用于在客户端与服务器之间传输操作指令流,第二连接用于服务器向客户端发送渲染指令流,第三连接用于服务器向客户端发送图像流;

所述操作指令流包括客户端向服务器发送的游戏操作指令,以及服务器向客户端发送的游戏消息和/或命令;所述渲染指令流包括服务器对游戏画面图像的渲染指令;所述图像流包括服务器渲染完成的游戏画面图像;

步骤200:所述客户端定时通过第一连接向所述服务器发送所述客户端的负载信息;

步骤300:所述服务器根据所述负载信息,确定后续一段时间内,渲染指令流与图像流的比例关系;所述比例关系指的是采用渲染指令流传输的游戏图像帧和采用图像流传输的的游戏图像帧的比例;

所述步骤300具体包括:

步骤310:服务器读取客户端最新上传的负载信息,确定客户端的负载比例;

步骤320:如果所述负载比例小于第一阈值T1,则所有游戏图像帧都以渲染指令的形式在第二连接上发送;

步骤330:如果所述负载比例大于第二阈值T2,则服务器不再发送渲染指令,所有游戏图像帧都由服务器直接渲染完成,并在第三连接上发送;

步骤340:如果所述负载比例在T1与T2之间,则计算图像流所占的比例P为:P=[(L-T1)/(T2-T1)]w,即渲染指令流与图像流的比例为(1-P):P;其中,L是负载比例,w是负载加权系数,w的取值根据具体的客户端类型预先确定。

进一步地,所述负载信息包括客户端GPU的负载比例,负载比例以百分比表示。

进一步地,所述负载信息包括客户端CPU的负载比例。

进一步地,客户端在其负载波动较大时,主动上传负载信息。

进一步地,所述服务器根据所述比例关系,确定对下一帧游戏图像是生成渲染指令,还是直接渲染生成游戏图像,然后将生成的帧数据通过相应的第二连接或第三连接传送给客户端。

进一步地,所述帧数据包括相应的帧编号。

进一步地,所述帧编号是基于生成时间顺序的按序数字编号。

进一步地,所述帧编号是帧数据生成时间的时间戳。

进一步地,所述客户端根据收到的渲染指令流和图像流,按照帧编号确定帧的先后顺序,如果是渲染指令流的帧,则执行渲染指令,生成游戏图像,如果是图像流的帧,则直接显示该帧图像。

进一步地,所述后续一段时间是从当前时间到服务器下一次接收到负载信息的时间段。

本发明的有益效果是:根据客户端负载情况,通过三个连接实现了游戏图像渲染的不同方式,平衡了客户端和服务器的能力,有利于提高云游戏中的图像渲染效率,提高资源利用率。

【附图说明】

此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:

图1是本发明执行云游戏的系统结构图。

具体实施方式

下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。

参见附图1,其示出了本发明执行云游戏的系统结构图,该系统包括了服务器和客户端,所述服务器用于接收客户端传送的游戏指令,并进行游戏图像的计算,将计算结果返回给客户端;所述客户端是用户使用的具体游戏设备,用于接受用户的游戏指令,将游戏指令发送给服务器,并从服务器接收游戏图像的计算结果,根据所述计算结果在客户端的显示器上显示相应的游戏图像。

需要说明的是,虽然附图1中仅示出了一个客户端,但是实际使用中可以具有多个客户端,多个客户端可同时连接到服务器进行云游戏,典型的客户端可以是智能手机、PC机、笔记本等等。附图1中所示出的服务器也仅仅是一个示例,实际应用中也可以是一个服务器集群,只是对外表现为一个服务器。

服务器和客户端之间通过网络传输数据,附图1中示出了服务器和客户端之间建立了三条网络连接来传输数据(具体的连接及数据在后面介绍)。

基于上述系统结构,下面详细介绍本发明的方法流程。

步骤100:客户端与服务器之间建立三个连接,其中,第一连接用于在客户端与服务器之间传输操作指令流,第二连接用于服务器向客户端发送渲染指令流,第三连接用于服务器向客户端发送图像流。

具体的,当客户端需要向服务器发送用户的游戏操作指令时,客户端在第一连接上向服务器发送所述游戏操作指令,类似的,如果服务器需要向客户端发送有关游戏的消息或命令时(例如对游戏操作指令的响应消息),也在第一连接上进行发送。因此,第一连接用于服务器与客户端之间操作指令的双向发送,构成了双向的操作指令流。

第二连接和第三连接用于服务器向客户端发送游戏画面,在本发明中,对于每一帧的游戏画面图像,服务器可以选择发送渲染指令,也可以选择直接发送渲染完的游戏图像。渲染指令在第二连接上发送,构成渲染指令流;游戏图像在第三连接上发送,构成图像流。

不同的数据在不同的三条连接上发送,有利于提高数据的传输和处理效率。

步骤200:所述客户端定时通过第一连接向所述服务器发送所述客户端的负载信息。

所述负载信息主要包括客户端GPU的负载比例,以百分比来表示,当然本领域技术人员根据具体情况,也可以加入客户端其他部件(例如CPU)的负载信息,本发明对此不做限制。

此外,虽然此处限定了客户端定时上传负载信息,但是在特殊情况下,例如在负载波动较大的情况下,客户端也可以随时主动上传负载信息。

步骤300:所述服务器根据所述负载信息,确定后续一段时间内,渲染指令流与图像流的比例关系。

具体的,所述比例关系指的是采用渲染指令流传输的游戏图像帧和采用图像流传输的的游戏图像帧的比例。例如,所述服务器确定渲染指令流和图像流的比例是2:1,则对第1-2帧的游戏图像,服务器生成相应的两帧渲染指令,在第二连接上传送给客户端;对第3帧的游戏图像,服务器直接渲染生成游戏图像,在第三连接上传送客户端;对第4-5帧的游戏图像,服务器生成相应的两帧渲染指令,在第二连接上传送给客户端;对第6帧的游戏图像,服务器直接渲染生成游戏图像,在第三连接上传送客户端;以此类推。即生成2帧渲染指令,再生成1帧游戏图像,从而形成2:1的比例关系。

总之,对于每一帧的游戏画面图像,所述服务器根据所述比例关系,确定该帧图像是生成渲染指令,还是直接渲染生成游戏图像,二者选一,然后通过相应的第二连接或第三连接传送给客户端。

为了方便客户端识别帧的先后顺序,每一帧的数据都需要携带相应的帧编号,优选的,所述帧编号可以是基于生成时间顺序的按序数字编号,或者所述帧编号可以是生成时间的时间戳。所述客户端根据收到的渲染指令流和图像流,按照帧编号确定帧的先后顺序,如果是渲染指令流的帧,则执行渲染指令,生成游戏图像,如果是图像流的帧,则可以直接显示该帧图像。

所述后续一段时间一般是从当前时间到服务器下一次接收到负载信息的时间段,也就是说,每次服务器接收到客户端的负载信息,服务器都需要根据新的负载信息,重新确定渲染指令流与图像流的比例关系。

进一步地,本发明还提出了确定该比例关系的一种优选方案,具体如下:

步骤310:服务器读取客户端最新上传的负载信息,确定客户端的负载比例。

如前所述,客户端传输给服务器的负载信息是以百分比来表示的,优选情况下,所述负载比例是客户端GPU的负载百分比,例如GPU在满负荷工作时,起负载比例是100%。

步骤320:如果所述负载比例小于第一阈值T1,则所有游戏图像帧都以渲染指令的形式发送。即渲染指令流与图像流的比例是1:0。

也就是说,当客户端负载比例较低时,客户端可以自行完成渲染,此时服务器就将渲染工作都交给客户端完成,不直接传输游戏图像,所有帧都在第二连接的渲染指令流中发送。

步骤330:如果所述负载比例大于第二阈值T2,则服务器不再发送渲染指令,所有游戏图像帧都由服务器直接渲染完成,直接发送游戏图像。即渲染指令流与图像流的比例是0:1。

也就是说,当客户端负载比例较高时,游戏图像就不再由客户端完成渲染,都由服务器直接渲染并发送,所有帧都在第三连接的图像流中发送。

显然有0<T1<T2<1,具体的T1和T2的取值可以根据具体策略情况选定。

步骤340:如果所述负载比例在T1与T2之间,则计算图像流所占的比例P为:P=[(L-T1)/(T2-T1)]w,即渲染指令流与图像流的比例为(1-P):P。

其中,L是负载比例,w是负载加权系数,w的取值根据具体的客户端类型而定。因为不同的客户端情况不同,负载增长对客户端的影响也不同,因此本发明引入了负载加权系数,以表征客户端本身的性能。一般而言,客户端性能越低,则w的值越小,反之则w值越大。

基于上述方法,本发明根据客户端负载情况,通过三个连接实现了游戏图像渲染的不同方式,平衡了客户端和服务器的能力,有利于提高云游戏中的图像渲染效率,提高资源利用率。

以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。

7页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种虚拟对象的交互方法以及相关装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类