赵紫儒(青岛工学院,山东 青岛 266300)
随着互联网技术的迅速兴起和发展,人们生活质量在不断的提高,人们对生活品质也在不断增加。当前计算机电脑的普及,玩电脑游戏已经成为人们娱乐的主要方式之一[4]。选择一款独特的、吸引人的、画面精美的游戏已成为一种主流。尽管目前市场上存在各种游戏,但塔防游戏市场仍然相当大。 因为它的特殊之处在于人们在游戏过程中沉浸其中,而且难度越大,挑战性越强,越刺激。而且对于工作的人来说,也不可能花费大量时间用在游戏上,他们会在休闲时间,来享受这短暂的快乐,所以像这款保卫萝卜塔防游戏就刚好迎合了他们的需求。
Unity是近些年来十分热门的游戏专业开发引擎之一,包含各种开发工具,可发布多平台的一个全面整合的专业游戏引擎,它可以一边运行一边调试,在运行调试过程中可以让开发者挖掘到其中的乐趣,不断迸发想法,不断学习。
一个完整的Unity程序是由若干个场景组合而成的,每个场景都由许多游戏对象组成,每个游戏对象可以有若干个组件,脚本也是组件之一,通过脚本控制场景中的物体,跳转场景等等是主要的操作手段,可以说,脚本即是大脑。
Unity简单直观的设计界面,高度的兼容性,使得游戏开发者能高效的完成工作。因此,Unity成为了目前国内大部分游戏开发者的首选工具。
(1)对象池
对象池的应用在于减少内存开销,其原理就是把可能要反复用到的对象,先存在一个“池子”里,要用的时候就调出来,不用的时候就放回去[5],比如炮塔的子弹就是用的对象池技术。
(2)自动寻路算法
自动寻路算法意思是从某点自动到另一个点的算法[3],一般用于解放玩家双手,自动寻找某个NPC等,在塔防游戏中,自动寻路一般用于怪物身上,通过在地图上设置寻路点,通过判断这些点来使怪物沿着一条固定的路径前进。
人们生活节奏越来越快,游戏已经成为人们生活中必不可少的一部分,人们通过玩游戏放松自己、消遣时间,而游戏的种类也是越出越多,通过对学生发放的100份调查问卷得出,针对“你喜欢哪款类型的游戏”这一问题中得出,47位同学选择了塔防游戏这一选项,可见塔防游戏并非沉寂,塔防游戏时间短,无论何时何地就能随时玩一把,而且代入感强,使玩家沉浸其中,紧张又刺激,随着关卡越高难度也越来越难,这一点更能带领玩家要强的本质。
保卫萝卜是一款休闲策略类塔防游戏,怪物会沿着一条道路前进,玩家通过建立炮塔攻击怪物来保卫萝卜不被怪物吃掉,不同关卡难度不同,关卡越高,难度越大[1]。玩家进入游戏后,在主菜单选择游戏模式,跳转到关卡界面,可以查看帮助和返回主界面,默认玩家只能选择第一关,后续关卡为锁定状态,玩家只有在通过第一关后才能进入第二关,当所有关卡都通关后,跳转通关界面,玩家可以选择重新开始游戏或者清档,重新开始游戏闯过的关卡可以直接进入;清档后相当于初始化,回到游戏最初状态,关卡锁定。
本设计为2D策略塔防类游戏,场景界面元素通过Unity5.6自带的插件UGUI,导入外部资源包,在场景中创建Canvas画布为基础,ITween插件辅助界面动画显示,脚本进行控制。整个游戏系统分为两大部分:游戏基础模块和游戏逻辑管理模块,游戏基础模块又分为资源管理模块,数据存储模块和页面UI管理模块,资源管理模块中包含着游戏的全部资源,包括动画、特效、2D图形,关卡配置文件等。游戏逻辑管理模块包含着游戏最重要的逻辑模块。
4.1.1 游戏框架设计
Unity中的每个场景都以树状层次结构组织游戏对象,每个游戏对象可以有多个组件。 因此,整个游戏系统都要符合这种规范,在这种规范下为了满足设计的高内聚、低耦合,采用MVC模型来设计游戏的层次结构 ,使得游戏结构变得清晰简单有条理,之间互不影响、互相隔离开来,方便日后的功能扩展。
4.2.1 地图编辑器
地图是游戏中重要的一部分,在本游戏中更是如此,通过MapEditor类和Map类实现在编辑器内对地图关卡的加载关卡、读取关卡XML数据、清除塔位、消除路径、保存关卡数据等操作,创建Map类来保存地图相关属性,通过OnDrawGizmos方法计算地图的大小,通过对地图的计算绘制行列,将地图分割成等大小的格子。创建地图寻路点和怪物的寻路路径,通过鼠标左键点击格子可以添加塔位,鼠标右键点击删除塔位,设置寻路路径。
4.2.2 读取、保存关卡
在塔防游戏里,关卡是游戏的核心,关卡中地图的数据就显得尤为重要。通过加载关卡文件,显示出关卡,关卡文件中包含关卡名称、怪物行走路径点、可放置的塔的位置以及出怪的数量信息等、在编译器里可以对地图进行编辑,修改路径,炮塔塔位的数量,位置信息等,修改完毕后我们可以将修改的数据保存到地图中。
4.2.3 游戏对象
本游戏有三大游戏对象,萝卜,子弹和炮台,对各个游戏对象创建相对应的脚本来实现游戏对象的属性,萝卜怪物的相关信息,炮塔的创建、升级、攻击、销毁,子弹的跟踪等等。在游戏界面,主角萝卜是处于一个动态的存在,萝卜在正常状态会眨眼睛,处于正常状态,在被怪物攻击了之后会全身抖一下,进入被攻击状态,Role类中保存了萝卜和怪物血量信息和死亡条件。炮塔有两个状态,一个是没有怪物在范围内时,炮塔会处于正常静止状态,当有怪物进入攻击范围时,炮塔会跳转到攻击状态,自动搜寻敌人转向。
本文阐述了基于Unity游戏开发引擎,开发一款策略塔防类游戏-保卫萝卜。以培养学习者自主学习、单独思考、动手能力为基准,以对象池技术、自动寻路算法及动态加载等技术设计并实现基于Unity的塔防游戏保卫萝卜。该游戏运行流畅,性能稳定,不需要网络,由于Unity的跨平台性,可随时随地打开。