摘 要
随着时代的发展,游戏作为人们娱乐的一种方式,在日常生活中也是越来越重要了。近年的游戏发展迅速,各种游戏琳琅满目地出现也是让人们对于游戏的选择更加苛刻。精致又有内容的独立游戏在众多游戏中脱颖而出,也备受大家的喜爱。本文开发的《死神大侦探》游戏,正是画风可爱,内容丰富的一款独立解谜游戏,能够很好地满足人们对于解谜游戏的需求。
《死神大侦探》是一款由Unity引擎开发的PC端独立游戏,它结合了当前最流行的“解谜”元素,能够迎合当前潮流。内容丰富,精彩,跌宕起伏,能够给人沉浸式的体验感。游戏整体符合解谜游戏的要素,由公寓里的一名男性的离奇坠楼,引出这个公寓里各个住户不可告人的秘密,在询问当事人与解开各种谜题之后,真相浮出水面。还原作案过程,找到真凶,让真正有罪的人得到法律的制裁。
本文主要围绕《死神大侦探》的游戏需求、游戏设计、游戏功能等方面,详细的介绍游戏设计与开发的过程。在作为游戏给人们带来愉悦时,也为想要做解密游戏的人提供一点参考意见。
关键词:解谜;游戏开发;Unity引擎;游戏设计
1 绪论
1.1研究背景和意义
随着人们物质生活日益提高,人们对于精神方面的需求也越来越大。游戏作为娱乐方面的大头,可谓是发展越来越好。特别是在疫情期间,人们为了防疫待在家里,游戏更是让大众在无聊时给人们带来了心里的慰藉,给人们精神上的安慰。
独立游戏以“创新”和“个性”作为标签。不同于大公司的大投资,独立游戏一般由小型工作室制作,且不同于大公司注重画面精致与操作感的舒服,独立游戏一般是从游戏的内容出发,以工作室自身对于游戏的故事看法与创作,制作故事一般是小型的题材,现实却又打动人心,让人玩过之后会有心灵上的共鸣或者是对于故事的回味无穷。
独立游戏中解谜类游戏在近几年是非常火爆的。解密游戏不仅是让玩家对游戏解谜成功产生的成就感,还有解谜游戏中的剧情,经过玩家的解谜层层递进,达到游戏想讲述的故事,想表达的想法。也让玩家有一种沉浸式的体验感。密室逃脱等真人互动游戏馆也是根据解谜游戏的拓展,这也越来越说明解谜游戏有着市场,也有着可以拓展的方面。
国内推理解谜热的兴起有多个方面:影视作品、热播综艺,还有各种精致解谜独立游戏。影视作品是打开推理解谜这一类新颖世界的大门,《名侦探柯南》、《少年包青天》,这是最早的推理解谜类进入到大众视线开拓观赏领域的作品,近年来的《心理罪》、《白夜追凶》、《盗墓笔记》等,也是大热的作品,这也说明推理解谜类的影视作品越来越受大众的喜爱。热播综艺《明星大侦探》以及《密室大逃脱》更是掀起了密室、剧本杀的热潮。特别是何炅、撒贝宁的精彩推理与解谜,让大众感受到了这一类解谜游戏给人带来的成就感,以及推理的逻辑清晰让人信服,也是考验人逻辑与语言表达的一种方式。这两款综艺还继续在拍摄,这也说明推理解谜的综艺也是带给大众新鲜感。
解谜游戏更是受到大家的欢迎,现国内很多独立工作室开发的解谜游戏已经让人感受到了中国游戏的内容,内涵,想表达的意义,精致的美术和精彩的游戏内容让大众看到了中国游戏的崛起。
1.2 国内外研究现状
1.2.1国内发展和现状
国内解谜游戏随着解密风潮的袭来逐渐增多。中国相对于比较早也比较出名的是由乐逗游戏发行的一款解谜游戏,也是最早登陆PS4的中国游戏。这个游戏有多个章节,需要在场景里找到有用的信息,通过观察线索解开谜题才能去到下一个场景之中。同时在游戏中也有许多NPC可以对话,了解一些游戏中的背景故事,能够让游戏更加生动,鲜活。该游戏通过玩家操控游戏角色进行移动,点击触发各种不同的机关,以便于剧情的发展,解谜机关之后会有信息的提醒或者是道具,游戏一般包括背包系统、UI系统、音效系统、对话系统等。玩家对游戏进行探索,了解故事,最后达到游戏结局。这款游戏之所以能够获得独立游戏第一的奖项以及登陆PS4,不仅与游戏本身轻松欢快可爱独具一格的卡通画面有关,也与游戏本身有趣精彩的故事情节与解谜形式有关。
近几年国内也有很多出色的解谜游戏。《疑案追声》可以说是新式的解谜游戏,它不同于一般的解谜游戏通过观察到线索,而是采用“听”这一个形式。玩家只能看见一些代表着人的小圆点的移动,以及各种小圆点之间的对话,以圆点的对话作为主要的故事内容,玩家需要通过人物之间的对话辨别出其相对应的身份以及他们做过的事情。这种新颖的玩法,也是打破了解谜游戏禁锢的思维。也让国产解谜游戏得到了关注与认可,为国产游戏提供了更好的发展平台。《全民公敌》也是近期的解谜游戏,玩家扮演的角色是类似于一名黑客的存在,领导者会下达任务,通过探索之后完成任务。玩家可以通过一个名字,查到目标人物的生日、住所,还可以通过破解获得目标人物聊天工具的密码,知道他与其他人的聊天,还原隐藏的真相。这个游戏之所以会获奖,不仅因为它是一种新颖形式的解谜游戏,而且有很大的教育意义。“知人知面不知心”就可以用来形容这个游戏,有些人表面上是个好人但实际上是个不折不扣的混蛋。虽说玩家是作为类似于黑客的角色,但在游戏中其实玩家的角色是保护着大家的隐私的。游戏不仅告诉了大家在这个大数据的时代要好好地保护好自己的隐私,而且在交友方面也要慎重,不要被人的外表所欺骗。这也体现了国产游戏更加注重游戏的内容,能够给玩家更好的体验感。
越来越多的国产解谜游戏出现在大家的视野中,数量虽多但不是歪瓜裂枣,一个又一个的国产游戏获奖,这也让我们对国产的游戏充满了信心,中国的游戏行业更上一层楼。
1.2.2国外发展和现状
国外的解谜游戏相对于国内发展得更好,因为国外有许多支持或者赞助独立工作室开发独立游戏的网站,这也让游戏开发者能够不再去纠结于金钱,更能够专注于游戏开发的本身。也正是在这种环境之下,很多欧美游戏经久不衰,也成为了一个又一个的经典。作为欧美游戏中解谜游戏系列的《逃离方块》受到了大家的一致好评,最简单的点击方式收集物品,通过对背包物品的放置触发机关,继续剧情,最后通关游戏。这款游戏具有背包系统、UI系统,最简单的方式经过游戏画面的烘托,剧情的营造,微恐怖的元素打造出了经典的解谜游戏。无厘头可能就是《逃离方块》的一种特色,你可能不会知道这些道具如何正确使用,也不会猜到下面剧情的发展。也正是光怪陆离的剧情与看不透的解谜让《逃离方块》在各个国家都会作为解谜游戏的顶层。
《纪念碑谷》作为2014的经典游戏,到现在也是一款让人忘不掉的游戏。这款游戏不仅是新颖的解谜游戏形式,通过对物体的不同方向的拖拽,其实也是对几何的不同方向的组合,利用了空间的错位,使各条道路最终搭成一条通向终点的路。虽然它是关卡形式的过关方式,但是每一个关卡之间的故事都是有联系的,亲情、友情在这款游戏里都有很好地体现。这款游戏作为经典不仅是因为独具匠心的游戏形式,还有优美的游戏音效,梦幻的游戏色彩,以及通过自己的玩耍可以知晓的隐藏的游戏剧情。所以作为国外的经典解谜游戏,它是实至名归。
国外的不管是3D形式的解谜游戏或者是2D形式的解谜游戏都能够得到很好的发展,能够得到很多人的支持,也正是这种支持让国外的解谜游戏发展迅速。
1.3 课题研究内容与论文结构
通过对市场上游戏的各种调查,以及当下时代流行元素趋势,得出了解谜游戏是当前游戏市场中非常受欢迎的一类游戏。且随着当下热门的解谜类的综艺以及解谜类的真人体验馆的播出或开放,解谜元素更加渗透我们的生活之中。解谜游戏不仅是热潮,也是一种价值观,人生观的体现。把教育、亲情、友情、爱情融合在一起,在故事中体现出一个真情实感或者是一个惊奇怪异的故事,引人入胜,给人沉浸式的体验。解谜游戏也在一定程度上有着益智的功能,能够让人从多种角度思考,能够更好地拓展思维,本课题也是根据解谜游戏的各种背景以及自身对于解谜游戏的见解与着手操作,介绍了解谜益智类游戏《死神大侦探》项目的开发过程。
介绍了Unity3D引擎的特点,简述选择Unity3D的原因,和它与其他引擎对比的优势之处。介绍了游戏引擎为开发游戏提供的功能并进行详细的游戏功能需求分析,通过需求分析了解到所需要的游戏功能,并进行功能设计与制作,完成制作之后对项目进行整体的运行测试。
论文将分为六个模块进行介绍,论文结构如下:
第一章:绪论,此部分主要是了解谜游戏兴起的原因以及解谜游戏玩法的各种不同形式,介绍了项目的研究背景和意义,以及解谜游戏国内外发展的现状。
第二章:技术与工具,此部分主要介绍了开发本项目过程中所用到的主要开发工具。
第三章:游戏需求分析,此部分主要对游戏的功能需求进行了分析。
第四章:游戏功能设计,此部分主要对游戏的功能进行了设计及详细阐述。
第五章:游戏功能实现,此部分主要对游戏功能实现阐述详细的实现方法。
第六章:游戏测试,此部分主要对游戏的功能和性能做了相应的测试,并记录测试结果。
第七章:总结,此部分主要对整个游戏的设计到实现做出了总结,并提出后期的展望。
1.4 本章小结
本章概述了解谜益智类游戏研究的背景和意义,以及游戏国内外的发展状况,确立了本次课题的目标最后对论文的研究内容和结构做出了部分叙述。
2 技术与工具
2.1相关技术
C#是微软公司在2000年7月发布的一种全新且简单、安全、面向对象的程序设计语言,是专门为.NET的应用而开发的语言。本项目主要是运用C#语言对游戏脚本进行编写。且C#是使用Unity 3D的一般语言,能够有相关的文档进行查找,可以更好地根据文档所记录的各种功能,进行选择性的实现。跟随大众化、一般化,能够让项目实现更加简便容易。
2.2相关开发工具
2.2.1 Unity3D
Unity 3D 游戏开发引擎目前之所以炙手可热,与其完善的技术以及丰富的个性化功能密不可分。Unity 3D 游戏开发引擎易于上手,降低了对游戏开发人员的要求。本项目主要是以2D形式呈现,但是相比于一般做2D游戏使用的Cocos Creator,Unity3D会显得更加的灵巧,方便。且Unity3D的软件商城有很多游戏素材,也减少了制作游戏项目所需要的大量素材。能够减轻开发者的负担。且Unity3D具有更多方便的功能,能够拖拽就实现物品的叠加,材质的附加,能够使项目的代码量减少,让使用者不必有很大的负担。
2.2.2 Visual Studio 2017
Visual Studio集成开发环境是一种创新启动板,可用于编辑、调试并生成代码,然后发布应用。它为 Unity 游戏引擎提供优质的调试体验。Visual Studio 集成开发环境是一种创新启动板,可用于编辑、调试并生成代码,然后发布应用 。 集成开发环境 (IDE) 是一个功能丰富的程序,可用于软件开发的许多方面。且作为人们熟知的代码编辑软件,能够更好的为人们所使用,也有很多相关文档可供阅读。
2.3本章小结
本章根据需求和功能的需要,简述了本次项目会运用到的开发语言、技术和工具。
3 游戏需求分析
3.1需求概要描述
《死神大侦探》项目的目标是开发一款解谜益智类游戏。在这个解谜潮风靡的时代,不仅是紧跟时代潮流,能够获得更好的发展,能够获得更多关注。也是用解谜的形式,讲述一个具有教育意义的故事,能够让人从中受到一点启发或者是学到一些知识。
首先根据游戏类型对功能需求进行概要分析,其次从另一方面讲解《死神大侦探》,包括对目标人群定位,以及详细的游戏界面需求、游戏系统分布、音频系统等的需求进行详细的分析。
游戏类型:
《死神大侦探》是一款以西方魔幻背景为题材的解谜益智类游戏,本游戏故事情节通过探索一步一步推进,故事里的主角作为死神管理着灵魂的归处,但这个时候遇到了一个灵魂,牵扯出一个公寓里看似是自杀但其实另有隐情的居民坠楼案。为了寻找真相,死神开始了自己的探索之旅。解谜关卡难度适中,NPC对话有趣,能够很好的激发玩家的探索欲。
游戏剧情:
游戏的背景为死神作为管理灵魂的领导者,负责去世之人灵魂的归处,就在死神执行任务的时候遇到了一个不能跟他走的灵魂,因为他对现实生活有很大的念想,因为他知道自己是被他杀的,可是却忘记了自己是被谁所杀。死神为了能够让这个灵魂尽快跟他走所以接受了寻找凶手的任务。经过了死神的调查之后,才发现平平无奇的一个小公寓之中的居民都有着自己不可告人的秘密,通过层层秘密的解开,死神终于发现杀害那个灵魂的凶手是谁了。
在游戏中,玩家扮演的角色是死神,主要是通过与NPC的对话与其他物品的互动寻找一些线索,与对不同NPC的盘问,了解他们案发当天的时间线,通过推理,最后锁定真凶。
3.2 功能需求分析
3.2.1UI系统需求概述
UI是玩家会与游戏界面发生交互的重要部分,好的UI体验能够让游戏更加分,且作为解谜游戏本身也是需要大量的玩家与游戏交互得出来的结果才能使游戏能够继续进行,故事能够继续发展下去。所以UI设计在本游戏中是非常重要的。本游戏UI界面主要由开始界面、失败界面,游戏界面、成功界面、背包界面、一系列线索界面等组成。
开始界面:含有“开始游戏”,“说明”,“退出”按钮。
“开始游戏”控制游戏的开始,也是转接到玩家进行人物控制场景的一个按钮,是游戏真正的开始。
“说明”打开游戏的基本操作说明界面。
“退出”退出游戏。
游戏界面:游戏界面主要包括背包UI、推理按钮。
“推理按钮”打开推理界面。
“背包UI”主要由物品栏以及物品组成。
成功界面与推理界面:推理正确与否跳转的界面。
“成功界面”推理成功跳转到的界面。
对话界面:在与NPC进行互动的时候弹出与NPC的对话框。
解谜界面:在玩家操控角色与不同的物品进行互动的时候,会出现不同的UI界面供玩家进行探索。
3.2.2 背包系统需求概述
背包系统,主要是玩家在游戏场景中通过与道具的交互获取不同的道具,将这些道具的数据储存在背包中并将道具本身的图像显示在背包中。在使用道具之后,道具的数据被清空,且物品图像被移除。背包功能说明图如图3.1所示。
图3.1 背包功能用例图
3.2.3 对话功能需求概述
对话系统,主要是玩家在游戏场景中与不同的NPC或者是物品进行互动,产生的一系列的对话框的显示。不同的多种对话选项,对应着不同的信息与线索。对话功能说明图如图3.2所示。
图3.2 对话功能用例图
3.2.4 操作系统需求
玩家能够通过按键对角色进行操作,且角色能够通过移动或者是交互给予玩家反馈。玩家操控角色时,角色的反馈要及时即角色的移动、行为流畅。交互的结果要及时出现。玩家也能够通过鼠标对游戏进行互动,在各种UI线索中可以点击互动使游戏进行。操作功能说明图如图3.3所示。
图3.3 操作功能用例图
3.2.5 游戏音频音效需求
使用游戏的背景音乐或者是音效是一种烘托游戏气氛的重要手段,本游戏主要是一款轻松类的解谜游戏,不应该给人枯燥、乏味等负面的情绪。因而在注重游戏的故事内容时,也要注重游戏的音乐带给人的感受,所以游戏的音乐音效在本游戏中也是非常重要的。。
本款游戏的定位是轻松类解谜益智类游戏,背景音乐与音效应该是欢快、轻快的与搞笑的,能够更好的营造一个好的游戏氛围。
3.2.6 道具使用功能需求
游戏内有许多道具,对道具进行分类管理,不同的道具有不同的属性标签,在固定的地方起作用,道具与机关或者是解谜需要的场所是一对一的关系,不存在混乱的道具系统问题。
3.3 本章小结
本章主要介绍系统的需求分析,首先进行了需求概述,对游戏的基本需求进行了简单的描述。且进行了需求分析,并给出了部分需求的框架图,后续的设计以及实现都将基于它们而进行。
4 游戏功能与程序设计
4.1游戏程序设计
游戏程序设计是针对游戏所需,分析概括出游戏功能板块中的不同关系,程序的设计以及运行的逻辑。
图4.1 游戏系统框架图
游戏包含的类主要为:CameraMovement.cs、Playermove.cs、PlayerData.cs、Exit.cs、Item.cs、BagUI.cs、SceneLoad.cs等,游戏核心类如图4.2、图4.3、图4.4所示。
CameraMovement类:摄像机的移动
Playermove类:人物的移动以及刚体设置。
PlayerData类:人物的数据。
Exit类:人物的位置信息。
Item类:道具数据列表
ItemData类:道具属性
BagUI类:背包栏排布以及背包存储信息。
SceneLoad类:加载场景。
图4.2游戏背包存储功能类图
图4.3游戏摄像机跟随功能类图
图4.4游戏跳转场景功能类图
游戏按照一定的逻辑顺序进行,所以根据所预想的游戏运行的流程,完成了以下的游戏系统流程图,如图4.5所示。能够更好地反应出游戏的运行形式,能够一清二楚的看出游戏的整体模式。
图4.5游戏系统流程图
4.1.1玩家存储道具程序设计
玩家存储道具主要是通过键盘固定按键输入,当输入按键正确时执行该程序。并将数据传入到背包之中,存储到背包数据列表中。
图4.6玩家存储道具状态图
4.1.2玩家使用道具程序设计
玩家使用道具主要是通过固定按键输入,当输入按键正确时执行该程序,当玩家拥有固定道具时才会成功执行,刷新背包数据以及发生固定的事件。
图4.7玩家使用道具状态图
4.1.3玩家对话程序设计
玩家与NPC或者是物品产生的对话,是通过固定按键输入,当输入正确时执行该程序,当玩家进行继续对话或者关闭对话时,活动如图4.8所示。
图4.8玩家对话活动图
4.1.4玩家操作程序设计
玩家操作设计主要分为对角色人物的移动操作、角色人物与NPC的互动操作、角色人物与物品的互动操作。玩家操作设计图4.9所示。
图4.9玩家操作
4.2 游戏音频设计
游戏音频包含了游戏中的背景音乐和音效两个部分。游戏的整个运行过程中都将会播放背景音效。游戏中触碰按钮或者玩家与NPC之间的对话与发现重要线索之后都会有不同的音效出现。
4.3 UI界面设计
4.3.1 开始界面设计
开始界面主要由游戏Logo、开始按钮、说明按钮、退出按钮、背景组成,将各个元素放置到合适的位置组成一个主次分明的开始界面,框架图如图4.10所示。
图4.10开始界面框架图
4.3.2 对话界面设计
对话界面主要是显示角色与NPC进行对话的界面,显示对话框的位置。如下图4.11对话界面设计所示。
图4.11对话界面设计
4.3.3 解谜界面设计
解谜界面主要是角色与不同的物品进行互动显示出来的不同的界面所示。因为是解谜游戏所以是有各种解谜界面的,解谜界面可大致的分为以下的各个界面设计图。单纯的线索类UI基本是图文,可随时关闭。密码类需要进行密码输入可打开或者是进入到下一个UI界面。如图4.12、图4.13所示。
图4.12解谜界面设计
图4.13解谜界面设计
4.3.4 结案界面设计
结案界面主要作为游戏成功与否的也是游戏通关的最后一个界面,主要分为三个部分,玩家需要通过各种线索与推理总结之后,分别填写凶手、作案时间与作案地点。三个答案同时正确才可能会跳转到通关界面,否则跳转到失败界面,在填写答案时如果不确定可随时返回到游戏界面。如图4.14所示。
图4.14结案界面设计
4.3.5 游戏界面设计
游戏界面主要由背包UI、背景、关卡设计元素等组成,界面框架如图4.15所示。
图4.15游戏界面框架设计
4.4 本章小结
本章对给出的游戏需求分析进行了游戏主要功能的一个详细设计,根据具体的需求,将本系统的总体设计进行了描述,并对游戏本身界面进行了详细的框架设计,并对部分设计给出流程图以及框架图表示。
5 游戏功能实现
在本章中,会根据上一章的游戏功能设计与设计的游戏界面框架进行功能的详细实现,主要包括以下功能的实现。
5.1游戏开发环境
《死神大侦探》主要采用的Unity3D引擎进行开发,选择了C#作为脚本主要开发语言。以及Visual Studio 2017作为脚本的主要编辑器。
功能完成之后需要打包至PC端设备上进行游戏的功能测试。
5.2角色设计的实现
角色设计分为游戏玩家角色设计、游戏NPC角色设计。
5.2.1 玩家角色实现
玩家角色设计主要参考西方死神的形象,斗篷也采用了比较经典的紫色,让角色更加经典。如图5.1所示。
图5.1主角形象
5.2.2 NPC角色实现
NPC主要有四个嫌疑人和若干警察与死者组成。每个嫌疑人有自己不同的性格与特征,以及与死者之间有不同的情感与关系。NPC角色设计如下图(5.2,5.3,5.4,5.5,5.6)所示。
5.3玩家角色操作的实现
5.3.1玩家角色移动的实现
玩家角色的移动主要是通过键盘操作类Horizontal,对应键盘上的左右键,当按下键盘下的左右键时触发。使用Input.GetAxisRaw(“Horizontal”)作为玩家位置的X值,当X值为负数时使用Quaternion将玩家角色进行Y轴旋转,即使用一个动画就可以左右移动时人物朝着不同的方向动画进行播放移动,使人物移动更真实更形象。
Vector2 moveInput = new Vector2(Input.GetAxisRaw(“Horizontal”), 0);
moveVelocity = moveInput * speed;
if (moveVelocity.x > 0.1f)
{
transform.localRotation = Quaternion.Euler(0, 0, 0);
}
if (moveVelocity.x < -0.1f)
{
transform.localRotation = Quaternion.Euler(0, 180, 0);
}
5.3.2玩家角色互动的实现
玩家角色与游戏NPC或者是游戏中的物品进行互动。主要是使用BoxCollider 2D进行碰撞,再用OnTriggerEnter2D即玩家的碰撞框与物品的碰撞框接触,这时想要玩家或者是物品产生什么效果,即可在脚本中进行编辑,如果需要玩家进行按键才会出现效果,可使用Input.GetKeyDown(KeyCode.Space),即用空格进行互动。OnTriggerExit2D即玩家离开碰撞区域后想要产生的效果在代码中编辑。
5.4 UI系统的实现
《死神大侦探》的UI有多种,开始界面、操作说明界面、线索界面、声音控制界面、等其他搜索到的界面都由UI控件组成,主要有Button控件、Image控件、Text控件、Input Field控件等多种控件的使用。
5.4.1开始界面
开始界面由三个Button以及一个背景图构成。如图5.7所示
开始游戏按钮:使用SceneManager.LoadScene()进行场景的跳转。
操作说明按钮:使用SetActive让操作的界面显示出来。
退出游戏按钮:使用Application.Quit()退出游戏。
图5.7
5.4.2游戏界面
游戏界面有多个UI界面,如下。
背包界面:用于显示背包。如图5.8所示。
图5.8
线索界面:由多个按钮以及文本还有滑动条以及输入框构成。即玩家使用空格按键时,弹出UI。图片与滑动条由Scroll Rest组件进行关联,即可使用滑动条拖动图片的上下显示移动。如图5.9所示。
图5.9
用public InputField获取到输入框,使用IF语句中的并,即用&&进行输入的文本与本身设置的密码文本进行对比,完全一致的时候才可以进行下一步,也就是打开某个东西,如图5.10、图5.11所示。
结案界面:由三个输入框与两个按钮构成,输入框如上线索界面输入框类似,即输入的文字与设定的答案相匹配才能通关。如图5.12所示。
图5.12
成功界面:由按钮,图片等组成。如图5.13所示。
图5.13
5.5背景音效的实现
开始界面与成功界面的音乐是在摄像机上添加AudioSource组件,将音乐文件拖拉到组件里面的AudioClip里面。
游戏中的音乐是在人物上添加AudioSource组件,将音乐文件拖拉到组件里面的AudioClip里面。
背景音乐控制功能实现:
需要用Slider来控制背景音乐的大小。把有Audio的组件拖入Slider的On Value Changed中,将两个组件中的变量Volume结合起来,这样就可实现左右拖动按钮调整背景音乐的大小。如图5.14所示。
图5.14
5.6 角色转移场景的实现
因为《死神大侦探》是一个解谜游戏,所以不可避免的会有多个场景,如果每一个场景都是创建一个Scenes的话,会很麻烦而且每一个场景的切换会有很多未知因素。《死神大侦探》的素材都是像素图,所以图片并不占用很大的空间,即使所有图片在一个场景里也不会造成卡顿。综上,《死神大侦探》虽然有多个不同的游戏场景,但是开始游戏只有一个Scenes,里面存储了12个游戏场景。所以角色在游戏中的场景转换其实是角色的坐标发生了转变。
使用Playermove.instance.transform.position = targetPos.position;代码,使玩家角色的位置坐标成为固定的位置坐标,这就是角色转移场景的核心。
且为了使游戏能够更快的加载,设置了一个在一个Scenes里再通过转换场景再加载相应场景的功能。首先设置一个静态公开类,即存储12个场景。再通过SceneLoad.ChangeLevel(“level”);进行场景的加载。
5.7背包存储功能的实现
因为《死神大侦探》是一款解谜类的游戏,所以就像市面上一般的解谜游戏一样,需要很多道具的使用,解开谜题,所以背包的设计是用来储存所需要的道具。这也就说明背包需要存储道具的数据,并且获取到道具的图标,能够在拾取到道具的时候,将背包物品栏中的图片替换为道具的图片。
背包是使用了系统自带的UI,将每一个物品小框作为一个独立的GameObject,共有8个,把它们共同放在一个总体空或者图片下,这样方便统一管理,也就构成了物品栏。根据调整物品框的位置,使物品栏能够美观。建立一个BagUI的脚本,运用public static BagUI Instance { get; private set; }建立一个类可以让其他类进行访问。因为需要使用物品,且每一个物品要具有不同的属性,建立一个枚举,用来存储道具物品的属性,这样才能更好的让道具与要使用的地方一一对应。同时写一个道具的类——public class ItemData,将枚举的属性与道具特殊的图片写入道具类里。同时将道具类的数据公开化,使道具的数据能够被访问。
接下来是要获取到玩家的数据,因为只有玩家触碰到道具的时候,才可以对道具进行存储。建立一个PlayerData类,同时建立一个道具列表,public static List<ItemData> ItemList = new List<ItemData>();设置一个静态变量,将道具的数据添加到道具列表里面。同时更改BagUI里面的图片,将图片替换为道具的ICON,所以每一次的道具存储需要更新一次背包,背包更新代码如下:
public void UpdateItems()
{
int i = 0;
for (; i < PlayerData.ItemList.Count && i < ItemWidgets.Count; i++)
{
ItemData item = PlayerData.ItemList[i];
GameObject widget = ItemWidgets[i];
widget.SetActive(true);
widget.transform.Find(“Icon”).GetComponent<Image>().sprite = item.Icon;
}
for (; i < ItemWidgets.Count; i++)
{
ItemWidgets[i].SetActive(false);
}
}
同时因为要使用道具也需要访问背包是否具有对应属性的道具。运用For循环在列表里进行查找,如果查找到相同属性就return true;,否则就return false;代码如下:
public static bool hasItemOfType(EItemType shuxing)
{
for (int i = 0; i < ItemList.Count; i++)
{
var item = ItemList[i];
if (item.ItemType == shuxing)
{
return true;
}
}
return false;
}
使用了道具之后同时也更新背包,将背包里面的icon与道具列表里面的相应道具数据进行清除,代码如下:
public static bool UseItem(EItemType shuxing)
{
for (int i = 0; i < ItemList.Count; i++)
{
var item = ItemList[i];
if (item.ItemType == shuxing)
{
ItemList.RemoveAt(i);
BagUI.Instance.UpdateItems();
return true;
}
}
return false;
}
图5.15
5.8 人物对话功能的实现
人物对话的实现主要是使用了Fungus插件。但是该插件一般是用来实现纯对话类的游戏,所以要想完成第三人称解谜类的游戏,就需要自行修改一些代码。所以在最开始的时候是要关闭对话插件,在需要的情况下才调出对话框。定义private bool canChat = false;与public string ChatName;,如果有对应的ChatName,则运行对应的对话。
void Say()
{
Playermove.instance.speed = 0;
if (canChat)
{
Playermove.instance.speed = 0;
//对话
FlowchartflowChart=GameObject.Find(“Flowchart”).GetComponent<Flowchart>();
//对话是否存在
if (flowChart.HasBlock(ChatName))
{
//执行对话
flowChart.ExecuteBlock(ChatName);
Playermove.instance.speed = 0;
}
}
}
图5.16
5.9 本章小结
本章节对游戏开发环境、游戏界面实现、背景音效控制实现、游戏背包存储实现、人物对话实现等功能进行了详细的讲述。
6 游戏测试
游戏中的测试,除了专业的软件测试方法外,还需要结合游戏自身的特点,测试游戏的所有功能和性能,对游戏的可玩性、合理性、平衡性等作一个相应的测试。
6.1 功能测试
功能测试主要内容是对游戏的各个功能进行测试,功能测试主要从启动游戏、进入游戏、游戏相关设置、玩家基本操作、背包存储功能、玩家对话功能、游戏音效等功能点开展详细的功能测试,如下列表6.1所示。
表6.1 功能测试点
功能 | 操作 | 期望结果 | 运行结果 |
启动游戏 | PC端运行游戏 | 成功启动 | 成功 |
退出游戏 | 点击退出后关闭游戏 | 成功退出游戏 | 成功 |
进入游戏 | 加载场景实现 | 成功加载游戏资源 | 成功 |
点击开始后开始游戏 | 成功进入游戏场景 | ||
角色操作 | 通过AD按键移动 | 成功移动角色 | 成功 |
角色移动播放动画 | 成功播放动画 | 成功 | |
控制音量 | 声音设置 | 实现音乐音量增加减小 | 成功 |
背包存储功能 | 人物通过空格按键拾取道
具并且道具ICON能够 显示在背包的物品栏中 | 背包栏中成功显示
拾取的对应道具ICON | 成功 |
对话功能 | 能与物品进行对话 | 成功对话 | 成功 |
能与人物进行对话 | 成功对话 | 成功 | |
特效播放 | NPC动态 | 成功播放NPC的动画 | 成功播放 |
提示动画 | 成功播放提示动画 | 成功播放 | |
游戏音效 | 背景音乐、音效 | 根据使用情况播放相对应音效 | 运行正常 |
UI显示 | 线索UI显示 | 成功显示线索 | 成功 |
结案界面显示 | 成功显示界面 | ||
成功界面显示 | 成功显示成功界面 |
6.2性能测试
游戏性能与运行设备配置息息相关,为了测试游戏性能的兼容性,选择了不同配置的电脑进行游戏测试,测试相关性能如表 6.2所示。
表6.2 性能测试设备配置表
设备名称 | 运行游戏测试数据 | |
惠普暗影精灵3 | 帧率 | 45帧/秒 |
内存占用大小 | 21% | |
内存峰值 | 621MB | |
华硕飞行堡垒 | 帧率 | 32帧/秒 |
内存占用大小 | 19.9% | |
内存峰值 | 622MB | |
联想G470 | 帧率 | 29帧/秒 |
内存占用大小 | 20.2% | |
内存峰值 | 641MB |
游戏性能测试主要针对运行的帧率、内存占用大小、内存峰值以及其他异常情况等进行测试。经过测试这三款电脑的CPU 占用率均在 19%-21%之间,电脑散热情况良好,综合测试结果游戏对配置要求不高。
6.3本章小结
本章通过游戏功能及性能进行了测试,通过不同型号的电脑运行游戏,完成对游戏的基本测试。表6.1记录了功能测试的最后结果,表6.2记录了性能测试的最后结果。
7总结
《死神大侦探》解密益智类游戏的设计与实现顺利完成,自己从游戏背景研究,游戏功能分析,游戏功能实现等进行了一系列的阐述。从《死神大侦探》游戏开发的开始到结束,自己也是付出了很多心血,当然也总结了许多经验与不足。
(1)从游戏本身的设定来说。游戏是以西方背景为主,以死神作为玩家角色进行探索。不同于一般的警察探案,死神探案更具有魔幻性与趣味性,能够给游戏的故事背景带来更多元素。游戏中的NPC都有自己鲜活的个性,很多都是现实中会存在的人物,这也让玩家对于游戏更有代入感。为了丰富游戏内容,虽然游戏本身是以探案为主,但是在游戏中也存在着许多彩蛋,能够让游戏的故事背景更加鲜活。
(2)从游戏本身的画面来说。游戏中具有大量的动态效果,NPC都具有不同的特色的动作展示,且询问时也有询问标志的提示闪烁,能够让游戏更有指示性,能够让玩家更好的进行游戏。
(3)从游戏本身的功能来说。《死神大侦探》作为解谜游戏,具有解谜游戏基本的功能。游戏能够运行流畅,且功能都能够很好的显示出来。游戏也有音效音乐,更够更好的渲染游戏气氛,让游戏更有一种休闲轻松的感觉。
(4)从游戏本身的特色来说。《死神大侦探》的画风是一大特色,因为是运用了像素的元素,且每一个人物都是原创的,所以不会有很大的视觉疲劳。游戏的故事也是非常有特色,每一个人之间的故事错综复杂,非常精彩,结局往往意想不到,这也让游戏更加好玩。
与当下市场上的解谜益智类游戏相比,主要还存在以下问题:
(1)目前游戏只有PC端,随着时代的发展,智能手机越来越多,手机也成为了大家必不可少的一部分,如果游戏能有手机端,可能会有更多人能够知道,也会有更多的玩家游玩。
(2)游戏是单机模式,每一个NPC都是设定好了的,虽然这样也有可玩性。但是现在大家都追求有更多互动性的游戏,如果能有联机模式,每一个NPC都由玩家进行扮演,可能会有更好的效果。
(3)游戏的功能还不是很多,如果能添加更多有趣的功能,能够让游戏更具有可玩性,也更丰富。
参考文献
[1] 基于Unity3D和3DSMax的虚拟医院漫游系统的设计与实现[J].俞磊,韩春香.长春大学学报.2020(04)
[2] Unity3D开发工具在3D游戏开发中的应用[J].朱晴.电子技术与软件工程. 2019(22)
[3] 基于Unity3D的虚拟校园漫游系统及其关键技术研究[J]. 尹大伟,张熙若,李欢欢,马恒锐,孟祥锐. 软件工程. 2019(09)
[4] 基于Unidy3D的角色扮演游戏设计与实现[J].袁科,高启文,闫永航.软件导刊. 2019(08)
[5] 基于Unity3D虚拟校园漫游碰撞检测的研究[J].朱喜基,冯振辉.江苏科技信息. 2018(11)
[6] Unity3D中碰撞检测问题的研究[J].武桐,王晓雨.电子测试. 2018(01)
[7] Unity3d游戏开发中的面向组件思想和MVC框架[J].马春江,张明禎.信息与电脑(理论版). 2017(18)
[8] 基于Unity3D的轻量级ARPG手机游戏系统研究与应用[D].邓增强.广东工业大学.2017
[9] 基于Unity3D的三维游戏场景设计与实践[D].张策.合肥工业大学.2016
[10] 基于Unity3D的FPS游戏设计与开发[J].伍传敏,张帅,邱锦明.三明学院学报. 2012(02)
[11] FPS Game Design and Implementation Based on Unity3D[A].Ying-fang ZHANG,Chen-lin WANG,Da-wei ZHU.Proceedings of 2016 International Conference on Informatics,Management Engineering and Industrial Application (IMEIA 2016)[C]. 2016
[12] 基于Unity3D的多平台三维空战游戏的开发[J].张典华,陈一民,李磊.计算机技术与发展. 2014(01)
[13] 基于Unity3D的FPS游戏设计与开发[J].伍传敏,张帅,邱锦明.三明学院学报. 2012(02)
[14] Automatic Functional Testing of Unity 3D Game on Android Platform[A]. Huixian HU,Lu LU.Proceedings of 2016 3rd International Conference on Materials Engineering,Manufacturing Technology and Control(ICMEMTC 2016)[C]. 2016.
致谢
这次设计充满着坎坎坷坷,如果没有一路的相助,我想这设计很难进行到最后。
在此,我要感谢每一个给过我意见的人。第一位感谢的当然的是我的老师,感谢老师在我遇到难题的时候总是循循渐进的教我,让我一点一滴去走出那些难题。我的老师,在这次设计无疑担任着一个重要的引路人,他总可以在我踌躇的时候给我一个出口去继续前行。
再则要感谢的是有经历过的学长学姐的指导,是你们的点拨,让我少走了很多弯路。
总之,是你们的耐心,在后面助我前行,感谢。
1、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“文章版权申述”(推荐),也可以打举报电话:18735597641(电话支持时间:9:00-18:30)。
2、网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
3、本站所有内容均由合作方或网友投稿,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务。
原创文章,作者:1158,如若转载,请注明出处:https://www.447766.cn/chachong/165777.html,