基于Unity3D的角色扮演类游戏设计-毕业论文.doc

上传人:滴答 文档编号:1811888 上传时间:2019-03-16 格式:DOC 页数:30 大小:24.58MB
下载 相关 举报
基于Unity3D的角色扮演类游戏设计-毕业论文.doc_第1页
第1页 / 共30页
基于Unity3D的角色扮演类游戏设计-毕业论文.doc_第2页
第2页 / 共30页
基于Unity3D的角色扮演类游戏设计-毕业论文.doc_第3页
第3页 / 共30页
基于Unity3D的角色扮演类游戏设计-毕业论文.doc_第4页
第4页 / 共30页
基于Unity3D的角色扮演类游戏设计-毕业论文.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、基于 Unity3D 的角色扮演类游戏设计【摘要】游戏开发行业,随着移动领域的崛起,近年来变得越加火热,各游戏开发公司纷纷投入移动游戏的研究开发,其中 Unity3D和 Cocos2D 两款引擎受到了各公司的青睐,游戏开发人员供不应求。本文将介绍如何用 Unity3D 引擎开发一款角色扮演类游戏的全过程,其中包含了 Unity3D 引擎使用的介绍、游戏策划及游戏各大功能模块的实现。在游戏策划中将规划整个游戏项目的背景故事,游戏场景,游戏系统等,为后面实现游戏功能代码打好基石。在游戏程序开发中,将使用 Unity3D 提供的编辑器结合 C#先实现游戏流程整个程序框架,然后按照框架流程完成游戏各个

2、模块的功能,最后将游戏进行 Windows 和 Android 双平台打包调试。1 前言1.1 项目背景与设计理念随便国家的富强,科技的发展,越来越多的人们需要在工作闲时进行娱乐休闲,游戏产业也随之诞生。在 21 世纪的互联网高速发展之期,游戏行业不断壮大,从最早的红白机时代,再到主机时代,随后 PC 计算机的崛起让游戏行业大放光彩,直到近年来移动领域的热潮又将手机游戏推向了顶峰。在这样的背景下,也越来越多的公司投入的游戏研发中,不过由于每次开发一款游戏都得重头开始编码,效率低,成本高,所以游戏设计者想如何去复用之前的东西从而进行快速发开。慢慢的,游戏引擎(GameEngine) 问世了,它集

3、成了图形引擎、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理等,为游戏设计者提供各种编写游戏所需的各种工具,大大提高了游戏设计者开发游戏的时间和成本。1.2 游戏设计方法与实现技术角色扮演类游戏(Role-Playing Game) ,提供虚拟的计算机游戏世界,该游戏世界提供虚拟的游戏角色供玩家选择并操作,最终使得玩家在该世界实现自己的第二人生为目标。RPG 框架的设计和研究自 RPG 诞生以来不断进步,至今发展到由引擎技术制作的时代。RPG 游戏设计较为复杂,系统主要以战斗、剧情、任务,交互、装备等系统为主,其中战斗系统为 RPG 游戏设计的核心部分。战斗系

4、统主要包含:1、 属性系统:这是游戏中最简单的系统,包括了主角、物品、NPC、技能、怪物等各自的属性值,通过属性值可计算出战斗中各种逻辑交互数值。2、 状态机系统:该系统标志着一个人物或者怪物现处于什么状态,相对于动作而言,人物是站立中?还是跑动中?还是与敌人打斗中?当然有些状态还是可以同时拥有的,这些状态需要在程序中利用不同的变量值来区分。所以战斗规则越多,状态机逻辑也就越复杂,所以在开发过程中需要预先制定好一套方案,否则在后续开发中将越加难以维护。3、 行为系统:该系统决定了游戏的表演方式,每一个动作或者声音的表现都由行为系统来管理。4、 人工智能(AI):该系统主要为了人机交互而生,在战

5、斗过程中,敌人将以怎样的表现和玩家对战,越是强大的敌人,其 AI 设计过程也就越复杂,需要通过不一样的算法结合起来推导出一套怪物的 AI 指令。1.3 本项目的设计思路与实现技术本项目将设计一款角色扮演类游戏,游戏将采用 Unity 引擎进行制作,游戏中将实现游戏登录、交互、战斗、保存等几大功能,各功能间还包含了许多与之相依赖的小功能。项目利用.net 下mono 的跨平台编译技术,使用 C#在 windows 环境下进行跨平台开发,再结合 Unity 引擎提供了强大的 API 函数库和渲染引擎技术来实现整个 RPG 游戏的技术实现。1.4 本项目的主要工作任务本项目的的主要设计工作包括:(1

