Corey Warning 和 Will Lewis 是俄勒冈波特兰市的一家独立游戏工作室 Rose City Games* 的联合创始人。
Rose City Games 最近获得了一笔用于创建 VR 背包早期创新项目的开发补贴和设备预算。面临的挑战是想出一个只能在无线 VR 设置下实现的创意。在本文中,您将了解如何关于项目的设想和设计,我们所学到的知识,以及我们对未来的期望。以下视频详细介绍了这一项目。
项目灵感:一扇门
今年年初,我们的团队参加了俄勒冈波特兰市的 Resident Evil Escape Room我们是该游戏的忠实粉丝,通过全新的媒介体验这一游戏世界令人非常兴奋。此外,通过这一体验我们思考了还有哪些其他的体验能够以类似的方式进行跨越。
当时,我们尝试了所有能够动手实施的 VR 体验。当我们听说有机会尝试无线 VR 体验,我们就知道一定会发生有趣的事情。
目前,我们和从事各种 VR 项目的朋友在共同办公空间之外工作。WILD组员曾经尝试过将真实空间和 VR 相融合,所以我问 Gabe Paez是否记得当时项目进行过程中所遇到的具体挑战。他回答说是“门”,然后我决定继续创建“VR Escape Room”体验,其核心概念是穿过一扇门!
概述
项目范围是使用 MSI* One VR 背包创建 VR 应用概念验证。我们尝试创建一种只能使用硬件(具体来说是无线设置)实现的独特体验。
我们知道这一项目需要有一个装置,因此我们不考虑使用面向大众市场的产品。它可能是用于参加比如 GDC Alt.Ctrl、Unite*、VR La等展览的有趣内容。
一门游戏概念
玩家将身处完全虚拟的空间中,与一扇实实在在的门进行交互。他们要背上 MSI VR One* 背包,并佩戴一个 HTC VIVE* 控制器和一个 VIVE 头盔。玩家必须在每一个关卡中完成一个简单的谜题或动作。完成后,玩家将能够打开门,跨过门槛进入下一关。这时他们面对是一个新的谜题或动作,游戏就是以这种方式向前推进。
图 1.一扇门概念验证设置
玩家可以随时打开门。但如果没有完成谜题或动作,另一端将显示同样的关卡/门。我们考虑使用 VIVE 跟踪来处理实际的门,这样我们就能轻松跟踪和校准玩家需要抓取的位置。
图 2.一扇门前视图
图 3.一扇门顶部视图
安装细节
- 这扇门必须非常轻。
- 支撑梁必须确保门不会倒向墙。
- 底座位置的沙袋非常重要。
- 应使用支架或类似工具,方便快速安装和拆卸,确保每次不会破坏整体性。
- VIVE 灯塔的设置必须高于墙壁,以便捕捉整个游戏区域。
- 需要质量优良的架子和较多沙袋。
- 支撑梁/灯塔周围可能需要摆放比如豆袋椅,以确保人不会绊到这些东西。
- 另外一个注意事项是必须安排人随时看着这一装置。
图 4.灯塔内的一门场地设置
我们的增建设施
- 带有门把手和底座的移动门
- MSI VR One 背包和用于开发的站外计算机
- 其他必需的 DisplayPort-to-HDMI 线缆
- 鼠标/键盘/显示器
- OBS,用于捕捉视频
- 2 个灯塔
- 架子
- 可调节抓爪,以将灯塔指向任意角度
- 成对角线放置在门的两边
- 1 个 VIVE 跟踪器
- Gaffe 胶带,将跟踪器贴在门上,留出充电端口
- 延伸线缆和充电线缆连接至跟踪器,以便充电
- 2 个 VIVE 控制器
- 我们用不到这两个控制器,但显示手部位置有利于录制视频
- iPhone*,用于捕捉真实世界视频
图 5.门上贴有 VIVE*
这个项目是一次很好的 VR 开发培训。我们第一次使用 VIVE,并实施了其他物理增建设施来打造全新的交互式体验,是一次重要的学习过程。我认为我们遇到的大多数难题和所有 VR 开发人员所遇到的一样,但当然我们也给自己提出了许多独特的挑战,现在非常高兴有过这次体验。强烈建议 VR 开发人员在第一次独立开发项目之前,认真探讨以下主题,并学习我们的假设和过程。
首次使用 HTC VIVE*
我们经常用 VIVE 玩游戏,但却是第一次用它来开发项目。设置通用开发人员环境和 Unity* 插件并不费时间,但我们必须从战略上思考如何开发和测试更无缝地通过那个点。通常,在现场安排两个人可帮助我们节省大量的时间:一个人负责 Unity,另一个人移动控制器和跟踪器、重新调节灯塔、调节房间规模,就像人的第二双眼睛。
图 6.一门 VR 开发和测试
关于具体硬件以及需要使用物理道具的项目,我们反复进行了设计,以便灯塔能够跟踪到设备,甚至在连接显示器方面遇到了一些麻烦。由于 MSI VR One 背包只有一个 HDMI 输出和一个 DisplayPort 输入,我们必须借用(后来购买了)DisplayPort-to-HDMI 转换器,以便同时开发应用和使用 VIVE 头盔。幸运的是,这并没有过多地延缓开发进程,而且比最开始的解决方法还要好,我们之前将 HDMI 输出连接至已有的 HDMI 交换机,在显示器/设备环境和头盔之间切换。如果在开发过程中继续使用这种解决方案是非常不切实际的,一定会浪费大量时间。
我们在这次项目开发过程中获得了很多全新的体验,比如能够在家里使用 Unity 的协作功能远程工作,探索无线 VR 体验的精妙之处,以及熟悉以多快的速度启动 VR 项目。
预算
除了测试新设备和搭建物理增建设施,预算是我们不得不解决的另一个挑战。专项资金无法完全覆盖英特尔提供的设备推荐列表,因此我们只能挑选用于项目的最小数量的设备,然后考虑剩余的款项如何满足经验丰富的开发人员所投入的时间。幸运的是,由于我们与当地游戏开发人员社区的密切关系,一位有兴趣试验这种项目的朋友与我们合作开发这一项目。如果我们从头开始这个项目,我们一定提高预算,因为我们要在最低要求中考虑使用至少两台以上的跟踪器、转换器线缆、用于灯塔架顶端的可调节接头以及其他设备,以通过更完美的产品在紧迫的时间期限内完成这一项目。
位置和空间
从消费者的角度来看,我们知道对许多消费者来说,房间规模的 VR 是不现实的,而且在我们进行项目规划和实施的过程中,仍然遇到了一些问题。如果其他开发人员开发房间规模 VR,我们强烈建议提前购买卷尺,并确保有单独用于该项目的空间,保证开发的完整性。我们与其他 20 位当地的 VR 开发人员、美术师、游戏开发人员和网站设计师共用一个共同办公空间,因此每次开发会议结束之后需要将增建设施推至房间一侧,这样增加了整体的设置时间。的确我们练习了如何设置,也提高了我们对设备的熟悉程度,但同时也揭示了一个有趣的现象,那就是我们无法从家里进行这项工作!
独特的增建设施
由于项目涉及道具(一扇全尺寸树立的门),我们必须充分考虑如何移动、保存以及它对灯塔的遮挡。我们考虑进入原型之后的下一阶段时,更多的问题浮现出来。考虑如何让这一项目在今后继续发挥作用,比如用作技术演示、节日/博物馆装置或 resume piece,我们还必须考虑,除了我们自己和直接赞助方外,我们需要向更多人展示这一项目。这样出现了另一个需要考虑的因素:安全性。我们肯定会走捷径快速构建一个功能性原型,但考虑到改进和运输就绪性,我们绝对建议花费更多的时间和资源为不熟悉 VR 的人打造更加安全的体验。
因为我们构建过原型,因此能够记住抬脚不被绊倒,慢慢向前移动避免撞到门上,并且能够毫不费力地找到门把手。我们的成果看用作优秀的技术演示,但考虑到作为可供消费的公共产品或体验之前,我们肯定会用不同的方式处理门道具。为了让运输更方便,我们还用不同的方式建造门,以便在运输过程中拆卸。
展望未来
我们坚信,我们的项目能够作为技术演示,展示如何轻松、有趣、自由地使用 MSI VR One 背包。而且对于在这一过程中所学到的知识和最后的成果,我们感到非常自豪和高兴。因此我们想继续实施简单谜题、美术、画外音和可访问性特性,以便将该项目更完美地呈现出来。经过其他的测试和改进,我们想对原型货比三家、寻找与内容和 IP、VR 技术、交互装置相关的赞助商或展会,以便与广大受众一起分享这一项目!英特尔是此次合作的首选,我们希望在新一轮演示之后继续跟进。
非常感谢让我们参与其中!
代码示例 (Unity)
使用与门一般大小的外设时,关于灯塔和跟踪器设置 — 尤其是跟踪器,房间的设计必须恰到好处,我们将跟踪器粘在门上以随时测量方位,这样有利于我们分辨门是否关闭或打开。我们编写了一个简单的设置脚本,以定位门、门框和门支架/稳定器。
Setup Helper 是一个简单的工具,支持解决相对于 VIVE 跟踪器位置的门和门框的位置和旋转问题。Setup Helper 在 Editor 模式下运行,不必切换至 Play 模式就可进行更新,运行应用之后必须禁用该工具,以允许门在游戏中独立于门框旋转。可创建多个 Setup Helper 以定位需要与门相对的其他几何体,如房间墙壁、地板、房间装饰等,以避免潜在的面向视觉/碰撞的间隙或修剪。
Setup Helper 层级结构如上所示。以下应用于用蓝色凸显的区域,包括跟踪器(粘在门上)和门口。
using System.Collections; using System.Collections.Generic; using UnityEngine; [ExecuteInEditMode] public class SetupHelper :MonoBehaviour { public bool setDoorFrameToTracker = false; public GameObject doorFrameGo; public Transform trackerTransform; public bool trackRotation = false; public Vector3 doorframeShift;//used to set the difference in placement to make it fit perfectly on the tracker position // Use this for initialization void Start () { } // Update is called once per frame #if UNITY_EDITOR void Update () { if (setDoorFrameToTracker) SetDoorFrameToTracker(); } void SetDoorFrameToTracker() { doorFrameGo.transform.position = trackerTransform.position + doorframeShift; if (trackRotation) doorFrameGo.transform.rotation = trackerTransform.parent.rotation; } #endif }
关于作者
Corey Warning 和 Will Lewis 是俄勒冈波特兰市的一家独立游戏工作室 Rose City Games* 的联合创始人。