Gameplay: 触摸控制您最热衷的游戏

下载原文

Download Gameplay: Touch controls and 2-in-1 awareness for your favorite games [PDF 904KB]

GestureWorks Gameplay 是实现与流行电脑游戏互动的革命性新方法。 Windows 8 Gameplay 软件可让游戏玩家使用和创建他们自己的触摸虚拟控制器,覆盖于现有电脑游戏之上。 每一虚拟控制器覆盖添加了按钮、手势和其他控制,可映射为游戏已理解的输入。 另外,玩家可使用上百种个性化手势在屏幕上互动。 Ideum 与英特尔的合作让他们可访问技术与工程资源,在 Gameplay 中实现触摸覆盖。

观看 1 分钟视频,了解 Gameplay 概念。

虚拟控制器

与传统游戏控制器不同,虚拟控制器可完全定制,玩家还能与朋友分享其虚拟控制器。 Gameplay 可在 Windows 8 平板电脑超极本二合一电脑一体机,甚至迷你触控本和大型触摸屏上运行。


图 1 - Gameplay 运行于基于英特尔凌动处理器的平板电脑中

Ideum 首席执行官和 GestureWorks Gameplay 制作者 Jim Spadaccini 表示:“虚拟控制器是真实的! Gameplay 扩展了上百种无法触摸的电脑游戏,使它们可以在全新一代便携式设备上运行。 相比物理控制器,Gameplay 的虚拟控制器更好,可支持定制和编辑。 我们迫不及待想看玩家如何使用 Gameplay 大展拳脚。”


图 2 - Gameplay 主屏幕

面向流行 Windows 游戏的几十种预建虚拟控制器都带有 GestureWorks Gameplay (现有超过 116 款)。 Gameplay 让用户不仅可以配置、布局,还能定制现有控制器。 该软件还包括易于使用的拖放编辑工具,支持用户为分布在 Steam 服务上的众多基于 Windows 的流行游戏创建虚拟控制器。


图 3 - 虚拟控制器布局图

用户可将操纵杆、 D-pad、交换器、滚轮和按钮置于屏幕任一位置,变换大小和暗度,还可添加颜色和标签。 而且,用户还可创建多个布局图,随时在游戏中切换。 这一功能支持用户根据不同游戏活动创建独特的视图,例如角色扮演游戏中的格斗与物件管理功能。


图 4 - 虚拟控制器布局图

借助 GestureWorks 手势处理引擎(又名 GestureWorks Core),Gameplay 可为超过 200 种世界通用手势提供支持。 基本世界通用手势(例如轻叩、拖、收缩/缩放,以及旋转)都是默认支持,也可定制。 这支持了覆盖触摸控制器的扩展,允许玩家访问多点触摸手势,为电脑游戏提供额外控制。 例如,在第一人称设计游戏中,简单的手势与按钮就可激活某些打斗招式。 Gameplay 甚至还包括试验性的加速器支持,这样您可倾斜您的超极本本™或平板电脑操纵竞速游戏的方向。当您将二合一设备切换至平板模式时,它可检测到这一变化,视需要打开虚拟控制器覆盖。

开发过程中克服的挑战

开发这种酷劲十足的产品并不容易,为了让 Gameplay 成为现实,需克服几个技术挑战。 有些挑战运用传统编程方法就可攻破,而有些挑战则需要更具创意的解决方案。

2 合 1 转换支持

Gameplay 开发早期,我们决定在一些新超极本上加入对于 2 合 1 转换(从翻盖模式到平板电脑模式)的基本支持。开发愿景为将这一支持如同正常开发工作一样,加入游戏之中,当游戏在翻盖模式下启动时,不显示覆盖层。游戏运行期间,如果系统转换至平板电脑模式,Gameplay 虚拟控制器覆盖层将会立即出现,支持通过触控进行游戏控制。您可在运行于支持 2 合 1 模式的任意超极本的虚拟控制器中看到这一功能。要激活此类支持,请在虚拟控制器编辑模式下,在设置选项卡的体验部分,启用 2 合 1 模式转换支持。Gameplay 开发早期,我们决定在一些新超极本上加入对于 2 合 1 转换(从翻盖模式到平板电脑模式)的基本支持。开发愿景为将这一支持如同正常开发工作一样,加入游戏之中,当游戏在翻盖模式下启动时,不显示覆盖层。游戏运行期间,如果系统转换至平板电脑模式,Gameplay 虚拟控制器覆盖层将会立即出现,支持通过触控进行游戏控制。您可在运行于支持 2 合 1 模式的任意超极本的虚拟控制器中看到这一功能。要激活此类支持,请在虚拟控制器编辑模式下,在设置选项卡的体验部分,启用 2 合 1 模式转换支持。


5虚拟控制器设置视图

.如欲了解关于如何检测 2 合 1 转换的更多信息,参考部分列出的示例应用可为您提供详尽指导。

DLL 注入

DLL 注入是一种通过加载外部动态链接库在另一程序的地址空间内执行代码的方法。 虽然 DLL 注入经常被外部程序用于不法企图,不过也有一些合法使用,包括以并非其作者最初预料或计划的方式扩展程序行为。 对于 Gameplay,我们需要一种方法将数据插入所玩程序(游戏)的输入线程中,以便触动输入可被转换成游戏理解的输入。 从大量 DLL 注入实施方法中, Ideum 选择使用 SetWindowsHookEx API 中的 Windows 挂钩呼叫。 最终,Ideum 从性能出发选择了进程特定挂钩而非全局挂钩。

