创造《I expect you to die》中的超级间谍——一款益智解谜游戏的VR体验制作经验分享
图1
《I expect youto die》(以下简称IEYTD)是一款逃出密室风格的益智解谜游戏。在游戏中,玩家将扮演一个具有隔空取物能力的超级间谍。本文将着重介绍开发团队如何解决开发这款游戏的VR版时遇到的关键问题,从而为玩家创造一个独特而有沉浸感的间谍世界。
间谍的手
自我们发布IEYTD的Oculus版样片后,游戏最大的变动就是玩家所扮演的间谍的手的操作整合。这款游戏一开始是只能用鼠标操作的,这种操作方法现在也支持,而且我们仍然为这种鼠标操作方法感到满意。然而,当我们拿到第一件Oculus Touch设备(即Oculus的动作捕捉手柄),且做了一些早期原型后,我们坚信,这才是游戏应该有的操作方式。这能让玩家在游戏时觉得自己更了不起,更有存在感。
图2
从鼠标到手的过渡
IEYTD的核心玩法是,玩家在游戏场景中与物品互动,以解开谜题。使用鼠标操作时,玩家要不断发动隔空取物能力,即用光标对准物品然后使用。这种模式允许玩家与离自己较远的物品产生互动。当我们把操作设备从鼠标变成VR时,我们并不希望去掉这个能力,但与此同时,我们希望玩家能享受到使用VR设备在游戏中抓取物品的乐趣。为此,我们设计了两种动手模式:近距模式和隔空模式。
近距模式
在游戏中能够使用虚拟双手抓取物品是一种非常爽快的体验,而支持这种操作对实现IEYTD的核心玩法是至关重要的。在游戏中,玩家的虚拟双手是用一双间谍手套来表示,它可以通过动画展现多种手部动作。在这个模式下,当玩家抓取一个物品时,手套会完全消失。我们这么设计是有原因的。第一个显而易见的原因是,视野。在IEYTD中,玩家可以抓取和操作的东西有非常多种。为每一种东西的抓取都做一套动画是不现实的。第二个原因是,每个人抓取东西的方式和使用东西的情境会有所不同。
图3
图4
图5
当玩家的手在游戏场景中探索时,可抓取的物品会被高亮显示。如图5所示,我们打算借助触发区域和从玩家头部到手部的射线来实现。前者记录了一系列可抓取的候选物品,后者帮助选择最靠近玩家头部的物品。在这里我们所做的假设是,离玩家头部最接近的可抓取候选物品是最有可能被抓取的。
隔空模式
为了使玩家能够抓取和使用不在他们的双手可及范围内的物品,我们开发了这个隔空模式,它不仅使游戏中的谜题更加灵活,使游戏环境更加丰富多变,也强化了超级间谍这一游戏主题,因为它增加了额外的“类间谍”元素。
图6
图7
对于隔空模式,我们的目标是把基于鼠标操作的光标变成双手。为了达到这个目标,我们给各个手都关联一个光标和指派一个向前向量。这样,光标就出现在3D空间中,这个向量使用射线而不是关卡的碰撞物理。这个方法在大部分情况下都有效,但还是导致了一些意想不到的后果。
第一个后果是,光标移动频繁。因为光标是跟双手关联的,所以双手只要稍微移动,光标也会跟着移动。当距离比较远时,小小的移动会被放大,使玩家更难准确地瞄准远处的物品。为了解决这个问题,我们在原来使用衰减曲线的光标后增加了一个“平滑后的光标”。平滑量与原来的光标位移成反比。结果是,光标小小的位移可以被消除,而大的位移会被瞬间修正。
第二个问题是因光标在游戏中的渲染方式导致的。为了避免剪切问题和给光标带来2D的感觉,我们把它放在最上层渲染。虽然当光标与头部关联时这个办法有效,但与手部关联就不是这么回事了。玩家对光标位置的感知会大受影响。如图8所示,当物品在玩家视线内处于不同距离的位置时,这个问题最为明显。对于玩家,光标应该出现在玩家所看到的最近的物品的上面,而事实上它却出现在另一个物品上面。这个误差会让玩家困惑,为什么不能抓取自己所瞄准的物品。为了解决这个问题,我们想出的办法是,当检测到可操作物品时,就做一个从头部到光标的射线。如果射线检测到物品,光标就会迅速出现在它前面。
图8
手部碰撞模型
从游戏物理的角度看,VR中的手遇到的一个巨大挑战是如何与游戏世界交互。考虑到虚拟双手,游戏中的物理只能说是现实世界的物理的近似模仿,并没有受到真实的物理学限制,所以常常会发生可怕或可笑的事。手部碰撞模型由两个部分组成:手部物理和持物物理。
手部物理
在IEYTD中,手是没有碰撞体的,只有一个抓取物品的触发区域。玩家可以直接把虚拟手穿过障碍物。当这种情况发生时,我们曾一度考虑做些视觉上的反馈,但最终没有做,因为我们觉得那样反而会提醒玩家注意到他们的手穿过障碍物了。另外,我们并不希望玩家能够把物品猛地推出封闭的容器之外,特别是那些对于解决谜题很重要的隐藏物品。
持物物理
图9
决定被玩家抓取的物品的物理行为是个有趣的问题。我们的第一个迭代模型是,玩家所持物品会与环境发生作用,当碰撞值超过某个临界值时,物品会从玩家的手中掉落。一开始,这个办法看起来还挺管用,但随着关卡和交互作用变得越来越复杂,它就不管用了。游戏中经常会有装着满满的现金、雪茄和手榴弹的盒子。当玩家抓取这些物品,特别是速度很快时,狭小的空间会导致物理系统不断地试图解决穿透问题,从而导致严重的物理系统故障。通常,这种穿透会导致碰撞值超过物品掉出的临界值,进而导致物品意外地从玩家手中掉出。对于解谜游戏来说,这是十分令人沮丧的硬伤。
我们的第二个解决办法是,当物品被手抓取时就关闭碰撞。早期测试显示效果不错,因为看不到手从封闭盒子中抓取物品时的物理故障了。但是,随之而来的问题是,玩家现在可以把物品穿透障碍物,当松手时,物品会掉到意料之外的地方,因为物理系统要解决穿透的问题。然而,在我们的游戏测试中,这种现象并不常发生,且就算发生了大部分时候玩家并没有注意到。
对于这个方法我们还有一个地方需要改进。既然当玩家抓取一个物品时,碰撞体就会被关闭,那么碰撞体就检测不到碰撞了。这样一来,玩家就失去破坏物品的能力了。这个改变会产生两个后果,第一是会影响我们的游戏玩法,毕竟破坏物品是一个重要的解谜机制; 第二是不能实施破坏物品的动作会打断玩家的沉浸感。为了解决这个问题,我们的办法是,根据手的速度来决定碰撞体的开启和关闭。也就是,当玩家快速移动物品时,碰撞体会被短暂开启,使物品能够暂时发出和接收碰撞事件。这个办法很管用,因为它符合玩家破坏物品时的直接反应。
图10
另外,当处于隔空模式时,被抓取的物品的碰撞体永远不会被关闭。我们对此做过实验,隔空模式下的物品穿过障碍物时如果没有遇到阻力,就会让人觉得相当不自然,且还还有更大可能使物品掉进障碍物里。
间谍的耳朵
听觉在良好的VR体验里发挥着重要作用。IEYTD从根本上说是一款益智解谜游戏,但也是一款物理沙盒游戏。玩家能够堆叠、投掷、破坏和射击物品。因此,物品与环境的交互是非常频繁的,所以产生令人信服的碰撞声音是很重要的。
图11
为了达到良好的声音交互效果,我们设计了一个允许我们把环境碰撞体设定为软、硬、玻璃和金属四种表面的系统。如图11所示,在小车关卡中,车内不同物品的表面用不同颜色表示。音效设计师首先为每一种表面和每一种玩家能够抓取的物品都制作两种碰撞声音(正常的和沉重的),然后就是根据物品碰撞的速度调整两种声音的音量,最后同时播放。我们最初的测试效果不错,除去一些额外的调整,我们得到了一个能够根据物品表面产生逼真的碰撞声音的系统。这个系统的工作方法如图12所示。
图12
间谍的错误
隐藏域
如前文所述,IEYTD也是一款物理沙盒游戏。它允许玩家一边解决谜题一边享受与物品互动的乐趣。我们喜欢这个设定,但也付出了代价——玩家很容易失去解谜所需的关键物品,导致游戏变味。
图13
图14
我们打算用游戏以前就有的技术来解决这个问题,也就是隐藏物品上有一个X射线着色器。一开始,我们担心这会破坏玩家的沉浸感,但又想到玩家扮演的是一个具有隔空取物能力的超级间谍,那么有一双发X射线的双眼也不算太扯。我们并不打算让所有隐藏物品都使用X射线着色器,因为这会影响因谜题而需隐藏的物品。相反地,我们设计了一个允许我们定义玩家不可及范围的近似区域的系统。我们的方法是,使用触发器并将其命名为隐藏域。当一个物品落入这个区域,X射线着色器就会适用于它,从而使玩家能够穿透障碍物看到它。
接着,我们需要一个使玩家能够与隐藏域之内的物品交互的方式。为此,我们将物品放进一个单独的物理层,以便于我们创造一个针对层的射线来检测和给物品排优先顺序。通过这个方式,玩家就能够穿过障碍物抓取物品了。
盲眼域
顾名思义,这个域的唯一目的就是,当玩家进入一个非解谜区域或没什么物品的区域时,就关闭玩家视野。它其实就是一个放置在关卡某些区域的触发器。当玩家进入这些区域时,触发器会默认将画面变成黑屏。在其他情况时,设置一个当玩家退出时使屏幕转黑的盲眼域也更加方便。
图15
隔间盖
在IEYTD中,有许多包含玩家能够抓取物品的存物隔间。为了防止玩家不打开隔间的门或盖子就拿东西,我们在特定的物理层上放置了盖子碰撞体。当射线接触到这个层时,就检测是否碰到碰撞体,如果是,就推断玩家正试图不开盖就抓取里面的物品。当这种情况发生时,我们就简单地禁用玩家抓取物品的能力。
图16
VR的力量
开发IEYTD是一段充满挑战和成就感的经历。本文所提到的技术是不断测试和迭代以及在VR社区学习的成果。VR是强大的媒体,使我们开发者找到吸引玩家的全新的且激动人心的方式。能够将其运用到我们所创造的游戏世界中,真是太好了。在此希望IEYTD能够帮助玩家更加接近成为一个职业间谍的梦想。
图17
翻译自:</http://www.gamasutra.com/blogs/JohnKolencheryl/20161213/287450/Engineering_a_Super_Spy_in_I_Expect_You_To_Die.php>; 已获得作者翻译授权。