1.本公开实施例涉及云游戏技术领域,具体而言,涉及一种基于云游戏的鼠标控制方法、基于云游戏的鼠标控制装置、计算机可读存储介质以及电子设备。
背景技术:2.云游戏中,通常通过客户端来输出音视频同时接收输入指令,而客户端游戏最常用的输入设备有鼠标和键盘;同时,在云游戏画面中,用户需要用到鼠标进行选择、点击、拖动等操作。由于游戏运行在云端,用户的操作在本地,游戏画面中鼠标的显示方法是一个需要考虑的问题,要求客户端页面中的鼠标与游戏中的鼠标一致,尽量减少与原生鼠标的差异以及提高本地鼠标的操作流畅度。
3.为了解决上述问题,现有技术采用了如下方案进行实现:客户端本地不显示鼠标光标,鼠标由远程渲染。具体的,当用户本地鼠标进入游戏区域后,调用html pointer lock api来锁住鼠标使其隐藏,同时在本地记录鼠标的相关移动事件发送到云端,由云端根据事件信息来渲染鼠标随画面推送到客户端,此方案客户端本质上没有鼠标光标,采用的是云端鼠标。
4.但是,上述方案存在如下缺陷:由于本地没有鼠标,是通过云端进行推送的,导致云端的鼠标显示画面与客户端的鼠标显示画面存在传输延迟,进而使得画面显示不一致,降低了用户体验。
5.因此,需要提供一种新的基于云游戏的鼠标控制方法及装置。
6.需要说明的是,在上述背景技术部分发明的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现要素:7.本公开的目的在于提供一种基于云游戏的鼠标控制方法、基于云游戏的鼠标控制装置、计算机可读存储介质以及电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的云端的鼠标显示画面与客户端的鼠标显示画面存在传输延迟的问题。
8.根据本公开的一个方面,提供一种基于云游戏的鼠标控制方法,配置于显示终端,所述显示终端的显示界面显示游戏画面,所述游戏画面为所述显示终端通过播放从云端服务器接收到的视频流所得到的视频画面,其中,所述视频流通过对运行于云端服务器的游戏程序的游戏画面进行编码形成,所述基于云游戏的鼠标控制方法包括:
9.当检测到鼠标进入所述游戏画面中的游戏区域时,捕获所述鼠标的操作事件,并将所述操作事件发送至云端服务器,其中,所述鼠标为所述显示终端的操作系统生成的本地鼠标;
10.接收所述云端服务器发送的根据所述操作事件生成的操作指令;其中,所述操作指令包括显示指令或隐藏指令;
11.根据所述操作指令对层叠样式表中的光标属性进行设置,以根据设置后的所述光
标属性控制所述鼠标进行显示或隐藏。
12.在本公开的一种示例性实施例中,当所述操作指令为显示指令时,根据所述操作指令对层叠样式表中的光标属性进行设置,以根据设置后的所述光标属性控制所述鼠标进行显示,包括:
13.对所述操作指令进行解析,得到所述鼠标的光标样式以及指针热点位置信息;
14.根据所述光标样式以及指针热点位置信息对层叠样式表中的光标属性进行设置,以控制所述鼠标基于所述光标样式在所述指针热点位置信息对应的位置进行显示;其中,所述光标样式为所述游戏程序生成的游戏画面中的游戏鼠标样式。
15.在本公开的一种示例性实施例中,当所述操作指令为隐藏指令时,根据所述操作指令对对所述层叠样式表中的光标属性进行设置,以根据设置后的所述光标属性控制所述鼠标进行隐藏,包括:
16.对所述操作指令进行解析,得到所述鼠标的隐藏指令;
17.基于所述隐藏指令在层叠样式表中的光标属性中确定所述鼠标的无光标属性,以控制所述鼠标进行隐藏。
18.在本公开的一种示例性实施例中,所述操作事件包括按压鼠标、移动鼠标以及释放鼠标中的至少一种;
19.其中,捕获所述鼠标的操作事件,包括:
20.捕获所述鼠标的按压位置,并根据所述按压位置生成所述操作事件;或者
21.捕获所述鼠标的起始移动位置以及终止移动位置,并根据所述起始移动位置以及终止移动位置生成所述操作事件;或者
22.捕获所述鼠标的释放位置,并根据所述释放位置生成所述操作事件。
23.在本公开的一种示例性实施例中,将所述操作事件发送至云端服务器,包括:
24.通过websocket建立所述显示终端与所述云端服务器之间的通信链路,并基于所述通信链路将所述操作事件发送至所述云端服务器。
25.根据本公开的一个方面,提供一种基于云游戏的鼠标控制方法,配置于云端服务器,所述云端服务器对所述云游戏进行渲染后压缩编码得到游戏画面,并将所述游戏画面发送至显示终端的显示界面进行显示;所述基于云游戏的鼠标控制方法包括:
26.接收所述显示终端发送的鼠标的操作事件,并将所述操作事件发送至所述云端服务器中运行的游戏程序;其中,所述鼠标为所述显示终端的操作系统生成的运行并显示于所述显示终端的本地鼠标;
27.根据所述操作事件中包括的事件发生位置,确定所述鼠标在所述游戏程序生成的游戏画面中的所述事件发生位置处的游戏鼠标的显示状态,并根据所述显示状态生成操作指令;其中,所述操作指令包括显示指令或隐藏指令;
28.将所述操作指令发送至所述显示终端,以使得所述显示终端根据所述操作指令以及层叠样式表中的光标属性,控制所述鼠标进行显示或隐藏。
29.在本公开的一种示例性实施例中,当所述操作指令为显示指令时,所述操作指令中包括所述鼠标在所述当前位置中所具有的光标样式以及指针热点位置信息,所述显示终端根据所述操作指令中包括的光标样式以及指针热点位置信息对层叠样式表中的光标属性进行设置,以控制所述鼠标基于所述光标样式在所述指针热点位置信息对应的位置进行
显示;并且,所述光标样式为所述游戏程序生成的游戏画面中的游戏鼠标样式。
30.根据本公开的一个方面,提供一种基于云游戏的鼠标控制装置,配置于显示终端,所述显示终端的显示界面显示游戏画面,所述游戏画面为所述显示终端通过播放从云端服务器接收到的视频流所得到的视频画面,其中,所述视频流通过对运行于云端服务器的游戏程序的游戏画面进行编码形成,所述基于云游戏的鼠标控制装置包括:
31.操作事件捕获模块,用于当检测到鼠标进入所述游戏画面中的游戏区域时,捕获所述鼠标的操作事件,并将所述操作事件发送至云端服务器,其中,所述鼠标为所述显示终端的操作系统生成的本地鼠标;
32.操作指令接收模块,用于接收所述云端服务器发送的根据所述操作事件生成的操作指令;其中,所述操作指令包括显示指令或隐藏指令;
33.鼠标控制模块,用于根据所述操作指令对层叠样式表中的光标属性进行设置,以根据设置后的所述光标属性控制所述鼠标进行显示或隐藏。
34.根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的基于云游戏的鼠标控制装置。
35.根据本公开的一个方面,提供一种电子设备,包括:
36.处理器;以及
37.存储器,用于存储所述处理器的可执行指令;
38.其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的基于云游戏的鼠标控制装置。
39.本公开实施例提供的一种基于云游戏的鼠标控制方法及装置,一方面,由于可以通过将显示终端捕获到的鼠标的操作事件发送至云服务器,进而根据云服务器发送的操作指令根据操作指令对层叠样式表中的光标属性进行设置,以根据设置后的光标属性控制鼠标进行显示或隐藏,无需在云服务器端模拟新的鼠标,进而避免由于需要通过云端服务器进行鼠标推送进而导致云端的鼠标显示画面与客户端的鼠标显示画面存在传输延迟,进而使得画面显示不一致的问题;另一方面,由于操作事件是根据显示终端侧配置的实际鼠标的具体操作生成的,使得用户可以通过实际鼠标来选择或定位游戏画面中的操作元素,进而提升了用户的操作体验;再一方面,由于可以根据操作指令对层叠样式表中的光标属性进行设置,进而根据设置后的光标属性控制所述鼠标进行显示或隐藏,使得鼠标在性能上与实际鼠标一致,提高了云游戏下用户移动鼠标操作的流畅性,实现了本地游戏鼠标的效果,进而进一步的提高了云游戏的操作体验。
40.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
41.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1示意性示出根据本公开示例实施例的一种显示终端侧的基于云游戏的鼠标控
制方法的流程图。
43.图2示意性示出根据本公开示例实施例的一种云游戏的场景示例图。
44.图3示意性示出根据本公开示例实施例的一种光标显示的游戏场景示例图。
45.图4示意性示出根据本公开示例实施例的一种光标隐藏的游戏场景示例图。
46.图5示意性示出根据本公开示例实施例的一种云端服务器侧的基于云游戏的鼠标控制方法的流程图。
47.图6示意性示出根据本公开示例实施例的另一种显示终端侧的基于云游戏的鼠标控制方法的流程图。
48.图7示意性示出根据本公开示例实施例的另一种云端服务器侧的基于云游戏的鼠标控制方法的流程图。
49.图8示意性示出根据本公开示例实施例的一种显示终端侧的基于云游戏的鼠标控制装置的框图。
50.图9示意性示出根据本公开示例实施例的一种云端服务器侧的基于云游戏的鼠标控制装置的框图。
51.图10示意性示出根据本公开示例实施例的一种用于实现上述基于云游戏的鼠标控制方法的电子设备。
具体实施方式
52.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
53.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
54.在一些云游戏中的鼠标控制方案中,可以通过如下两种方式实现对鼠标的控制:
55.一种方案是,客户端本地不显示鼠标光标,鼠标由远程渲染。当用户本地鼠标进入游戏区域后,调用html pointer lock api来锁住鼠标使其隐藏,同时在本地记录鼠标的相关移动事件发送到云端,由云端根据事件信息来渲染鼠标随画面推送到web端,此方案web端本质上没有鼠标光标,采用的是云端鼠标。
56.另一种方案是,本地采用模拟鼠标光标,当用户本地鼠标进入游戏区域后,调用html pointer lock api来锁住鼠标使其隐藏,同时在此游戏区域显示一个模拟鼠标图标,当鼠标移动时,html实时跟踪鼠标的位置信息并实时调整模拟鼠标的位置,这样就实现了
一个本地模拟鼠标,而对于在云端的鼠标则在服务端隐藏,推流到客户端的画面是没有鼠标的,模拟的鼠标覆盖在画面上。
57.但是,在上述第一种方案中,由于本地没有鼠标,是由云端推送的,客户端显示的画面与云端显示的画面存在着一定延迟,用户在本地移动鼠标时,需要将指令传送到云端,再由云端解析将画面发送到客户端显示。采用此方案时,用户移动鼠标光标会感觉到鼠标不灵敏,存在延迟,玩一段时间会感到与原生鼠标差距较大,会让用户感到疲劳感。
58.在上述第二种方案中,虽然采用了本地模拟鼠标,省去了网络传输的延迟,鼠标延迟较第一种方案有了很大提升;但是,采用html pointer lock api功能时,会消耗一部分性能,同时需要程序实时调整模拟鼠标的位置,与原生的鼠标移动相比,还是存在些延迟,影响了用户的体验,尤其是对于那些追求极致的玩家。
59.为了达到游戏鼠标的流畅度与原生本地鼠标一致的效果,本公开示例实施例首先提供了一种基于云游戏的鼠标控制方法,该基于云游戏的鼠标控制方法可以配置于显示终端,显示终端的显示界面显示游戏画面,所述游戏画面为所述显示终端通过播放从云端服务器接收到的视频流所得到的视频画面,其中,所述视频流通过对运行于云端服务器的游戏程序的游戏画面进行编码形成,所述游戏画面中可以包含游戏场景,如游戏中的环境、建筑、机械、道具等,游戏场景通常可以理解为根据企划要求还原出游戏中的建筑物、树木、天空、道路等可用元素,例如:武器道具与npc(非玩家角色,non-player character的缩写,是游戏中一种角色类型,指的是游戏中不受玩家操纵的游戏角色,例如:《封神榜3》中位于朝歌宫殿里的纣王、妲己;古剑奇谭中的巽芳等等,都属于npc)。上述游戏画面中还可以包含至少一个虚拟对象,例如:玩家在游戏中所扮演的虚拟人物角色,或者玩家在游戏中的虚拟对手角色等。
60.示例性的,显示终端可以是电视、电脑、移动终端、pc或车载显示器等,需要说明的是,显示终端的具体设备形态可以根据实际情况自行设定,属于本公开的保护范围。参考图1所示,该基于云游戏的鼠标控制方法可以包括如下步骤:
61.步骤s110.当检测到鼠标进入所述游戏画面中的游戏区域时,捕获所述鼠标的操作事件,并将所述操作事件发送至云端服务器,其中,所述鼠标为所述显示终端的操作系统生成的本地鼠标;
62.步骤s120.接收所述云端服务器发送的根据所述操作事件生成的操作指令;其中,所述操作指令包括显示指令或隐藏指令;
63.步骤s130.根据所述操作指令对层叠样式表中的光标属性进行设置,以根据设置后的所述光标属性控制所述鼠标进行显示或隐藏。
64.上述基于云游戏的鼠标控制方法中,一方面,由于可以通过将显示终端捕获到的鼠标的操作事件发送至云服务器,进而根据云服务器发送的操作指令根据操作指令对层叠样式表中的光标属性进行设置,以根据设置后的光标属性控制鼠标进行显示或隐藏,无需在云服务器端模拟新的鼠标,进而避免由于需要通过云端服务器进行鼠标推送进而导致云端的鼠标显示画面与客户端的鼠标显示画面存在传输延迟,进而使得画面显示不一致的问题;另一方面,由于操作事件是根据显示终端侧配置的实际鼠标的具体操作生成的,使得用户可以通过实际鼠标来选择或定位游戏画面中的操作元素,进而提升了用户的操作体验;再一方面,由于可以根据操作指令对层叠样式表中的光标属性进行设置,进而根据设置后
的光标属性控制所述鼠标进行显示或隐藏,使得鼠标在性能上与实际鼠标一致,提高了云游戏下用户移动鼠标操作的流畅性,实现了本地游戏鼠标的效果,进而进一步的提高了云游戏的操作体验。
65.以下,将结合附图对本公开示例实施例基于云游戏的鼠标控制方法进行详细的解释以及说明。
66.首先,对本公开示例实施例中所涉及到的云游戏进行解释以及说明。
67.具体的,云游戏是一种以云计算为基础的游戏方式,在云游戏模式下,所有游戏都在云端服务器运行,并将渲染完毕后的游戏画面压缩编码后通过网络传输给用户操作。随着云计算的成熟及5g通信技术的逐步发展带来的高速传输能力,云游戏得到快速发展并逐渐普及。云游戏采用“云计算+游戏”模式,可以只凭借简陋设备就能体验高端游戏的技术,用户无需再进行传统的下载、安装、升级等复杂操作,可以随时从云端调用来进行游戏、办工等活动,从而彻底实现去硬件化这一目标。在云游戏场景下,运行的游戏并不在玩家游戏终端,而是在云端服务器中,并由云端服务器将游戏场景渲染为视频音频流,通过网络传输给玩家游戏终端,同时将玩家的终端操作回传给云端服务器。玩家游戏终端无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力与获取玩家输入指令并发送给云端服务器的能力即可。
68.具体的,该云游戏场景具体可以如下图2所示。在图2中,200为显示终端,该显示终端可以以电视201、手机202以及pc(personal computer,个人计算机)203作为媒介,显示终端向云端服务器220发送游戏指令,云端服务器响应于该游戏指令将根据对云游戏进行渲染后压缩编码得到的包括音视频流的游戏画面反馈给终端显示器进行显示;然后,用户220通过鼠标230、键盘240、手柄250、耳机260以及麦克风270输入相应的操作指令,进而实现对云游戏的操作。
69.其次,对本公开示例实施例的发明目的进行解释以及说明。具体的,在云游戏下,游戏运行在云端服务器,服务器将视频音频流推送到玩家客户端(也即显示终端所在的web浏览器或者android app等)。玩家客户端得到的是游戏画面与音频,玩家需要鼠标来实现选择和定位画面上的操作元素。因此,为了达到游戏鼠标的流畅度与原生本地鼠标一致的效果,本公开示例实施例提出了一种在云游戏端游场景下鼠标控制的方法,提供了一个实时显示游戏内鼠标光标的方法来操作元素,从而实现快速的选择、点击、拖动功能,鼠标的流畅程度与原生本地鼠标一致,极大提高云游戏体验。同时实现的效果与原生本地鼠标一致,改善云游戏体验。
70.在本公开示例实施例的一种基于云游戏的鼠标控制方法中:
71.在步骤s110中,当检测到鼠标进入所述游戏画面中的游戏区域时,捕获所述鼠标的操作事件,并将所述操作事件发送至云端服务器,其中,所述鼠标为所述显示终端的操作系统生成的本地鼠标。
72.在本示例实施例中,首先,显示终端中包括的web端可以检测鼠标释放后进入游戏画面中的游戏区域,当检测到鼠标进入游戏画面中的游戏区域时,即可捕获鼠标的操作事件,并将该操作事件发送至云端服务器。此处需要补充说明的是,在端游中,通常通过鼠标(该鼠标为显示终端的操作系统中生成的本地鼠标)来进行选择、移动、拖动来操作游戏元素,同时游戏场景中可能会定制适用于本游戏的鼠标形状样式,同时也会在不同的鼠标样
式间切换,对于一些特殊场景鼠标图标会隐藏,鼠标的移动用来控制人物视角的移动。在云游戏中,由于游戏画面与鼠标操作是分开的,用户本地鼠标执行的操作将会转化为指令作为云端游戏的输入,同时将画面传送给用户。因此,需要协调本地鼠标的显示与云端鼠标的关系,避免同时出现两个鼠标,因此,需要将捕获到的鼠标的操作事件发送至云端服务器,进而根据云端服务器所给出的操作指令来控制鼠标显示或者隐藏。
73.其次,上述鼠标的操作事件可以包括按压鼠标、移动鼠标以及释放鼠标等等;因此,在捕获鼠标的操作事件时,可以通过如下方式来实现:
74.捕获所述鼠标的按压位置,并根据所述按压位置生成所述操作事件;或者捕获所述鼠标的起始移动位置以及终止移动位置,并根据所述起始移动位置以及终止移动位置生成所述操作事件;或者捕获所述鼠标的释放位置,并根据所述释放位置生成所述操作事件。
75.举例来说,在云游戏的web客户端(也即显示终端),需要将用户的操作转化成控制流指令发送到云服务端,云服务端根据控制流指令反馈给游戏;其中,操作可以包括鼠标点击操作(也即按压操作)、移动操作、鼠标释放操作以及键盘按键操作等。具体的,定义如下鼠标相关指令(只提供与鼠标相关的指令来阐述本发明,其他完整指令暂不列出):
[0076]“mousedown x,y”:在(x,y)位置按下鼠标;
[0077]“mousemove x,y”:鼠标移动到(x,y)位置;
[0078]“mouseup x,y”:在(x,y)位置释放鼠标;
[0079]
在此基础上,即可根据对应操作的发生位置以及具体的操作生成所述操作事件。例如,鼠标在(x,y)的点击操作用指令可表示为:“mousedown x,y;mouseup x,y”。鼠标从(x1,y1)拖动到(x2,y2)释放操作用指令可表示为:“mousedown x1,y1;mousemove x2,y2;mouseup x2,y2;”;显示终端可以直接监听鼠标的mousedown,mousemove,mouseup事件并在对应事件出现时发送相应的指令到云端。
[0080]
进一步的,当得到操作事件以后,可以将该操作事件发送至云端服务器。具体的,可以通过如下方式实现:通过websocket建立所述显示终端与所述云端服务器之间的通信链路,并基于所述通信链路将所述操作事件发送至所述云端服务器。具体的,web端通过websocket与云端服务器建立持久可靠连接,用来传输指令信息,该指令信息包括但不限于显示终端生成的操作事件以及云端服务器生成的操作指令等等。此处需要补充说明的是,由于websocket是全双工通信,进而可以保证操作事件的发送过程以及操作指令的接收过程是相互独立的,进而可以进一步的提高接收以及发送的速度,进一步的避免了画面延时的问题。
[0081]
在步骤s120中,接收所述云端服务器发送的根据所述操作事件生成的操作指令;其中,所述操作指令包括显示指令或隐藏指令。
[0082]
具体的,当云端服务器接收到上述操作事件以后,即可将操作事件发送至云端服务器中运行的云游戏中,再根据操作事件中包括的事件发生位置确定鼠标在云游戏的游戏画面中的当前位置,并确定与当前位置所对应的操作指令,并将操作指令发送至显示终端;其中,该操作指令包括隐藏指令或者显示指令。
[0083]
在步骤s130中,根据所述操作指令对层叠样式表中的光标属性进行设置,以根据设置后的所述光标属性控制所述鼠标进行显示或隐藏。
[0084]
在本示例实施例中,当显示终端接收到对应的操作指令以后,即可根据该操作指
令对层叠样式表中的光标属性进行设置,进而根据设置后的光标属性控制鼠标进行显示或隐藏。其中,在css(层叠样式表)中,cursor(光标)属性定义鼠标指针悬浮在元素上方显示的鼠标光标,其中的一个用法如下:
[0085]
cursor:url(data)x y,auto;
[0086]
其所表示的具体含义为:表示用于设置鼠标光标的形状,url中的内容可以设置为base64编码的png图片数据,x,y为此光标形状的热点位置(表示光标点击的位置值)相对于左上角的偏移;基于此,可以设置data的内容、x y值来变化鼠标光标形状。
[0087]
当然,如果要隐藏鼠标光标则设置如下:
[0088]
cursor:none;
[0089]
进一步的,当层叠样式表设置完成后,即可对鼠标进行控制。具体的,当所述操作指令为显示指令时,根据所述操作指令对层叠样式表中的光标属性进行设置,以根据设置后的所述光标属性控制所述鼠标进行显示,可以通过如下方式实现:对所述操作指令进行解析,得到所述鼠标的光标样式以及指针热点位置信息;根据所述光标样式以及指针热点位置信息对层叠样式表中的光标属性进行设置,以控制所述鼠标基于所述光标样式在所述指针热点位置信息对应的位置进行显示;其中,所述光标样式为所述游戏程序生成的游戏画面中的游戏鼠标样式。也即,当返回的操作指令中x,y值为40,60,图片数据为图3中所示的箭头时,则可以直接将其设置在cursor属性下,进而使得鼠标的光标在该位置以该形式出现。具体实现时,显示终端将本地鼠标在显示界面中显示的游戏画面中的操作事件发送至云端服务器,云端服务器接收到鼠标的操作事件后,将操作事件发送至游戏程序,使得游戏程序可以根据操作事件执行响应的游戏逻辑,在本实施方式中,游戏程序接收到操作事件后确定游戏画面的与操作事件的事件发生位置处的游戏鼠标样式,云端服务器监测到游戏鼠标样式后,获取游戏鼠标样式,并生成包括游戏鼠标样式的操作指令发送至显示终端,进而可以确保了游戏鼠标与原生鼠标的一致性,进而提升用户体验。需要说明的是,游戏鼠标指的是游戏程序根据接收到的交互操作生成的鼠标,显示终端的操作系统生成的本地鼠标,指的是操作系统根据系统内置的操作指令所生成的原生鼠标,例如,在启动显示终端且当显示终端完成启动后所显示出来的鼠标。
[0090]
其中,在图3中,301所示的区域为游戏区域,302为游戏区域中所示出的具体游戏场景,303为游戏场景中所示出的虚拟对象,304为鼠标。其中,游戏区域可以是一具有视觉指示的区域,例如,游戏区域可以具有一边界框,或者具有一定范围的填充颜色,或者具有一定范围的预定透明度,或者采用其他能够在视觉上将游戏区域区分的方式;当然,游戏区域也可以是不具有视觉指示的区域,本示例对此不做特殊限制。根据游戏区域接收到的按压、滑动以及抬起等事件的具体发生位置,即可生成上述操作事件。
[0091]
更进一步的,当所述操作指令为隐藏指令时,根据所述操作指令对对所述层叠样式表中的光标属性进行设置,以根据设置后的所述光标属性控制所述鼠标进行隐藏,具体可以通过如下方式实现:对所述操作指令进行解析,得到所述鼠标的隐藏指令;基于所述隐藏指令在层叠样式表中的光标属性中确定所述鼠标的无光标属性,以控制所述鼠标进行隐藏。也即,当返回的操作指令为隐藏指令时,即可选中cursor:none,进而控制鼠标进行隐藏。具体的示例图可以参考图4所示。其中,图4与图3的区别为:无光标显示。
[0092]
本公开示例实施例还提供了另一种基于云游戏的鼠标控制方法,配置于云端服务
器,所述云端服务器对所述云游戏进行渲染后压缩编码得到游戏画面,并将所述游戏画面发送至显示终端的显示界面进行显示。参考图5所示,该基于云游戏的鼠标控制方法可以包括以下步骤:
[0093]
步骤s510,接收所述显示终端发送的鼠标的操作事件,并将所述操作事件发送至所述云端服务器中运行的游戏程序;其中,所述鼠标为所述显示终端的操作系统生成的运行并显示于所述显示终端的本地鼠标。
[0094]
具体的,首先,接收显示终端发送的鼠标的操作事件,然后,将操作事件中包括的位置信息发送至游戏程序,以便于后续的操作指令的生成。
[0095]
步骤s520,根据所述操作事件中包括的事件发生位置,确定所述鼠标在所述游戏程序生成的游戏画面中的所述事件发生位置处的游戏鼠标显示状态,并根据所述游戏鼠标的显示状态生成操作指令;其中,所述操作指令包括显示指令或隐藏指令。
[0096]
具体的,为了协调本地鼠标的显示与云端鼠标的关系,避免同时出现两个鼠标,可以采用将云端鼠标隐藏,进而将鼠标的显示放在本地来实现来提高操作的流畅度;因此在对云端鼠标进行隐藏以后,先获取游戏程序根据操作事件中包括的事件发生位置确定的游戏鼠标信息,其中,该游戏鼠标信息可以包括游戏鼠标的显示颜色以及光标样式,当然也可以包括其他信息,此处不进行特殊限制;然后,当获取到对应的游戏鼠标信息以后,即可可以根据操作事件中包括的事件发生位置(也即上述x,y)确定鼠标在云游戏的游戏画面中的当前位置,进而根据游戏鼠标的显示颜色以及光标样式,确定鼠标在该当前位置所具有的显示状态。此处需要补充说明的是,通过该方法,可以在需要隐藏鼠标的区域对鼠标进行隐藏,在需要显示的区域对鼠标进行显示,进而可以提高用户的操作体验。
[0097]
进一步的,首先,云端服务器为了能将鼠标的当前样式通知给显示终端,需要设置如下指令:
[0098]“cursor base64_png_string x y”:让web端显示指定形状和热点位置的光标,通过设置cursor:url(base64_png_string)x y,auto;来实现,也即显示指令;
[0099]“closecursor”:让web端隐藏鼠标光标,通过设置curosr:none来实现,也即隐藏指令。
[0100]
因此,当所述操作指令为显示指令时,所述操作指令中包括所述鼠标在所述当前位置中所具有的光标样式以及指针热点位置信息,所述显示终端根据所述操作指令中包括的光标样式以及指针热点位置信息对层叠样式表中的光标属性进行设置,以控制所述鼠标基于所述光标样式在所述指针热点位置信息对应的位置进行显示;并且,所述光标样式为为所述游戏程序生成的游戏画面中的游戏鼠标样式,是所述云服务器通过对所述云游戏的游戏画面中的当前位置所具有的鼠标样式进行截取得到的。最后,有了上述基本指令与鼠标光标设置方法后,就可以实现云游戏中的鼠标光标的本地原生化显示。
[0101]
步骤s530,将所述操作指令发送至所述显示终端,以使得所述显示终端根据所述操作指令以及层叠样式表中的光标属性,控制所述鼠标进行显示或隐藏。
[0102]
进一步的,有了上述基本指令与鼠标光标设置方法后,就可以实现云游戏中的鼠标光标的在显示终端的本地原生化显示。
[0103]
以下,将结合图6以及图7对本公开示例实施例基于云游戏的鼠标控制方法进行进一步的解释以及说明。
[0104]
首先,参考图6所示,在显示终端侧,该基于云游戏的鼠标控制方式具体可以包括以下步骤:
[0105]
步骤s601,判断云游戏是否在运行中;若是,则跳转至步骤s602,若否,则结束;
[0106]
步骤s602,判断是否有mousedown事件,若是,则跳转至步骤s603,若否,则跳转至步骤s604;
[0107]
步骤s603,根据mousedown x,y生成操作指令,并发送至云端服务器;
[0108]
步骤s604,判断是否有mousemove事件,若是,则跳转至步骤s605,若否,则跳转至步骤s606;
[0109]
步骤s605,mousemove x,y生成操作指令,并发送至云端服务器;
[0110]
步骤s606,判断是否有mouseup事件,若是,则跳转至步骤s607,若否,则跳转至步骤s608;
[0111]
步骤s607,mouseup x,y生成操作指令,并发送至云端服务器;
[0112]
步骤s608,判断是否接收到cursor指令(操作指令);若是,则跳转至步骤s609,若否,则跳转至步骤s610;
[0113]
步骤s609,利用css cursor属性设置本地鼠标样式;
[0114]
步骤s610,判断是否接收到closecursor指令;是,则跳转至步骤s611,若否,则跳转至步骤s601;
[0115]
步骤s611,利用css cursor属性隐藏本地鼠标样式。
[0116]
也即,对于web端:游戏启动后进入画面区域时,采用默认鼠标样式,在接收到cursor指令之前不设置cursor样式;同时,浏览器监听mousedown,mousemove,mouseup事件,当有mousedown事件出现时,发送“mousedown x,y”指令;当有mousemove事件时,发送“mousemove x,y”指令;当有mouseup事件时,发送“mouseup x,y”指令。其中x,y表示事件发生时,鼠标光标热点的位置信息;进一步的,如果从云服务端接收到cursor指令,提取光标样式与热点位置,通过“cursor:url(data)x y,auto;”设置光标样式;当然,如果从云服务端接收到closecursor指令,则通过“cursor:none;”隐藏光标。
[0117]
其次,参考图7所示,在云端服务器侧,该基于云游戏的鼠标控制方式具体可以包括以下步骤:
[0118]
步骤s701,判断云游戏是否运行,若是,则跳转至步骤s702,若否,则结束;
[0119]
步骤s702,判断是否收到显示终端发送的根据mousedown/mousemove/mouseup生成的操作事件;若是,则跳转至步骤s703,若否,则跳转至步骤s701;
[0120]
步骤s703,将操作事件发送至云游戏;
[0121]
步骤s704,根据操作事件生成操作指令,并将操作指令发送至显示终端。
[0122]
以下,以dota2为例,对上述基于云游戏的鼠标控制方法进行解释以及说明。
[0123]
端游在云游戏web端启动后,鼠标第一次进入游戏画面时,如果没有收到cursor指令,则采用原生的鼠标样式,其热点偏移为(0,0);
[0124]
鼠标在画面中操作会产生mosemove事件,如发送“mousemove 600,800”表示光标移动到(600,800)位置;若产生mousedown事件,如发送“mousedown 600,800”表示鼠标在(600,800)位置处按下;若产生mouseup事件,如发送“mouseup 600,800”表示鼠标在(600,800)位置片释放。
[0125]
若鼠标在移动到游戏画面某处时,触发了游戏中的切换光标,则由云端将切换后的光标样式与热点位置采用curosr发送给web端。如若接收到cursor指令,web端将设置css cursor属性将默认的光标设置成curosr给出的光标样式,具体可以如图3中的304所示;
[0126]
由此鼠标由原生的转变成了游戏内的定制光标,游戏中有可能有其他的光标样式,当触发变化时,同理由cursor发送样式给web端;若游戏中需要隐藏鼠标,此由云端发送光标隐藏指令“closecursor”,web端收到后会设置“cursor:none;”隐藏当前光标的显示。
[0127]
至此可以得知,本公开实现了一种新的鼠标光标显示方法,用来在游戏画面中进行定位与选择,原理是利用css中cursor属性来设置原生鼠标光标的样式和鼠标指针的热点位置。当用户鼠标进入游戏区域时,web端捕获鼠标事件通知给云端,云端将位置信息等操作指令发送给游戏,然后截获当前位置的鼠标光标样式与光标热点位置信息,将此鼠标样式与位置信息发送给web端,web端接收到指令后利用css cursor属性来设置云端发送给来的鼠标光标样式与指针热点位置信息,从而显示出对应位置的游戏鼠标光标。对于需要隐藏游戏鼠标的场景,也由云端发送鼠标隐藏指令,web端收到指令后,设置css cursor属性为none来达到将鼠标隐藏的效果。本发明涉及到web端与云端指令的交互,同时只是修改原生鼠标的显示样式,并不是模拟一个新的鼠标,鼠标的移动、点击、拖动的性能与原生鼠标是一样的,极大提高了用户的操作体验。
[0128]
并且,本公开示例实施例所提供的方案不同于目前已有方案的云端鼠标方案和本地模拟鼠标方案,而是采用原生的鼠标,只是利用css cursor属性更新鼠标光标的显示样式与指针位置,性能上与原生鼠标一致,提高了云游戏下玩家移动鼠标操作的流畅程序,真正实现了本地游戏鼠标的效果,极大提高了云游戏客户端游戏的操作体验。
[0129]
本公开还提供了一种基于云游戏的鼠标控制装置,配置于显示终端,述显示终端的显示界面显示游戏画面,所述游戏画面为所述显示终端通过播放从云端服务器接收到的视频流所得到的视频画面,其中,所述视频流通过对运行于云端服务器的游戏程序的游戏画面进行编码形成。参考图8所示,该基于云游戏的鼠标控制装置可以包括操作事件捕获模块810、操作指令接收模块820以及鼠标控制模块830。其中:
[0130]
操作事件捕获模块810可以用于当检测到鼠标进入所述游戏画面中的游戏区域时,捕获所述鼠标的操作事件,并将所述操作事件发送至云端服务器,其中,所述鼠标为所述显示终端的操作系统生成的本地鼠标;
[0131]
操作指令接收模块820可以用于接收所述云端服务器发送的根据所述操作事件生成的操作指令;其中,所述操作指令包括显示指令或隐藏指令;
[0132]
鼠标控制模块830可以用于根据所述操作指令对层叠样式表中的光标属性进行设置,以根据设置后的所述光标属性控制所述鼠标进行显示或隐藏。
[0133]
在本公开的一种示例性实施例中,当所述操作指令为显示指令时,当所述操作指令为显示指令时,根据所述操作指令对层叠样式表中的光标属性进行设置,以根据设置后的所述光标属性控制所述鼠标进行显示,包括:
[0134]
对所述操作指令进行解析,得到所述鼠标的光标样式以及指针热点位置信息;
[0135]
根据所述光标样式以及指针热点位置信息对层叠样式表中的光标属性进行设置,以控制所述鼠标基于所述光标样式在所述指针热点位置信息对应的位置进行显示;其中,所述光标样式为所述游戏程序生成的游戏画面中的游戏鼠标样式。
[0136]
在本公开的一种示例性实施例中,当所述操作指令为隐藏指令时,根据所述操作指令对对所述层叠样式表中的光标属性进行设置,以根据设置后的所述光标属性控制所述鼠标进行隐藏,包括:
[0137]
对所述操作指令进行解析,得到所述鼠标的隐藏指令;
[0138]
基于所述隐藏指令在层叠样式表中的光标属性中确定所述鼠标的无光标属性,以控制所述鼠标进行隐藏。
[0139]
在本公开的一种示例性实施例中,所述操作事件包括按压鼠标、移动鼠标以及释放鼠标中的至少一种;
[0140]
其中,捕获所述鼠标的操作事件,包括:
[0141]
捕获所述鼠标的按压位置,并根据所述按压位置生成所述操作事件;或者
[0142]
捕获所述鼠标的起始移动位置以及终止移动位置,并根据所述起始移动位置以及终止移动位置生成所述操作事件;或者
[0143]
捕获所述鼠标的释放位置,并根据所述释放位置生成所述操作事件。
[0144]
在本公开的一种示例性实施例中,将所述操作事件发送至云端服务器,包括:
[0145]
通过websocket建立所述显示终端与所述云端服务器之间的通信链路,并基于所述通信链路将所述操作事件发送至所述云端服务器。
[0146]
本公开还提供了另一种基于云游戏的鼠标控制装置,配置于云端服务器,所述云端服务器对所述云游戏进行渲染后压缩编码得到游戏画面,并将所述游戏画面发送至显示终端的显示界面进行显示。参考图9所示,该基于云游戏的鼠标控制装置包括操作事件发送模块910、操作指令确定模块920以及操作指令发送模块930。其中:
[0147]
操作事件发送模块910,可以用于接收所述显示终端发送的鼠标的操作事件,并将所述操作事件发送至所述云端服务器中运行的游戏程序;其中,所述鼠标为所述显示终端的操作系统生成的运行并显示于所述显示终端的本地鼠标;
[0148]
操作指令确定模块920,可以用于根据所述操作事件中包括的事件发生位置,确定所述游戏程序生成的游戏画面中的所述事件发生位置处的游戏鼠标显示状态,并根据所述显示状态生成操作指令;其中,所述操作指令包括显示指令或隐藏指令;
[0149]
操作指令发送模块930,可以用于并将所述操作指令发送至所述显示终端,以使得所述显示终端根据所述操作指令以及层叠样式表中的光标属性,控制所述鼠标进行显示或隐藏。
[0150]
在本公开的一种示例性实施例中,当所述操作指令为显示指令时,所述操作指令中包括所述鼠标在所述当前位置中所具有的光标样式以及指针热点位置信息生成所述操作指令,所述显示终端根据所述操作指令中包括的光标样式以及指针热点位置信息对层叠样式表中的光标属性进行设置,以控制所述鼠标基于所述光标样式在所述指针热点位置信息对应的位置进行显示;并且,所述光标样式为所述游戏程序生成的游戏画面中的游戏鼠标样式。
[0151]
上述基于云游戏的鼠标控制装置中各模块的具体细节已经在对应的基于云游戏的鼠标控制方法中进行了详细的描述,因此此处不再赘述。
[0152]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多
模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0153]
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
[0154]
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
[0155]
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
[0156]
下面参照图10来描述根据本公开的这种实施方式的电子设备1000。图10显示的电子设备1000仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0157]
如图10所示,电子设备1000以通用计算设备的形式表现。电子设备1000的组件可以包括但不限于:上述至少一个处理单元1010、上述至少一个存储单元1020、连接不同系统组件(包括存储单元1020和处理单元1010)的总线1030以及显示单元1040。
[0158]
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1010执行,使得所述处理单元1010执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元1010可以执行如图1中所示的步骤s110:当检测到鼠标进入所述游戏画面中的游戏区域时,捕获所述鼠标的操作事件,并将所述操作事件发送至云端服务器,其中,所述鼠标为所述显示终端的操作系统生成的本地鼠标;步骤s120:接收所述云端服务器发送的根据所述操作事件生成的操作指令;其中,所述操作指令包括显示指令或隐藏指令;步骤s130:根据所述操作指令对层叠样式表中的光标属性进行设置,以根据设置后的所述光标属性控制所述鼠标进行显示或隐藏。
[0159]
所述处理单元1010可以执行如图5中所示的步骤s510:接收所述显示终端发送的鼠标的操作事件,并将所述操作事件发送至所述云端服务器中运行的游戏程序;;其中,所述鼠标为所述显示终端的操作系统生成的运行并显示于所述显示终端的本地鼠标步骤s520:根据所述操作事件中包括的事件发生位置,确定所述游戏程序生成的游戏画面中的所述事件发生位置处的游戏鼠标显示状态,并根据所述显示状态生成操作指令;其中,所述操作指令包括显示指令或隐藏指令步骤s530:将所述操作指令发送至所述显示终端,以使得所述显示终端根据所述操作指令以及层叠样式表中的光标属性,控制所述鼠标进行显示或隐藏。
[0160]
存储单元1020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)10201和/或高速缓存存储单元10202,还可以进一步包括只读存储单元(rom)10203。
[0161]
存储单元1020还可以包括具有一组(至少一个)程序模块10205的程序/实用工具10204,这样的程序模块10205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0162]
总线1030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构
的局域总线。
[0163]
电子设备1000也可以与一个或多个外部设备1100(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1000交互的设备通信,和/或与使得该电子设备1000能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1050进行。并且,电子设备1000还可以通过网络适配器1060与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1060通过总线1030与电子设备1000的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1000使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0164]
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
[0165]
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
[0166]
根据本公开的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0167]
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0168]
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0169]
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
[0170]
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序
代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0171]
此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0172]
本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本公开的其他实施例。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。