《基于Unity3D的解密RPG游戏的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Unity3D的解密RPG游戏的设计与实现.docx(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘要本次课题是研造一款以Unity 3D引擎的解密RPG游戏。游戏剧情是以浦岛太郎的童话故事为主题进行改编,原故事结局是浦岛太郎打开玉匣,最终变成了一个老头子,单调而且具有漏洞。而本游戏将会一改原故事的结局,并且添加更多不同的故事结局,使游戏过程更加扑所迷离,而且还会加入隐藏剧情增加游戏的趣味性,使得游戏更具有故事性。玩家将扮演浦岛太郎进行龙宫探索,在龙宫探索期间,发现龙宫中的各种不寻常的事件,发现最终的真相。在整个游戏设计的过程中,将运用到3DMax模型制作、Animator与Animation的动画制作系统、NavMeshAgent自动导航系统以及Fungus对话系统等多种技术相互结合,制
2、作出一款可玩性高以及富有戏剧性的解密RPG游戏。而本游戏的改编将会让原故事更加广为人知,以及对原作的更深层理解,具有一定的市场价值和考察意义。关键词:Unity3D Fungus 解密游戏 角色扮演Abstract This project is to develop a decryption RPG game with unity 3D engine. The story of the game is based on the fairy tale of posima taro. The original ending is that posima taro opens the jade b
3、ox and turns into an old man with monotony and loopholes. This game will change the ending of the original story, and add more different ending of the story, so that the game process is more lost, and also add hidden plot to increase the fun of the game, so that the game has more story.Players will
4、play the role of taro of PuDao to explore the Dragon Palace. During the exploration of the Dragon Palace, they will discover various unusual events in the Dragon Palace and find the final truth. In the whole process of game design, it will be used to make 3DMAX model, animator and animation animatio
5、n animation system, navmeshagent automatic navigation system, and fungus dialogue system and other technologies to combine with each other to make a playable and dramatic decryption RPG game. The adaptation of the game will make the original story more widely known, as well as a deeper understanding
6、 of the original, with a certain market value and inspection significance.Key words: Unity Fungus PuzzleGame role-playing 目录第一章 绪论11.1 本课题的研究目的和意义11.2 研究现状11.3 创新思路21.4 游戏对比21.5黑童话起源31.6 Fungus对话系统介绍3第二章 需求分析与总体设计82.1 故事向的解密游戏的需求分析82.1.1 玩家需求分析82.1.2 功能需求分析82.2 游戏的总体方案设计92.2.1游戏结构方案设计92.2.2 总体结构方案设计
7、9第三章 游戏详细设计与实现113.1人机交互模块113.1.1 开始界面113.1.2 设置界面113.1.3 游戏交互界面123.2 游戏场景模块133.2.1 海边场景133.2.2 海底场景133.3剧情模块143.3.1开局143.3.2发展143.3.3高潮143.4 关卡模块153.4.1 迷宫153.4.2 密码锁163.4.3 移动的平台183.4.4 暗门183.4.5 拼图183.5 Fungus对话系统193.5.1 实现原理193.5.2实现结果22第四章 游戏测试244.1功能测试244.2 游戏测试结果与讨论25第五章 总结与展望265.1总结265.2 展望26
8、参 考 文 献27 广东东软学院本科生毕业设计(论文)第一章 绪论 1.1 本课题的研究目的和意义随着计算机在全球有着越来越高的地位,计算机游戏软件的开发正在成长为新兴行业。RPG游戏(角色扮演游戏)也跻身于当今市场上最受喜爱的游戏类型,但是以寓言和童话故事为核心的游戏却为数不多,每当我问起周围的人是否知道浦岛太郎这一个故事的时候,大家的回答都是全然不知。浦岛太郎看似只是一个珍惜时光的寓言故事,如果能够更加深入地发掘并思考的话,可以延伸出更多需要人们深入思考的意义。而故事剧情作为RPG游戏里最重要的构成元素之一承担了相当大的责任和意义,不仅推动游戏情节发展,也是玩家能否具有代入感和深度体验的关
9、键所在。一款游戏拥有优秀的剧情不一定会成为成功的作品,但一款成功的作品一定拥有优秀的剧情。剧情的力量可以使人产生情感的共鸣,当一款游戏的剧情真正打动到玩家的时候,玩家自然会出于个人的情感线索产生持续体验。剧情的另一个发展就是开放式的剧情,国外很多游戏尤其是主机游戏早已采用了这种方法,利用可写入式文本和玩家一同生产剧情,具体的操作就是在对话中会出现多重选项,不同的选项会使剧情向着不同的方向发展产生不同的结局,不得不说这是一个特别好的策略,大大增强了游戏的可玩性,尤其是对于追求不同结局成就的玩家来说,多周目体验成为了必备技能。 为此,本课题是以浦岛太郎的童话故事为主题进行改编的游戏,以浦岛太郎作为
10、故事内核,添加更多的故事结局和故事情节,给玩家带来不一样的体验感,也让更多的玩家了解到浦岛太郎的故事。1.2 研究现状近两年来的中国RPG游戏市场呈现出一种“快餐经营”模式,许多游戏开发商们只是想着创新,却不顾整体的改变,这样顾头不顾尾的做法导致游戏被改得四不像,玩家们也无法在游戏中得到深入其境的享受,再来看看逆水寒,就拿游戏中的NPC交互系统来说吧,有一次不小心跳到了桌子上,结果被周围的人说是一个“无理之人”,游戏中的细节随处可见。开发商都试图创造出独一无二的战斗系统,这本是好事,但问题是,他们脑子里只有战斗系统,而把其他所有的东西都忘得一干二净了,可惜的是,和MMORPG一样,真正独特的战
11、斗系统少之又少,大多数游戏都只是在同一个系统的基础上进行调整,导致这些所谓的“创新”变得如此的不伦不类,四不像。没错,创新是好事,但代价是什么呢?如果能有庞大、具有深度的故事剧情和角色发展,那么光是“攻击”、“物品”和“防御”就够了。为此,本课题的创新方向是从故事情节出发,在原故事情节上进行大幅度修改,带领玩家体验另一个不一样的浦岛太郎1.3 创新思路本课题的创新方向是从故事情节出发,以浦岛太郎作为故事内核,添加更多的故事结局和故事情节,给玩家带来不一样的体验感,也让更多的玩家了解到浦岛太郎的故事,带领玩家体验另一个不一样的浦岛太郎。优化了原故事剧情,并改编成解密RPG游戏,增添更多人物的情感
12、线,加固故事的情节性。添加更多不同的故事结局,使游戏过程更加扑所迷离,而且还会加入隐藏剧情增加游戏的趣味性,使得游戏更具有故事性。1.4 游戏对比(1)玫瑰与黄昏的古城- 平台:PC/PSV本作又名萝洁与黄昏古城,游戏由日本一开发制作,于今年4月发行。名为萝洁的小女孩在一座失去了色彩的古城中醒来,而在她记忆中,她本来是应该住在修道院才对的。于是萝洁开始一边前进,一边寻找各种线索,开始想法设法逃离这座巨大的废墟古城。游戏中萝洁会遇见有着螺旋一样面孔的谜一样的巨人,而这个看起来很可怕的家伙实际上却很善良。在往后的逃离之路上,巨人成为了萝洁强有力的好伙伴。(2)多克罗(骷髅王子)- 平台:PSV/A
13、ndriod/iOS最早是于PSV推出,而后移植到安卓与苹果等移动平台的一款横版动作解谜游戏。游戏的主角原本是一名英俊的王子,被下了诅咒才变成了这幅蠢蠢的小骷髅的模样。变成骷髅的他,失去了很多力量,非常的弱小,尽管这样,他还是依然勇敢的带着公主踏上了逃亡的路途。随着游戏推进,游戏里小骷髅也可以短暂的变回王子模样,王子状态下各方面状态都得到加强,还能直接抱起公主前进。游戏相对来说稍微老一点,但是各种谜题设计的合理又有趣,非常的值得一玩。(3)空洞骑士- 平台:PC/Switch/WiiU人在空洞之中会看到什么?哈哈,别别想太多,并不是要讨论哲学的。这部空洞骑士在游戏中,采用了黑魂和血缘一样的碎片
14、化的叙事,把真相撒在大海汪洋里面让玩家去一点点的找回。和之前推荐过盐与避难所一样,脱胎于宫崎英高老贼那些鬼点子中的本作,也一样的有着较高的难度。推荐给魂系列爱好者和恶魔城老粉们。(4)月圆之夜- 平台:PC/Andriod/iOS是一款独立单机卡牌游戏,探索,冒险,随机事件,随机剧情将会导致不同的结局。七大职业,每个职业有专属的卡组,专属的流派,100种独具特色的怪物,揭秘黑森林的秘密1.5黑童话起源黑童话题材的游戏在以后会越来越多。这是由市场潜在用户群体决定的!作为最早最为广泛接触到格林童话的80后这一代,在幼儿、小学时期接触到童话故事, 而且是记忆比较深刻的。这类人群如今已经沉浸社会多年,
15、面对社会生活的压力,这类人群正是在理解社会压力,感受社会现实的最佳时期,面对幼儿时期的美好童话,他们都觉得那是虚拟科幻的,反而更愿意接受更具备社会现实的黑童话故事。而接班80后的90后,95后群体,更是具备个性十足的一代,他们总能把传统的事物变得更加不一样!对于传统童话故事,他们更不会手下留情!说到这里,其实格林童话初始的原版并不是我们小学课本和我们同年时代的那样!林兄弟在收集民间故事的时候,本身已经做了有利于出版的修改。许多民间故事原来就带有一定的恐惧性色彩,这个情况不论是中国或是德国,都是存在的。比如在我的家乡,有关于海洋动物的吓唬小朋友的故事,但家家不尽相同,最后我的一位同学在以这个为素
16、材创作的时候,做了改动。传统童话IP,如灰姑娘、白雪公主、青蛙王子的游戏早已经满大街,举不胜举,反观同样的著名IP背景,缺失的是吸引大众的亮点,而黑童话题材无疑可以抓住这点!就像腾讯的天魔幻想,本身的游戏IP并不出众,但是经过白洗黑的过程,却反而让人觉得可以一试,加上一些合体技之类的游戏创新,至少是可以让人觉得一试!1.6 Fungus对话系统介绍Fungus是一款检视面板自定义工具,主要帮助标志不同角色对话在检视面板上显示的颜色,以便更好、更清晰地实现游戏角色之间的对话逻辑。克里斯格里根(Chris Gregan)是Fungus的主要作者和维护者,该插件需要Unity5.0及以上版本,无需编
17、写代码。Fungus可以在与标签的对话中触发事件、条件和逻辑处理,并支持摄像机、Sprite及音乐音效的控制。它提供了一个交互界面,可以快速构建一个对话系统。Fungus可以通过直观的视觉脚本系统轻松地将叙事功能添加到Unity游戏中,而无需编写代码。适用于制作视觉小说,RPG,隐藏对象,益智和互动小说游戏。基于流程图的角色对话将角色对话的国际化。轻松控制子画面,摄像机和音频以帮助讲述的故事,适用于2D和3D Unity游戏,易于与其他Unity代码集成,并且易于扩展。强大的Lua脚本支持,适合经验丰富的用户。(图1-1)图 1-1 Fungus对话系统保存菜单:保存菜单是一个简单的用户界面,
18、允许玩家与真菌保存系统进行交互。本节说明每个按钮的作用以及如何配置“保存菜单”属性。保存数据键:用于在Player Prefs中存储游戏数据的字符串键。如果在同一Unity项目中定义了多个游戏,请为每个游戏使用唯一的键。启动时加载:启动时自动加载以前保存的游戏。自动保存:在每个保存点自动将游戏保存到磁盘。启用此选项后,“保存”和“加载”按钮将被禁用。保存菜单还支持一种自动保存模式,在该模式下,游戏会在每个保存点都保存到磁盘上。可以通过选择“保存菜单”对象并选择“自动保存”属性来启用此功能。使用自动保存时,Fungus将禁用“保存功能”和“加载功能”。可以在层次结构窗口的根目录中看到“保存菜单”
19、对象。该对象控制播放器用来与保存系统进行交互的UI菜单。“保存”菜单是一个单例对象,可在场景加载中持续存在,因此只需在游戏的第一个场景中添加一次即可。重新启动删除保存:当玩家重新启动游戏时,从磁盘上删除保存数据。这在测试游戏以确保从空白保存状态开始时非常有用。注意:如果游戏使用多个场景(例如,通过“加载场景”命令),请确保将所有场景添加到“构建设置”中的“构建中的场景”列表中。保存按钮:按下“保存”按钮会使当前的“保存历史记录”序列化为JSON文本,并通过PlayerPrefs类写入持久性存储。保存点:保存点是某个时间点游戏状态的快照。每个保存点都记录当前场景,流程图执行的当前点(即在保存点命
20、令处)以及流程图变量的当前值。目前仅保存Boolean,Integer,Float和String变量。保存点命令:在流程图中使用“保存点”命令可在执行中的该点创建一个保存点。每个单独的保存点命令应具有唯一的保存点密钥。“加载时恢复”选项使加载保存点后从该点恢复执行。保存点密钥:保存点密钥是单个保存点的唯一字符串标识符。默认情况下,父块的名称用于保存点密钥,但是如果需要,也可以使用自定义密钥(例如,单个块中有多个保存点命令)。(注意:每个关键点在每个场景中必须唯一,否则加载将无法正常进行)保存历史:保存历史记录包含先前记录的保存点列表,按时间顺序存储。执行“保存点”命令时,将创建一个新的“保存点
21、”并将其附加到“保存历史记录”中。要在运行时可视化“保存历史记录”,请在层次结构中展开“保存菜单”对象,选择“保存菜单”“面板”“调试视图”并启用游戏对象。保存历史记录中的保存点摘要将显示在文本窗口中。加载按钮:按下“加载”按钮将使先前存储的JSON数据反序列化,并用于填充“保存历史记录”。然后,使用最新的保存点按以下顺序恢复游戏状态。加载存储在“保存点”中的场景(即使它是当前加载的场景)。将流程图变量恢复为已保存的值:在适当的“保存点”命令之后,调用“保存点加载”事件处理程序并开始执行流程图。快退和快进按钮:快退和快进按钮使可以在“保存历史记录”中的“保存点”之间来回移动。每次移动都只是加载
22、保存在“保存历史”中特定点的“保存点”。这本身不会更改“保存历史记录”或将任何内容写入持久性存储。但是,如果倒退到较早的保存点并再次开始播放,则下次执行“保存点”命令时,它将导致时间上更远的所有保存点被永久丢弃。重新启动按钮:“重新启动”按钮清除“保存历史记录”并加载开始场景。起始场景是首次初始化“保存”菜单时处于活动状态的场景。游戏启动:玩家可以随时重新启动游戏,请遵循以下简单规则,以确保在所有情况下都能正确处理游戏启动。避免使用Game Started事件处理程序。这仅在第一次玩游戏时正确运行,而不是在加载保存的游戏后才能正常运行。加载保存的游戏后,希望执行从保存点开始,而不是再次从流程图
23、的开头开始。当要在加载特定保存点时执行块时,请使用“保存点加载”事件处理程序。这些事件处理程序会在“保存点”命令恢复执行之前被调用,因此它使有机会在游戏玩法恢复之前进行设置工作。当开始一个新游戏时,Fungus会寻找一个启用了Is Start Point属性的Save Point命令并执行它。加载以前保存的游戏时,Fungus会从相关的“保存点”命令开始执行,并忽略起点。这意味着,如果的游戏支持保存,那么在每个场景中,都应该始终只启用一个“保存点”命令,并启用“开始点”属性。注意:“游戏启动”事件处理程序将同时针对新游戏和已加载的游戏触发,这通常不是想要的,因此请避免在支持保存的游戏中使用它。
24、当保存的游戏加载完毕时,通常需要做一些额外的工作,以确保场景处于正确的状态。例如,可能需要将相机移动到游戏中此时适当的位置或播放的特定音乐曲目。一种简单的方法是通过“保存点加载”事件处理程序。图1-2 Flowchart界面在示例场景中,在流程图中选择“播放音乐1”块,然后查看其具有保存点加载事件处理程序。当加载“保存点键”列表中的任何保存点时,这将执行“块”。在这种情况下,我们只是为游戏的这一部分播放正确的音乐,但是可以在此处进行任何需要的设置。当执行匹配的“保存点”命令时(如果启用了“火灾事件”属性),也会触发“已加载保存点”事件处理程序。这使可以将所有场景设置命令放置在一个共享的块中,当
25、首次到达“保存点”命令或在该“保存点”加载先前保存的游戏时,将调用该块。保存流程图变量:每个保存点都可以在该时间点存储流程图变量的状态。可以使用保存数据对象来使保存系统知道要在其中包括哪些流程图。请注意,目前仅保存Boolean,Integer,Float和String变量。在示例场景中,可以在层次结构窗口的根目录中看到“保存数据”对象。Flowcharts属性包含要在此场景中保存的Flowchart对象的列表。要将“保存数据”对象添加到场景中,请选择“工具”“Fungus”“创建”“保存数据”。可以在列表中添加任意多个流程图,但请确保每个流程图都有唯一的名称(例如,流程图1,流程图2等),否
26、则加载将无法正常进行。如果扩展保存系统以支持保存其他类型的数据(除了Flowchart变量),则可以修改SaveData组件或将其子类化以实现此目的。第二章 需求分析与总体设计2.1 故事向的解密游戏的需求分析2.1.1 玩家需求分析解密游戏作为一种硬核的流行游戏,它按照一定的逻辑或数学,物理,化学,甚至有着一套独特的系统规则,经过一番思考和推理来完成某些任务,考验玩家的知识和科学的综合运用逻辑推理能力。目前市场上的解密游戏层出不穷,大多数都是给予既定的各种道具和场景的方式设置谜题,一成不变的解谜手段和缺乏新意的场景设置使得用户对解谜类游戏渐渐失去了兴趣,使得该类游戏的开发逐步停滞。2.1.2
27、 功能需求分析综合上述内容,将本文探讨研发的游戏功能大致划分为如下几个模块。 图2-1 功能模块图(1)剧情设计:以浦岛太郎的童话故事为主题进行改编,原故事结局是浦岛太郎打开玉匣,最终变成了一个老头子,单调而且具有漏洞。而本游戏将会一改原故事的结局,并且添加更多不同的故事结局,使游戏过程更加扑所迷离,而且还会加入隐藏剧情增加游戏的趣味性,使得游戏更具有故事性。(2)模型动作:使用建模工具(3DS MAX)中对人物模型进行搭建或者进行修改,并导入到游戏之中,并在游戏当中添加一些人物动作和物品特效,以让玩家更加适应游戏特色。(3)场景设计:以海洋和陆地作为两大主场景,用3DS MAX搭建好海洋和陆
28、地上所需的物体,然后将物体模型搭建成所需要的场景,尽可能做出一个浦岛太郎的世界观的环境,并且尽可能做到不违和、少穿模的地步。(4)音乐与音效设计:通过不同的音乐和音效凸显出故事情节的变化和穿越到不同场景的效果,让玩家有特殊事件和场景切换的感觉。(5)AI设计:通过设计出不同行为、不同能力的NPC,来让玩家分辨出哪一些是基础NPC,哪一些是特殊NPC,然后触发特殊事件。(6)UI设计:在游戏当中加入适当数量以及类型的UI字幕,同时给玩家制作鲜明的游戏UI,实现 UI 的交互、链接以及隐现,方便玩家探索。 (7)动画设计:在某一些情节中,使用Unity内置的TimeLine制作出相应的剧情动画,补
29、充了游戏的故事,同时也达到引导玩家的目的。2.2 游戏的总体方案设计2.2.1游戏结构方案设计考虑到各式玩家与各类游戏接触的时间不尽相同,为了使玩家们都能够对本文游戏快速上手,游戏的大体结构不能太过于复杂。所以该游戏选用了大多数电子游戏的结合进行设计。结构详情如下图2-2所示。 图2-2 游戏流程图2.2.2 总体结构方案设计本电子游戏总体模块的构架如下图2-3所示。图2-3 总体结构模块架构图本项目的总体结构模块主要分为三大模块。(1)人机交互模块:开始界面、设置界面以及游戏交互界面这三大界面作为主要的界面交互的方式,这三个界面将会使用Unity3D引擎中的UGUIUI系统模块、C#脚本编辑
30、模块与fungus对话系统进行开发。使用C#脚本进行对玩家的操作进行监视,并使用相对应的UI界面进行反馈,告知玩家所进行的操作会对游戏产生怎么样的变化,为此来设计这三大游戏界面。(2)游戏场景模块:此模块主要分为两大板块海边场景和海底场景。海边场景为开始部分与最终解密部分的主要场景;海底场景为发展部分的主要场景,可通过与不同人的交流和探索场景了解一些线索。(3)剧情模块:剧情模块包括开局、发展、高潮三个部分。开局部分将会影响玩家是否前往龙宫的结局,发展部分为玩家探索海底龙宫的部分,高潮部分为玩家返回地面后进行最终解密的部分,将揭示浦岛太郎的最终结局的部分。第三章 游戏详细设计与实现3.1人机交
31、互模块3.1.1 开始界面本电子游戏的开始界面采用的特性出于以下三点进行考虑:(1) 简约性:因为本游戏是一个故事向的解密游戏,在游戏开始界面不需要过于复杂的界面进行表现游戏的趣味性,应当以通俗易懂、简洁明了的形式来创建界面。(2) 明确性:游戏剧情是以海洋和陆地两大主场景中进行游戏,所有游戏开始界面,使用了海岛和海平面作为游戏开始界面,既展示了美观性,也表明了本游戏的场景有哪一部分。(3) 交互性:在开始界面插入一段音乐,提前有着良好的心态进行游戏,让玩家有良好的交互反馈。开始界面中的选项加入一个“游戏说明”,来让玩家了解浦岛太郎的原故事情节,然后将玩家误以为只是普通的浦岛太郎的故事,然后发
32、现故事剧情会出乎玩家的意料,然后刺激玩家的游玩冲动。 用 Unity3D 引擎自带的 UGUI 来进行 GUI 的制作,原因是因为本次游戏的 GUI 需求量并不繁杂,使用 UGUI 足以支持这简约的 GUI 设计开发。用Audio系统中AudioSource对象里面的AudioSource组件中的AudioClip存储音乐和音效。图3-1 开始界面3.1.2 设置界面本项目的设置界面目前添加了音乐与音效的功能,让玩家对游戏内的音乐与音效进行调整,采用羊皮纸的材质作为设置界面的背景,突出故事的古老性,如有需要将会在后续开发中加入相对应的功能。图3-2 设置界面3.1.3 游戏交互界面玩家通过某些
33、按下按钮或者点击人物与游戏中的NPC进行交互与对话,或者查看某件道具的描述与用途,从而将补充游戏内的剧情以及降低游戏的难度,增加游戏的可玩性与趣味性,让玩家更好的理解游戏剧情和合理地使用道具。图3-3 人物对话3.2 游戏场景模块3.2.1 海边场景浦岛太郎是一个生活在海边的一个渔夫,他生活的地点应该为一个海边的场景,身边有着渔夫所需要的生活工具,身处海边场景的时候,有时候传来一阵阵的海鸥的叫声,加强玩家的代入感,让玩家理所应当地认为自己是一个普普通通的渔夫,应当平平凡凡地度过一生,直到他救了一个被孩子们欺负的海龟,他的人生轨迹突然出现了变化。(图3-4)图3-4 海边小屋3.2.2 海底场景
34、在浦岛太郎救了海龟后的几天,海龟为了来感谢浦岛太郎,带他前往海底龙宫的情节,玩家由此进入了海底龙宫的场景,他遇到了龙宫乙姬,并在受到龙宫乙姬的盛情邀请下,在海底龙宫住下了,也由此开始了玩家的主线剧情,玩家通过在龙宫的生活,发现了各种秘密或者意外,也经历了各种奇妙的事情,破解了各种谜题和机关。(图3-5)图3-5 海底世界3.3剧情模块3.3.1开局玩家的设定是一个生活在海边的一个渔夫,他的名字叫做浦岛太郎,浦岛太郎到海边去打鱼。当他走到海边的时候,发现一只搁浅的大海龟正在被一群调皮的小孩子欺负。浦岛太郎就用钱劝走这群顽皮的孩子,救下了这只大海龟,并带他到海边,并对它说:“你赶快回海里去吧!小心
35、不要再被别人捉到了唷!”,正是因为他这个行为,他的人生轨迹突然出现了变化。3.3.2发展在浦岛太郎救了海龟后的几天,浦岛太郎海边捕鱼的同时,那只被救的大海龟跑到了他的跟前。海龟为了来感谢浦岛太郎,带他前往美丽的海底龙宫,以酬谢他的恩情。浦岛太郎回答说“我担心还在家中的母亲”,但是海龟说会送他回来,浦岛太郎也接受了海龟的邀请前往了海底龙宫,浦岛太郎在感叹海底的景色的同时,也到达了龙宫。再然后他遇到了龙宫的主人乙姬,她正在龙宫的门口等待着浦岛太郎,并为表感谢他救下了海龟,希望浦岛太郎在龙宫住下,浦岛太郎不好推脱在海底龙宫住下了,开始了玩家的主线剧情,玩家通过在龙宫的生活,发现了各种秘密或者意外,也
36、经历了各种奇妙的事情,破解了各种谜题和机关。3.3.3高潮高潮一:玩家在龙宫不觉得已经过了几天,浦岛太郎开始想家了。他突然担心起了家中的情况,浦岛太郎就对龙宫乙姬说:“乙姬公主,我想我是时候该回家了。”在龙宫乙姬的再三劝阻下,浦岛太郎决意离开龙宫,龙宫乙姬决定送个他一个玉匣,并且警告在他年老之前绝对不能打开它。浦岛太郎再次骑到海龟的背上,回到思恋已久的故乡。但是,他发现村子的景象和来时的景象完全不同了。到处都是陌生人,没有一个熟人;而且,不管浦岛太郎再怎么找,就是找不到自己的家,和年老的母亲。浦岛太郎问一位坐在路旁的老公公:“你知道浦岛太郎的房子在哪里吗?”老公公回答“啊!我曾经听过关于浦岛太
37、郎的传说,不过,自从三百年前他去了龙宫之后,就再也没有回到村子了。”“已经过了三百年了,那么我的母亲也早就去世了。”浦岛太郎消沉地坐在路旁的石头上。这时候,他突然想起了手上拿着龙宫乙姬送给他的王匣子。“里面到底装了什么东西呢?”浦岛太郎遗忘了龙王公主的嘱咐,把玉匣子的盖子打开了。突然间,里面冒出了白色的烟幕。更奇怪的是,当白烟碰到浦岛太郎的时候,他一下子就变成一个满头白头发的老公公了。高潮二:浦岛太郎没有打开玉匣,他通过发现一些不寻常的线索,发现事情跟龙宫有着莫大的联系,然后他通过一些方法回到了龙宫,然后他发现了事情的缘由,并且让海面上恢复了原有的状态了。3.4 关卡模块由于本项目为解密向游戏
38、,可分为主线剧情和支线剧情,主线剧情需要层层相扣,环环相接才能进行下去,但是由于选项的不同,可能触发的剧情会有所不同,产生的结局也会有所不同。玩家所选的选项不同,接下来走的路线就会越加复杂,产生的结果也会越多。3.4.1 迷宫迷宫的结构实现了最为经典的关卡设计与游戏的心理学,通过在地牢的各个地点配置不同的怪物与宝箱。玩家在绕到什么地方的时候会遇到一条死路,在处处撞壁,放弃希望之时,却发现另一条岔路柳暗花明,得到了特殊线索和道具,或是一个隐藏的储存点。这点在甚至在早期的FPS里也被用得滚蛋烂熟。Doom的关卡就是这么干的。迷宫的地形设计以3DSMax三维动画渲染和制作软件进行制作与上色,如图3-
39、6。图3-6 迷宫设计图3.4.2 密码锁需要玩家通过与一些NPC对话,得到密码锁和密码纸条的两个地点,然后到达地点之后,找到开启密码锁的密码纸条,通过纸条上的密码进行解锁,得到箱子或者门后的道具和开关。密码锁的解锁方式使用Fungus对话系统进行开发,可以以少量的代码进行完成,减少Bug的产生,也简化了流程。通过4个Button和Text组成密码锁的结构,并将这个四个Button和Text设置成预制体,以方便统一修改Button和Text的格式。通过绑定按钮A(Button)以获得修改按钮A的子节点数字A,并将触发事件改为ButtonClick,并设置变量“数值”,每点击一次“按钮A”,变量
40、“数值”将增加1,“数字A”同时也增加1,并加入判断语句:数值大于9,数值将会归零。(图3-7)图3-7 密码锁的“加1”逻辑块要让密码的四个数值发生变化,添加4个Block块,并绑定按钮ABCD,同时调用(Call)“加1”Block块,设置四个变量“数字A”、“数字B”、“数字C”、“数字D”,如当按钮B被点击时,数值获得数字B的值,执行“加1”block块,数值加1,再加以限制(Wait Until Finished)等待“加1”执行完成,才能进入下一步,否则容易出现数值未加1,但已经执行下一步的情况,导致数字没有变化的Bug。接着变量“数字B”获取“数值”的值,为了可视化变量“数字B”
41、的值,将赋值到Text“数字B”的值。(图3-8)图3-8 密码锁Block的调用在“检查密码”块上添加4个if语句进行判断,当4个Button上的Text数字与if语句上的数字相同时,密码锁将会被解开;通过将四个Button的Block块调用“检查密码”块上的IF语句,每一次按钮的点击事件都会进行密码检查,以检验密码是否正确。图3-9 密码锁最终流程图3.4.3 移动的平台玩家需要通过角色的移动和跳跃通过一些移动的平台,已获得一些必要的道具和线索,有时候需要一些解密才能够完成。3.4.4 暗门隐藏在某一个房间里面的暗门,需要通过NPC的对话或者玩家探索地形后发现,开启的时候将会弹出对话框来告
42、诉玩家“某处的暗门已被打开”,已让玩家获得良好的视觉反馈。(图3-10)图3-10 暗门开启3.4.5 拼图获取某一些道具时,所需要完成的一个解密小游戏,主要通过C#脚本进行编写,其核心代码如下图所示,通过if语句判断点击位置的图片是否能够移动,如果能够移动,就获取空白图片的对象,然后将空白对象存储成被点击对象的图片,然后进行空白对象的实际使用图片替换,再将点击对象的存储图片清除,然后实际上的图片也清除,这样每次替换就不需要重新拿图片了,节省内存、提升性能。void OnClickEvent(Item item) if (canMovie(item) /判断点击位置的图片是否能够移动 var
43、t = NoneImage(); /获取空白图片对象 t._sprite = item._sprite; /将空白对象存储的图片替换 t._Obj.GetComponent().sprite = item._Obj.GetComponent().sprite; /将空白对象的实际使用图片替换 item._sprite = null; /点击对象存储的图片为空 item._Obj.GetComponent().sprite = null; /点击的对象的实际使用图片为空 if (Success() /判断是否拼图成功 Debug.Log(胜利); 3.5 Fungus对话系统本项目由于是解密游戏
44、,主要通过人物之间的对话和物品的介绍进行剧情的补充,Fungus可以通过直观的视觉脚本系统轻松地将叙事功能添加到Unity游戏中,而无需编写过多冗余的代码。适用于制作视觉小说,RPG,隐藏对象,益智和互动小说游戏。基于流程图的角色对话将角色对话的国际化。能够轻松控制子画面,摄像机和音频以帮助讲述的故事,适用于2D和3D Unity游戏,易于与其他Unity代码集成,并且易于扩展。3.5.1 实现原理Fungus对话框SayDialog如下图所示,由Unity自带的UI系统中一个Panel父节点,NameText、Image、StoryText子节点组成。被FlowChart窗体中的Block块
45、中Say脚本调用,以进行对话系统中的对话框的模板进行显示,开发者可通过创建一个SayDialog来更换对话框的格式、位置和图片。图3-11 Fungus对话框原理SayDialog对话框主要运用到Say Dialog这个脚本为主要脚本,通过FadeDuration来控制图 中CanvasGroup中的Alpha来进行对话框的显示与消失,FadeDuration数值越大,Alpha值的增长速度就越慢,对话框的显示/消失就越慢。所以一般选用0.25的默认值即可。通过SayDialog脚本中的绑定NameText、Image、StoryText子节点中的各个组件,其中NameText将会调用右图的c
46、haracter脚本语言中的NameText值和NameColor作为角色名字和名字颜色进行显示,头像以右图下方的Portraits的elementNum进行添加,Size为头像的数量;而每一个Character脚本又会被Block块调用,形成多角色选择的选项,以让开发者进行角色选择对话,通过Command中的Say对象脚本中进行选择Character和相对应的Portrait来显示角色名字和角色头像。(图3-12和图3-13)StoryText则是通过Block块中的Say对象脚本中的StoryText进行值传递,格式与位置将会根据绑定的StoryText子节点来决定。图3-12 SayDialog对话框脚本(左)与Character脚本(右)图3-13 Block块3.5.2实现结果根据3.5.1的分析出的实验原理,对Fungus默认的对话框进行修改,优化了角色名字的字体格式,更换了对话框的背景图片,添加了人物的头像以便分析,结果如图3-14所示。图3-14 对话框的修改第四章 游戏测试游戏质量的好坏关系不仅影响用户的体验,也影响开发商利润的高低,所以做好游戏测试是必要的,因此在游戏必须满足一定的质量标准才能进行发行。本章节用于测试的计算机硬件环境以及软件环境于下表 5-1 所示。表5-1测试环境软件与硬件环境参数值CPUInte