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

Gameplay:您喜爱的游戏的触摸控件

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2014年1月17日

CPOL

8分钟阅读

viewsIcon

18074

对 Windows 8 游戏软件的概述,让游戏玩家可以使用并构建自己的触摸虚拟控制器,这些控制器叠加在现有的 PC 游戏之上。

引言

GestureWorks Gameplay 是一种革命性的与流行的 PC 游戏互动的新方式。用于 Windows 8 的 Gameplay 软件让游戏玩家可以使用并构建自己的触摸虚拟控制器,这些控制器叠加在现有的 PC 游戏之上。每个虚拟控制器叠加层都添加了按钮、手势和其他已映射到游戏能够理解的输入的控件。此外,游戏玩家可以使用数百种个性化手势在屏幕上进行互动。Ideum 与 Intel 的合作使他们能够获得技术和工程资源,从而实现了 Gameplay 中的触摸叠加层。

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

一切都围绕着虚拟控制器

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

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

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

图 2 - Gameplay 中的主屏幕

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

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

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

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

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

开发过程中解决的挑战

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

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 通过视觉叠加层和对其他交互(如手势、加速计和 2-1 转换)的支持,将触摸控制带入了您喜爱的游戏。在此项目中最有趣的是用户的反馈。人们对 PC 上的触摸游戏感到非常兴奋,并且很高兴他们现在可以玩许多以前享受过的触摸游戏。

关于 Erik

Erik Niemeyer 是 Intel 公司软件与解决方案部门的软件工程师。Erik 近十五年来一直致力于优化在 Intel 微处理器上运行的应用程序的性能。Erik 专注于新的 UI 开发和微架构调优。当 Erik 不工作时,他可能在某个山顶上。可以通过 erik.a.niemeyer@intel.com 联系 Erik。

关于 Chris

Chris Kirkpatrick 是 Intel 软件与服务部门的一名软件应用工程师,在视觉与交互计算工程团队中支持移动平台上的 Intel 图形解决方案。他拥有俄勒冈州立大学计算机科学学士学位。可以通过 chris.kirkpatrick@intel.com 联系 Chris。

资源

https://gameplay.gestureworks.com/

http://software.intel.com/en-us/articles/detecting-slateclamshell-mode-screen-orientation-in-convertible-pc

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

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

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

© . All rights reserved.