CN113407044B - 模拟终端手柄输入的方法、装置、设备、存储介质 - Google Patents
模拟终端手柄输入的方法、装置、设备、存储介质 Download PDFInfo
- Publication number
- CN113407044B CN113407044B CN202110806600.7A CN202110806600A CN113407044B CN 113407044 B CN113407044 B CN 113407044B CN 202110806600 A CN202110806600 A CN 202110806600A CN 113407044 B CN113407044 B CN 113407044B
- Authority
- CN
- China
- Prior art keywords
- handle
- operated
- component
- message
- event
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
- G06F3/0233—Character input methods
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
根据本公开的示例实施例,提供了模拟终端手柄输入的方法、装置、设备、存储介质。涉及计算机技术领域,尤其涉及云游戏技术领域。具体实现方案为:从终端接收输入消息,其中输入消息包括指示与手柄被操作的部件相关的信息;基于指示与手柄被操作的部件相关的信息,利用手柄驱动程序生成手柄驱动消息,手柄驱动消息指示终端侧手柄的部件被操作的事件;以及发送手柄驱动消息,以请求执行与手柄被操作的部件对应的处理动作。本公开的实施例能够确保手柄上部件输入的真实性,从而提高了通用性和可靠性,并且能够显著降低开发者的工作量。
Description
技术领域
本公开涉及计算机技术领域,具体地,涉及在服务器侧模拟终端手柄输入的方法、装置、电子设备、计算机可读存储介质和计算机程序产品。
背景技术
云游戏是以云计算为基础的游戏方式,在云游戏的运行模式下,所有游戏都在服务器端运行,并将渲染完毕后的游戏画面压缩后通过网络传送给用户。在客户端,用户的游戏设备不需要任何高端处理器和显卡,只需要基本的视频解压能力即可。
目前市场上部分手游支持原生游戏手柄的操作方法,给玩家带来了更好的游戏体验。例如,玩家可以通过游戏手柄上的摇杆进行车辆方向的控制,通过手柄上的“A、B、X、Y”按键进行加速、漂移等操作。为了实现通过游戏手柄与云游戏交互,通常以触摸映射的形式将游戏手柄映射到云端的设备上。即客户端需要将游戏手柄上的输入转换成针对相应点处的坐标的动作消息,并发送到云端。
发明内容
本公开提供了一种用于在服务器侧模拟终端手柄输入的方法、装置、电子设备、计算机可读存储介质和计算机程序产品。
根据本公开的第一方面,提供了一种在服务器侧模拟终端手柄输入的方法,该方法包括:从终端接收输入消息,其中输入消息包括指示与手柄被操作的部件相关的信息;基于指示与手柄被操作的部件相关的信息,利用手柄驱动程序生成手柄驱动消息,手柄驱动消息指示终端侧手柄的部件被操作的事件;以及发送手柄驱动消息,以请求执行与手柄被操作的部件对应的处理动作方法。
在本公开的第二方面中,提供了一种在服务器侧模拟终端手柄输入的装置,该装置包括:输入消息接收模块,被配置为从终端接收输入消息,其中输入消息包括指示与手柄被操作的部件相关的信息;手柄驱动消息生成模块,被配置为基于指示与手柄被操作的部件相关的信息,利用手柄驱动程序生成手柄驱动消息,手柄驱动消息指示终端侧手柄的部件被操作的事件;以及手柄驱动消息发送模块,被配置为发送手柄驱动消息,以请求执行与手柄被操作的部件对应的处理动作。
在本公开的第三方面中,提供了一种电子设备,包括一个或多个处理器;以及存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现根据本公开的第一方面的方法。
在本公开的第四方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第一方面的方法。
在本公开的第五方面中,提供了一种计算机程序产品,计算机程序在被处理器执行时实现根据本公开的第一方面的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了本公开的多个实施例能够在其中实现的示例环境的示意图;
图2示出了根据本公开的实施例的用于在服务器侧模拟终端手柄输入的方法流程图;
图3示出了根据本公开的实施例的用于在服务器侧模拟终端手柄输入的装置的框图;
图4示出了根据本公开的另一实施例的手柄驱动消息生成模块的框图;
图5示出了根据本公开的另一实施例的云设备侧的示意性框图;以及
图6示出了能够实施本公开的多个实施例的计算设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如前面所提到的,用户可在客户端实现玩云游戏。客户端通常是手机、机顶盒等终端。由于目前的手柄一般应用于诸如物理手机的终端(以下简称称为“终端”),而不是诸如“云手机”的服务器上虚拟的终端。在云游戏的示例中,虽然物理手机安装有手柄驱动程序,但是该驱动程序只能实现该物理手机上的游戏与手柄之间的交互。由于手柄并未直接与服务器或云手机相连,所以手柄的输入并不能直接被服务器或云手机所识别或解析。因此在使用手柄操作控制云手机的云游戏时,需要通过物理手机上的云游戏客户端采集游戏手柄操作时对应的触摸事件,以使云游戏能够正确响应手柄操作。因此采用了映射触控这一比较取巧的方式,即,手柄通常以按键触摸的形式映射到云端的设备上,使得服务器上的云游戏能够间接地得知手柄上哪个部件被操作。
这种触摸映射的做法,需要根据每个游戏的不同操作部件作对应的映射关系。映射方案会由于不同的游戏部件(例如按键、摇杆)的不同情况而变得非常复杂。而且,若游戏在版本更新中的操作部件的位置发生改变,则需要开发人员重新根据新的部件位置进行触摸映射适配。
此外,市场上有众多的游戏,上述触摸映射适配需要开发人员花费大量时间来进行不同游戏的触摸映射适配,工作量十分庞大。且触摸映射适配的可靠性有待提高。
在云游戏的示例中,为实现这种映射,需要根据每个游戏不同的操作部件,例如按键,作对应的映射关系。具体来说,现有方案中映射触控的方式需要将手柄上某个操作部件对应的坐标传送到服务器上的云手机,这个坐标模拟的是“触控事件”。云游戏对接收的坐标进行解析,从而确定在云手机的屏幕上哪个点被点下,即相当于确定手柄上的哪个部件被操作,即哪个部件上发生了“触控事件”,进而做出相应的响应。例如,对于某款云游戏,其技能1对应于云手机屏幕的坐标点(100,100),此时如果用户按下手柄中的“A”键,则客户端需要转换成“按下坐标(100,100)的点”这一个动作消息。又例如,当在手柄上按下A按键时,会在云手机的对应坐标位置做一个按下的操作,从而云手机上的云游戏会响应该按下操作。当手柄进行摇杆操作时,会在云手机的对应坐标位置做一个触摸移动操作,云游戏内则会响应于该摇杆的操作。
在云游戏的示例中,对于同一个按键,在不同的游戏中可能对应不同的坐标。在不同的游戏里面,这个坐标有不同含义。比如某款云游戏中,(100,100)坐标代表"人物技能A",(200,200)坐标代表"人物技能B"。已知的处理方法是把手柄上的所有按键都映射成云游戏中不同的"技能坐标"。例如,按下手柄上的B键,B键的定义在游戏中代表"人物技能B",这个"人物技能B"在云手机对应的屏幕坐标是(200,200)。因此在传输过程中需要把(200,200)这个坐标传送到云手机,云手机在(200,200)的点触发一个按下的事件,相当于触发了"人物技能B"。
在云游戏的示例中,如果某款游戏按键较多,且存在组合键的话,则映射方案会非常复杂。此外,比如某款云游戏,每个角色的按键的位置会不一样,且很多时候不同技能的组合按键会非常多,比如1技能与2技能同时按下触发连招。若采用云端映射触摸事件的方式,则需要适配游戏中所有角色的按键位图,并且需考虑到不同角色等级所涉及到的按键情况。例如前期新开的账号,可能只有1-2个技能,升级后的账号存在4-5个技能的情况。每个人物对应的技能按钮并不是完全一致。总言之,按键位图复杂的云游戏,需根据不同情况进行触控事件的映射。
此外,上述提到的映射方案中,若游戏在版本更新中的部件,例如按键,的位置发生改变,则需要开发人员重新根据新的按键位置进行触摸映射适配。市场上游戏众多,需要大量的开发人员来进行不同游戏的触摸适配,工作量十分庞大,既费时又费力。
为了解决上述问题,本公开的实施例提供了在服务器侧模拟终端手柄输入的改进方案。在该方案中,从终端接收输入消息,其中输入消息包括指示与手柄被操作的部件相关的信息,例如该信息可以为指示手柄被操作的部件的类型的数值。基于指示与手柄被操作的部件相关的信息,利用手柄驱动程序生成手柄驱动消息,手柄驱动消息指示终端侧手柄的部件被操作的事件;之后发送手柄驱动消息,以请求服务器侧的应用执行与手柄被操作的部件对应的处理动作。
通常而言,诸如云游戏的服务器侧应用均能够被设计/配置为与手柄驱动消息交互。本公开的实施例中,通过在服务器侧设置手柄驱动程序,直接基于终端手柄的操作部件的信息生成能够被服务器侧应用识别和解析的手柄驱动消息,来实现与服务器侧应用的交互。这就等效于在云服务器侧模拟“外接”了一个终端手柄,从而无需执行上述复杂的坐标映射过程。通过该方案,本公开实施例可以直接在服务器侧实现对手柄的驱动,实现手柄与服务器侧虚拟终端或者服务器侧应用的交互。从而能够确保手柄上部件输入的真实性,提高了通用性和可靠性,并且能够显著降低开发者的工作量。
以下将参照附图来具体描述本公开的实施例。图1示出了本公开的多个实施例能够在其中实现的示例环境100的示意图。如图1所示,示例环境100中包含用户侧150和云设备侧160。用户侧150包括终端120以及与终端120连接的诸如游戏手柄110的手柄,云设备侧160包括计算设备130和诸如云游戏140的应用。
在一些实施例中,终端120可以是手机、机顶盒等。游戏手柄110通过有线或者无线的方式,例如通过USB数据线或者通过蓝牙等方式,连接到终端120。
在一些实施例中,计算设备130可以对游戏手柄110的键值(例如,按键类型、操作强度、操作速度、操作取向、操作频率、操作类型、以及操作持续时间等)进行监听。当用户按下按键后(例如按下A键),则计算设备130监听到A键被按下,则通过网络的方式发送数据包至云设备侧160。在云设备侧160,计算设备130接收来自用户侧150的数据包,对其进行处理,基于数据包中的信息生成手柄驱动消息,将手柄驱动消息通知给云游戏140。响应于接收到手柄驱动消息,云游戏140会做出相应的动作。
在一些实施例中,计算设备130可以包括但不限于个人计算机、服务器计算机、手持或膝上型设备、移动设备(诸如移动电话、个人数字助理PDA、媒体播放器等)、消费电子产品、小型计算机、大型计算机、云计算资源等。
图1中以云游戏140为例示出了云设备侧160的云应用。显然本公开的云应用不限于云游戏140,而是可以为任何能够在云设备侧160运行的能够与用户侧的终端手柄交互的应用。用户侧150处以游戏手柄110为例进行了说明,但是显然本公开的用户侧150处的手柄并不限于游戏手柄,而是可以为任何能够与云设备侧160运行的应用进行交互的手柄。
应当理解,仅出于示例性的目的描述示例环境100的结构和功能并不旨在限制本文所描述主题的范围。本文所描述主题可以在不同的结构和/或功能中实施。
上文描述的技术方案仅用于示例,而非限制本发明。应理解,示例环境100还可以具有其他多种实施方式。为了更清楚地解释本公开方案的原理,下文将参考图2来更详细描述在服务器侧模拟终端手柄输入的过程。
图2示出了根据本公开的实施例的用于在服务器侧模拟终端手柄输入的过程200的流程图。在某些实施例中,过程200可以在图1的计算设备130中实现。现参照图2并结合图1描述根据本公开实施例的用于在服务器侧模拟终端手柄输入的过程200。为了便于理解,在下文描述中提及的具体实例均是示例性的,并不用于限定本公开的保护范围。
在202,计算设备130从终端接收输入消息,其中输入消息包括指示与手柄被操作的部件相关的信息。例如,计算设备130可以从终端120接收输入消息。在某些实施例中,从终端120接收输入消息包括:从终端120接收网络数据包形式的输入消息。在某些实施例中,终端120响应于诸如游戏手柄110的手柄的操作(例如按下某个键)而向云设备侧160发送游戏手柄110的操作部件的消息,例如按键的消息。在某些实施例中,手柄按键的消息是通过组成tcp网络数据包而发送的。通常组包形式是按键类型+包体长度,按键类型通过自定义的枚举值进行转换,比如手柄A键用整形数1表示,则tcp网络数据包形式可以为:1+包体长度。在一些实施例中,计算设备130接收网络数据包,并对网络数据包进行处理,以获取指示与手柄被操作的部件相关的信息。以此方式,能够使得接收的输入消息被后续的手柄驱动程序进行处理,以实现与云游戏140的交互。
在某些实施例中,在终端120连接手柄后,手柄的操作会被监听。比如用户在手柄上按下了"A"键,客户端把这个消息发给服务器上的云手机。
在某些实施例中,指示与手柄被操作的部件相关的信息至少包括指示手柄被操作的部件的类型的数值。通过在该信息中包括指示手柄被操作的部件的类型的数值,能够使得被操作的部件的关键信息被计算设备130获取,从而在云设备侧160能够实现对该部件的操作进行模拟,以实现与云游戏的交互。例如,在一些实施例中,该数值指示按下的部件为键A,则计算设备130能够对该信息进行处理,以使得手柄按键A被按下的操作能够被云游戏140感知到。这在后文中进行详细描述。
在某些实施例中,指示与手柄被操作的部件相关的信息并不限于包括指示手柄被操作的部件的类型的数值,还可以包括,例如:操作强度;操作速度;操作取向;操作频率;操作类型;以及操作持续时间中的一个或多个。在某些实施例中,操作强度表示对手柄上的操作部件进行操作时所施加的力的强弱;操作速度表示对手柄上的操作部件操作的快慢;操作频率例如可以表示对某一按键点击的频率;操作类型表示对手柄上的操作部件进行的是单击还是双击、是摇动还是按压等等;操作持续时间表示对某个操作部件持续进行某一动作的时间。通过指示与手柄被操作的部件相关的信息中包括上述信息,能够准确获得手柄上操作的部件的相关信息,从而能够准确模拟手柄部件的动作。
在204,计算设备130基于指示与手柄被操作的部件相关的信息,利用手柄驱动程序生成手柄驱动消息,手柄驱动消息指示终端侧手柄的部件被操作的事件。
在某些实施例中,手柄驱动程序被配置为在服务器侧实现对手柄的驱动,以使得手柄能够与服务器侧的应用进行交互。通过手柄驱动程序在服务器侧实现对手柄的驱动,从而能够模拟终端上的手柄驱动,从而保障了按键操作的真实性。因为,在某些云游戏的场景下,例如,点击屏幕的方式未必能模拟到手柄的输入。例如,对于同时按下手柄上X和Y组合按键的场景,模拟触控映射方式是同时按下屏幕某两个点,即点A和点B来实现手柄上X和Y按键的按下。这个实现过程比较复杂,甚至有些情况下,无法准确实现在屏幕上模拟同时按下屏幕某两个点。而本公开某些实施例的方案可直接向诸如云游戏的服务器侧应用发送真实手柄的X和Y键值,通用性更强。
在某些实施例中,手柄驱动程序是基于服务器侧的操作系统中的基于事件的接口而被生成的。例如,可以利用某些系统中自带的接口,实现触控屏、鼠标、手柄等驱动节点。通过利用上述接口来实现对手柄进行驱动,能够以比较便捷的方式实现对用户侧手柄的驱动,实现手柄与云手机或云游戏的交互。
在某些实施例中,基于事件的接口是event节点。在某些实施例中,生成手柄驱动程序可以包括:针对event节点,向服务器侧的操作系统注册与手柄的部件的操作相关的事件;以及初始化与手柄的部件的操作相关的事件,以生成手柄驱动程序。在某些操作系统(例如linux系统)中,event节点是该系统自带的一套uevent接口,可以通过这个event节点实现触控屏、鼠标、手柄等驱动节点。在windows同样也有一套实现event的机制,同样可以利用。在某些实施例中,手柄驱动程序注册上述事件,去告知操作系统,当前的节点是手柄驱动节点。以此方式,基于event节点生成手柄驱动程序,在服务器侧实现了对手柄的驱动,提高了模拟手柄输入的可靠性。
在某些实施例中,event节点可由内核层去创建,之后内核会监听这个节点的消息。在某些实施例中,云手机上的诸如云游戏的服务器侧应用也会通过内核去监听这个节点的消息。当应用层写入某个按键消息时,内核通过消息机制能获取到当前某个event节点有某个按键消息产生。
在某些实施例中,event节点是基于真实手柄的情况去创建的。在某些实施例中,例如,创建event的接口可以申请“键盘上A-Z按键,数字0-9”、“鼠标左键、鼠标右键、鼠标滚轮”等等这些事件。而本公开的某些实施例中,创建event节点时会申请“手柄ABXY键,手柄摇杆X坐标、手柄摇杆Y坐标”等这一类事件,把这些事件初始化以后,系统会认为这个event节点就是一个真实的手柄节点。由此实现基于event节点生成手柄驱动程序。
在某些实施例中,基于指示与手柄被操作的部件相关的信息,利用手柄驱动程序生成手柄驱动消息包括:将指示与手柄被操作的部件相关的信息写入event节点;以及event节点基于指示与手柄被操作的部件相关的信息被写入event节点,生成手柄驱动消息。以此方式,通过利用event节点的特性,来生成手柄驱动程序,能够准确可靠地模拟手柄输入。
某些实施例中,服务器侧的手柄驱动模拟成一个与终端上的手柄驱动高度一致的手柄驱动节点。
本公开中虽然提到了利用event节点生成手柄驱动程序,但是显然这仅仅是一个示例方式,本公开并不限于上述方式。只要能够把“手柄部件消息”,例如“手柄按键消息”传送给云手机,从而模拟真实手柄的场景即可。
在206,计算设备130可以发送手柄驱动消息,以请求执行与手柄被操作的部件对应的处理动作。
在某些实施例中,发送手柄驱动消息,以请求执行与手柄被操作的部件对应的处理动作可以包括:通过内核向服务器侧的应用发送手柄驱动消息,以通知在终端侧的手柄的部件被操作的事件。内核(kernel)是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。内核可以实时监听event节点处是否有事件发生,例如,监听是否有手柄驱动消息,并将监听结果通知给云游戏。在某些实施例中,云游戏也可以监听手柄驱动节点的手柄驱动消息。以此方式,在某些实施例中,通过内核在手柄驱动与云游戏之间架设了桥梁,使得二者之间能够进行信息交互,从而实现模拟真实手柄的场景。在某些实施例中,应用层只需要正确把手柄部件的消息传送到手柄驱动节点即可,诸如云游戏的应用会监听到手柄驱动节点有消息的动作,从而做出响应。
通常而言,客户端的手柄驱动在终端上,而云手机是位于全国各地的机房中,因此客户端的手柄驱动和云手机的手柄驱动不能直接交互。本公开的实施例中,通过服务器侧的手柄驱动模块,以网络通讯的模式把客户端、云手机这两端串联起来。
上述实施例中描述了手柄输入的情况下,服务器侧模拟手柄输入的方法。在某些实施例中,在终端不连接手柄的情况下,通过终端直接操控云手机,可以使用之前通用的方法,即,通过映射触控坐标来实现。
上述实施例中,用户侧手柄的操作会直接在云设备侧映射成真实的手柄事件。等效于云设备侧“外接”了一个真实手柄。例如,用户按下手柄上的“X”键,这个指令通过网络传输到云设备后,经过手柄驱动的处理,能够在服务器侧实现“X”键的按下操作。
通过上述实施例,提出了一种在服务器侧模拟终端手柄输入的方法。一方面,本公开的实施例可以显著降低应用开发者的工作量。另一方面,本公开的实施例能够确保手柄上部件输入的真实性,从而提高了通用性和可靠性。
图3示出了根据本公开的实施例的用于在服务器侧模拟终端手柄输入的装置的框图。如图3所示,装置300可以包括:输入消息接收模块310,被配置为从终端接收输入消息,其中输入消息包括指示与手柄被操作的部件相关的信息;手柄驱动消息生成模块320,被配置为基于指示与手柄被操作的部件相关的信息,利用手柄驱动程序生成手柄驱动消息,手柄驱动消息指示终端侧手柄的部件被操作的事件;以及手柄驱动消息发送模块330,被配置为发送手柄驱动消息,以请求执行与手柄被操作的部件对应的处理动作。
在某些实施例中,输入消息接收模块可以包括:数据包接收模块,被配置为从终端接收网络数据包形式的输入消息;以及处理模块,被配置为对网络数据包进行处理,以获取指示与手柄被操作的部件相关的信息。
在某些实施例中,指示与手柄被操作的部件相关的信息至少包括指示手柄被操作的部件的类型的数值。
在某些实施例中,指示与手柄被操作的部件相关的信息至少包括指示手柄被操作的部件的以下之一的数值:操作强度;操作速度;操作取向;操作频率;操作类型;以及操作持续时间。
在某些实施例中,手柄驱动程序被配置为在服务器侧实现对手柄的驱动,以使得手柄能够与服务器侧的应用进行交互。
在某些实施例中,手柄驱动程序可以是基于服务器侧的操作系统中的基于事件的接口而被生成的。
在某些实施例中,基于事件的接口可以是event节点,并且装置还可以包括:手柄驱动程序生成模块,被配置为:针对event节点,向服务器侧的操作系统注册与手柄的部件的操作相关的事件;以及初始化与手柄的部件的操作相关的事件,以生成手柄驱动程序。
在某些实施例中,手柄驱动消息生成模块可以包括:event节点写入模块,被配置为将指示与手柄被操作的部件相关的信息写入event节点;以及event节点消息生成模块,被配置为基于指示与手柄被操作的部件相关的信息被写入event节点,生成手柄驱动消息。
在某些实施例中,手柄驱动消息发送模块可以包括:通知模块,被配置为通过内核向服务器侧的应用发送手柄驱动消息,以通知在终端侧的手柄的部件被操作的事件。
通过上述实施例,提出了一种用于在服务器侧模拟终端手柄输入的装置。一方面,本公开实施例的用于在服务器侧模拟终端手柄输入的装置可以减少大量的应用开发者的工作量。另一方面,本公开实施例可确保手柄上部件输入的真实性,从而提高了通用性和可靠性。
为了更清晰地展示本公开的技术方案,下面将参照图描述根据本公开的其中一个具体实施方式。图4示出了根据本公开的另一实施例的手柄驱动消息生成模块框图。
如图4所示,在某些实施例中,手柄驱动消息生成模块320可以包括:网络接收模块420以及手柄驱动模块430。网络接收模块420接收来自终端的输入消息。在某些实施例中,所述输入消息是由客户端发起的关于手柄的操作部件(例如按键)的消息。该消息通常为tcp网络数据包的形式。在某些实施例中,tcp网络数据包的通常组包形式是按键类型+包体长度,按键类型通过自定义的枚举值进行转换,比如手柄A键用整形数1表示,则tcp网络数据包形式可以为:1+包体长度。网络接收模块420接收到网络数据包形式的消息后,对其进行处理,例如首先会进行解包操作,提取数据包里的信息,例如按键类型。
手柄驱动模块430接收来自网络接收模块420的消息,例如手柄按键消息。在某些实施例中,手柄驱动模块430接收的手柄按键消息被写入手柄驱动模块430中。在某些实施例中,手柄驱动模块430是基于event节点创建的。在此情况下,在接收到tcp网络数据包时,按照event节点的数据规范写入event节点。当event节点手柄驱动被写入具体的信息,例如按键信息后,event节点生成手柄驱动消息。所生成的手柄驱动消息可被发送给服务器侧的应用,例如云游戏。在某些实施例中,所生成的手柄驱动消息可以经由内核发送给服务器侧的应用,例如云游戏。
本公开的一些实施例中,来自终端的手柄相关的信息,传送到服务器或者说云手机上进行处理,通过网络接收模块420和手柄驱动模块430,形成了一个能实现终端与云手机交互手柄相关信息的系统。从而免去了繁杂的触摸映射过程,并提高了通用性和可靠性。
图5示出了根据本公开的另一实施例的云设备侧的示意性框图。如图5所示,在某些实施例中,云设备侧160包括手柄驱动消息生成模块320、内核530以及云游戏140。手柄驱动消息生成模块320基于指示与手柄被操作的部件相关的信息,生成手柄驱动消息。生成的手柄驱动消息被发送给内核530。在某些实施例中,内核530可以主动监听是否有手柄驱动消息产生。在监听到手柄驱动消息时,将其通知给云游戏。在某些实施例中,云游戏接收到通知消息,得知手柄驱动有按键事件发生,此时云游戏会做出对应的响应操作。在某些实施例中,该交互过程可依赖内核去实现。在图5所示的实施例中,通过内核在手柄驱动消息生成模块320与云游戏140之间架设了桥梁,在服务器侧实现了手柄按键操作。
图5所示的云设备侧框图只是本公开的一个示意性实施例,本公开并不限于上述实施例,而是可以有多种变化形式。例如,通过云游戏140直接监听来自手柄驱动消息生成模块320的手柄驱动消息。
图6示出了能够实施本公开的多个实施例的计算设备600的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口606也连接至总线604。
设备600中的多个部件连接至I/O接口606,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如过程200、300。例如,在一些实施例中,过程200、300可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM 603并由计算单元601执行时,可以执行上文描述的过程200、300的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行过程200、300。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (18)
1.一种在服务器侧模拟终端手柄输入的方法,包括:
从所述终端接收输入消息,其中所述输入消息包括指示与所述手柄被操作的部件相关的信息;
直接基于所述指示与所述手柄被操作的部件相关的信息,利用手柄驱动程序生成能够被服务器侧应用识别和解析的手柄驱动消息,所述手柄驱动消息指示所述终端侧所述手柄的所述部件被操作的事件;以及
发送所述手柄驱动消息,以请求执行与所述手柄被操作的部件对应的处理动作;
其中所述手柄驱动程序是基于所述服务器侧的操作系统中的基于事件的接口而被生成的,其中,所述基于事件的接口是由内核层创建的event节点;并且
所述手柄驱动程序位于所述服务器侧,并且模拟成与所述终端上的手柄驱动程序一致的手柄驱动节点。
2.根据权利要求1所述的方法,其中从所述终端接收输入消息包括:
从所述终端接收网络数据包形式的所述输入消息;以及
对所述网络数据包进行处理,以获取所述指示与所述手柄被操作的部件相关的信息。
3.根据权利要求1所述的方法,其中所述指示与所述手柄被操作的部件相关的信息至少包括指示所述手柄被操作的部件的类型的数值。
4.根据权利要求1所述的方法,其中所述指示与所述手柄被操作的部件相关的信息至少包括指示所述手柄被操作的部件的以下之一的数值:
操作强度;
操作速度;
操作取向;
操作频率;
操作类型;以及
操作持续时间。
5.根据权利要求1所述的方法,其中所述手柄驱动程序被配置为在所述服务器侧实现对所述手柄的驱动,以使得所述手柄能够与所述服务器侧的应用进行交互。
6.根据权利要求1所述的方法,其中,所述基于所述指示与所述手柄被操作的部件相关的信息,利用手柄驱动程序生成手柄驱动消息包括:
针对所述event节点,向所述服务器侧的所述操作系统注册与所述手柄的所述部件的操作相关的事件;以及
初始化所述与所述手柄的所述部件的操作相关的事件,以生成所述手柄驱动程序。
7.根据权利要求6所述的方法,其中基于所述指示与所述手柄被操作的部件相关的信息,利用手柄驱动程序生成手柄驱动消息包括:
将所述指示与所述手柄被操作的部件相关的信息写入所述event节点;以及
所述event节点基于所述指示与所述手柄被操作的部件相关的信息被写入所述event节点,生成手柄驱动消息。
8.根据权利要求1所述的方法,其中发送所述手柄驱动消息,以请求执行与所述手柄被操作的部件对应的处理动作包括:
通过内核向所述服务器侧的应用发送所述手柄驱动消息,以通知在所述终端侧的所述手柄的所述部件被操作的事件。
9.一种在服务器侧模拟终端手柄输入的装置,包括:
输入消息接收模块,被配置为从所述终端接收输入消息,其中所述输入消息包括指示与所述手柄被操作的部件相关的信息;
手柄驱动消息生成模块,被配置为直接基于所述指示与所述手柄被操作的部件相关的信息,利用手柄驱动程序生成能够被服务器侧应用识别和解析的手柄驱动消息,所述手柄驱动消息指示所述终端侧所述手柄的所述部件被操作的事件;以及
手柄驱动消息发送模块,被配置为发送所述手柄驱动消息,以请求执行与所述手柄被操作的部件对应的处理动作;
其中所述手柄驱动程序是基于所述服务器侧的操作系统中的基于事件的接口而被生成的,其中,所述基于事件的接口是由内核层创建的event节点;并且
所述手柄驱动程序位于所述服务器侧,并且模拟成与所述终端上的手柄驱动程序一致的手柄驱动节点。
10.根据权利要求9所述的装置,其中所述输入消息接收模块包括:
数据包接收模块,被配置为从所述终端接收网络数据包形式的所述输入消息;以及
处理模块,被配置为对所述网络数据包进行处理,以获取所述指示与所述手柄被操作的部件相关的信息。
11.根据权利要求9所述的装置,其中所述指示与所述手柄被操作的部件相关的信息至少包括指示所述手柄被操作的部件的类型的数值。
12.根据权利要求9所述的装置,其中所述指示与所述手柄被操作的部件相关的信息至少包括指示所述手柄被操作的部件的以下之一的数值:
操作强度;
操作速度;
操作取向;
操作频率;
操作类型;以及
操作持续时间。
13.根据权利要求9所述的装置,其中所述手柄驱动程序被配置为在所述服务器侧实现对所述手柄的驱动,以使得所述手柄能够与所述服务器侧的应用进行交互。
14.根据权利要求9所述的装置,其中所述装置还包括:
手柄驱动程序生成模块,被配置为:针对所述event节点,向所述服务器侧的所述操作系统注册与所述手柄的所述部件的操作相关的事件;以及初始化所述与所述手柄的所述部件的操作相关的事件,以生成所述手柄驱动程序。
15.根据权利要求14所述的装置,其中所述手柄驱动消息生成模块包括:
event节点写入模块,被配置为将所述指示与所述手柄被操作的部件相关的信息写入所述event节点;以及
event节点消息生成模块,被配置为基于所述指示与所述手柄被操作的部件相关的信息被写入所述event节点,生成所述手柄驱动消息。
16.根据权利要求9所述的装置,其中所述手柄驱动消息发送模块包括:
通知模块,被配置为通过内核向所述服务器侧的应用发送所述手柄驱动消息,以通知在所述终端侧的所述手柄的所述部件被操作的事件。
17.一种电子设备,所述电子设备包括:
一个或多个处理器;以及
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-8中任一项所述的方法。
18.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110806600.7A CN113407044B (zh) | 2021-07-16 | 2021-07-16 | 模拟终端手柄输入的方法、装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110806600.7A CN113407044B (zh) | 2021-07-16 | 2021-07-16 | 模拟终端手柄输入的方法、装置、设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113407044A CN113407044A (zh) | 2021-09-17 |
CN113407044B true CN113407044B (zh) | 2023-06-09 |
Family
ID=77686625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110806600.7A Active CN113407044B (zh) | 2021-07-16 | 2021-07-16 | 模拟终端手柄输入的方法、装置、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113407044B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114866542B (zh) * | 2022-04-20 | 2023-08-18 | 广东悦伍纪网络技术有限公司 | 一种在云手机上实现真机模拟的系统及方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571900B (zh) * | 2010-12-08 | 2015-01-14 | 中国电信股份有限公司 | 一种实现远端实时操控的系统和方法 |
CN103428174A (zh) * | 2012-05-17 | 2013-12-04 | 云联(北京)信息技术有限公司 | 一种基于云计算的互动体感游戏的实现方法 |
KR101431581B1 (ko) * | 2012-06-22 | 2014-09-23 | 성균관대학교산학협력단 | 모바일 단말기를 기반으로 한 가상 게임 컨트롤러 장치 및 이를 이용한 원격 컨트롤 시스템 |
CN102915117B (zh) * | 2012-10-30 | 2015-08-19 | 苏州运智互动科技有限公司 | Android系统即插即用体感手柄的实现方法 |
CN103316472B (zh) * | 2013-05-17 | 2015-12-23 | 南京睿悦信息技术有限公司 | 一种基于蓝牙手柄的Android设备游戏平台系统及其实现方法 |
CN107038024B (zh) * | 2016-02-04 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 一种操控配置方法及其设备 |
CN107239272B (zh) * | 2017-04-10 | 2020-09-29 | 成都长天信息技术有限公司 | 一种视频捕获设备重定向方法及装置 |
CN107846466B (zh) * | 2017-11-15 | 2020-04-07 | 中国联合网络通信集团有限公司 | 云终端外部设备的映射方法、服务器、云终端及系统 |
CN109395372B (zh) * | 2018-12-07 | 2021-02-26 | 上海达龙信息科技有限公司 | 实现游戏手柄远程操控电脑游戏的方法、系统与电子设备 |
CN111686442A (zh) * | 2020-05-08 | 2020-09-22 | 广州微算互联信息技术有限公司 | 一种基于手柄的云游戏控制方法、系统和存储介质 |
-
2021
- 2021-07-16 CN CN202110806600.7A patent/CN113407044B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113407044A (zh) | 2021-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11451619B2 (en) | App remote control method and related devices | |
EP3940580A1 (en) | Multi-modal pre-training model acquisition method and apparatus, electrnonic device and storage medium | |
CN116663569A (zh) | 构建特定于状态的多轮上下文语言理解系统的系统和方法 | |
CN113033703A (zh) | 量子神经网络训练方法及装置、电子设备和介质 | |
CN109032732B (zh) | 通知显示方法、装置、存储介质及电子设备 | |
US20230078410A1 (en) | Method and apparatus for testing network device | |
WO2023093016A1 (zh) | 云端代码开发系统、方法、装置、设备及存储介质 | |
CN113407044B (zh) | 模拟终端手柄输入的方法、装置、设备、存储介质 | |
CN107577542B (zh) | 日志信息上报方法、装置、存储介质及移动终端 | |
CN108733602B (zh) | 数据处理 | |
CN114417780B (zh) | 状态同步方法、装置、电子设备及存储介质 | |
WO2016019695A1 (zh) | 语音互动的方法及终端 | |
CN111813407B (zh) | 游戏开发方法、游戏运行方法、装置和电子设备 | |
CN112988289B (zh) | 调用接口的方法及系统 | |
CN106209601B (zh) | 状态更新消息的推送方法及装置 | |
CN114296838A (zh) | 车载多媒体应用管理方法及装置、电子设备和介质 | |
CN114518718A (zh) | 设备控制方法、装置、存储介质及电子设备 | |
CN113835816A (zh) | 一种虚拟机桌面显示方法、装置、设备及可读存储介质 | |
CN114116095B (zh) | 一种输入方法、装置、电子设备、介质及产品 | |
CN112559277A (zh) | 崩溃信息的处理方法、系统、车载设备、服务器、电子设备及存储介质 | |
CN115334159B (zh) | 处理流式数据的方法、装置、设备和介质 | |
EP4123523A1 (en) | Method and apparatus for sharing resource, method and apparatus for creating service, and electronic device | |
CN113836021B (zh) | 测试方法、装置、电子设备及介质 | |
CN114327059B (zh) | 手势处理方法、装置、设备以及存储介质 | |
CN118363753A (zh) | 应用于分布式系统的数据处理方法及装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |