卡马克点评:VR射击游戏《Space Shooter》
尽管不合理,但在得分后面加上两三个零会让人更快乐。
(映维网 2021年06月16日)约翰·卡马克的App Reviews应用点评已经回归。在系列博客的第一篇中,这位Facebook Reality Labs的执行顾问分享了自己对刚刚登陆App Lab的街机射击游戏《Space Shooter》的看法。视频共3分钟,映维网同时整理了相关的文字版本:
《Space Shooter》
《Space Shooter》与我在Connect大会中点评的众多应用属于同一类型,亦即官方商店不会接受的实验性项目/正在进行中的项目。随着App Lab的上线,这样的应用现在可以分发给任何人,所以如果你不介意,你可以参阅我下面的点评。
反馈可以分为“执行反馈”和“设计反馈”,前者几乎可以用清单的方式列出,后者则更为开放。质量非常重要,可以造成摩擦的体验方面会埋没一个好点子,但你或许可以开发出一个没有提供任何真正用户价值的完美应用。
1. 执行方面的反馈
启动屏幕应该把重点更多放到你刚刚点开的游戏,而不仅仅是开发工作室。由于几乎没有人以头显屏幕的最佳分辨率制作启动屏幕图形,我们提供了一个可以甚至在游戏引擎初始化之前自动将其呈现的全新系统功能:https://developer.oculus.com/blog/instant-runtime-driven-splash-screens/
用户界面离用户太近。一般来说,用户不必转动脖子就可以轻松地查看大约50度的视场面板,所以交互最好保持在这个尺寸。对于曲线面板,你可以看到不同的“子窗格”,但你通常不会希望在非常宽的视场范围内呈现单个概念,尤其是对于平面面板。
对于GearVR/Cardboard,使用用户的注视方向作为UI是标准做法,但对于Quest则是一个时代性的错误,所以你应该使用一个控制器指针。为了提升UI,当光标移动到活动元素时,你可以添加一个小音效和一个控制器触觉记号来补充视觉焦点的变化,并在触发时将视觉闪烁与另一个声音和记号同步。点击-触发,而不是释放-触发。控制器光束不应该比UI面板延伸更远。
文本在方框边缘显示条纹,这是由于其从相邻字体中拉入纹理元素造成。要解决这一点,你应该在每个字体之间留下一个完全空白的“槽”并调整texcoords。由于字体纹理的分辨率高于显示大小,并且不存在mipmap,所以字体的边缘会产生锯齿。高质量的文本渲染存在大量的深度;如果文本为最小,有时可以使用专业的插图程序来生成高质量的纹理,而不是在游戏引擎中渲染它们。
向左或向右推压摇杆应该是循环选项或导航帮助屏幕,而不是作为操作命令。
在游戏过程中,按压Oculus按钮确实会暂停活动的游戏元素,但像移动大帆船一样的橱窗装饰仍在继续。对于单人游戏来说,整个世界应该冻结,背景音乐应该暂停。菜单按钮同样应该暂停并提供返回主菜单选项。
不鼓励在UI中使用显式“退出”选项。用户需要使用通用系统级功能退出应用程序,而不是学习每个应用程序的选项。用户可能会错误地将“退出”解读为“退到菜单”而不是“退出游戏”。
当用户的游戏角色死亡时,令世界旋转会造成不适。晕动症不应该在游戏中作为反馈;当你重新开始游戏时它依然会徘徊不去。
当左右移动时,世界视图的倾斜会在一段时间后变得不舒服。使用yoke控件可以让用户做好准备,但要用拇指摇杆会让它成为一个问题。降低振幅和加快衰减速度会有所帮助。
双手控制yoke凸显了虚拟控制器之间缺乏实际连接。单手飞行摇杆可能感觉更好。
如果你打算提供一个围绕用户的物理驾驶舱模型,将船损测量仪和分数显示集成到驾驶舱显示中要比将它们作为浮动UI元素更有意义。
在太空层面,你的射击模型实际上是从驾驶舱内部开始。
游戏中发生的几乎所有一切都应该配有同步的音频和视频组件,包括每一次射击和冲击。这对一款太空射击游戏来说显然不现实,但对游戏而言有所帮助。尤其是打伤敌人产生很小的爆炸效果,但没有音频。循环的背景音乐有助于掩盖当前的死气沉沉,但你最好让游戏场景本身提供丰富的音景,你可以在游戏的关键点加入较小的音乐主题。帮助文本的语音阅读并不是非常有用,但将语音更多地集成到游戏中以用于警告和战斗开始可能会有所帮助。
要最大化应用程序的视觉质量,最直接的方法之一就是使用足够高的分辨率纹理,这样就不会出现拉伸、模糊的像素。在虚拟现实中,用户总是可以离曲面非常近,以至于曲面会放大,但当用户处于默认位置时,尤其是对于UI面板,你应该努力令一切都接近于最佳分辨率。UI的单选按钮分辨率太低,驾驶舱大多缺乏纹理。你应该同时使用ASTC压缩纹理与mip map。
2. 设计方面的反馈
“把旧式街机游戏带到虚拟现实中”的基本概念没有问题。然而,核心玩法最好足够有趣,以弥补没有明确针对虚拟现实设计的缺点。
这里的玩法可以总结成:你有一个有限的,一维的运动范围,你可以不断地进行射击。有一些惰性物体(小行星等)会在接触时杀死你,并需要多次射击才能摧毁。舰船对象非常相似,但会产生对你造成部分伤害的射击。没有任何横向运动。
这样一款游戏对于雅达利2600都不算有趣。VR增加了一点魅力,但核心游戏不足以吸引玩家。你可以躲到极端的边缘,然后一直开火以获得无限的分数。
为了探索游戏设计空间,你可能需要使用一个允许更快迭代的非虚拟现实环境,比如带有sprite图形的简单2D视图。经典的街机游戏可以用一个包含high level代码的文件来表达,因此现代设计师既有历史的借鉴,又有更强大的实验平台。
把一款“太空射击游戏”限制在一维的游乐场感觉很奇怪。如果这是游戏的核心决定,气垫船或某种汽车或许更好。
一款好的射击游戏会让一位经验丰富的玩家在锁血场面和处理伤害时给人留下大神的感觉。对于只有左/右/开火指令,要给人留下一种大神的感觉,其必须涉及难以置信的计时精度或阅读战斗能力,并避免所有不可能的情况。添加一些更具表现力的控件选项会有所帮助。
对于躲避机制,第一人称视角通常比第三人称视角更糟糕,因为你看不到自己的边界。你可以用声音来帮助玩家判断自己离危险有多近,或者在接触边缘时产生“部分伤害”效果。
《Galaga》风格的玩家/敌人难以很好地转化为纯粹的第一人称VR视角,因为一切都会消失在远处。可行的一种情况是,如果你在一座大山的底部,然后所有的敌人都从山顶上冲下来攻击你,这样你就能更清楚地看到飞行模式,或者你在一个巨大的桶状结构中向前移动。一个“跳跃”机制可能会很有意思,它可以为游戏加入一点其他维度。
你可以做一个像《Robotron》这样讲究纯粹是战术行为的街机游戏,但给用户某种战略决策能力会有所帮助。这可以是一个简单的决定,如允许你的舰船被俘获,或者甚至引入有限的资源,如智能炸弹。
总的来说,大量弱小的敌人(其能够以一种令人满意的方式死去)比少数需要吸收大量伤害才会死去的敌人要好。这可能是一个性能挑战。如果你的敌人需要吸收多次射击伤害,你至少要让每一次命中的互动都更令人满意,如让敌人模型抽搐,并且为小型命中爆炸增加声音。
Power Up是射击游戏的一个重要组成部分。能够使用一次罕见的和可怕的Power Up可以比完成一个关卡更令人感到酸爽。
游戏需要不同的节奏。若是一个稳定的状态或逐步增加的挑战,感觉不如穿插着突发性的危险。
在基于算法的敌人行为和设计师精心设计的行为之间有着重要的权衡。你可以通过完全的控制来获得更棒的体验,但如果是手动,你不太可能正确平衡几个小时的敌人攻击。如果你使用DesignerCrafted,一个扩展值的简单技巧就是使用镜像视图。混合和匹配宏,同时提高速度和替换更危险的敌人可以让你扩大总的体验时间。
对于类街机游戏,提供排行榜可以增加价值,如每日和每周排行,以及总时间排行。当朋友超过你的位置时提供通知可以增加大量的参与度。尽管不合理,但在得分后面加上两三个零会让人更快乐。