65.9K
CodeProject 正在变化。 阅读更多。
Home

Gameplay:您喜爱的游戏的触摸控件和二合一识别功能

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2014年3月25日

CPOL

10分钟阅读

viewsIcon

13312

Ideum 与英特尔的合作,使其能够利用英特尔的技术和工程资源,在 Gameplay 中实现触控覆盖和二合一设备感知功能。

引言

GestureWorks Gameplay 是一种革命性的与热门 PC 游戏互动的新方式。适用于 Windows 8 的 Gameplay 软件让游戏玩家可以使用并构建自己的虚拟控制器,用于 触控 操作,这些控制器会覆盖在现有的 PC 游戏之上。每个虚拟控制器覆盖层都添加了按钮、手势和其他控件,这些控件会被映射到游戏已支持的输入方式。此外,游戏玩家还可以使用数百种个性化手势在屏幕上进行互动。Ideum 与英特尔的合作,使其能够利用英特尔的技术和工程资源,在 Gameplay 中实现触控覆盖和 二合一 设备感知功能。

观看这段 一分钟视频,了解 Gameplay 的概念。

一切围绕虚拟控制器

与传统的游戏控制器不同,虚拟控制器可以完全自定义,游戏玩家甚至可以与朋友分享。Gameplay 可在 Windows 8 平板电脑超极本二合一笔记本电脑一体机,甚至 多点触控 平板电脑和大型触摸屏上运行。

图 1 - Gameplay 在英特尔 Atom 芯片平板电脑上的实际应用

“虚拟控制器是真的!Gameplay 扩展了数百款不支持触控的 PC 游戏,并使其可以在新一代便携式设备上玩,” GestureWorks Gameplay 的开发者 Ideum 的首席执行官 Jim Spadaccini 表示。“比物理控制器更好的是,Gameplay 的虚拟控制器是可自定义和可编辑的。我们迫不及待地想看到玩家用 Gameplay 创造出什么。”

图 2 - Gameplay 中的主屏幕

GestureWorks Gameplay 附带了适用于热门 Windows 游戏的几十个预制虚拟控制器(目前有超过 116 个独特的标题)。Gameplay 还允许用户配置、布局和自定义现有控制器。该软件还包括一个易于使用的拖放式创作工具,允许用户为 Steam 服务上分发的许多热门 Windows 游戏 构建自己的虚拟控制器。

图 3 - 虚拟控制器布局视图

用户可以将操纵杆、方向键、开关、滚轮和按钮放置在屏幕上的任何位置,更改大小、不透明度,并添加颜色和标签。用户还可以创建多个布局视图,随时在游戏中切换。这使得用户可以为游戏中的不同活动创建独特的视图,例如角色扮演游戏中的战斗与物品管理功能。

图 4 - 虚拟控制器全局手势视图

Gameplay 由 GestureWorks 手势处理引擎(也称为 GestureWorks Core)提供支持,支持超过 200 种全局手势。默认情况下支持点击、拖动、捏合/缩放和旋转等基本全局手势,但也可以进行自定义。这允许扩展覆盖式触控控制器,让游戏玩家能够使用多点触控手势,为 PC 游戏提供额外的控制。例如,某些战斗动作可以通过一个简单的手势而不是在 FPS 游戏中按下按钮来激活。Gameplay 甚至包括对加速计的实验性支持,因此您可以通过倾斜您的 Ultrabook™ 或平板电脑来在赛车游戏中进行转向,并且它还能检测到您何时将二合一设备切换到平板电脑模式以选择性地开启虚拟控制器覆盖。

开发过程中解决的挑战

开发所有这些酷炫的功能并非易事。为了将 Gameplay 的愿景变为现实,必须克服一些技术挑战。其中一些是通过传统的编程方法解决的,而另一些则需要更具创新性的解决方案。

二合一过渡支持

