基于Unity3D的VR海洋探索游戏开发
2020-05-21温子燊刘萤
温子燊 刘萤
摘要:随着虚拟现实硬件设备与软件驱动进一步的完善,虚拟现实游戏也逐渐步人人们的生活当中。本文通过对海洋探索游戏的设计思路与实现方式进行研究,针对Ul交互和游戏基本逻辑进行分析,对于虚拟现实游戏的设计方式与开发流程有一定的参考价值。
关键词:虚拟现实;游戏开发;Unity 3D
中图分类号:TP311文献标识码:A
文章编号:1009-3044(2020)09-0228-02
1 引言
从1958年第一款示波器上的电子游戏“双人网球”到2018年获得大量奖项的VR游戏Beat Saber,从电子游戏的诞生之初到现在,承载着电子游戏的设备在一定程度上能够反映出该游戏所处时代的科技水平。从2014年Face Book收购Oculus开始,虚拟现实技术正逐渐步人正轨,开发虚拟现实设备上的游戏也变得刻不容缓。Unity3D是一款利用交互的图形化开发环境为首要方式的专业游戏引擎,支持C#编程语言,可用于开发Windows、MacOS、Linux平台和PlayStation、XBox、NintendoSwitch等游戏主机平台以及IOS、Android等移动设备的游戏,拥有跨平台的特性,被广泛用于建筑可视化、实时三维动画、VR/AR游戏应用等互动内容的综合性创作工具。
2 游戏的设计思路
《The Sea》是一款基于Unity3D引擎和HTC VIVE虚拟现实设备开发的VR海洋探险游戏,将3D环绕的立体音效、扁平化的空间UI交互系统、人性化的语音引导与当今主流的虚拟现实技术相结合,配合次时代PBR模型以及PostProcessing屏幕后处理技术,使玩家的沉浸感和体验提升到更高的层次。该游戏主要通过VR手柄进行交互,玩家可通过头显正前方的HUD面板来获取自身和可交互物体的位置信息,使用扳机键配合手柄射线来对菜单以及可回收物体进行交互。玩家可通过不断地收集鱼类信息和回收污染物得到点数回饋,一方面可以通过点数的累计来解锁剧情,另一方面可以通过消耗点数来增强自身的属性,从而逐渐减少难度。
3 游戏的实现方式
3.1 HUD面板UI的设计与实现
由于虚拟现实头戴式显示器与眼睛之间的距离固定在20厘米左右的范围内,因此如果采用传统的单个摄像机对画布内的UI进行渲染,UI元素将会分散在FOV视场角边缘,在屏幕后处理的影响下UI元素会产生图像扭曲、RGB分离和亮度变暗等效果,影响用户体验和破坏沉浸感的同时容易使玩家产生晕眩或恶心等不良影响。将Canvas的Render Mode改为WorldSpace,并将Canvas画布固定在用户眼前既能清楚地看到HUD同时又不会被HUD所遮挡视线的位置。将Canvas中的Slider设为竖直显示并将其value值与玩家当前位置的Y坐标数值挂钩以达到显示当前深度的效果,同时将另一个竖直的进度条与玩家的旋转角度相挂钩,并通过欧拉角与四元数的转换得到玩家当前头部的旋转角度并将其显示在HUD面板上即可完成HUD部分。
3.2 手柄交互功能的实现
交互作为游戏所必不可少的功能[2],在本游戏中以手柄交互作为主要交互手段,通过获取玩家手柄的Transform.Position坐标并在该位置实例化一个子弹预制体,通过计算手柄的旋转角度并将其X轴方向转化为单位三维矢量,在该三维矢量上对预制体的Rigibody刚体组件添加一个作用力,使子弹预制体能够沿着手柄X轴方向射出并与Terrain地形或其他可交互预制体产生碰撞交互。在子弹的碰撞器组件开始碰撞时,在OnCoI-liderEnter方法内判断碰撞到的物体的标签,若标签为可交互材料则对该材料的数值+1,若为鱼类则对该种鱼类的DNA采集度+l,判断完成后使用Destroy方法销毁该子弹预制体以减少内存的占用与GPU的消耗。
3.3 模型的创作与动作的实现
一个完整的次世代PBR模型的制作流程从Maya软件内建中模开始,然后到Zbrush软件中雕刻高模,再回到Maya拓扑低模、拆分UV,再到Substance Painter软件中烘焙贴图。后半段的烘焙+贴图+引擎阶段是Physically-Based Rendering基于物理的渲染过程,用于精确描述光和物体表面互动的着色和渲染技术。从光的角度来看主要包括颜色、亮度、衰减、强度、形状等主要属性,当灯照射到模型表面上会产生反射或者折射的情况,被折射的光线会被吸收或者离散。将制作完成的PBR模型导人Cinema4D中,由于模型动作相对较简单,因此采用正向动力学的方式对骨骼进行绑定,使用关节工具创建骨骼与控制器,再用命令工具将骨骼绑定蒙皮,绑定蒙皮后模型的运动可能会产生破面,因此使用权重工具对模型进行处理。
3.4 鱼类生成方式与AI自动寻路的实现
由于受到主机性能的限制,鱼类并不能无限制的生成,因此在开发阶段利用Unity的性能分析组件Profiler对运行时CPU的Draw Call消耗、内存的Garbage Collection情况与GPU的Ren-dering情况进行分析,得出鱼类数量超过60个时游戏延迟会达到30ms以上,因此将鱼类的数量限制在50个以内。在地形的周围设置10个用来控制鱼类生成位置的空物体,使用遍历数组的方式获取到各个空物体的位置坐标,并通过使用空物体上挂载脚本的Object.lnstantiate方法将鱼类的预制体实例化。由于鱼类活动区域限制在海水中,移动的方式不受重力影响,因此鱼类的AI寻路方式不采用传统的Nav Mesh Agent组件进行自动寻路。使用Vector3.Distance方法计算出玩家与鱼类的距离,并判断该距离是否小于或等于玩家受到海水fog雾效影响后的可视距离,若鱼类在玩家可视距离外,则沿着以Terrain地形中心为圆心,自身与圆心的距离为半径的圆上进行移动,否则以随机方向移动,并使用射线组件判断当前移动方向Rayc-astHit. point是否与玩家所处方位一致,若一致则朝玩家移动,否则继续以随机方向移动。
3.5 玩家移动的设计与实现
在当前市面上的VR游戏中,玩家的移动效果大致分为以下三种[3]:(1)通过利用手柄的指针射线,将玩家坐标转换为指针末端所指的坐标。(2)在地形上设定Teleport传送点,当玩家指针指向该传送点时将玩家坐标转换为传送点的坐标,与方法(1)相比减少了玩家的自由度,但相对提升了游戏的稳定性。(3)通过获取手柄触摸板的坐标进行位移,手指离触摸板边缘越近则移动速度越快,该方式与传统的手柄摇杆移动方式相同,玩家能够快速上手该移动方式,但在VR环境下,变速运动会使眼睛获取的信息与前庭系统的感知不一致,玩家会产生恶心或眩晕感,但由于该游戏主要活动场所为海平面以下的水体中,物理参考系较少且移动速度相对较慢,因此适合该移动模式。
3.6 场景立体音效的实现
声音在游戏开发中作为必不可缺的一环,其重要性也是不言而喻的。传统的音效播放方式只是将音频原声通过输出设备进行播放,缺乏方向性与空间感,与虚拟现实技术相结合会破坏其原本的沉浸感,因此需要将Audio Source的Spatial Blend改为3D。調整之后的音效具有了方向性,会根据用户的朝向而改变双声道的输出功率,但仍缺乏空间感,需要将Proj ect Set-ting下的Audio的Spatializer Plugin改为Resonance Audio,同时将Audio Source组件下的3D Sound Settings的Spatialize Post Ef-fect效果开启,使音频具有多普勒效应。
4 VR海洋探索游戏《The Sea》的应用效果
进入游戏后,玩家将会开始新手指引教程,听从语音指示和HUD面板上的文字指示进行活动,在教程内学会移动、射击、查看图鉴、制作/升级装备以及通过HUD面板了解信息。引导教程完成后,玩家将会被传送到荒岛上,通过一次次的下潜收集鱼类的DNA来解锁图鉴推进剧情的同时,沉人海底收集废物并将其回收利用制成装备以达到强化自身能力的效果。
5 结语
该游戏在玩法设计上将探索、收集元素融人游戏当中,在用户的视觉交互上采用了空间范围内的立体UI+HUD抬头显示面板的方式,同时使用了次时代的PBR流程技术建模,提升了玩家的沉浸感与交互体验。本文展示了Unity3D引擎制作VR游戏的大致流程,为虚拟现实设备的游戏设计提供一定的思路与见解,使虚拟现实技术得到进一步的发展。
参考文献:
[1] Jeff W. Murray.Building Virtual Reality with Unity and Steam-VR[M],吴彬,等,译,北京:机械工业出版社,2019.
[2]温涵泳.基于HTC Vive平台的防化训练虚拟现实系统[Dl.广州:华南理工大学,2017.
[3]邓德荣,基于Unity3D的VR交互场景设计与运行监控[Dl.广州:华南理工大学,2018.
【通联编辑:闻翔军】
基金项目:省级大学生创新创业训练计划项目“基于VR虚拟现实技术的文化教育传播及创新运用”(项目编号:S201913714019)
作者简介:温子粜(1999-),男,广东梅州人,本科,研究方向:新媒体技术及应用;刘萤(1987-),女,湖南邵阳人,硕士,讲师,研究方向:数字媒体技术及应用、游戏设计与开发。