6、) 设计一款基于移动平台的 RPG 游戏(2) 策划 RPG 游戏各模块玩法及系统功能(3) 利用 Unity3D 引擎完整的实现游戏所有功能(4) 对最终实现游戏进行打包调试本项目通过对 Unity3D 引擎的一年的学习,实验了许多的小项目,最后总结了如何利用它来快速开发一款 RPG 游戏,从前期的游戏策划,游戏功能布局,再到游戏的程序框架、功能开发,到最后的打包调式,本文都将通过该实例一一描述。2 项目介绍2.1 游戏引擎介绍Unity3D 是一款由 Unity Technologies 开发的跨平台游戏引擎,该引擎集成了强大的可视化用户编辑器,采用了组件式开发,使开发者能快速的开发出自己

7、的游戏。该引擎由于可进行跨平台发开,在移动领域崛起时,受到了很多开发者的青睐,现已越来越多的开发者投入其中,已成为目前世界上使用最广泛的游戏引擎。在图形方面,Untiy3D 采用了主流的实时光照,Lightmapping,全局光照 GI等技术,使游戏界面更加逼真。在程序方面,该引擎支持用 C#和原生的 UntiyScript 进行开发,大大加快了用户开发进度,而且还提供了 AssetStore 商店,让开发者能在里面找到想要的插件,能快速实现想要的功能及效果。2.2 游戏介绍本文将以中国古代唐朝做为历史背景,利用 Unity3D 开发一款基于移动端的 ARPG 手游。游戏类型:ARPG游戏平台

8、:Win、Android游戏风格:中国古代游戏玩法:玩家通过副本战斗消灭敌人获得奖励,还可以通过商店购买等不断强大自己。2.3 游戏故事背景在开发游戏前,制定一个好的背景题材将决定了游戏后期的发展。如何定一个好的故事背景,需要针对玩家的喜好而决定,好的题材将更喜欢玩家的关注,所以好的故事题材将为游戏奠定基石。本文中,制定了近期较为火热的中国古代唐朝题材为背景故事,打造一款即时战斗的 ARPG 游戏,让玩家在游戏中体验打斗的快感和古典韵味。2.4 游戏场景游戏场景作为游戏主要的交互区,它承载了玩家在游戏中的大部分交互,其对游戏的重要性不言而喻。游戏场景可分为 2D 和 3D,2D 场景都是由一张

9、张图片拼成,效果相比 3D 稍差一些,3D 给人感觉更真实,仿佛身临其境的感觉。游戏场景还分为很多种风格,有古风,韩风,欧美风,日漫风,水墨风格等等,该如何去选择这就需要根据题材来决定了。本文中由于题材定位中国古代,所以场景也为中国古代风格的场景, 其风格华丽,浑厚庄重,线条平直硬拐,装饰丰富,令人感觉心旷神怡。图 2.4 (1)华丽的长安城图 2.4 (2)华丽的长安城2.5 游戏角色一款好玩的游戏、受欢迎的游戏,其中必定有几位受人欢迎的角色,每个角色有着自己独特的性格和能力,更加能被玩家们记住。那么要创作一些好的角色也不容易,其中有一点很重要,那就是每个角色都要有自己存在的价值,形成鲜明的

10、对比,要与其他角色与众不同,因为玩家们总是会喜欢独特的那位。本文中的游戏主角为一位初出茅庐的道士,道士途中遇到了各种磨难,消灭敌人,一步步的成长起来。道士的武功主要以剑术为主,因为性格较为外向,相信颇受玩家喜爱。本作中还有另外两位角色,后续还可以继续为游戏添加新角色,从而丰富游戏哦。图 2.5 帅气的道士2.6 游戏系统本文中的游戏功能系统主要为分以下几类 游戏登录 创建角色 背包系统 装备系统 战斗系统 副本系统 商店系统 NPC 系统 数值系统以上几类为本游戏大致的游戏功能,这些功能在 RPG 类型的游戏中必备的几项,通过这些功能系统,能够展示出一款 RPG 游戏的核心玩法。其中数值系统最

11、为重要,一款好的 RPG 游戏不仅要满足玩家对画面以及功能上的需求,还要满足玩家的虚荣心。一款 RPG 游戏是不是好玩,和数值的相关性不是特别大,但是游戏是不是不好玩以及能玩的多深入,和数值的关系就很大了。数值做的不好,在表现层面上是让游戏流程的体验不好,比较容易出现的两个极端是过度的挫折感(练功十年,出门就被小兵秒)和茫然所失的成就感(玩家还没发力,Boss 就扑街了?)!所以说,如何巧妙的运用这些数值来构建起整个游戏的可玩性是至关重要的,得学会如何去根据玩家的需求来构建不一样的数值系统。3 游戏程序框架设计3.1 游戏核心本游戏将采用组件式的模式进行开发,不同组件维护着自己相关的功能,不与

