本项目使用部分开源模型,利用Unity实现VR(Virtual Reality,虚拟现实技术)。学习市场上恐怖游戏的设计思想,完成了自主设计的一款以中国大学公寓为背景的恐怖游戏的开发。重点实现了游戏场景的建立与渲染,并且完成了第一阶段剧情的设计。用户能在游戏场景中得到身临其境的体验感,随着剧情的加入游戏也具有一定的趣味性。开发人员: 李金柏 罗俊豪 汪喻坤 |
随着时代的发展,人们的生活节奏不断加快,随之带来了很大的工作生活压力,人们迫切需要一种方式来释放压力,而游戏就是一种很好的选择。通过适当的游戏,人们可以自主地释放日常生活中积攒的压力,从而在学习工作中能拥有更高的精力和热情。
恐怖游戏在游戏中始终占据着一席之地,就如恐怖片在电影中的地位一样。虽然受众有局限性,但是这也使得恐怖游戏的玩家大都属于资深玩家,对游戏的设计和体验要求很高。他们希望通过体验恐怖的游戏情节与惊悚的游戏场景,能使工作生活中的压力转移到游戏之中释放。目前市面上的恐怖游戏大多数都是比较单一的以西方国家为背景的第一人称游戏,其中剧情向恐怖游戏大多通过诡异蹊跷的剧情、黑暗恐怖的游戏场景以及瘆人的游戏音效来渲染游戏氛围,而逃亡类恐怖游戏大多通过形容恐怖的追逐者、狭窄漫长的通道、急切不安的背景音乐来刺激玩家的感官。
本项目参考市面上的恐怖游戏,实现了基于大学生宿舍场景的恐怖虚拟现实游戏,赋予玩家更加身临其境的代入感,特别是对于氛围渲染要求更高的恐怖游戏,VR技术无疑能够带来更加震撼的体验。
- 游戏场景 -
目前实现剧情如下:玩家在宿舍醒来,对宿舍进行探索,发现门打不开,台灯也似乎坏了,亮暗不定(台灯开关未实现较好的模型,因此无触发),并发出嘶嘶响声(参考灯管接触不良);宿舍的桌子上有一本淡蓝色笔记本,可以打开,里面有一张照片和一句话。左边是三个人的合影,右边那句话用红色笔写着“救我”。阅读完毕,灯突然闪灭(含声效),这时耳边响起奇怪的叫声,门吱呀地缓缓打开(含声效),玩家离开宿舍,往左边是厕所,进入厕所以后发现血手印,看到玻璃上有鬼影,再近一看,发现鬼影消失,最后从厕所出来以后发现鬼影出现在宿舍里面。
第一视角在宿舍醒来,场景是较为昏暗的学生宿舍,具有书桌、书、台灯、床、笔记本和杯子等物品:
图1 宿舍场景经过探索,发现打开笔记本中的内容。笔记本中有宿舍同学的合照,以及提醒剧情的“救我”字样:
图2 翻开的笔记本
合上笔记本,再次观察宿舍全貌:
图3 宿舍房间全貌
此时,台灯突然短路闪灭,耳旁响起鬼叫声,门吱呀一声缓缓打开:
图4 突然打开的房门
迈步走出房门,看见昏暗的走廊:
图5 昏暗的走廊
出房门后往左手边走,发现不远处隐约有光,是这层楼唯一的厕所:
图6 厕所全貌
观察厕所,发现厕所内空无一人:
图7 厕所隔间
回头发现厕所门后镜子上的血手印:
图8 厕所镜子和上面的血手印
往厕所内部探索时,发现窗户外一闪而过的鬼影:
图9 厕所鬼影
出房门后往右手边走,发现宿舍里面出现刚才的鬼影。
图10 宿舍中发现之前看到的鬼影
图11继续往走廊走时缓缓关上的房门
未完成的场景:玩家在第三层探索后,没有任何收获,于是找楼梯想要离开,在楼道清晰地写着3的字样;下一层楼之后,楼道上写着2,进入探寻,仍然没有任何收获;再下一层楼时,玩家发现楼道上写着的并不是1,而是3,这时厕所传来一阵女生的笑声,但这是男生公寓。进入走廊,笑声慢慢变为哭声,靠近厕所的时候,发现厕所门开了小口;从外面往里面看,却漆黑一片,哭声渐渐消失,一张人脸突然出现把门关上。回头再往楼道去,却发现一只篮球静静地放在楼道口中间,玩家慢慢走近,却发现篮球突然飞了起来,就像有人在控制它,最后,篮球飞下楼梯,消失不见。玩家继续向下探索。
玩家会在3楼和2楼中间不断重复,考虑将楼梯口的入口和出口设置在不同位置,并用大门隔断回去的路,使剧情更有效地发展,也能更好地营造气氛。最终游戏结束地点在厕所,目前考虑建立一个合适的恐怖对象模型,以回头杀终结游戏。
- 团队及分工 -
本小组由李金柏、罗俊豪、汪喻坤三人组成。
李金柏主要负责工作:场景搭建以及场景渲染,还有整体推进剧情设计。该工作中主要做了场景搭建以及场景渲染部分,还有整体剧情推进设计。
罗俊豪主要负责工作:脚本代码编写与物体控制。在项目中担负的工作是全部脚本文件的编写,绑定物体进行剧情的触发,并调试使其更加合乎真实和能营造恐怖诡异的氛围。目前已经完成了笔记本、门、灯光等配合音效在宿舍环境内的有序触发。
汪喻坤主要负责工作:素材模型寻找与资源搜索。负责资源的搜集整理部分。由场景建立和脚本编写的同学提出需要资源要求,再由汪喻坤搜集。在本项目中,场景物 品比较重要选择寻找开源的物品资源,自行组合搭建场景。
- 设计及实现 -
游戏的场景是根据笔者所在的学生公寓搭建的,在对学生公寓三号楼进行考察后,结合剧情设计,我们仅对部分场景进行模型建立。其中包括作为苏醒后的第一个场景,即是“坤坤”的宿舍,学生公寓第三层中“坤坤”宿舍周围的走廊,学生公寓第三层中“坤坤”宿舍附近的厕所。学生公寓外的场景是雷雨环境,因此在宿舍比较明显地能听到雷雨声。由于建模基础有限,场景中的各种物体大多来自于互联网上的开源模型。
宿舍:包含门、双层床、书桌、椅子、日记本等等学生宿舍应有的物品
走廊:包含走廊的廊灯
厕所:包含小便池、洗手池、蹲位、水桶等等公用厕所应具有的物品
/ 模型种类与体积调整 /
接下来是调试的各种模型的大小比例以及位置参数。
图12 床的模型与参数调试
图13 窗户的模型与调试
图14 桌子的模型与参数调试
图15 椅子的模型与参数调试
图16 门的模型与参数调试
图17 鬼怪模型与参数调试
/ 灯光渲染调试 /
由于灯光需要制造恐怖的氛围,所以说尽量要暗一些,所以光强和光的范围都应有所调整,同时灯光摆放的位置都应有所调整。
图18 台灯光源以及参数调试
图19 走廊灯光源以及位置调试
图20 厕所镜子灯光源以及位置调试
不同的物品搭配挑选了的材质,最终效果与实物相近。大多数的材质贴图比较简单,但是 有 些 比 较 有 特 点 。其 中 使 用 了 unity 中 的Reflection Probe让镜子与瓷砖实现了反射效果。Reflection Probe就是环境映射,只不过是环境映射的扩展,包含环境映射的全部属性)。传统意义的环境映射,更多的时候是对应材质上的一个属性,但是实际上,用环境映射表示反射,表示的是当前的环境属性,属于当前场景的信息,而不再是属于某个材质。这个环境属性实际上就相当于一个全局的变量,Unity已经设置好了相关的属性信息,在shader中可以直接使用。在昏暗的场景中,隐隐约约的反射效果更能够凸显出阴森恐怖的氛围。
图21 厕所镜子与瓷砖的反光效果
图22 厕所场景
完成场景的建立之后,最后调整了光源。除了场景中的灯具具有光源之外,还在场景中加入了基础的光源,在后续的情节中,基础光源可以提供基础的视野。
/ 声音渲染调试 /
因为在恐怖游戏中,声音调试是最为重要的,所以在音效添加上我们用了很多音频去渲染恐怖气氛。
图23 声源
图24 雷雨声声源
整个场景雷雨声的音效放在一个自建的方体上,该方体放在整个场景上方
图25 灯光闪烁的声源
/ 代码脚本挂件调试 /
脚本代码为罗俊豪编写,把脚本挂在物件上,使得剧情可以推进。
图26 脚本
/ 材质的选择 /
对于墙壁的选择选择尽量贴近真实墙壁反光效果的墙壁。
图27 墙壁材质的选择
以及天空盒的选择上使得整个场景偏暗一些。
图28 天空盒选择
/ 触发 /
笔记本触发
笔记本是本游戏第一个剧情提示和触发点,因此尤为重要。在设想阶段,笔记本的触发想要做成笔记本漂浮到视野中心,再加一个景深效果凸显笔记本;但是经过尝试比较难做到,尤其当第一人称移动模型是使用unity自带的模型时,无法对眼部相机的位置和角度直接固定,因此会存在鬼畜效果。在实际建模过程中,先后尝试了滚轮拉近、鼠标点击拖动和翻转、眼部相机拉近和笔记本漂浮到相机前方等多种实现方式。考虑再三,最终采取了在桌上直接翻页的实现方式,且鼠标左键翻页,右键合页。这样触发的实际效果比想象中更好一些。
在刚开始做触发时,也会碰到一些问题,比如怎么设置触发判断条件。我们在学习各种触发经验和实例之后,采用了鼠标射线扫到带“Player”标签物体、鼠标点击和人位置区域判断三个触发条件,且鼠标点击条件在鼠标射线扫描之后,人的位置区域判断时刻进行,当且仅当人在桌前一块区域的位置时判断为“true”。
在完成触发设计之后,发现了物体很难触发的现象,经过与李金柏同学的合作调试,发现是因为物体核心块太小,比看到的笔记本要小很多。在增大其体积之后,触发成功实现。
宿舍门触发
由于剧情设计上需要对恐怖气氛进行更好的渲染,因此门的触发并不同于普通门的触发,而是用第一个触发物笔记本进行触发。在触发笔记本打开和查看其中内容之后大概十秒(1000帧),门自动开启(包含音效)。
笔记本与门的运动
笔记本和门的触发旋转函数,都采用了直接定位的方式,即是直接修改transform.eulerAngles的值。经过尝试,若用transform.Rotate函数,笔记本存在翻页与合页不一致的bug,门存在打开一半就重新合上的bug,经调试很难解决。因此直接使用transform.eulerAngles函数,其可靠性更高。
灯光闪烁与熄灭触发
灯光主要依靠范围和亮度调节其渲染效果,经调试,亮度为1,范围为5时比较适宜营造恐怖气氛,而亮度为2,范围为7时比较适宜正常照明情况。在进行尝试后,决定取范围为5,亮度在2与1之间闪烁,闪烁频率为每50帧变暗6帧时间,这使得恐怖气氛的营造和照明功能的体现都能达到要求。
由于剧情设计上需要对恐怖气氛进行更好的渲染,因此灯光的触发关闭也不同于普通灯光的开关触发,而是用第一个触发物笔记本进行触发。同时灯光的颜色与日光灯的正常情况下的照明也有区别。在触发笔记本打开和查看其中内容之后大约七秒(700帧),灯自动关闭(包含音效)。
厕所灯光和鬼物(鬼物模型暂以丧尸模型代替)
厕所亮度受雷雨影响隔一段时间会闪亮一次,调试后设置频率为每200帧闪亮6帧,亮度由1变为3,范围不变。考虑到人的反应时间和厕所闪亮频率,鬼物会待在窗外,直到人进入厕所,并在人进入厕所约3秒(300帧)后消失。
- 问题与讨论 -
1.苏醒与游戏初始化
游戏主角在宿舍苏醒,但是目前是直接在地板上进入游戏,显得不够完善和逻辑合理。因此后期希望在玩家自由移动之前做一段以第一视角从床上醒来并站起来的动画,使该游戏从开始到结束形成闭环逻辑。
2.灯光闪烁配音
原本宿舍内灯光设计是日光灯,但是日光灯不合剧情设计,因此改做桌上的台灯,但是由于时间与素材的局限性,灯光闪烁的配音暂时还是取自日光灯接触不良的音效。
3.外部雷雨环境设计
剧情设计外部为雷雨天气,但是目前只添加了声效,窗户上雨滴效果或电闪效果还没来得及添加。在最初有考虑当电闪时在外部给一个强光,使屋子一下被雷电闪亮,但是目前实现的效果并不是很好,于是舍弃。
4.人物穿模问题
刚开始人物在探索过程中存在穿模问题,即是视线可以穿过物体,但是在调节人物模型和相机参数之后,问题得到解决。
5.人物运动模型问题
目前使用了unity自带的人物模型,其自带前后左右移动、鼠标控制相机角度、上跳下蹲等行为程序,相当方便,但同时其也存在不足之处。比如移动速度不便调试,下楼梯的迈脚的先后感,与硬件交互时身体的移动感觉和自主性不足等等。因此希望在期末之后独立开发一个能在自主位移中加入肢体操作的便于与硬件交互的人物模型。
- 总结与展望 -
1) 产品实现恐怖主题游戏的游戏场景搭建,完成了简单的游戏剧情的实现。通过环境要素,渲染出了较好的恐怖氛围。剧情的部分实现也让游戏具有趣味性.
2) 人物没有实体,会削弱玩家的代入感。在今后的工作中考虑加入人物身体模型。
3) 在部分场景会出现穿模,场景需要进一步的优化。
4) 由于时间原因,未能将项目完成至硬件实现VR,使得制作出来的游戏效果在感官上并没有完全展现出效果,在后续的工作中可以考虑配合使用VR设备实现VR。
在完成本项目之前,我们还不懂unity的使用,不了解灯光、场景、3D模型、虚拟交互方式等概念,也不会C#脚本的编写。但是经过本学期课程学习,B站视频学习,以及在CSDN等网站的学习,我们学会了建立虚拟场景、3D模型的概念,了解了虚拟设备的硬件交互考虑,场景多种触发方式,熟悉了unity游戏开发的流程,并且对此深感兴趣。目前市场上的恐怖游戏还主要集中在别墅背景和西式建筑的故事中,而少有与中国的大学生活密切相关的故事背景的恐怖游戏,这驱使我们有了这么一个想法去做这个项目。经过近三周时间的工作,我们成功完成了设想中大型恐怖游戏的第一阶段开发,而第一步往往是最难的,因此成功开启第一步后,我们对完成期望中的最终版游戏充满信心。
【项目参考文献】
[1] 侯南君.浅论电子游戏对中学生的正面影响[J].中国新通 信 ,2019,21(09):181. [2] 王波. 游戏设计中的心理因素研究[D].武汉理工大学,2006. [3] 杨 晨 源 . 虚 拟 现 实 技 术 与 VR 游 戏 [J]. 科技传 播,2018,10(02):89-90+131. [4] 何 磊 . 第 一 人 称 游 戏 研 究 [J]. 电脑知识与技 术,2016,12(16):205-206. [5] http://www.6m5m.com/ [6] https://blog.csdn.net/puppet_master/article/details/80808486 [7] http://sc.chinaz.com/ 本文节选自 北航本科虚拟现实技术课程 开发实践作业 本文部分图片和文字来自公开文献 如有使用不当之处请私信告知 - END -相关阅读 /虚拟现实/-应用-美国航母着舰信号指挥官训练基于VR技术虚拟现实将成为人工智能的下一代训练环境南加州大学CLVR实验室在虚拟环境中教机器人组装宜家家具快了!空客将用基于VR头显的飞行训练器进行改装训练-原理-视觉深度感知的基本原理-开发实践-基于 Kinect 和九轴传感器的虚拟潜泳基于Unity3D的音频可视化 /飞行仿真/-历史-飞行员培训从基于真飞机到基于模拟机20世纪60年代Ames研究中心的飞行模拟器们飞行模拟机视景系统的史前时代-价值-NASA驾驶舱间隔管理(FIM)飞行试验试飞员真飞前的地面培训 /航空资料整理/3U8633那34分钟的惊心动魄,已经过去两年了 /可视化之禅/美国人收入差距有多大世界制造业产值地图