目 录
摘 要 III
Abstract IV
1 绪论 2
1.1课题背景 2
1.2国内外研究现状 2
1.3研究内容 4
2相关技术 6
2.1 Unity3D引擎技术 6
2.2 DOTween 6
2.3 C#语言 7
3需求分析 9
3.1系统架构分析 9
3.2功能模块分析 10
3.2.1战斗模块 10
3.2.2关卡模块 10
3.2.3商店模块 10
3.2.4背包模块 11
3.2.5技能模块 11
4游戏的设计与实现 12
4.1战斗模块实现 12
4.2关卡模块实现 12
4.3商店模块实现 13
4.4背包模块实现 14
4.5技能模块实现 15
5游戏测试 17
5.1游戏功能测试 17
5.2游戏测试用例 17
6总结 18
参考文献 20
致谢 21
1 绪论
1.1课题背景
“恶魔冒险城”是一款专为PC端设计的RPG风格的角色扮演游戏。游戏是基于Unity3D引擎来开发的,拥有着众多优秀的角色造型,丰富的场景画面以及精彩而又刺激的战斗剧情,吸引了许多玩家参与进来。随着现代游戏行业的快速崛起,角色扮演游戏作为经典的游戏形式,始终受到玩家们的热烈追捧。伴随着游戏技术的持续进步,unity3D引擎作为一个主导的游戏开发工具[1],在角色扮演游戏的设计与开发领域的使用也变得越来越普遍。因此,对游戏设计和开发的背景、目标和重要性进行深入探讨,对于寻找新的游戏设计思维和开发策略是至关重要的。
与此同时,市场对于高品质和创新性质的游戏的需求也在持续上升。这就要求游戏开发者要积极创新,提升产品竞争力,满足消费者多元化的精神文化需要,从而促进整个行业健康有序地可持续发展。随着技术的持续进步,unity3D引擎作为一个强大的跨平台游戏开发工具,为角色扮演游戏的设计和开发打开了新的大门[2]。因此,对其应用的深入研究显得尤为重要。
1.2国内外研究现状
Unity3D作为一款广受欢迎的游戏开发引擎,已经被国内外的游戏公司选为主要的开发工具,用于生产各种小型和休闲游戏[3]。这款引擎拥有众多的优势,易于掌握的开发方式,能够导入多种类型的游戏模型,同时,官方和自主研发的开发者都提供了多种用户友好的插件。Unity3D还拥有所有开发平台中最出色的跨平台设计模式,使得使用它进行游戏开发变得非常便捷,并且可以无缝地迁移到PC、Android、I0S平台上[4]。随着游戏行业的快速发展,越来越多的玩家对网络游戏的需求不断增加。在过去的几年中,许多大型游戏的成功开发都采用了Unity3D技术。例如,腾讯天美工作室推出的《王者荣耀》和《QQ飞车(手游版)》,澳大利亚的三人团队TeamCherry推出的《Hollow Knight》,以及计划在年底公开测试的由RIOT和腾讯共同研发的《英雄联盟(手游版)》。根据Unity的官方数据,2019年,中国Unity3D在游戏警报开发方面的使用率已经超越了日本,达到了75%的水平。随着越来越多人对游戏本身的关注和需求不断提高,游戏开发者们对于如何设计出一款优秀的游戏引警也开始了不懈地探索与尝试。Unity的官方正在不断地更新其游戏警报,预计未来会有更多的独立游戏开发团队和公司采用Unity3D引擎来进行游戏的开发工作[5]。
在过去的几年中,全球的游戏产业经历了飞速的增长,目前,游戏产业的年度产值和社会影响已经与影视产业持平。随着人们生活水平不断提升,对精神文化的追求越来越高,网络游戏产业也迎来了新的挑战与机遇。2018年,中国互联网络信息中心(CNNIC)完成了对2018年互联网发展情况的详细统计,并在第41次《中国互联网络发展状况统计报告》中明确指出了中国网民的未来发展趋势。数据显示,到2019年为止,中国网民的数量已经超过了8亿人。在2019年的上半年,新增的网民数量达到了2598万人,这意味着互联网的普及率已经达到了前所未有的61.2%,占全国总人口的一半以上[6]。与2018年底相比,这次普查增长了16个百分点。在2019年这一整年中,网络游戏行业仍然呈现出持续上升的趋势,这种增长主要受到网络游戏行业的社会影响力和发展创新的推动。到2019年底,中国的网络游戏用户数量已经达到5亿人次,相比2018年年底的数据,增长了近1000万人,占到了网民总数的57.8%[7]。
随着科技的进步,现代年轻人的生活习惯也发生了变化,游戏已经变成了他们生活中不可或缺的部分,它满足了人们在现实生活中的娱乐需求。在这样一种背景下,游戏产业也逐渐壮大起来,并逐步与电影和电视一起成为三大支柱产业之一[8]。鉴于游戏产业的巨大发展潜力,全球绝大多数公司选择了自主研发各种游戏的策略。其中以美国为代表的发达国家更是将游戏作为其产业核心之一。U3D、UE4、CE3等游戏引擎在游戏开发领域受到了广泛的关注,特别是在游戏制作和使用引擎方面[9]。Unity3D在一方面提供了简洁明了的开发界面和强大的引擎功能,而在另一方面,它是一个由C++编程的开源引擎。这就使得开发人员能够快速地进行编程实现。由于该代码本身是开源的,并且还提供了全面的底层开发技术和架构,这极大地提高了开发者的开发效率,使他们能够将更多的精力集中在如何开发、如何编写脚本上[10]。另外,基于此平台,开发人员可以很容易地进行各种场景模型搭建,从而实现更加真实的三维效果。目前,使用Unity引擎的用户数量已经达到了所有游戏开发引擎用户的45%。Unity3D的游戏引擎,作为新兴的游戏引擎,具备了一系列令人印象深刻的功能[11]。与传统的虚幻引擎相比,它的画质毫不逊色。此外,它还拥有一个非常强大的跨平台功能,这使得用户不仅可以在PC、Android、i0s平台上发布自己制作的游戏,而且在2019年6月发布的Unity4.3版本中,已经实现了家用主机ps4 ps3的套件开发[12]。这个套件不仅支持镜头功能的深度检测,还可以定位手和脸,以及PS4的移动检测功能。
1.3研究内容
(1)研究目标
通过使用C#进行场景编程,控制角色的各种行为,如行走、攻击和怪物AI等,并根据玩家的需求调整战斗模式。同时,我们还对游戏的战斗模块进行了优化封装,这有助于减少游戏的功耗,提高游戏的整体流畅性,并增强玩家的游戏体验。
(2)主要研究内容
游戏的关卡子系统、商店子系统、背包子系统、战斗子系统、存储子系统,以及角色技能子系统和用户界面系统,都是通过运用Unity3D引擎技术、DOTween插件和C#脚本语言来实现的
此外,为了确保游戏的高质量和娱乐性,选择恰当的研究手段来开发和测试游戏也是至关重要的。在本文的最后一部分,总结了本文的主要研究成果及不足,并对今后工作做了展望。在设计和开发rpg游戏时,我们需要深入研究多个方面,包括游戏的故事情节和世界观构建、角色设定和人物特性、地图设计和场景构建、战斗系统和技能设计、道具系统和商店设计、进度系统和任务设计等。在这些工作的完成后,才能将最终的作品呈现出来,从而验证该项目的可行性。首先,在游戏设计过程中,故事情节和世界观的构建显得尤为关键。这需要从游戏的全局背景着手,以形成一个全面的游戏世界观,从而为游戏角色的设定和地图的设计提供坚实的基础。
游戏中的角色设计和人物特质也是至关重要的元素。在地图设计和场景构建方面,需要综合考虑游戏地图的尺寸、地形的多样性以及场景设置等多个方面,以创造一个多样化和丰富的游戏环境。再次,游戏剧情设计和任务设计也会对玩家产生重要影响。在游戏中,战斗系统与技能的设计被视为关键的玩法元素。为了为玩家提供最佳的游戏体验,我们需要创造出各种不同的战斗方式和技能搭配。此外,在剧情方面,也要结合游戏主题进行合理的布局和规划,并加入一些具有特色的故事元素。游戏中的道具系统和商店的设计目的是为了增加游戏的玩法多样性和挑战性,从而为玩家带来更丰富的选择和策略。另外,游戏的评价系统和反馈机制也是非常重要的组成部分。游戏的进度系统和任务设计旨在为玩家提供更好的游戏体验,通过设置各种不同的任务和进度来促进游戏的持续进步。
2相关技术
2.1 Unity3D引擎技术
Unity3D游戏引擎因其出色的功能、简洁的界面和高度的可移植性,赢得了众多游戏开发者的喜爱。目前,许多游戏公司都已经将其作为自己产品进行推广与应用。Unity3D游戏引擎为开发者提供了创建2D和3D游戏项目的简便方式,同时它还具备了编程的可视化特性,这种“所见即所得”的操作模式为开发者带来了极大的便利。此外,还具有良好的交互性能,让玩家能够更加容易地与角色互动,增加游戏的乐趣,提高用户体验感。Unity3D引擎的独特之处在于它支持跨平台的设计。与其他游戏引擎相比,Unity3D引擎提供的跨平台功能是其他游戏引擎所无法匹敌的。随着越来越多的游戏公司加入到游戏研发中来,他们都希望能够通过这种模式来降低游戏开发成本,提高游戏质量。Unity3D引擎在过去的几年中取得了显著的进步,吸引了众多的用户群体。许多独立的工作室也参与到Unity的游戏引擎插件开发中。每年,官方都会挑选一些当前非常受欢迎的技术插件,并在即将发布的Unity新版本中进行整合,利用其新的功能特点,为开发者提供更为便捷的开发环境。另外,由于游戏本身的复杂性,需要开发人员对游戏本身做出改进以适应更多的场景。以Unity中的NGUI插件为例,在早期的Unity版本中,由于原始的官方NGUI插件设计的U系统在性能和功能上并不突出,并且其代码编码格式与HTML相似,这使得使用NUGI在提高开发效率上存在困难。因此,第三方作者设计了一个新的类似NGUI的插件。从Unity的4.6版本开始,Unity官方利用NGUI的特性开发了自己的UGUI系统,并将NGUI的优秀功能整合到Unity的4.6版本中。在当前的Unity版本中,UGUI系统已经成为开发UI界面的必备工具[14]。在2D游戏的开发过程中,Unity推出了2DToolKit开发模块,而在当前手机触屏和手柄日益普及的背景下,Unity又推出了EasyTouch等新的开发组件。这些都是目前比较热门的开发工具。为了更好地支持VR游戏的制作,我们提供了更多的插件选择,如Dive、AR+GPS Location等。
图2-1 Unity3D技术
2.2 DOTween
DOTween是一个专为Unity游戏引擎设计的高效的补间动画资源库。该平台可以实现对不同类型场景、人物等对象进行实时渲染并生成各种特效。该API为开发者提供了一种简洁而用户友好的界面,让他们可以毫不费力地创作出复杂的动画效果[15]。它还可以用来制作各种不同风格的贴图和其他特效。在Unity社区里,DOTween插件因其多样的功能和出色的性能而广受好评。本文主要介绍如何使用该组件来制作动画。DOTween的API设计风格既直观又简洁,这使得开发人员可以迅速掌握并制作动画。通过将不同类型的对象进行组装来达到一个统一的框架。你不需要编写繁琐的代码,仅通过几行简单的调用就可以实现复杂的动画效果。DOTween在性能提升方面表现出色,它采用了一种高效率的补间算法,这不仅确保了动画的平滑性,同时也降低了资源的消耗。DOTween能够兼容多种动画风格[16],这包括但不限于位置、旋转、缩放、色彩以及透明度等方面。其独特的动态调度机制使得不同类型的动画文件都能够被正确执行,从而使用户体验达到最佳水平。此外,它还配备了如回调、循环、延迟和时间缩放等高级特性,以适应各种复杂的动画制作需求。它不仅具有良好的兼容性,而且拥有丰富的交互方式。你可以利用DOTween插件来方便地操控动画的播放、暂停、恢复以及停止等各种功能。此外,它具有多种编辑方式,用户可根据需要选择使用不同的方式进行制作[17]。此外,它还具备在运行过程中动态调整动画参数的功能,从而达到更为灵敏的动画控制效果。
图2-2DOTween插件
2.3 C#语言
C#编程语言是微软公司研发的一种现代化、面向对象的编程语言。其功能强大,使用灵活方便,已成为目前最流行的编程工具之一。该系统融合了C++的高级功能与Visual Basic的用户友好性,并特别为.NET框架进行了设计[18]。其功能强大且易于实现,已成为目前流行的程序设计语言之一。C#作为.NET平台的核心编程语言之一,在Windows桌面应用、Web应用、游戏开发、移动应用开发以及跨平台解决方案等多个应用场景中有着广泛的使用。C#脚本语言指的是在Unity游戏引擎中使用的C#代码片段,这些代码片段通常用于控制游戏逻辑、创建用户界面、管理游戏资源等。在Unity环境下,你有能力通过编写C#脚本来定义游戏对象的各种行为,并与其他游戏组件进行互动。如果你需要修改游戏元素的话,那么就需要将它添加到系统调用表中。C#作为一种高度依赖类型的语言,在定义变量的过程中必须明确其类型,这样做有助于降低运行过程中的错误发生。同时它也提供丰富的函数接口和强大的编程能力。C#采用了垃圾回收技术来自动管理其内存,从而降低了内存泄露和内存管理的难度。同时也避免了代码被恶意修改和移植到其它系统。利用Unity和.NET Core等先进技术,C#能够支持跨平台的开发,确保游戏或应用可以在多种操作系统中顺利运行[19]。此外,还能将代码复用到其它系统中。C#配备了众多的库和框架,例如.NET框架和Unity引擎API,这些库和框架为开发提供了丰富的功能和工具,有助于简化开发过程[20]。
图2-3C#语言
3需求分析
3.1系统架构分析
游戏的架构设计是任何游戏开发项目的核心要素,只有具备出色的架构设计,才能确保游戏内的主要功能模块能够独立运行,同时又不会妨碍模块间的相互引用。因此本文对游戏框架进行分析研究和优化改进,从而使其能够满足更多不同类型游戏开发的要求。这款游戏是基于Unity3D游戏引擎进行开发的,这款引擎在硬件API上已经构建了一个合适的框架,因此玩家无需深入思考游戏的底层硬件配置。游戏框架的好坏直接决定着游戏是否能正常运行以及游戏效果的优劣。对于游戏开发者来说,他们需要思考如何在Unity3D的现有架构上,根据他们开发的游戏的特定需求,构建一个适合这款游戏的高质量游戏框架。
在Unity3D开发的游戏世界里,GameObject被视为所有物体的基础组成部分。GAttribute和Components是GameObject的核心元素,通过调整这两个元素,我们可以创造出不同的GameObject,并据此构建各种游戏物体[21]。本文将以游戏角色为例介绍游戏场景的构建方法以及如何利用其创建具有交互特性的游戏物体。与GameObject有许多相似之处,当游戏处于Scene场景时,它是一个游戏的基础组成部分,而一个游戏的运行机制则是在不同的Scene环境中进行的转化。因此游戏场景划分对整个游戏系统来说至关重要,它决定了游戏的成败与否。游戏中的物体是依赖于Scene来存在的,只有当游戏跳转到当前的场景时,相应的游戏物体才能被游戏中的玩家接触并产生互动。因此游戏场景划分对整个游戏有着至关重要的影响,它直接关系着游戏画面的流畅度、真实感以及可玩性。因此,一个游戏的开发质量与游戏场景的合理划分有着紧密的联系。
图3.1 系统架构图
3.2功能模块分析
3.2.1战斗模块
关于战斗模块的需求:当玩家进入战斗副本,副本场景会被加载。玩家可以使用摇杆来控制角色的位置,并在小地图系统中查看角色在场景中的具体位置,同时还可以查阅角色的经验值、体力值、宝石数和金币数。根据当前的剧情选择合适的人物进行战斗。我们构建了一个结算系统,并利用动画系统来管理NPC的各种状态。
图3.2 战斗模块
3.2.2关卡模块
在手机游戏中,关卡模块代表了玩家所处的战场,也即是他们所扮演角色的具体场景。当进入游戏时,就会自动选择一个或多个关卡。一旦加载了主城的场景,玩家在关卡里可以通过点击或拖动来控制摇杆,从而移动角色在游戏中的位置。在这个移动过程中,玩家能够在小地图系统里查看角色在游戏场景中的具体位置。当游戏进入战斗时,玩家将获得相应的技能并使用到自己的身上。在游戏中,玩家有机会查看角色的经验值、体力、宝石数量以及金币数量等信息。另外还有一个关卡游戏中重要的组成部分——关卡设置模块,它提供给玩家不同类型的关卡,让玩家根据自己所设定的模式,进入到相应等级的关卡内进行战斗。这个模块所提供的各种功能被细分为小地图展示、副本选择、摇杆机制、角色的经验与体力以及财富信息的展示等多个子模块。
图3.3 关卡信息
3.2.3商店模块
在商店模块中,玩家需要具备金币和钻石的功能。商店每日都会进行一次免费的刷新,屏幕上会显示一个刷新的倒计时,玩家可以选择使用特定的货币来手动刷新。在游戏开始时,将获得一张“兑换商店”的地图图,图中包括了商店所有属性信息,例如等级和店铺数量等。在兑换商店里,每一件物品每日仅允许进行一次兑换。兑换商店与商店之间存在交易信息传递关系,通过交换商品可以获得相应的奖励。兑换商店要求提供装备清单和道具清单。装备列表包括人物和武器,在游戏场景内的各个位置均有一个人物或武器。兑换商店的各个商店都有等级访问的限制,当玩家的访问等级低于指定的级别时,商店会被提示开启相应的级别。
图3.4 商店模块
3.2.4背包模块
背包模块的功能要求玩家能够对所有物品进行分类、使用、销售,并能合成技能碎片以及兑换装备碎片;道具模块需要提供各种道具,包括武器、工具、战术包、宠物等,并且每个模块都有自己独特的属性和任务要求。普通的道具会展示其图标、质量和数量,而装备类的道具还会显示其等级,碎片类的道具则需要在图标的右上角加上碎片图标。背包的左侧展示了你当前选择的装备详情,这包括装备的名称、数量、详细的道具描述和售价。根据不同的道具种类,会显示“使用”、“出售”和“合成”的按钮。如果碎片数量不足,“合成”按钮会变得灰色,显示出售需要再次确认,并且你可以长按来迅速调整出售的数量;物品模块则会将所购买到的所有物品进行分类显示。背包模块所需的包括道具清单和装备清单。
图3.5 背包模块
3.2.5技能模块
技能模块的功能包括主动查看技能信息、预览技能效果、进行技能升级和学习,以及查看技能碎片的获取方式。此外,它还支持查看、分解技能书、一键解分技能以及跳转到商店等多种功能;同时也提供了对游戏角色进行任务操作以及其他一些简单的辅助功能,如物品放置、道具更换等。在主动技能列表中,技能应被划分为“已学习”和“未学习”两个不同的类别,并分别展示。列表中的技能应展示相应的图标、名称、等级、品质和类型,并按照等级、品质和类型进行降序排列。技能分解列表中的技能是指玩家“已学习”但背包里有多余技能书的技能书,这些技能书需要显示技能名称、品质、类型和技能书的数量。要进行技能的分解,你需要进行第二次确认,并且在这个确认面板上,你可以调节分解的数量;通过分解技能书,玩家能够获得与之匹配的魔晶数量;完成分解后将所有的技能按级别分类保存到对应的文件夹。由于技能等级的差异,除了技能列表之外,还需要提供技能升级的表格。
图3.6 技能模块
4游戏的设计与实现
4.1战斗模块实现
在Unity3D开发的游戏世界里,GameObject被视为所有物体的基础组成部分。GAttribute和Components是GameObject的核心元素,通过调整这两个元素,我们可以创造出不同的GameObject,并据此构建各种游戏物体。显然,在游戏里有一种与众不同的GameObject Prefab。GameObject的核心属性是那些在游戏中反复出现且保持不变的GameObject。与传统的GameObject不同,Prefab中反复出现的Prefabs状态会随着其属性的改变而发生相应的调整。这种情况下,游戏开发者需要对这些属性进行修改以达到一定的效果。Prefabs存子的设计初衷是为了更好地管理游戏资源。
当游戏结束时,结算面板会自动弹出。如果没有达到指定级别的话,将会自动进入下一个战斗状态。如果玩家能在规定的时间里击败敌人,胜利面板将会弹出,然后根据剩余的时间来判断用户的星级已经获得了多少经验。在计算剩余时,可以从系统中获取到该人物当前所处的级别以及其拥有的其他属性。在进行星级和经验的评估时,有必要向服务器发出请求,并将剩下的时间、角色、玩家和场景的编号同步发送给服务器。服务器会基于这些剩余时间,向服务器发送相应场景下的经验值和等级信息。另外,在游戏开始前,还可以选择不同级别来对该用户进行奖励操作。该用户的经验值和财富值将会被同步调整。除了这些,还需要创新地将该用户的全部资料发送回本地,并进行再次复制,以避免外挂通过作弊手段更改等级。
图4.1 开始界面
图4.2 交谈界面
图4.3 结束界面
4.2关卡模块实现
游戏的核心部分是关卡模块,它涵盖了多种不同的场景和难度等级的关卡。在这些关卡中可以进行多种动作操作。每一个游戏关卡都配备了独特的地形设计、敌人的分布和道具的位置,玩家需要巧妙地利用这些地形和道具来避开敌人或与他们进行战斗,以实现关卡的目标。在每一通关环节中,会根据自己的选择进行相应的行动策略来获得胜利。通过使用Unity3D的场景编辑工具,你可以创建多种风格迥异的关卡场景,如森林、沙漠和城堡等。这些场景均为动态可播放图像,能够满足多种需求。每一个场景都拥有其特有的地貌、建筑结构和装饰元素,为人们带来了丰富多彩的视觉感受。采用基于纹理贴图技术,模拟了复杂环境下人物与背景之间的互动。为了确保角色与物体之间的物理互动,需要在场景中配置适当的碰撞元素。游戏采用了基于生物特征识别技术,对敌方进行检测与定位。利用Unity的AI技术,例如NavMesh Agent,为敌方实施巡逻、追踪和进攻等多种策略。这些行为可以被执行并与之进行互动。同时,可以通过调节敌人的各种属性(例如生命值、攻击力、移动速度等)和数量。使其成为游戏内一个重要的战斗元素。设定关卡的任务是击败特定数量的敌军或抵达特定的位置。这些活动可以让玩家在游戏中不断地探索新的领域和发现新的规律。利用Unity的事件处理系统和触发机制来完成。在游戏中,你可以选择自己所拥有的装备以及角色,也可以进行各种操作以达到目的。玩家在完成指定的任务后,将会获得相应的奖