12、其他组件进行直接交互,降低层与层之间的耦合(俗称:解耦) ,便于后期维护。本作还将根据 MVC 模式,即数据模型(游戏数据)、视图(UI)和控制器(管理器)来编写整套逻辑程序。MVC 模式所带来的优点:1、开发人员可以只关注整个结构中的其中某一层;2、可以很容易的用新的实现来替换原有层次的实现;3、可以降低层与层之间的依赖;4、有利于标准化;5、利于各层逻辑的复用。数据:管理游戏程序中各种数值数据。视图:Unity 中的控件都必须继承于 Monobehaviour。管理器:对数据和 UI 进行操作和管理。本文中的管理器都将继承于 Graduation.Component,这个类是本作者自己写的

13、一个组件管理,利用组件容器将每个管理器加入容器中,便于对各模块的管理器进行管理和交互。游戏核心架构:游戏核心(GameCore) (单例)游戏管理器(GameManager):场景管理器(SceneManager)数据管理器(DataManager)资源管理器(ResourceManager)UI 管理器(UIManager)游戏组件(Component):音效管理器(SoundManager)网络管理器(NetManager)配置管理器(ConfigManager)逻辑管理器(LogicManager)动画管理器(AnimationManager)游戏启动流程:/ 启动游戏./ 1.加载配置

14、表InitConfig();/ 2.加载组件InitComponent();/ 3.加载游戏资源InitResource();/ 4.初始化网络模块InitNetwork();/ 5.进入游戏EnterGame();图 3.1 游戏核心框架流程图为了游戏开发中的方便使用,作者在开发前已经封装好了一整套常用工具库,工具库大致包含:文件读写工具类,数值计算工具类,UI 工具类,序列化工具类等。有了这些工具库,在开发中可以更快速编码,省去了频繁写一些常用逻辑的时间。3.2 游戏 UI 框架在 Unity3D 早起的版本里,UI 系统在引擎中是较为薄弱的,只能通过 Unity 提供的一些 API 来实

15、现 UI 的搭建,但这种方式效率实在太差,改起来也非常麻烦。由于 Untiy 越加的火热,Unity 的Asset Store 商店的插件也越来越多,其中 Next-GUI 插件(下文简称:NGUI)最受开发者欢迎,因为其弥补了 Unity 本身的弱点,把 UI 系统变得非常的强大,甚至用完美来形容。使用 NGUI 插件可以让用户通过可视化界面的方式,只要在界面上拖入各种控件、脚本,再结合自己的一些逻辑代码即可完成游戏所需的界面。在 Unity4.6 版本中,Unity 开发组认识到了 UI 系统的薄弱,随即也在该版本发布了新版 UI 系统(简称;UGUI) 。它仅吸取了 NGUI 的各种优点

16、,由于 UGUI 属于原生系统,所以性能上会比 NGUI 好很多,渐渐的也被开发者所接纳。在本游戏中,将采用 Unity 最新的 UGUI 系统来完成整套游戏 UI 界面的开发,并讲述如何来搭建游戏的 UI 框架,一套好的 UI 框架将使后期开发起来更加便捷。图 3.2 游戏 UI 框架流程图UIBase:该类为所有 UI 脚本都继承的基类,该类重载了大多数 MonoBehaviour 函数,方便在后期资源管理以及界面动画等进行统一管理。UIManager:该类将统一管理所有 UI 界面的显示、隐藏、动画、音效,所以需要显示的 UI 界面都需要通过该类进行注册才能使用,该类还提供各种通用 UI

17、 界面,例如消息框,提示框,输入框,确认选择框等等。UIUtils:该类为静态类,是 UI 工具库,将提供大量功能型函数供 UI 界面使用,例如一些 UI 对齐,UI 的各种位置算法等。有了以上三大类,在后续的界面设计中就能轻松的利用他们实现一套完整的 UI 框架,实现每一个功能界面的需求。3.3 Lightmapping 光照烘焙光照烘焙,该技术是指通过计算机计算模拟得到的灯光效果,省去了采用实时灯光所带来的高消耗。简单来说就是实时灯光计算十分耗时,随着光源越多会倍增计算耗时。使用 Lightmap 模拟灯光带来的效果,便不用去计算灯光,会带来性能上的大大提升。当然你不用灯光效果也是没问题的

