赞
踩
摘 要
随着计算机硬件的性能不断提升,游戏开发者可以选择采用更加专业的引擎完成游戏的研发工作,而玩家则对画面与性能有了全新的要求。游戏画面以及核心玩法是衡量游戏质量的重要标准。在众多的RPG(Role-playing game,角色扮演游戏)中,优秀的游戏通常包括完整的剧情和有趣的玩法等要素,它是体现游戏可玩性的基础,并且随着游戏版本的迭代可以推进剧情,带给玩家更多的参与感。
本论文设计并实现了一款基于Unity3D引擎的RPG游戏。首先,本文对该引擎的国内外发展现状以及RPG的发展进行了说明。随后,阐述了游戏开发过程中的相关技术,使读者初步了解游戏的研发管线。其次,详细介绍了游戏设计各个阶段的主要任务,在叙述中主要介绍了三个方面的内容,分别是文案设计,用户界面设计和玩法设计。最后,根据完整的游戏设计文档,本论文对这款游戏进行了开发,并详细阐述了开发中所涉及的游戏音效,粒子系统,角色控制器,动画控制器和对话交换等方面的内容。按照安排的开发进度和详细的设计文档,将若干个任务分解,逐步实现,最终完成了该游戏。
RPG的设计与实现过程较为复杂,它独有的游戏叙事能力也较其他类游戏更为优秀。通过体验这款游戏,可以粗略地了解到RPG的魅力。RPG的研发过程也像它的游戏体验,通过领取任务,任务获取,任务前准备,开始任务和结束任务到尾声,根据各个阶段的工作与反馈,对下一步操作进行调整,逐步完成一款游戏的制作。
关键词:Unity3D,游戏设计,角色扮演,三维游戏,交互
Abstract
With the continuous improvement of the performance of computer hardware, game developers can use more professional engines for game development, and game players have higher requirements for the picture and performance of the game. The playing method and picture of the game are important standards to measure the quality of the game. In many RPGs (role-playing games), excellent games usually include elements such as complete plot and interesting playing methods. It is the basis to reflect the playability of the game. With the iteration of the game version, it can promote the plot and bring more sense of participation to the players. Therefore, this paper explores the game design and implementation under unity3d engine.
Firstly, this thesis explains the development status of the engine at home and abroad and the development of RPG. Then, it expounds the relevant technologies in the process of game development, so that readers can initially understand the R&D pipeline of the game. Secondly, it introduces the main tasks of each stage of game design in detail. In the narration, it mainly introduces three aspects: copywriting design, user interface design and gameplay design. Finally, according to the complete game design documents, this thesis develops the game, and describes in detail the game sound effect, particle system, character controller, animation controller and dialogue exchange involved in the development. According to the scheduled development progress and detailed design documents, several tasks were decomposed and realized step by step, and finally the game was completed.
The design and implementation process of RPG is more complex, and its unique game narrative ability is better than other games. By experiencing this game, you can roughly understand the charm of RPG. The R & D process of RPG is also like its game experience. Through receiving tasks, task acquisition, pre task preparation, starting and ending tasks to the end, adjust the next operation according to the work and feedback of each stage, and gradually complete the production of a game.
Keywords: Unity3D, game design, role-playing, 3D game, interaction
目 录
第1章 绪 论
1.1 研究目的和意义
1.2 研究背景
1.2.1 国内发展(应用)现状
1.2.2 国外发展(应用)现状
1.3 论文结构
第2章 预备知识及理论说明
2.1 有限状态机(FSM)
2.1.1 有限状态机(FSM)的概念
2.1.2 有限状态机(FSM)的结构
2.1.3 基于有限状态机的游戏AI
2.2 行为树(Behavior Tree)
2.2.1 行为树(Behavior Tree)概述
2.2.2 行为树的组成
2.2.3 基于行为树的游戏AI
2.3 动画系统
2.3.1 骨骼动画系统
2.3.2 骨骼蒙皮
2.3.3 动化融合
2.3.4 粒子动画系统
2.4 MDA框架
2.4.1 机制(Mechanics)
2.4.2 动态(Dynamics)
2.4.3 美学(Aesthetics)
2.5 本章小结
第3章 需求分析
3.1 用例分析
3.2 用例关系
3.2.1 角色控制
3.2.2 角色交互
3.2.3 游戏AI
3.3 功能模块
3.4 本章小结
第4章 系统设计
4.1 文案设计
4.1.1 故事概述
4.1.2 角色设计
4.1.3 环境设计
4.2 用户界面设计
4.2.1 开始界面
4.2.2 游戏界面
4.3 玩法设计
4.3.1 游戏流程设计
4.3.2 任务系统
4.3.3 道具设计
4.3.4 游戏时序图
4.4 本章小结
第5章 系统实现
5.1 开发环境
5.1.1 软件环境
5.1.2 硬件环境
5.2 关卡实现
5.2.1 场景设计
5.2.2 地形设计
5.2.3 添加植物
5.3 核心玩法实现
5.3.1 角色控制
5.3.2 对话系统
5.3.2 战斗系统
5.4 游戏音效
5.5 UI实现
5.6 本章小结
第6章 系统测试与运行
6.1 测试
6.1.1 资源测试
6.1.2 功能测试
6.2 运行界面
6.3 本章小结
第7章 总 结
致 谢
参考文献
第1章 绪 论
1.1 研究目的和意义
随着游戏行业的扩大与发展,游戏的开发引擎也在不断更新迭代。为了满足多样的游戏开发需求,各大游戏公司在制作游戏的同时也会进行游戏引擎的研究。大部分2D游戏对游戏的画面没有太高的需求,游戏引擎更主要的功能是实现游戏玩法逻辑的控制。如主要面向独立游戏制作者的RPG Maker,相较于表现简单的游戏画面,游戏制作者在剧情的设计上需要花费更大的精力。而如今层出不穷的3D、VR游戏能够带给玩家更为沉浸式的体验,同时也对游戏画面提出了新的挑战。能够满足对画面有更高需求的引擎,如CryEngine3、Unreal4、Unity3D等次时代游戏开发引擎,能够动态渲染实时光照,让开发人员能够时刻监视到当前游戏画面。
在2020年,Unity和腾讯云合作推出Unity游戏云,帮助各大游戏厂商搭建联网游戏,迅速迭代核心玩法,并通过专业服务器托管和游戏内语音等服务优化多人在线玩家体验。同时,Unity游戏云全部产品基于腾讯云的IaaS资源可实现自动化运维,开发者可专注产品功能和创新[1]。Unity拥有素材丰富的资源商店,官方开发社区活跃用户众多,同时为中国开发者提供多种定制服务,为开发者们提供了友好的开发环境。因此,本次选用Unity3D作为开发引擎。Unity3D编译程序使用C#语言,学习难度中等,对于拥有一定开发经验的用户来说较好上手,为项目的成功开发提供一定保障。
1.2 研究背景
1.2.1 国内发展(应用)现状
国内游戏行业发展迅速,游戏用户群体日益增大,中国游戏市场规模逐步扩大,在全球范围内的占比也在稳步提升,国内用户对电子游戏的需求达到了新的高度。游戏公司对相关人才需求的增加,国内高校也不断推出游戏设计、游戏策划等课程与专业,许多高校与公司开展校企合作的形式,既为想要加入游戏行业的学生提供了道路,也满足了游戏企业对人才的需求。
依托高效的游戏引擎,国内厂商开发出了不少广受用户好评的游戏作品,其中使用Unity3D引擎制作的游戏包括《王者荣耀》、《原神》、《崩坏学园3》、《明日方舟》、《仙剑奇侠传六》、《闪耀暖暖》等。
1.2.2 国外发展(应用)现状
Unity3D是目前全球用户数量第一的游戏引擎,在苹果应用商城与Google Play上排名前1000的游戏中,超过一半的游戏使用Unity3D开发。市面上能看到许多使用Unity3D引擎成功开发优秀作品的成功案例,其中在近年拥有广泛用户群体的游戏例如《Hollow Knight》(空洞骑士)、《Hearth Stone》(炉石传说)、《Fall Guys》(糖豆人)、《Monument Valley》(纪念碑谷)、《Pokémon GO》(宝可梦GO)[2]。
2009年,Unity的注册人数已经达到了3.5万。2010年,Unity开始支持Android。2011年,开始支持PS3和Xbox360,可看作全平台的构建完成。
图1-1 空洞骑士游戏界面
Unity3D引擎具有以下八大特点:
(1)内置可视化编程界面,能够轻松编辑脚本,开发便捷。
(2)自动瞬时倒入。Unity能够汇入多种类型的3D模型,骨骼、贴图材质和动画可以直接导入,在项目中生成可识别的文件。
(3)轻松完成项目在多个平台的开发和部署。
(4)底层支持OpenGL和Direct11,简单实用的物理引擎,高质量粒子系统。
(5)支持Java Script、C#等脚本语言。
(6)性能优秀,开发效率高。
(7)支持影视媒体技术。
(8)支持各类单机和联机游戏开发[3]。
1.3 论文结构
本文的内容主要包括以下八个部分:
第一部分是绪论,分别从国内和国外两个方面对所使用引擎的发展进行了背景介绍,主要说明了本次使用该引擎进行开发的主要原因。
第二部分是对游戏开发过程中需要用到的预备知识、概念原理和技术进行解释说明,在正式进行开发前需要对这些相关的理论进行系统地学习,以便理解开发过程。
第三部分是游戏玩法,主要使用模型图、用例图等说明游戏的故事总览和核心玩法。
第四部分是游戏系统设计,使用E-R图和游戏时序图对游戏流程进行了详尽的说明,从文案设计、用户界面设计、玩法设计几个方面解释了前期工作。
第五部分是游戏实现,根据文档对系统进行具体实现,主要使用程序流程图来描述游戏主体部分的实现。
第六部分是测试与优化,对游戏的运行效率进行了评估。
第七部分是总结篇,对该游戏进行了综述性的评述,并阐述了当前的不足以及将来可以进一步完善的地方。
最后列出了本文所参考的相关资料。
第2章 预备知识及理论说明
2.1 有限状态机(FSM)
2.1.1 有限状态机(FSM)的概念
FSM的全称是Finite State Machine,中文名为“有限状态机”,简称为状态机。
有限状态机(FSM)可以认为是最简单的人工智能模型之一,并且普遍应用于大部分游戏之中[4]。
2.1.2 有限状态机(FSM)的结构
有限状态机由状态、事件、动作三部分组成。一个状态机通常是由有限数量的一组状态构成,不同状态之间的联系用图表的形式表示,并且这些状态之间在一定条件下可以相互转换。一个游戏实体的运行从初始状态开始,在运行的过程中不断检查当前条件是否符合转换条件。一个游戏实体在同一时间内只能处于一个状态。
图2-1 FSM示例图
FSM可以定义简单的角色状态转换,如图2-1所示,角色的状态主要有五个,包括站立、走路、奔跑、下落和翻滚。
2.1.3 基于有限状态机的游戏AI
基于状态机的游戏AI是实现简单游戏AI最便捷的方式,具有实现快捷、代码简单的特点,但在复杂的状态转换中,如果状态数过多时,需要考虑一对多转换过程中的顺序,此时对状态转换系统维护的困难会增加。因此,基于状态机的游戏AI仅适合于一些逻辑简单、固定的游戏AI[5]。
2.2 行为树(Behavior Tree)
2.2.1 行为树(Behavior Tree)概述
行为树(Behavior Tree, BT)是一种控制游戏角色状态和行为的方式,在部分情况下,可以使用行为树来替代有限状态机。在有限状态机的状态增加时,各状态之间的关系复杂度也会增加,因此人们开始寻找新的方法与技术,行为树就是这些技术之一,此外还有分层有限状态机(HFSM)和分层任务网络(HTN)等[4]。
行为树是一种构建在自主智能体(例如机器人或者电脑游戏中的虚拟实体)中不同任务(假设某个活动以某种方式分解为可以重用的子活动,这些子活动称为任务,有时也称为动作或者控制模式)中间切换的方法,是创建具有“模块化(modular)和反应性(reactive)复杂系统的一种有效的方式” [7]。
2.2.2 行为树的组成
行为树是一个有向的根树,根节点作为行为树的入口,节点类型为Root,每个行为树都有一个Root类型节点;内部节点称为控制流节点,叶节点称为执行节点,所有的叶子节点的类型一定是Action,同时Action类型的节点一定不能作为非叶子节点来使用。
与有限状态机或其他用于人工智能编程的系统不同,行为树是一个层次节点树,控制人工智能实体的决策流程。在树的范围内,叶子是控制AI实体的实际命令,而形成分支的是各种类型的实用节点,它们控制AI在树上行走,以达到最适合情况的命令序列[6]。
行为树系统主要由以下几类节点构成:
根节点:行为树执行的入口,返回值为其子节点的执行结果。
组合结点:行为树的中间节点,构成了行为树的骨架,用于控制行为树的执行顺序,完成了程序语言中的“跳转语句”的功能,主要有以下三种节点:
(1)顺序节点:按顺序遍历子节点,若成功遍历所有节点则成功,或者存在子节点返回失败则失败。
(2)选择节点:按顺序遍历子节点,若所有子节点返回失败则失败,或者存在子节点返回成功则成功。
(3)随机节点:在一定的概率下对子节点进行随机选择并执行,返回子节点的执行结果。
行为树的执行是从根节点出发,按照设定好的规则选择执行哪些节点,跳过哪些节点,从左至右的按序遍历子树及其子节点,并返回执行的结果[5]。
2.2.3 基于行为树的游戏AI
基于行为树的游戏AI的基本流程是判断AI周围发生了什么,根据周围环境的变化做出相应的反馈,根据顺序选择下一个动作。
行为树的设计主要涉及到动作节点设计、条件节点设计、标记值系统和AI测试。如果游戏AI的需求非常复杂,使用单棵行为树描述AI的所有逻辑会使得行为树变得异常复杂。因此,引入了跳转接点,对行为树的子树进行分层,根据不同的情境行为树可以跳转到不同的子树内部,执行子树内的相应行为。
根据参考文献[5]绘制了行为树示例图,如图2-2所示。
图2-2 简单的游戏AI行为树示例图
2.3 动画系统
在游戏的制作过程中,很重要的一环是塑造角色。在游戏中的角色需要通过动画系统来表现角色的动作和状态,如角色与游戏NPC的交互,角色的奔跑、下落、翻滚和战斗等行为,都需要通过动画来表现。从技术视角可以对动画的类型进行区分,常见的类型有刚体动画、骨骼动画、精灵动画、物理动画、粒子动画和可编程动画等。本节主要介绍骨骼动画、粒子动画的相关概念。
2.3.1 骨骼动画系统
骨骼动画也称作搭建动画,在游戏中的应用是从可编程GPU出现后开始流行的。2002年微软推出DirectX 9.0支持可编程管线,使得GPU蒙皮容易实现,从而骨骼动画的效率有了很大的提升,因此游戏中的角色动画都开始使用骨骼动画来实现。
骨架由骨骼以树状结构组织而成,骨架定义了一套3D空间层级结构,每一根骨骼都是一个正交的3D空间,骨骼之间存在着父子层级关系,上层骨骼的变动会带动子骨骼跟着移动。图2-3展示了一个人形骨骼的层级结构。
图2-3 人形骨骼层级结构
游戏中的人物角色通常以Biped骨骼系统作为基础来制作骨架,Biped骨骼系统适用于双足类动物,不仅可以用来制作人形骨骼,也可以对其增加衣服飘带,裙摆等设计,还可以将骨骼变形为马、老虎等四足动物[5]。 骨骼化是指底层骨骼结构添加至设计师创建的模型中,且各块骨骼与网格顶点间实现了加权操作。骨骼的定义在预定义角色网格顶点的移动和变形范围。
表2-1 人形骨骼常见命名
Hips臀股
Spine脊椎
Chest胸
Upper chest上胸
Left/Right arm左/右臂
Shoulder肩膀
Upper arm上臂
Lower arm(forearm)下臂
Hand手掌
续表2-1
Head头部
Neck颈
Left/Right eye左/右眼
Jaw下颌
Left/Right hand左/右手
Thumb大拇指
Index食指
Middle中指
Ring无名指
Little小指
2.3.2 骨骼蒙皮
在实际的游戏中并不会看到角色的骨骼,骨骼的作用是驱动模型的网格动画。首先需要确定模型网格顶点与骨骼之间的关系,才能够把骨骼的动作变换为网格的运动。
在顶点和骨骼之间的绑定关系确定以后,就确定了顶点在骨骼当中的相对位置,随着骨骼的变换,顶点的位置需要实时计算更新,由骨骼的变换来带动模型顶点的运动[5]。
2.3.3 动化融合
在实际的角色动画播放中,某一个时刻,骨架可能需要播放多个动画,例如人物从站立到奔跑的过渡期间,若是直接进行动画的切换会使得人物动作僵硬,因此需要平滑地过渡播放站立与奔跑两个动作,通常需要用到动画融合的相关技术。
角色在播放多个动作时,会面临不同的切换情况,可以分为上下半身融合、动作融合同步和动作叠加等情况。例如在人物从站立到奔跑时,需要结束前一个动作后再继续下一个动作;在人物站立时受到击打,需要对击打做出相应的反馈动画,反馈动画结束后应当恢复到站立。
为了方便动画的管理,可以添加动作层。动作层之间相互独立,互不影响,按照层级的优先级进行动画表现[5]。多个动画的动画层级示例如图2-4所示。
图2-4 动画层示意图
2.3.4 粒子动画系统
粒子系统是特效(Special Effect)的重要组成部分,主要负责生成特效和动画,多个组件以一致方式运动,例如雨、下雪、萤火虫、鸟群、鱼群、火焰、花瓣等。除此之外,粒子系统还可以用来模拟幽灵、尘土等没有具体形状的物体[8]。粒子系统能够使用不同的纹理,通过多次绘制来达到特殊的表现效果[15]。
粒子系统主要包含3个功能:
(1)发射元素:与出孔装置相似,粒子从一个位置发射。发射机(Emitter)一般在编辑器中会被设计为一系列的参数来使用,用户通过参数来控制粒子的行为,让运行时的粒子发射器产生不同的粒子。
(2)粒子本身:发射器生成的粒子对象,如雪粒子系统中,一朵雪花即为一个粒子;鱼群系统中,一条鱼即为一个粒子。
(3)生命周期与轨道:一个粒子从发射到消亡的时间被定义为其存在的时间,即粒子的生命周期。在一个生命周期内,粒子沿一个轨道和规定的速度运动,直至被回收。这个设定用于粒子系统不断地回收粒子,避免产生的粒子数量随着游戏的运行而无限增大,导致游戏负载过高[5,8]。
图2-5显示了在Unity3D中的一个基础粒子系统。
(a) (b)
(c)
图2-5 点粒子与编辑器
2.4 MDA框架
游戏开发中的MDA(Mechanics, Dynamics, Aesthetics)模型作为一个解构框架,即机制-动态-美学模型,它能够帮助游戏设计人员与游戏开发人员之间的沟通,这一方法能够让开发人员和研究人员在游戏的开发过程中更好的合作。游戏机制(Mechanics)包括游戏规则,数据的表现形式还有算法等一些底层的东西。游戏动态(Dynamics)其实是游戏机制在玩游戏的过程当中跟玩家互动的一个过程,是一个动态的系统。游戏美学(Aesthetics)是一种体验,描述了玩家在这个动态系统中互动的所得到的反馈以及情绪的反应。
图2-6 设计者与玩家的不同观点
2.4.1 机制(Mechanics)
机制是在数据表示和算法层面上描述了游戏的特定组成部分,是在游戏环境中提供给玩家的各种动作、行为和控制机制。与游戏内容(关卡、资产等)一起,机制支持整体游戏动态。
2.4.2 动态(Dynamics)
动态致力于创造美学体验。例如,挑战是由时间压力和对手发挥等因素造成的。通过在某个会话的某些成员之间共享信息,或者提供更难单独实现的获胜条件(例如捕获敌人基地),可以鼓励团队合作。
表达来自鼓励个人用户留下印记的动力:购买、建造或赚取游戏物品的系统,设计、建造和改变关卡或世界的系统,以及创造个性化、独特的角色的系统。戏剧性的紧张来自于鼓励紧张、放松和结局上升的动力。
与美学一样,在对动态的讨论上应当尽可能具体。通过开发预测和描述游戏动态的模型,我们可以避免一些常见的设计问题。
2.4.3 美学(Aesthetics)
一款游戏可以有很多个美学目标(Aesthetic Goal),这些目标能够在某种程度上解释为什么一款游戏能够吸引玩家,但并非是指只要一款游戏满足了所有的目标,则这款游戏就一定足够“好玩”。游戏美学是一种玩家在游戏过程中的体验,而体验会受到各种因素的影响,如当下环境和玩家的心境。下面描述了游戏中的8种美学:
(1)感官(Sensation):通过视觉,声效,震动等来刺激和给予玩家体验。
(2)幻想(Fantasy):制作一个能够让玩家相信并沉浸其中的世界。
(3)叙事(Narrative):通过精心设计的故事线来愉悦玩家。
(4)挑战(Challenge):玩家需要解决一些设计好的挑战。
(5)伙伴(Fellowship):设计需要合作,互动的社交框架。
(6)探索(Discovery):发现未知的领土。
(7)表达(Expression):用游戏来表达自己,比如MineCraft。
(8)休闲(Submission):帮助玩家消磨时间[9]。
2.5 本章小结
本章介绍了项目开发所需要的相关预备知识,包括有限状态机概念、有限状态机结构、基于有限状态机的游戏AI、行为树概述级行为树的组成、基于行为树的游戏AI,以及动画系统。最后,介绍了游戏开发中的MDA模型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。