游戏设计 毕业论文 【摘要】 游戏开发行业,随着移动领域的崛起,近年来变得越加火热,各游戏开发公司纷纷投入移动游戏的研究开发,其中 Unity3D 和 Cocos2D 两款引擎受到了各公司的青睐,游戏开发人员供不应求。
本文将介绍如何用 Unity3D 引擎开发一款角色扮演类游戏的全过程,其中包含了 Unity3D引擎使用的介绍、游戏策划及游戏各大功能模块的实现。在游戏策划中将规划整个游戏项目的背景故事,游戏场景,游戏系统等,为后面实现游戏功能代码打好基石。在游戏程序开发中,将使用 Unity3D 提供的编辑器结合 C#先实现游戏流程整个程序框架,然后按照框架流程完成游戏各个模块的功能,最后将游戏进行 Windows 和 Android 双平台打包调试。
近年来,随着移动领域的兴起,游戏开发行业越来越受欢迎。各游戏开发公司纷纷投入手机游戏的研发。Unity3D 和 Cocos2D 的引擎受到各公司的青睐,游戏开发商供不应求。
本文将介绍如何用 Unity3D 引擎开发角色扮演游戏的全过程,包括对 Unity3D 引擎、游戏策划的介绍以及游戏主要功能模块的实现。游戏策划将规划整个游戏项目的背景故事、游戏场景、游戏系统,为以后实现游戏功能代码打下良好的基础。在游戏程序的开发中,将使用Unity3D 提供的编辑器结合 C 语言实现游戏流程的整个程序框架,然后根据框架流程完成游戏各个模块的功能。最后,游戏将在 Windows 和 Android 的双平台上进行打包和调试。1.前言 1.1 项目背景及设计理念 随着国家的繁荣和科技的发展,越来越多的人在业余时间需要娱乐休闲,游戏产业也随之诞生。在 21 世纪互联网飞速发展的时期,游戏产业不断壮大,从最早的红白电脑时代到主机时代,再到 PC 电脑的崛起让游戏产业熠熠生辉,直到近年来移动的热潮把手机游戏推到了顶峰。
在这样的背景下,越来越多的企业开始投资游戏研发。然而,由于每次开发一款游戏时,都要重新开始编码,效率低,成本高,因此游戏设计者想知道如何重用以前的东西来快速开发。慢慢地,游戏引擎(GameEngine)出来了。它集成了图形引擎、物理引擎、碰撞检测系统、音效、 脚本引擎、计算机动画、人工智能、网络引擎和场景管理。它为游戏设计者提供了编写游戏所需的各种工具,大大提高了游戏开发的时间和成本。
1.2 游戏设计方法与实现技术 角色扮演类游戏(角色扮演游戏)提供了一个虚拟的电脑游戏世界。游戏世界为玩家提供虚拟游戏角色供玩家选择和操作,最终使玩家在世界上实现第二人生目标。自 RPG 诞生以来,RPG 框架的设计和研究不断进步,并发展到发动机技术时代。
RPG 的游戏设计更为复杂。该系统主要由作战、剧情、任务、交互、装备等系统组成。作战系统是 RPG 游戏设计的核心部分。
作战系统主要包括:
1.属性系统:这是游戏中最简单的系统,包括主角、物品、NPC、技能、怪物等的属性值。通过属性值,我们可以计算出战斗中的各种逻辑交互值。
2.状态机系统:系统标记一个人物或怪物处于什么状态,相对于动作而言,人物是站着的?还是跑步?还是与敌人作战?当然,有些州可以同时拥有。这些状态需要通过程序中不同的变量值来区分。因此,作战规则越多,状态机的逻辑就越复杂,所以在开发过程中,需要提前制定计划,否则在后续的开发中维护起来会更加困难。
3.行为系统:系统决定游戏的表现,每一个动作或声音都由行为系统管理。
4.人工智能(AI):该系统主要用于人机交互。在战斗的过程中,敌人将如何与玩家战斗?敌人越强大,AI 的设计就越复杂 过程将是。不同的算法需要结合起来,才能得到一组怪物的指令。
1.3 项目设计思路及实施技术 本项目将设计一个角色扮演游戏,游戏将使用 游戏将实现登录、交互、战斗、保存等几个主要功能,其中有许多依赖的小功能。该项目采用 mono 在.net 的跨平台编译技术,在 windows 环境下使用 C 进行跨平台开发,并结合 Unity引擎提供强大的 API 函数库和渲染引擎技术,实现整个 RPG 游戏的技术实现。
1.4 项目主要任务 本项目的主要设计工作包括:
(1) 基于移动平台的手机设计 (2) 规划各模块的播放方法和系统功能 (3) 使用 Unity3D 引擎完成游戏的所有功能 (4) 打包并调试最终游戏 通过对 Unity3D 引擎一年的研究,这个项目尝试了很多小项目,最后总结了如何利用它快速开发出一款 RPG 游戏,从早期游戏策划的游戏功能布局,到游戏的程序框架、功能开发,再到最终的包装模式。这个项目将通过这个例子逐一描述。
2. 项目介绍 2.1 游戏引擎介绍 Unity3D 是 Unity Technologies 大学开发的跨平台游戏引擎,它集成了强大的可视化用户编辑器,采用组件开发,开发者可以快速开发自己的游戏。由于其跨平台的发展,该引擎在移动领域崛起时受到众多开发者的青睐。现在越来越多的开发者投入其中,它已经成为世界上应用最广泛的游戏引擎。在图形方面,Untiy3D 采用了实时照明、Lightmapping 和全球照明等主流技术,使游戏界面更加逼真。在程序方面,引擎支持 用 C 语言开发的 Untiy 原版和 Script 原版,大大加快了用户的开发进度,同时也为用户提
供了方便 AssetStore 商店允许开发人员找到他们想要的插件,并快速实现他们想要的功能和效果。
2.2 游戏介绍 本文将以古代唐代为历史背景,利用 Unity3D 开发一款基于手机的 ARPG 手机游戏。
游戏类型:ARPG 游戏平台:Win,Android 游戏风格:中国古代 游戏玩法:玩家可以通过副本战斗摧毁敌人获得奖励,也可以通过商店购买继续强化自己。
2.3 游戏故事背景 在游戏开发之前,做好背景主题将决定游戏后期的开发。如何设置好故事背景,需要根据玩家的喜好来决定。一个好的主题会更喜欢玩家的注意,所以一个好的故事主题将为游戏奠定基础。
本文以中国古代唐代的热门题材为背景故事,创作了一款实时格斗 ARPG 游戏,让玩家在游戏中体验格斗的乐趣和古典的魅力。
2.4 游戏场景 游戏场景作为游戏的主要互动区域,承载着玩家在游戏中的大部分互动,其对游戏的重要性不言而喻。游戏场景可分为 2D 和 3D。2D 场景由图片组成,效果比 3D 稍差。3D 让人感觉更真实,仿佛置身于现场。游戏场景也分为很多风格,包括古代风格、韩风风格、欧美风格、日本风格、水墨风格等。如何选择取决于主题。
由于本论文的主题地处中国古代,场景也具有中国古代风格,风格华丽,厚重庄重,线条笔直,装饰丰富,使人感到轻松愉快。
图 2.4 (1)华丽的长安城
图 2.4 (2)华丽的长安城 2.5 游戏角色 一款好玩的游戏,流行的游戏,里面一定有几个流行的人物,每个人物都有自己独特的性格和能力,可以被更多的玩家记住。所以创造一些好的角色并不容易,其中一个非常重要,就是每个角色都应该有自己的价值,形成鲜明的对比,并且与其他角色不同,因为玩家总是喜欢独一无二的角色。
本文游戏的主人公是一个道士新手,道士在途中遇到各种艰难困苦,消灭敌人,一步步长大。道家的武功主要是剑术。由于他的性格外向,他被认为是受欢迎的球员。在这部作品中还有另外两个角色,你可以继续添加新的角色来丰富游戏。
图 2.5 帅气的道士 2.6 游戏系统 本文将游戏功能系统主要分为以下几类 游戏登录 创建角色 背包系统 装备系统 战斗系统 副本系统 商店系统 NPC 系统 蒂芙尼早餐 以上几类是游戏的一般游戏功能,这些功能在 RPG 的游戏中是必不可少的。通过这些功能系统,我们可以展示 RPG 游戏的核心玩法。其中,数字系统是最重要的,一个好的 RPG 游戏不仅要满足玩家对屏幕和功能的需求,还要满足玩家的虚荣心。
RPG 游戏的游戏是否有趣与数值无关,但游戏是否有趣以及玩得有多深与数值密切相关。数值不好。在表现层面,它使得游戏过程的体验不好。容易出现的两个极端是过度的挫败感(经过十年的练习,我出去时被一个小兵打死)和成就感(在队员们努力之前,Boss 上街了?)! 因此,如何巧妙地运用这些价值观来构建整个游戏的可玩性至关重要。我们有 学习如何根据玩家的需要建立不同的数字系统。
1.游戏程序框架设计 3.1 游戏核心 游戏将以组件模式开发,不同组件维护各自的相关功能,不与其他组件直接交互,减少层间耦合(俗称:解耦),便于后期维护。本工作还将基于 MVC 模式,即数据模型(游戏数据)、视图(UI)和控制器(Manager)编写一套完整的逻辑程序。
MVC 模式的优点:
1.开发人员只能关注整个结构的一层 2.很容易用新的实现替换原来的实现 3.减少层间依赖 4.有利于标准化 5.有利于重用各层逻辑。
数据:管理游戏程序中的各种数字数据。
观点:Unity 的控制权必须继承自 Mono·behaviour。
管理器:数据和 UI 的操作和管理。
本文中的管理者将从毕业典礼中继承。组件。这个类是作者自己编写的组件管理。每个管理器
通过组件容器添加到容器中,方便了各个模块管理器的管理和交互。
游戏核心架构:
游戏核心(GameCore)(单例) 游戏管理器(GameManager):
场景管理器(SceneManager) 数据管理器(DataManager) 资源管理器(ResourceManager) UI 管理器(UIManager) 游戏组件(Component):
音效管理器(SoundManager) 网络管理器(NetManager) 配置管理器(ConfigManager) 逻辑管理器(LogicManager) 动画管理器(AnimationManager) 游戏启动流程:
// 启动游戏... // 1.加载配置表 InitConfig(); // 2.加载组件 InitComponent(); // 3.加载游戏资源 InitResource(); // 4.初始化网络模块 InitNetwork(); // 5.进入游戏 EnterGame();
图 3.1 游戏核心框架流程图 为了游戏开发中的方便使用,作者在开发前已经封装好了一整套常用工具库,工具库大致包含:文件读写工具类,数值计算工具类,UI 工具类,序列化工具类等。有了这些工具库,在开发中可以更快速编码,省去了频繁写一些常用逻辑的时间。
3.2UI 框架游戏 的 在早期的 Unity3D 版本中,UI 系统的引擎相对较弱。它只能通过 Unity 提供的一些 API 来构于 建,但是这种方法效率太低,而且很麻烦,很难改变。由于 Untiy 越来越受欢迎,UnityAsset Store 店的插件越来越多,其中 next GUI 插件(以下简称 NGUI )最受开发者欢迎,因为它弥了 补了 Unity 自身的弱点,使 UI 系统非常强大,甚至完美。使用 NGUI 插件可以让用户使用可视化界面,只要在界面上拖动各种控件、脚本,结合自己的一些逻辑代码就可以完成游戏所需的界面。
在 在 Unity4 .6 版本中,Unity 开发团队到 认识到 UI 系统的弱点,随后发布了新版 UI 系统(简称UGUI )。它只吸收了 NGUI 的优势。因为 UGUI 是本土系统,它的性能会比 NGUI 好很多,逐渐被开发者接受。
用 在这个游戏中,我们将使用 Unity 最新的 UGUI 系统来完成整个游戏的开发,并讲述如何构建 建 UI 框架的游戏。一个好的 UI 框架将使以后的开发更加方便。
图 3.2 游戏 UI 框架流程图 UIBase:该类为所有 UI 脚本都继承的基类,该类重载了大多数 MonoBehaviour 函数,方便在后期资源管理以及界面动画等进行统一管理。
UIManager:该类将统一管理所有 UI 界面的显示、隐藏、动画、音效,所以需要显示的UI 界面都需要通过该类进行注册才能使用,该类还提供各种通用 UI 界面,例如消息框,提示框,输入框,确认选择框等等。
UIUtils:该类为静态类,是 UI 工具库,将提供大量功能型函数供 UI 界面使用,例如一些 UI 对齐,UI 的各种位置算法等。
有了以上三大类,在后续的界面设计中就能轻松的利用他们实现一套完整的 UI 框架,实现每一个功能界面的需求。
3.3 Lightmapping 光照烘焙 光照烘烤技术,是指通过计算机对光照效果进行计算和模拟,节省了使用实时光照的高消耗。总之,实时光照计算是非常耗时的,而且光源越多,时间就越长。如果你使用 Lightmap 模拟的灯光效果,你不需要计算灯光,这将大大提高性能。当然,你不需要灯光效果。这取决于项目要求。最简单的方法是直接在 3dmas 或 maya 中烘焙贴图顶点颜色。
对于移动手机游戏来说,由于硬件方面的原因,如果在 3D 游戏中大量使用实时照明,手机的性能难以承受,但如果不使用实时照明,效果就很差。所以这款游戏将采用 Lightmap 技术的Untiy Pro 版,这大大降低了游戏本身的成本对手机性能的影响,而且使用 Lightmap 的画面效果非常好。
首先,在场景中,大量的点光源(PointLight)应该设置在正确的位置。方向、位置和亮度需要仔细调整。
图 3.3 (1)Lightmapping 的使用 其次,打开 Lightmapping 面板调节具体的参数。
图 3.3 (2)Lightmapping 的使用 由于手游中并不需要太高的画质,所以这里作者调节的光照品质较为一般。
最后,点击 Bake Scene 即可开始场景的烘焙,烘焙需要等待一段时间。看看烘焙后的效果是不是感觉好震撼?效果丝毫不逊于实时光照。
图 3.3 (3)Lightmapping 的使用 3.4 序列化与反序化 3.4.1 序列化介绍 序列化 (Serialization):将数据结构或对象转换成二进制串的过程 反序列化(Deserialize):将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程 这两个过程在游戏开发中被广泛的使用,因为其可以让游戏在跨平台上方便的进行通讯传递,把一个完整的对象通过网络发送到终端。序列化还能将一个对象永久的保存在硬盘上,可以用于存储玩家的游戏数据。
本文中将采用序列化方式来进行玩家数据存储,并在序列化过程中加入了加密解密技术,使得游戏数据不会轻易的被玩家所破坏。
现在主流的序列化方式大致分为 二进制序列化:二进制序列化的优点是可以精确地控制序列化及反序列化的过程,并可以序列化对象的非公共成员。其序列化过程的速度非常之快,而且序列化后的体积小,非常适合用来传输实时性较高的应用。但...