在 Gameplay 开发早期,我们决定为某些新型超极本提供的二合一过渡(从翻盖模式切换到平板模式)包含基本支持。最初的设想是像往常一样挂钩游戏,但在翻盖模式下启动时则不显示覆盖层。然后在游戏进行过程中,如果系统切换到平板模式,Gameplay 虚拟控制器覆盖层会立即出现,以允许仅触控的游戏控制。您可以在任何在支持二合一功能的超极本上运行的虚拟控制器上看到此功能。在虚拟控制器编辑模式下,只需在设置选项卡的实验部分启用二合一模式切换支持。

图 5 - 虚拟控制器设置视图

对于有兴趣了解更多有关检测二合一过渡的读者,在“参考”部分有一个优秀的指南,其中包含一个示例应用程序。

DLL 注入

DLL 注入是一种通过让外部动态链接库被加载来在另一个进程的地址空间内执行代码的方法。虽然 DLL 注入常被外部程序用于恶意目的,但它也有许多合法用途,包括扩展程序的功能,使其实现作者未曾预料或最初设计的功能。对于 Gameplay,我们需要一种方法将数据插入正在玩的游戏进程的输入线程,以便将触控输入转换为游戏能够识别的输入。在实现 DLL 注入的众多方法中,Ideum 选择使用 SetWindowsHookEx API 中的 Windows 挂钩调用。最终,Ideum 出于性能考虑,选择了进程特定的挂钩而非全局挂钩。

从第三方启动器启动游戏

探索了两种将挂钩连接到目标进程地址空间的方法。应用程序可以挂钩到正在运行的进程地址空间,或者应用程序可以将目标可执行文件作为子进程启动。这两种方法都是可行的;然而,在实践中,当应用程序是目标进程的父进程时,监控和拦截由目标进程创建的进程或线程要容易得多。

这对于应用程序客户端(如 Steam 和 UPlay)来说是个问题,这些客户端在用户登录时启动。Windows 并没有保证启动进程的顺序,Gameplay 进程必须在这些进程之前启动才能正确挂钩覆盖控件。Gameplay 通过在安装过程中安装一个轻量级的系统服务来解决这个问题,该服务会监控用户登录时的启动应用程序。当一个感兴趣的客户端应用程序启动时,Gameplay 就能以父进程的身份进行挂钩,从而确保覆盖控件按预期显示。

学到的教训

鼠标过滤

在开发过程中,我们发现一些游戏标题无法正确处理从触摸屏接收到的虚拟鼠标输入。这个问题主要出现在具有“鼠标视角”功能的第一人称射击游戏或角色扮演游戏中。问题在于,来自触摸板的鼠标输入相对于显示器上的一个点是绝对的,因此在游戏环境中也是如此。这使得触摸屏几乎无法用作“鼠标视角”设备。最终的解决方法是通过拦截游戏的输入线程来过滤鼠标输入。这使得 Gameplay 能够通过屏幕上的控件(如操纵杆)来模拟鼠标输入,以实现“鼠标视角”功能。花费了一些时间来调整操纵杆的响应速度和死区,使其感觉像鼠标,一旦完成,一切都运行得非常出色。您可以在《辐射:新维加斯》或《上古卷轴:天际》等游戏中看到这个修复效果。

筛选适合触控游戏的游戏

Ideum 花费了大量时间来优化虚拟控制器以实现最佳游戏体验。一款游戏是否适合 Gameplay 使用取决于多个因素。以下是一些为 Gameplay 游戏类型开发的通用指南:

按游戏类型划分的 Gameplay 可玩性
Good 更好 最佳
§ 角色扮演游戏 (RPG) § 模拟类 § 格斗类
§ 体育类 § 竞速类
§ 益智类
§ 实时战略 (RTS)
§ 第三人称射击类
§ 平台跳跃类
§ 横版卷轴类
§ 动作冒险类

虽然可玩性无疑是筛选 Gameplay 游戏的重要方面,但最关键的标准是稳定性。有些游戏根本无法与挂钩技术、输入注入或覆盖技术配合使用。这可能由多种原因引起,但最常见的原因是游戏本身会监控其内存空间或输入线程以检查是否有篡改。虽然 Gameplay 本身是一款完全合法的应用程序,但它采用了也可以被用于邪恶目的的技术,所以不幸的是,一些对这些技术敏感的游戏将永远无法使用,除非它们本身就支持触控。