从第三方启动器启动游戏

Ideum 探索了两种挂钩进入目标进程地址空间的方法。 应用可挂钩入正运行进程的地址空间,也可作为子进程启动目标可执行文件。 两种方法都没问题;然而,在实践中,当应用为目标进程的母程序时,监控和拦截目标进程创建的进程或线程则会容易得多。

这对用户登录时启动的应用客户端(例如 Steam 和 UPlay)造成问题,因为 Windows 不为启动进程提供保证次序, Gameplay 进程必须在这些进程前启动以正确钩入覆盖控制。 Gameplay 通过在安装时安装一项轻量级系统服务解决了这一问题,该服务可监控用户登录时的启动应用。当某一相关客户端应用启动时,Gameplay 可作为母程序钩入这一进程,确保覆盖控制如期显示。

经验总结

鼠标过滤

在开发过程中,发现一些游戏错误地处理触摸屏传来的虚拟鼠标输入。 这一问题在有着“鼠标外形”特征的第一人称射击游戏和角色扮演游戏中表现尤为突出。 该问题表现为从触控面板传来的鼠标输入对于显示屏上的一个点(因此在游戏环境中)不可覆盖。 这使得触摸屏就像“鼠标外形”设备一样几乎没有用。 最终解决方法就是拦截游戏的输入线程,过滤鼠标输入。 这一方法支持 Gameplay 通过屏幕上控制(例如面向“鼠标外形”功能的操纵杆)模仿鼠标输入。 尽管需要一段时间调试操纵杆反应性和盲区,感觉像鼠标一样,但一旦完成调试后,一切就变得完美了。 您可在 Fallout:新维加斯和上古卷轴:天际等游戏中 看到这种方法 的应用。

触控游戏适用评估

Ideum 花费了大量时间调整虚拟控制器以实现最佳的游戏设置。 游戏的几大元素决定了 Gameplay 的使用舒适度。 以下是几项通用指南,便于您了解哪些游戏与 Gameplay 的搭配最完美:

  • 不同游戏的 Gameplay 舒适性

更好

最好

  • 角色扮演游戏(RPG)
  • 模拟
  • 打斗
  • 体育
  • 竞赛
  • 拼图
  • 即时战略(RTS)
  • 第三人称射击
  • 平台游戏
  • Side Scrollers
  • 动作和冒险

尽管舒适度是评估 Gameplay 适用性的一个重要方面,最重要的判定标准还是稳定性。 有些游戏在采用挂钩技术、输入注入或覆盖技术后将无法运行。 导致这种情况的原因有多个,最常见的原因是游戏自行监测内存空间或输入线程以检查篡改。 虽然 Gameplay 本身是完全合法的应用,但采用了一些也可被坏人利用的技术,所以很不幸,有些游戏对这些技术非常敏感,除非本身支持触控,否则根本无法运行。

用户反馈

尽管处于开发初期,Gameplay 1.0 还是获得了关于在电脑上玩触控游戏的一些有趣的用户反馈。 收到的用户反馈明显表达出了一些倾向。 总体来看,很明显,人们普遍希望能够为游戏定制触摸界面。 其他的反馈则主要集中在以下方面的个性化游戏体验:

  • 许多虚拟控制器不适合左撇子,用户在上手后很快就会在控制器中改过来。
  • 按钮大小和位置更改为最常见功能,所以 Ideum 正考虑在未来版本 Gameplay 中添加自动手掌大小调节功能。
  • 许多用户喜欢滚动触摸输入,而非不连续的触摸和释放交互。

随着创建虚拟控制器的用户不断增多,我们期待更多的反馈。

结论

GestureWorks Gameplay 为你最热衷的游戏提供触摸控制。 这通过融合虚拟覆盖和额外交互支持(例如手势、加速器和 2-1转换)得以实现。 该项目实施过程中最有趣的部分就是用户反馈。 人们非常兴奋能在电脑上玩触摸式游戏,也非常开心能够继续享受许多以前以触摸形式玩的游戏。

About the Authors

Erik Niemeyer 现任英特尔公司软件与解决方案事业部的软件工程师。 过去 15 年来,Erik 一直致力于在英特尔微处理器上运行的应用的性能优化, 专攻全新 UI 开发和微架构调试。 业余时间里,Erik 喜欢爬山。 您可以发送电子邮件至 erik.a.niemeyer@intel.com 

Chris Kirkpatrick 是英特尔软件与服务事业部的一名软件应用工程师,隶属虚拟与交互式计算工程小组,负责为移动平台上的英特尔图形解决方案提供支持。 他拥有俄勒冈州立大学计算机科学学士学位。 您可以发送电子邮件至chris.kirkpatrick@intel.com 

资源

https://gameplay.gestureworks.com/

Related Articles

How to Write a 2-In-1 Aware Application: /en-us/articles/how-to-write-a-2-in-1aware-application
Krita Gemini Development of a 2-In-1 Aware Application with Dynamic UI for Laptop and Tablet Modes: /en-us/articles/krita-gemini-twice-as-nice-on-a-2-in-1
Detecting 2 in 1 Conversion Events & Screen Orientation in a 2 in 1 Device: /en-us/articles/detecting-slateclamshell-mode-screen-orientation-in-convertible-pc