基于unity3D的求生游戏的设计与实现.docx

上传人:封****n 文档编号:96763349 上传时间:2024-03-19 格式:DOCX 页数:31 大小:7.91MB
返回 下载 相关 举报
基于unity3D的求生游戏的设计与实现.docx_第1页
第1页 / 共31页
基于unity3D的求生游戏的设计与实现.docx_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《基于unity3D的求生游戏的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于unity3D的求生游戏的设计与实现.docx(31页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、摘要 随着生活水平的不断提高,科技发展速度迅猛,人们除了对生活品质有所追求外,对游戏娱乐等精神层面的品质也开始有所追求,有关游戏的各种信息量也成倍增长,庞大的游戏玩家群会对游戏的种类体验要求越来越多,想要玩到更多的新颖的游戏。因此开发一款模拟求生类游戏对游戏玩家来说进行不仅是一种全新的体验,而且还能从游戏中获取一些求生的知识,通过求生游戏,体验到游戏新颖刺激玩法的同时从而达到足不出户也能学到求生生存知识。 本课题使用Unity3D引擎设计了一款生存类题材的游戏。本人的主要工作有以下几个方面。首选,分析了热门流行的生存类题材游戏的内容和玩法,设计了一款生存类游戏的需求。然后在需求分析的基础上,使

2、用Unity3D引擎实现了游戏场景的搭建、导入游戏对象,设置游戏对象的动画和实现挂载游戏对象的脚本。最终实现了需求确定的功能,并完成了游戏的测试。关键词: Unity3D 生存类游戏 游戏交互Abstract With the continuous improvement of living standards, the development of science and technology rapidly, in addition to pursuit for the quality of life, people on the game entertainment also began

3、 to pursue spiritual quality, all kinds of information about the games also have multiplied, large group of gamers will demand more and more kinds of game experience, want to more new games to play.Therefore, the development of a simulated survival game is not only a new experience for the game play

4、ers, but also to obtain some knowledge of survival from the game, through the survival game, experience the game novel and exciting gameplay so that they can not leave home at the same time to learn survival knowledge.This subject uses the Unity3D engine to design a survival theme game.This subject

5、uses the Unity3D engine to design a survival theme game.My main work has the following aspects. First, analyze the content and gameplay of the popular survival games, and design the needs of a survival game. Then based on the requirements analysis, the Unity3D engine was used to build the game scene

6、, import the game objects, set the animation of the game objects, and implement the script to mount the game objects. Finally, the function of determining the requirements was realized, and the test of the game was completed.Keywords: Unity3D survival game game interaction广东东软学院本科生毕业设计(论文)目录基于Unity3

7、D的求生游戏的设计与实现1第一章 绪论31.1课题的研究背景31.2课题的研究意义41.3国内外发展现状51.4论文的组织结构6第二章 Unity3D引擎技术62.1 Unity 3D编辑器介绍62.2 Unity3D引擎的功能72.2.1 Unity地形编辑器功能72.2.2 Unity3D引擎中的物理引擎系统82.2.3 Unity3D引擎中的脚本系统82.2.4 Unity3D引擎中的动画系统82.3 Unity3D游戏开发流程102.4 Unity游戏开发中的常见设计模式112.4.1单例模式122.4.2 事件模式122.4.3 MVC模式122.5 本章小结13第三章 游戏需求分析

8、与设计133.1 游戏需求分析133.1.1 游戏故事背景介绍133.1.2 游戏场景需求分析133.1.3 主角技能需求分析143.1.4 游戏背包系统143.2 游戏开发过程143.3 游戏的架构设计143.4 本章小结15第四章 游戏系统的实现154.1 游戏控制模块154.2 玩家角色控制模块实现154.3 摄像机模块的实现164.4 怪物AI模块的实现164.5 背包模块的实现184.6其它功能的实现204.6.1 游戏小地图实现204.6.2 游戏场景中日夜交替214.6.3 游戏场景中机关22第五章 游戏测试235.1 测试计划235.2 测试用例235.3 测试结果25第六章

9、结论28参考文献29致谢30第一章 绪论1.1课题的研究背景随着生活水平的不断提高,科技发展速度迅猛,人们除了对生活品质有所追求外,对游戏娱乐等精神层面的品质也开始有所追求,有关游戏的各种信息量也成倍增长,庞大的游戏玩家群会对游戏的种类体验要求越来越多,想要玩到更多的新颖的游戏。游戏与计算机硬件平台和互联网的发展,从最开始的简陋游戏,慢慢发展出各种各样精美的游戏产品,有游戏主机平台和台式机平台上接近电影画面的游戏大作,有即点击即玩的网页游戏,有移动平台上各种种类丰富的游戏,还有玩家佩戴特定设备玩虚拟现实游戏。中国游戏产业规模总体收入达到3102.3亿元, 玩家用户约为5.54亿人。游戏产品越来

10、越丰富,人们对游戏产品的要求、审美、娱乐性等各方面的要求越来越高。如果游戏画面粗糙、游戏玩法单调或者游戏人物动作呆板,游戏趣味性少,这样的游戏产品很容易被流失玩家,甚至被市场淘汰。2012年,Unity3D游戏引擎开始进入中国,因为Unity3D引擎对移动平台游戏的广泛支持,对新兴的虚拟现实设备的支持,开发者的学习成本较低,引擎使用的授权费低廉,受到资金实力薄弱的中小游戏公司的普遍欢迎,他们开始广泛地使用Unity3D引擎来开发游戏。国内大型游戏公司看到第三方的游戏引擎Unity3D开发出来的游戏效果后也开始纷纷采用Unity3D引擎来开发游戏。Unity3D引擎的广泛使用,加速了这项技术在中

11、国国内的普及,中国游戏开发者成为全世界使用Unity3D引擎最多的国家。Unity3D引擎中国游戏开发者注册量、游戏引擎使用活跃度、手机游戏引擎开发市场占有率等多项数据全球第一。而Unity3D引擎公司总部所在地美国,在使用率等各项数据上反而处于第二。游戏按照内容来分类,可以分为角色扮演、动作角色扮演,模拟角色扮演、第一人称射击、即时战略、冒险类、赛车竞速类、模拟经营类、体育类等。生存游戏,属于游戏设计的一种元素题材,根据游戏设计者的核心玩法不同,可以归类到不同的分类中去。游戏绝地求生,游戏玩法是每一局游戏有100位玩家参与,玩家被飞机空投到游戏地图的各个位置。玩家需要在地图上寻找武器、物品,

12、与其他位玩家展开搏斗,最终活下来的玩家才能获得最后的胜利。这款游戏在核心玩法上强调使用武器射击,可归类为第一人称射击游戏。游戏绿色地狱只将“生存”这一要素设计为核心玩法,玩家被扔进广袤又神秘的亚马逊丛林中,在这个绿色的地狱里求得生机。玩家需要通过合作来获取物品,需要打猎、采集获得食物,根据游戏天气变化适应环境,其中的一些生物可能会攻击玩家,玩家需要狩猎鸟,鱼,蛇等动物活下来。这款游戏的核心玩法是体验不同的环境,攻击遇到的威胁,生存下来。1.2课题的研究意义 求生类游戏如今也越来越多,也是受到了很多人的喜爱,不同类型的求生生存游戏都有共同之处:游戏的模拟性,如果说游戏世界是玩家另一个世界的话,那

13、么求生生存类游戏就是能最大限度实现人类活在另一个世界的愿望,饥饿度等一切都很贴近现实,能更好的从娱乐中获取知识。不仅如此,求生生存游戏的发展性、探索性、随机性都极大的吸引着玩家,玩家在游戏中可以不断的获得成就,就能更有兴趣的去探索去研究一些生存的技巧,实现边娱乐边学习,这样比普通的生存教学要有趣也有用很多。此外,使用Unity3D引擎是因为Unity3D引擎在游戏开发市场上第三方授权的游戏引擎中市场占有率第一名,是很多游戏开发者首选的游戏引擎。Unity3D引擎特性丰富,功能众多,开发出的游戏画面优美,是非常值得学习研究使用的游戏引擎。每个游戏开发团队使用Unity3D引擎都有不同的方法。本文

14、研究使用Unity3D引擎开发生存类游戏,探索游戏开发的方法,缩短游戏开发的周期,解决游戏开发过程中遇到的常见问题,总结解决问题的方法,对使用Unity3D引擎来开发游戏有一定的意义。1.3国内外发展现状国外游戏产业起步较早,积累的游戏开发技术经验丰富,游戏产业十分成熟。国外游戏公司开发生存题材的游戏时,在游戏引擎的选择上,使用公司自研的游戏引擎,或者第三方授权的Unreal引擎、Unity3D引擎,这个选择主要取决国外游戏公司实力和项目要求。Unreal引擎也是国外游戏公司的重要选择之一,是很多3A级游戏大作的开发采用的引擎。Unreal引擎画面效果逼真,程序运行效率高,使用它开发出来的游戏

15、受到很多玩家的赞誉。但Unreal引擎的授权费十分昂贵,这使得使用的都是属于大型游戏公司的行为。后来出现的Unity3D引擎打破了这一局面,Unity3D引擎授权费低廉,在保持低授权费的同时,功能和画面不断发展和完善,画面效果慢慢接近了Unreal引擎,得到了国外中小游戏公司和个人游戏开发者的青睐。而一些大型国外游戏公司的部分游戏产品也采用了Unity3D引擎来开发。生存题材游戏是受到众多玩家喜爱的游戏,也是众多游戏公司设计游戏时考虑的重要元素。最初的生存游戏,生存概念设计概念不太明确。2009年,瑞典Mojang工作室推出了我的世界,这款游戏强调游戏的趣味性,玩家在三维空间中创造和破坏游戏里

16、的方块,从而用方块来创造自己设计的建筑物。该游戏没有华丽的画面,体现建筑生存的互动性。2015年,澳大利亚Beam Team Games游戏公司发行了荒岛求生,游戏的内容是玩家扮演一名飞机失灵流落到荒岛的乘客。玩家要在荒岛上利用岛上的收集到的物品使自己活下去。2017年,韩国蓝洞公司发行了绝地求生:大逃杀,该游戏结合了第一人称射击的玩法,让众多玩家在一个游戏地图里捡拾物品、武器,互相搏斗,最终活下来的赢得胜利。这又给生存题材游戏带来了不同的设计理念。中国游戏产业与国外相比,出现时间比较晚,但是发展迅速。最开始的游戏题材以古装、武侠、修仙、战斗为主。生存题材的游戏重视程度没有那么高。在国外生存题

17、材的游戏火爆之后,中国的游戏开发者也加入了生存题材的元素。2017年网易公司推出了游戏荒野行动。2018年腾讯公司推出了游戏绝地求生:刺激战场和绝地求生:全民出击。1.4论文的组织结构第1章:绪论部分,主要介绍了本论文的研究背景和意义、国内外研究现状和发展趋势和主要研究内容。第2章:Unity3D游戏引擎及相关技术概述,介绍了Unity3D的开发过程和常见Unity3D的编程模式。第3章:游戏总体设计,分析研究了游戏的需求,在此基础上进行了游戏模块的划分。第4章:生存游戏的设计与实现,在游戏需求分析的基础上,对各个模块的具体设计做出了实现,并且运行测试了游戏的功能。第5章:论文的总结。第二章

18、Unity3D引擎技术2.1 Unity 3D编辑器介绍Unity3D是由Unity Technologies开发游戏引擎。开发者使用Unity3D引擎,可以快速地制作2D、3D游戏。Unity3D具有强大的跨平台特性,玩家从最开始的在台式机电脑上玩游戏发展到专门的游戏主机玩游戏,再到目前的移动平台上玩游戏、用虚拟现实设备玩游戏,游戏平台发展速度很快,Unity3D引擎可以到达一次编写,多种平台上发布运行。目前Unity3D已经支持发布Windows、MacOS、Linux 平台的单机游戏,iOS、Android 等移动设备的游戏,HTC Vive等虚拟现实设备平台上的游戏。在游戏引擎开发市场

19、上,还有很多著名的游戏引擎,例如Unreal虚幻引擎、cocos2D等。这些游戏引擎中有些出现的时间比Unity3D诞生时间要早很多,也是大型游戏公司制作多款游戏作品知识和经验的积累,但是却被Unity3D后来居上,使得Unity3D引擎成为游戏引擎技术普及度最高的引擎,原因有很多,例如上手困难高,又或者是本身自带的游戏引擎脚本系统不完善,要求使用者使用C+编写游戏程序,编写程序难度相对较大,又或者是引擎本身的第三方授权使用费非常昂贵,让大部分的使用者望而却步。而前者这些引擎的缺点正是Unity3D引擎所避免的。Unity3D推出了资源商店,在资源商店中,Unity3D开发者可以购买3D或2D

20、人物、动物、怪物模型,游戏场景环境、游戏道具、游戏交通工具、游戏音频、游戏脚本、游戏插件等各种游戏开发中用到的素材,而且价格相对低廉,另外有一些素材资源是免费提供的,特别适合中小团队和独立游戏开发者。Unity3D有丰富的文档和官方视频教程,为初学者提供了快速上手使用的捷径。同时开发者可以把Unity3D使用中的遇到的难题发布到社区中,会有资深的Unity3D使用者解答问题。Unity3D不仅仅可以制作游戏,在其它行业也有广泛的应用。在电影行业中,电影从业者用Unity3D制作动画电影,成功的电影短片有Book of the Dead。该电影短片的成功,预示着使用Unity3D可以制作出自然真

21、实的现实环境、逼真的光影效果、角色人物动作流畅自然。在建筑行业,建筑工程师可以使用Unity3D制作建筑仿真和交互系统。在机械行业,机械工程师用Unity3D制作机械系统的模拟和仿真系统。此外在其它行业,如汽车、教育培训、医疗等,Unity3D也有使用。 优势:Unity 3D操作简单易上手5。并且通用性强,支持多平台开发,可开发电脑端、手机端和主机端等。拥有自己的商店平台,大部分插件与效果都可买到,大大提升了开发效率。可以为我们提供了许多高性能的系统,例如灯光照明、自动寻路、粒子系统等。劣势:在国内起步晚,2012年才进入国内5,较好的程序还是比较少。程序的占用内存比较高,渲染性能比较低。2

22、.2 Unity3D引擎的功能2.2.1 Unity地形编辑器功能Unity3D引擎有一个功能强大的地形编辑器,使用者可以笔刷的方式雕刻各种山脉、峡谷、平原等地形效果。另外,Unity3D地形编辑器还可以实现平铺地面材质纹理、通过笔刷大小的不同实现局部面积的种植树木、实现2D广告牌式的种草功能。Unity3D地形编辑器支持设置地形的LOD功能,LOD是指摄像机与显示物体的距离越近,显示物体的网格模型效果越好。远处的地形块使用稀疏的网格模型展示,近处的地形块使用密集的网格模型显示。Unity3D引擎地形编辑器可以为游戏场景提供十分真实的、接近电影效果的地形展示游戏画面。图2-1 Unity3D引

23、擎的地形编辑器2.2.2 Unity3D引擎中的物理引擎系统Unity3D引擎使用NVIDIA公司的PhysX 物理引擎作为自己的物理系统。使用物理引擎可以使得游戏中的对象模拟现实中的物理效果。在Unity3D引擎中的物理引擎,提供了刚体、碰撞器、物理材质等设置。给一个游戏对象加入了刚体组件之后,Unity3D引擎就会对它进行物理效果模拟,游戏开发者可以通过属性面板设置各种参数,也可以通过脚本来控制游戏对象的物理运动。2.2.3 Unity3D引擎中的脚本系统Unity3D引擎中使用脚本系统来控制游戏对象的运行,原先脚本系统的开发语言有C#、Javascript,在后来的版本中,放弃了对Jav

24、ascript的支持,只支持C#,这个是为了提高游戏编译运行的效率。Unity3D引擎本身是使用C+开发的,如果直接要求引擎的使用者使用C+编写具体的游戏,会因为C+本身复杂难学难以使用,使得游戏开发者开发进度缓慢。Unity3D引擎使用C#作为脚本系统之后,给游戏开发者带来快速开发,游戏接口良好,自动化管理内存等开发优点。2.2.4 Unity3D引擎中的动画系统Unity3D引擎提供了一个功能强大的动画系统,可以为Unity3D游戏中的对象(包括人物、动物、怪物、游戏道具等)提供动画设置。Unity3D引擎提供了人形动画重定向,把人物动作动画抽象成一个Avatar,导入一个做好动画的人物模

25、型,可以把这个人物模型带的动画赋予另外一个没有动作动画的人物模型,这特别适合移动平台游戏的开发,因为这将极大的减少游戏发布的文件大小。动画系统带有有限状态机功能,可以使用这个功能为模型的动画设置条件。例如,一个人物有闲时动画、走路动画、攻击动画、跳跃动画,可以使用动画系统的有限状态机功能为这个人物模型分配何时触发各种动画的条件,并结合脚本代码实现。Unity3D动画系统还提供了动画树功能,可以把模型带有几个动画融合,做出复制的动画效果。另外Unity3D还提供了人物骨骼动画的调整和设置,利于动画师调整人物的动作,使得人物模型动画更加自然。图2-2 Unity3D引擎的人形骨骼动画系统2.3 U

26、nity3D游戏开发流程游戏软件开发和其它软件开发过程类似,大致可以分为需求分析、代码开发、功能测试等几个阶段。每个游戏开发团队使用Unity3D引擎开发游戏产品的开发过程都不相同,但是大致的过程类似。在一个大型的游戏开发团队中,开发成员一般分为游戏策划、游戏美工、游戏程序员、游戏测试员等。游戏策划首先分析目前游戏市场的行情,分析当下热门的电影、电视剧、小说、漫画、游戏的偏好和热点,确定将要制作的游戏类型,锁定该游戏的大致受众。游戏策划向将来这款游戏的潜在玩家通过网络问卷、电话访谈、玩家联谊会、第三方市场调查公司等形式调研潜在玩家的需求。游戏策划会根据上述分析手段和资料收集,在游戏公司开展头脑

27、风暴会议,确定游戏内容和核心玩法,编写游戏策划书。游戏美工根据游戏策划书,设计制作游戏人物、游戏场景。游戏美工会细分为游戏主美、游戏原画师、游戏模型师、游戏地形编辑、游戏动画师等。游戏主美会结合游戏策划书与游戏策划游戏主程序商量,确定这款游戏的美术风格。游戏美术人物是偏向写实,还是趋向Q版,游戏场景风格是怀旧、科幻、朋克、现代、古代、卡通?在游戏主美设计确定好游戏的总体美术风格之后,游戏原画师会根据设计风格要求,使用手绘或者电子绘图在Photoshop等平面绘图软件中设计好游戏的人物平面模型图、游戏场景模型图、游戏道具图等。接下来,游戏模型师根据游戏原画师的人物场景设计稿,在3dsmax或者M

28、aya等建模软件中进行游戏人物场景高模的建模工作,把游戏高模拓扑成适合游戏引擎用的游戏低模,游戏低模展开UV,绘制游戏模型贴画材质纹理等。在游戏模型师制作好游戏模型之后,需要动作的模型,将会交给游戏动作师。游戏中需要动画的模型一般是游戏人物、游戏怪物、游戏动物等。游戏动画师会根据游戏策划书的需要和游戏程序员的要求,设计好游戏模型所需的动作动画,游戏动画的一般在建模软件3dsmax或者Maya中制作,有些游戏动画还会用到动作捕捉设备,力求获得更好的动作效果。游戏模型制作好之后,会在建模软件中导出成适合Unity3D引擎所需要的FBX格式。游戏地形编辑使用导出好的FBX文件在Unity3D引擎编辑

29、器中,根据游戏策划书需求中关卡场景设计要求,结合游戏场景原画稿等,搭建各个游戏关卡的游戏场景。游戏特效师会在游戏地形编辑创建好的游戏场景中,按照策划书的要求设计各种游戏特效。游戏程序员根据游戏策划书,完成游戏所需要的功能。游戏程序员一般可以分为游戏客户端主程序员、游戏客户端程序员、游戏服务端主程序员、游戏服务端程序员。游戏客户端主程序员和游戏服务端主程序员根据游戏策划书,分析完成整体游戏所需要的功能,确定游戏客户端和游戏服务端的通信协议、通信接口。在确定好整体游戏所需的功能之后,游戏客户端主程序员确定游戏客户端需要具体实现哪些功能,确定Unity脚本的架构,细分各个功能模块,列出实现各个模块的

30、编码难易程度。游戏客户端主程序员按照各个模块的编码难易程度,根据游戏客户端程序员的编码水平,分配给他们实现。在确定好整体游戏所需的功能之后,游戏服务端主程序员确定服务端开发语言和游戏数据库的选型,确定游戏服务端需要具体实现哪些功能,细分功能模块,列出实现各个模块的编码难易程度,设计游戏服务端架构,确定游戏服务器上线部署架构。游戏服务端主程序员按照各个模块的编码难易程度,根据游戏服务端程序员的编码水平,分配给他们实现。游戏客户端服务端程序员在完成某一功能实现之后,还要进行代码的白盒测试。游戏中所需要的声音,例如场景音乐、场景音效、人物对话配音等,一般游戏团队都外发给独立的音乐工作室完成制作。游戏

31、测试,一般是在游戏程序员在实现某一个功能完成白盒测试的基础上进行的黑盒测试。游戏测试员会按照游戏策划书的要求测试游戏某一功能看看是否达到策划书所要求的效果,把游戏测试的结果反馈给程序员。游戏策划书所确定的开发需求会在游戏的开发阶段不断更新变化,所以游戏需求分析、游戏美术制作、游戏代码实现、游戏测试几个阶段是不断迭代进行下去的,循环往复最终完成游戏所有功能。图2-3 Unity3D游戏开发流程图2.4 Unity游戏开发中的常见设计模式在Unity3D脚本编程中,有几种的设计模式常常用于开发中。2.4.1单例模式在Unity3D项目中,有些游戏对象只能实例化一次,如果实例化了多个游戏对象,会导致

32、游戏程序运行不正确。只能实例化一次的游戏对象有,控制全局游戏对象的控制器类、场景切换管理类、游戏进度保存类等。此时对只能实例化一次的游戏对象,采用单例模式。在Unity3D项目中,挂载在某一个游戏对象上的游戏脚本类,都必需继承MonoBehaviour,不能自己用new实例化,实例化的过程是交给Unity3D引擎来完成,所以采用单例模式的游戏对象,生成单例引用时,不能用new实例化自己,可以使用FindObjectOfType来生成,这个生成的过程也是交给了Unity3D引擎来完成。2.4.2 事件模式在一个相对简单的Unity3D项目中,游戏对象数量有限,游戏对象之间的交互之间采用调用对方的

33、接口函数。而在一个复杂的Unity3D项目中,游戏对象众多,游戏对象之间的交互采用互相调用对方的接口函数,会引起极大的耦合性,代码的复杂度增加,后期的维护困难,这种情况下一般使用事件模式解耦。在Unity3D项目中,使用事件模式,要定义一个事件队列对象。事件队列对象可以注册或者取消某一游戏对象对某个事件的关注,当某一事件发生时,事件队列对象会把这个事件发送给关注该事件的游戏对象。例如游戏对象玩家和游戏对象敌人都关注了伤害事件。当游戏对象玩家和游戏对象敌人发生打斗时,游戏对象敌人攻击了游戏对象玩家,此时游戏对象敌人发送给伤害事件给事件队列对象,事件队列对象把伤害事件发送给游戏对象玩家,游戏对象玩

34、家接收到了伤害事件,并对伤害事件做出反应。2.4.3 MVC模式MVC模式是指把软件系统分为模型(Model)、视图(View)、控制器(Controller)。在Unity3D项目中,有些子系统是玩家用户与游戏UI交互较多的子系统,比如游戏装备子系统、游戏商店子系统,有些游戏项目,玩家用户主要与游戏的UI进行交互,例如斗地主等棋牌类游戏、炉石传说等卡牌类游戏。这些子系统和这类游戏项目非常适合用MVC模式进行项目架构。例如在游戏商店子系统中,把游戏道具划分为模型、把游戏道具购买、展示、交易等界面划分为视图、控制游戏道具的购买展示的游戏对象划分为控制器。控制器在界面视图中展示游戏道具模型的具体信

35、息和数量,控制游戏玩家购买游戏道具的过程。按照MVC模式组织代码架构,代码的结构清晰,有良好的可维护性。2.5 本章小结本章主要介绍了Unity3D的功能特性和使用Unity3D的开发过程。总结了Unity3D几种常见设计模式。Unity3D是一款优秀的开发工具,使得开发使用者可以高效完成游戏项目。第三章 游戏需求分析与设计3.1 游戏需求分析3.1.1 游戏故事背景介绍本课题制作的游戏发生在一个森林中,玩家流落到了一个森林中,森林里有各种未知的风险、有野兽、有怪物,玩家需要面对各种挑战从而生存下来。3.1.2 游戏场景需求分析在游戏场景中,玩家在森林中行走,森林中设置有一些障碍物和机关,如果

36、玩家无意中接触,会促使玩家的血量降低。森林中有一些有用的物品,可以给玩家拾取使用。森林中会出现野兽或者怪物,当野兽或者怪物在一定范围内看到玩家,会引发对玩家的攻击。3.1.3 主角技能需求分析在游戏中,玩家能够通过按下WSAD行走、按shift键奔跑、空格键跳跃,遇到威胁可以逃跑也可以能够发动攻击保护自己。3.1.4 游戏背包系统游戏中,玩家能够在森林中捡拾物品,捡拾物品可以放在游戏背包中,供以后使用。点击游戏界面的背包图标按钮,显示背包系统展示窗口,任意点击窗口中展示的物品,显示物品详情,在物品详情窗口中,点击使用按钮,可以使用该物品。3.2 游戏开发过程在设计了一款生存类题材游戏需求上,根

37、据需求分析,首选按照游戏需求划分功能。在Unity3D编辑器中进行游戏场景的建模设置,在游戏场景中引入各种游戏对象,例如角色对象、怪物对象等,对游戏对象挂载相应的功能代码脚本。当每一项功能实现好之后,进行游戏功能测试,看看游戏运行的效果是否正常运行,是否达到设计的要求。3.3 游戏的架构设计为了使游戏程序架构适应游戏策划需求不断变化,需要设计一个游戏代码易于扩展和可维护性强的架构。对游戏代码的功能进行模块划分,降低了代码之间的耦合度。根据游戏策划需求分析,把本课题的游戏模块划分为角色控制模块、摄像机模块、怪物AI模块、背包模块、游戏控制模块。图3-1 模块划分图3.4 本章小结本章对设计的游戏

38、进行了需求与流程的策划,并根据需求确定引擎与开发流程,并设计了所需要实现的各个模块。第四章 游戏系统的实现4.1 游戏控制模块游戏控制模块是控制整个游戏运行的。游戏开始时,游戏控制模块会初始化游戏场景中必要的组件。4.2 玩家角色控制模块实现玩家角色控制模块是为玩家用户控制角色在游戏过程中的行为的。在游戏中,玩家角色要闲时、行走、奔跑、跳跃、攻击怪物、拾取物品等动作,这些动作动画在Animator动画系统中设置角色的有限状态机动画,触发动作动画的条件,增加触发的参数和设置数值。玩家角色行走,首选要获取玩家角色对象上必须的组件,动画组件、Rigidbody组件。然后获取用户输入的数据,判断玩家是

39、否按下了移动角色的按键,如果按下了移动按键,通过移动按键设置角色移动的数值,在移动玩家角色之前,需要检查判断玩家角色是否在地面,如果不在地面,首选要用重力影响玩家角色Y坐标值,使玩家角色落在地面上,然后使用Rigidbody组件按照数值移动玩家角色的位置,并播放角色行走动画。玩家角色的血量、能量。玩家角色被攻击时会减少血量,玩家角色在攻击怪物时,会消耗能量值。当血量数值为0时,玩家会死亡。当能量数值小于50时,玩家无法施展攻击技能。图4-1 玩家状态栏4.3 摄像机模块的实现在游戏中,玩家角色对象的各种游戏操作行为需要一个摄像机进行拍摄,把游戏的的进行呈现给玩家。摄像机模块的设计实现,首选要获

40、取玩家角色对象的位置,根据玩家角色对象的位置,设置摄像机自己本身的初始位置。在游戏进行过程中,玩家角色对象的位置会不停地变化,摄像机的位置更加不断变化的玩家角色对象位置改变。摄像机模块使用了第三方的摄像机插件。4.4 怪物AI模块的实现怪物AI模块是在游戏场景中,怪物对象与玩家角色对象的行为交互模块。在游戏加载过程中,怪物AI模块首选会实例化出怪物模型,然后把生成的怪物对象随机分布到游戏场景中的某个位置怪物的行为有三种方式巡逻、追击、攻击。怪物对象和玩家角色对象一样,有血量生命值,当被玩家对象攻击之后,血量会降低,如果数次受到玩家对象的攻击,血量值降为0,即表示怪物死亡。怪物对象的巡逻使用Un

41、ity3D引擎中带有NavMesh导航网格功能来实现巡逻。导航网格的生成,首先需要选取游戏场景中的地形对象,然后使用Unity3D引擎中的NavMesh Bake生成,在生成之前可以设置各种生成的参数,一般情况下使用默认的参数,也可以手动设置对某些网格对象的过滤。生成好导航网格之后,游戏地形中会出现青蓝色的网格地形块,这些颜色代表怪物对象可以巡逻行走的区域。怪物对象巡逻位置定义是随机生成的随机数,怪物对象会在这些定义好的范围内开始巡逻。怪物对象在巡逻时会调用FindGameObjectWithTag (Player)方式获得玩家角色对象的位置,然后计算玩家角色对象和怪物对象自身的距离,如果这个

42、距离的小于一定的数值范围,就开始对玩家角色对象进行追击和攻击,如果在追击过程中,玩家角色对象逃跑了,并且跑出了追击的范围,怪物对象就会从追击变为巡逻。当玩家角色对象在怪物对象追击范围内时,并且达到攻击距离时,怪物对象会对玩家角色对象发起攻击,每次发起攻击时间会加一定的时间间隔,让玩家角色对象有所反应,玩家角色对象也会发起对怪物对象发起攻击,如果怪物对象数次受到玩家角色对象攻击后死亡,怪物对象会消失,怪物AI模块会在游戏场景的任意位置重新生成怪物对象。图4-2 怪物模块定时在任意地点生成一定数量的怪物4.3 图为怪物的导航网格在4-3图中,青蓝色代表导航网格覆盖的区域,即图中标注为1的大片区域,

43、这表示游戏中的怪物可以行走的区域。没有被青蓝色覆盖的区域,即图中标注为2的零星小区块,都是怪物无法行走的区域。怪物对象巡逻位置定义是随机生成的随机数,怪物对象会在这些定义好的范围内开始巡逻。4.5 背包模块的实现游戏背包模块是控制游戏中玩家角色对象携带使用的物品系统。当玩家用户按下游戏界面中的背包图标按键之后,游戏系统会展示玩家角色对象可用的物品,物品展示窗口使用Unity3D引擎中的UGUI Grid生成。游戏中的物品对象定义了物品ID属性、数量、使用物品之后给玩家角色对象带来的血量和能量等各种属性。玩家角色对象可以使用物品对象。图4-4 背包系统图图4-5 背包系统部分代码图4-5为背包系

44、统部分代码中的使用背包系统中的物品代码,当玩家角色对象使用完物品之后,物品给玩家角色对象带来血量和能量,然后,更新物品在背包系统界面的数量,如果物品刚好用完,背包系统界面就不再显示该物品。玩家角色对象在游戏过程中,需要面对怪物的攻击和游戏场景中的各种机关,血量和能量会不断减少和消耗,需要不断地使用背包系统的物品来补充玩家角色对象自身的血量和能量,使得游戏可以进行下去。当背包中的物品不断减少的时候,玩家需要在游戏场景中捡拾物品放入背包中。背包模块在游戏场景中会定时某个时间段内在任意地点生成一定数量的物品供玩家角色对象捡拾物品放入背包中。图4-6 背包系统生成的物品4.6其它功能的实现4.6.1

45、游戏小地图实现游戏小地图是为了玩家用户玩游戏时,观察玩家角色对象在游戏场景中的所处的位置,周围怪物的距离,更好地提供对战体验。在游戏场景中,对玩家角色对象添加一个大型的蓝色圆球子对象,蓝色圆球作为标记物在小地图的显示效果,然后在玩家角色对象中再增加一个摄像机子对象,摄像机子对象90度对着玩家角色对象头顶,摄像机子对象所获取的内容设置映射到游戏界面UI的小地图UI的RawImage显示。怪物对象增加一个大型红色圆球子对象,便于在小地图中显示的效果。游戏场景中的主摄像机模块剔除掉玩家角色对象和怪物对象的圆球子物体,这样在游戏场景中正常显示游戏的内容。图4-7 小地图 蓝色表示玩家,红色表示怪物4.

46、6.2 游戏场景中日夜交替为了模拟真实的现实场景,提升玩家的用户体验,游戏实现了,随着时间的流逝,游戏场景中日夜交替的效果。游戏界面中,玩家用户也可以自行调节日夜交替的效果。时间控制类从游戏界面的时间设置窗口获得设置数据,加入Unity3D的计时器数据,通过数据的不断变化,把游戏场景中的主灯光旋转起来,配合设置好的天空盒,达到日夜交替的效果。玩家用户也可以在时间设置界面中选择关闭,停止日夜交替的效果。图4-8 游戏场景中的日夜交替效果图4-9 游戏场景中的日夜交替效果4.6.3 游戏场景中机关游戏场景中有机关,当玩家角色对象触碰到机关时,玩家角色对象会掉血量。游戏场景中,有些类似石头的物体,设

47、置为游戏的机关,机关物体对象加入了圆球碰撞器,一旦玩家角色对象触碰机关物体对象,就会发生碰撞函数调用,玩家角色对象会掉血量。游戏机关类定义了机关的血量数值。图4-10 游戏场景中的机关第五章 游戏测试5.1 测试计划运行Unity3D,测试主界面开始按钮是否正常跳转。模型、音效是否显示/播放正常,主角按WSAD是否可以前后左右对应移动奔跑,奔跑时间是否受持久力影响背包系统,能否使用背包系统的物品时间是否持续流逝,测试按下JKL三键能否使用攻击技能物品碰撞是否正常,敌人巡逻,死亡等UI是否正常人物施展攻击技能时,是否消耗能量,血量为零时是否正常死亡5.2 测试用例功能性 系统实现的主要功能,包括角色是否正常移动、死亡,人物动画是否正常,怪物UI是否正常。 系统实现的次要功能,包括UI界面是否正常显示,模型是否正常。测试用例:用例标识GDDR1005项目名称基于unity3D的求生游戏的设计与实现开发人员陆永祥版本号用例作者陆永祥测试方法场景分析法、等价类划分法、边界值分析法测试类型功能测试、黑盒测试、手工测试测试人员陆永祥用例描述该用例用来测试游戏中的角色、怪物U

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 期刊短文 > 信息管理

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com