18、,具体还是看项目需求。最简单的直接在 3dmas 或 maya 里面烘培完贴图顶点色也行。对于移动手机游戏来说,由于硬件的原因,如果在 3D 游戏中大量的采用实时光照手机的性能是吃不消的,但如果不用实时光照效果又非常差。所以本文的游戏中将采用 Untiy Pro 版本自带的Lightmap 技术,大大减轻了游戏本身对手机性能带来的开销,而且使用 Lightmap 的画面效果又非常不错。首先,先在场景内,在合适的位置打好大量的点光源(Point Light) ,方向、位置、亮度这些都需要经过细心的调整。图 3.3 (1)Lightmapping 的使用其次,打开 Lightmapping 面板调

19、节具体的参数。图 3.3 (2)Lightmapping 的使用由于手游中并不需要太高的画质,所以这里作者调节的光照品质较为一般。最后,点击 Bake Scene 即可开始场景的烘焙,烘焙需要等待一段时间。看看烘焙后的效果是不是感觉好震撼?效果丝毫不逊于实时光照。图 3.3 (3)Lightmapping 的使用3.4 序列化与反序化3.4.1 序列化介绍序列化 (Serialization):将数据结构或对象转换成二进制串的过程反序列化(Deserialize):将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程这两个过程在游戏开发中被广泛的使用,因为其可以让游戏在跨平台上方便的进

20、行通讯传递,把一个完整的对象通过网络发送到终端。序列化还能将一个对象永久的保存在硬盘上,可以用于存储玩家的游戏数据。本文中将采用序列化方式来进行玩家数据存储,并在序列化过程中加入了加密解密技术,使得游戏数据不会轻易的被玩家所破坏。现在主流的序列化方式大致分为二进制序列化:二进制序列化的优点是可以精确地控制序列化及反序列化的过程,并可以序列化对象的非公共成员。其序列化过程的速度非常之快,而且序列化后的体积小,非常适合用来传输实时性较高的应用。但因为缺乏标准的协议,装拆箱比较麻烦。Json 序列化:JSON 起源于弱类型语言 Javascript,与 xml 相比,这种序列化简直是太简单了,其只需

21、要通过将变量用一个 key 对应一个 value 即可完成序列化,而且序列化速度比较快,仅次于Binary 方式。Xml 序列化:Xml 序列化历史较为悠久了,其缺点太明显了,冗余太大,但拥有的非常高的安全性与可扩展性,所以至今仍被广泛的使用着。序列化方案的选择:每种序列化协议都有优点和缺点,它们在设计之初有自己独特的应用场景。在系统设计的过程中,需要考虑序列化需求的方方面面,综合对比各种序列化协议的特性,最终给出一个折衷的方案。3.5.2 序列化应用本文中的游戏为了更节省空间和解析效率,采用二进制序列化方式,并对二进制序列化方案进行了二次封装,可更方便的在游戏中使用。本文中所有需要序列化的对

22、象都将继承与 SerializeData 类,在该类利用.net 自带的 ISerializable 接口通过 BinaryFormatter 对所有需要序列化的变量进行序列化并存储。附:序列化与反序列化代码(见附录)3.5 表格配置数据读取在游戏开发中,数值模型起到了很大的作用,它将很大程度上决定了游戏的可玩性。那么如何在游戏开发中方便的配置数值使游戏更具可玩性呢?由于 Unity 自身有着强大的编辑器,开发者可以直接在编辑器上修改变量的数值从而修改数据模型。但这样的作法看起来很方便,其实还是有很多弊端的。首先策划并不见得能很好的使用 Unity 进行数值编辑,其次这种方式需要程序事先把所有

23、变量都布局好供策划调整,而且中间经常会因为一些特殊的需求而出问题。所以如果在团队开发中,配置表格让策划自己填写无非是最好的方式了,策划只需要关心表中的字段和数值,然后根据游戏实际运行情况调整就行了。本文将介绍如何用 csv 表格(逗号分隔表)进行数值的读取,然后将它配置到游戏中去。(一) 、用 Excel 制作 csv 表格图 3.5(1)制作 csv 表格为了方便程序中开发使用,本作者自己制定了一套读取方案。打开 Excel 表格,填入数值字段及数值。数据行介绍:第一行:对应程序代码中的表类型第二行:数据字段,字段名对应程序中的表类型成员变量,后缀:s 结尾代表字符串,:a 结尾代表整型数组,如果没有带后缀的则默认为整型数值。第三行:以 # 号开头的行代表这正行的数据作为解释行,不进行数据读取。第四行至结尾:这些行每行的数据都代表着一行数据记录,读取后写入内存中方便调用。(二) 、保存 csv 配置表选择另存为,选择 CSV(逗号分隔)类型的文件,修改文件名为 item.csv,然后保存至文档中。图 3.5(2)保存 csv 表格

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

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。