用户反馈

尽管 Gameplay 1.0 尚处于早期发布阶段,但其在 PC 触控游戏方面已经收到了一些有趣的反馈。用户反馈已经出现了一些明显的趋势。从宏观层面来看,每个人普遍喜欢能够为游戏定制触控界面。其余的反馈则侧重于在几个关键领域个性化游戏体验:

  • 许多虚拟控制器对左撇子来说并不理想。这是对许多已发布的虚拟控制器进行的一次早期修改。
  • 按钮的大小和位置是最常见的修改,以至于 Ideum 正在考虑在未来的 Gameplay 版本中添加自动手部尺寸校准。
  • 许多用户更喜欢滚动式触控输入,而不是离散的触摸和释放交互。

随着用户创建的虚拟控制器数量的增加,我们预计将会有更多见解显现。

结论

GestureWorks Gameplay 通过结合视觉覆盖层以及对额外交互(如手势、加速计和二合一过渡)的支持,为您的喜爱的游戏带来了触控操作。这个项目中最有趣的部分是用户的反馈。人们对 PC 上的触控游戏感到非常兴奋,并对他们现在能够玩许多他们以前喜欢的游戏感到欣喜若狂。

资源

相关文章

如何编写支持二合一设备的应用程序》:http://software.intel.com/en-us/articles/how-to-write-a-2-in-1aware-application

《Krita Gemini 开发支持二合一设备的应用程序,并为笔记本电脑和平板电脑模式提供动态 UI》:http://software.intel.com/en-us/articles/krita-gemini-twice-as-nice-on-a-2-in-1

《检测二合一设备中的二合一转换事件和屏幕方向》:http://software.intel.com/en-us/articles/detecting-slateclamshell-mode-screen-orientation-in-convertible-pc

注意事项

本文档中的信息是根据英特尔产品提供的。本文档不授予任何明示或暗示的、禁止反言的或其他形式的知识产权许可。除英特尔产品销售条款和条件另有规定外,英特尔不承担任何责任,并免除任何有关英特尔产品销售和/或使用的明示或暗示的保证,包括对特定用途的适用性、适销性或对任何专利、版权或其他知识产权的侵权方面的保证。

除非 Intel 书面同意,否则 Intel 产品不设计也不用于任何可能导致人员伤亡的应用程序。

英特尔可随时更改规格和产品说明,恕不另行通知。设计人员不得依赖标有“保留”或“未定义”的任何功能或说明的可用性或特性。英特尔将其保留以备将来定义,并且对因将来对其进行的更改而引起的任何冲突或不兼容性不承担任何责任。此处的信息如有更改,恕不另行通知。请勿基于此信息最终确定设计。

本文档中描述的产品可能存在设计缺陷或错误,称为“勘误”,这可能导致产品偏离发布的规格。当前已勘误的产品信息可应要求提供。

请联系您当地的英特尔销售办事处或您的经销商以获取最新的规范,并在下订单前进行咨询。

可通过致电 1-800-548-4725 或访问:http://www.intel.com/design/literature.htm 获取本文档或英特尔其他文献中引用的、带有订单号的文档副本。

性能测试中使用的软件和工作负载可能已针对仅在英特尔微处理器上运行的性能进行了优化。SYSmark* 和 MobileMark* 等性能测试是使用特定的计算机系统、组件、软件、操作和功能测量的。任何这些因素的任何更改都可能导致结果有所不同。您应咨询其他信息和性能测试,以帮助您全面评估您打算购买的产品,包括该产品与其他产品结合使用时的性能。

本文档中重印的任何软件源代码均根据软件许可证提供,并且只能根据该许可证的条款使用或复制。

Intel、Intel 徽标和 Ultrabook 是 Intel Corporation 在美国和/或其他国家/地区的商标。

版权 ©2014 英特尔公司。保留所有权利。

*其他名称和品牌可能被声明为他人的财产。

© . All rights reserved.