李竟
关键词:unity3D;塔防;手机游戏;设计制作
国产游戏的发展可谓是突飞猛进,特别是手机游戏种类越来越多。市场调研报告显示,估计在2023年,全球的手机玩家数量可突破30亿,中国游戏市场发展前景广阔。塔防游戏属于较为典型的休闲游戏,受到诸多玩家的喜爱,其在设计过程Unity3D的应用必不可少,依托此技术能够为塔防游戏的设计提供方向,优化设计思路,增强玩家的游戏体验,推动3D手机游戏领域的快速发展。
1概述
Unity3D属于游戏开发综合类型工具,能够为玩家打造轻松的游戏场景,通过三维视频,建立实时动画,搭建可视化平台。Unity3D中包含编辑器、地形编辑、脚本、版本控制以及跨平台发布多重功能,能够形成物理引擎( PsysX).可以拒绝多个脚本语言运行,其中还内置Shader效果,便于开发者应用,游戏开发以后能够向Android和iOS等手机平台上发布,还可向PC端发布,或者利用Unity插件来发布网游。Unity3D和其他类型的游戏引擎存在显著差异,即设计者更为关注游戏体验感和可玩性,并非只追求设计简单[1]。塔防游戏属于益智类游戏,通过作战地图,使怪兽按照设定路线进行移动,而玩家则可根据设定位置创建炮塔,用特殊技能对敌人发起攻击,最终获得胜利。手机平台中的《保卫萝卜》《植物大战僵尸》都属于塔防游戏。当前,移动设备的运行性能日益提升,手机游戏也具备3D视觉体验功能,为塔防游戏的开发提供了良好的环境。
2设计与制作策略
2.1《保卫羊村》制作与设计
2.1.1游戏设计内容
《保卫羊村》等塔防游戏就是利用Unity3D技术完成设计的。其设计思路是将人物角色划分为“羊村武士”“灰太狼敌人”,二者分别作为防守方和进攻方。敌人根据地图设计向左方移动,逐渐靠近羊村,并对基地发起攻击,而攻守一方根据防守需求,完成武士角色的动态设置,创建角色展开防守,当武士能够成功消灭一个敌人时,就可以获得对应金币,而金币可以应用在防守投入中。若敌方进入羊村大门,则代表防守方失败。
根据Unity3D塔防游戏的设计流程,要先创建模型和工程,之后建构场景,完成程序的编写,通过测试以后相关功能才可实现。在建模阶段,主要利用3DsMax软件对游戏模型进行设计和制作。在本游戏设计中,进攻方、防守防的角色和各类武器、道具等都将被导出为FXB类型格式文件,之后使用PS软件完成贴图设计,最终导出PNG格式信息。重新建立Unity工程,并将其命名为“Sheep War”,之后创建文件Asserts,并将模型资源(包括PNC和FXB等)导人其中,随后依次创建Material,Model,Prefab,Scenes,Scripts,对于以上文件采取分类管理措施。之后,设置不同游戏场景、划分关卡,通过游戏管理器内部脚本辅助链接与管理[2]。
在游戏设计环节,需要依托核心技术完成脚本程序的编写和地形建构,之后进行调试,调试通过以后发布作品,进入发布页面,选择游戏场景,默认加载项,之后在平台内选择对应的运行平台属性,即可发布。此时,用户可将游戏下载到手机等设备进行试玩和测试。
2.1.2游戏设计技术
《保卫羊村》属于塔防游戏,其设计阶段的关键技术应用如下。
第一,创建地形。从菜单中选择”Create terrian”,以平面地形的创建作为对象,借助编辑工具完成地形绘制,并且美化。地形编辑器拥有多种功能,借助“拉高降低”功能可建构山壑:依托“平滑工具”,能够将地形的棱角去除:选择“贴图工具”还可自定义地形贴图,设置绿色和黄色等颜色,或者种植各类植物:利用“细节工具”完成花草植被等细节元素的设置。在场景中,默认主摄像机,并选择对象,将其属性设定为Projection,垂直观察,对于观察位置进行调整,保证预览窗口可以清晰观察游戏运行镜头。点击编辑菜单,在其属性界面中设置Sky box Material,并将其命名为“Sunny one sky books”,此时设置场景即可出现“蓝天白云”,营造游戏背景[3]。
第二,矩阵地图的应用。需要在游戏的平面对象设置长宽值,并通过指定的脚本文件,在其中将二维数组定义出来,经过初始化生成地图单元序列,使其初始化成地图的平面矩阵。
第三,游戏管理器。通过创建空中游戏体,将其视为游戏管理器,将新建脚本的组件制定,完成Audio组件的配置,管理器可以设定为静态实例,并且具有唯一性,这能够保证游戏运行阶段只存在一个静态实例,对于游戏核心逻辑加以控制,具体涵盖玩家得分、游戏对象、游戏状态、界面数据、切换关卡、背景音乐等内容。
第四,敌人生成器。通过新建游戏对象,在脚本文件之内,根据不同关卡的预设时间、位置动态等,经过克隆来生存进攻方对象模型,也称Prefabs,不同生成对象都可以根据运动行为移动,对防守单位进行攻击。通过XML数据设计对生成策略进行预定义,进而模拟预设行为,对程序的读取文件进行定义,根据等待时间、指定线路等编号来生成进攻对象。
第五,碰撞检测。利用该技术辅助3D游戏设计,经过碰撞检测,如果其运行效果良好,则角色处于特定场景中可平滑移动。如果出现击打碰撞或者被武器击中等场景,则会导致物体受损。常规条件下塔防游戏设计都是以第三人称视角出发,在Unity3D模型内部设置组件,通过碰撞器完成触发刚体、侦测内容之间的碰撞。如果碰撞事件能够将事件函数触发,此时可以将“Is trigger”选项勾选,并将逻辑代码添加在触发函数中,从而检验物体在碰撞以后的行为效果。
第六,音效设置。Unity3D模型的游戏场景音频拥有两种形式,即音乐和音效。游戏音乐可以作为背景音乐长期循环播放,所以设计阶段可选择MP3格式,这种设计方式不占用过多游戏的运行内存。而音效设计主要是突出游戏效果,如设计短暂爆炸声音,可以选择Wav等格式。具体设计流程是:勾选管理器对象,完成音源对象的创建,包括audio,component,audio source等,将audio属性设为背景音乐,将其和bkmp3音乐关联,借助update方法對背景音乐播放与否加以判断。脚本内部使用“Play”将音乐全部播放。设计武器的时候,应该和创建音效对象关联,当游戏过程出现碰撞时,可使用“Play one shot”,代表音效被播放一次[4]。
第七,游戏数据存储。Unity3D能够为两种游戏提供差异化的数据存储方式,相对便捷的设计方式就是直接保存,本地完成存储和读取,主要是利用“Player Prefs”来完成,其运行原理是通过“键值”保存数据,并将其存储在文件内。运行过程类似于为每个数据命名,在其存储于本地文档之内以后,通过名字将存储数据取出。若游戏涉及大量的数据运算,则需要利用Filelnfo方式完成复杂文件的读写操作。
2.2塔防游戏制作与设计实例
2.2.1游戏内容分析
本研究借鉴塔防游戏的设计思路,开发出适合手机移动端运行的塔防游戏,游戏本身的节奏快,适应玩家灵活应用闲暇时间体验游戏乐趣。在设计过程中,应用Unity3D引擎,在原有3D塔防游戏基础之上,增设摄像机移动功能,让游戏画质更为清晰。游戏规则为:地图一侧能够以点生点的方式生成敌人,之后敌人按照既定的路线跑到地图另一侧,在敌人行走路线中,两侧玩家可以使用金币完成炮台建构,以此攻击敌人,阻止其向终点移动。值得注意的是,若炮台位置设定不合理,或者炮台本身威力不够,则敌人就会顺利到达终点,此时玩家大本营被攻陷,游戏结束。
2.2.2游戏设计流程
在设计过程中,游戏功能模块主要表现在敌人功能、防御塔功能、UI界面上,玩家需要先注册账号,之后登录游戏界面,完成信息设置,主要包括游戏难度等级、背景音乐的音量等,以上设置结束以后,即可进入游戏界面。在左上角能够显示玩家持有金币数量,右侧设计三种炮弹的UI,当玩家点击对应按钮的时候,即可完成炮台建造。炮台建造完成以后,3s时间内第1波敌人出现,按照设定路线移动。玩家利用系统给的初始资金可以抵御敌人的第1波攻势,之后获得金币,新建造炮台。在游戏运行阶段,玩家通过暂停按钮进入暂停界面,该界面有“重新开始”“继续游戏”“退出游戏”等按钮,待敌人全部死亡之后,即可进入下一关卡。如若大本营被攻破,玩家血量为0,则游戏结束,弹出游戏界面。针对Game manager,选择单列设计模式,便于控制游戏,还能节约系统资源。利用MVC设计,完成敌人、炮台等设计,将二者的数据模块、功能模块分离,既可降低程序设计难度,还能将其维护性提高。游戏中的“类”主要有Game manager,负责场景加载、UI控制等整体控制功能:Bullet功能为追踪子弹、减少敌人血量;Turret功能为发射子弹;Enemy功能为移动敌人、受伤死亡等[5]。
2.2.3游戏实现流程
Unity3D技术的应用和实现流程如下。
第一,Prefab也称“预设体”,属于Unity核心概念,可将游戏对象存储于Prefab中,对象包含其组件下方所有游戏对象,借助Hierarchy示图能够实现复制粘贴预设体。在游戏开发阶段,敌人、炮台均利用Prefab进行设计,可以减少设计工作量。具体而言,在Unity中导人炮台模型,后台运行脚本可通过Turret编写,并将其向目标上加载,通过测试以后,将后台预设体对象拖人Project示图中。
第二,核心控件Ugui。应用Ugui panel之后,板面控件能够作为容器,允许其他UI控件在其中编辑,通过text文本组件,将玩家消灭敌人获得金币或者建造炮台消耗金币实时显示,设置Button,Image组件建造炮台,转变图片格式,通过填充呈现在界面上。建造不同炮台时,可以将按钮置于相同Toggle中,以确保UI数据传人的准确性,玩家只能建造一种炮台,以避免非必要错误。
第三,AI设计。敌人程序有两类,即Enemy和Create Enemy,实现敌人创建,并在地图中完成路点设定,生成前进路线,通过transform方法,让敌人根据向量移动。炮台设计需要实现点击处即可建造,在Unity中设置physics,炮台能够锁定首个敌人的攻击范围,所以程序设计需要添加trigger,将防御塔攻击范围明确,代码中也需要添加One trigger Enter,敌人进入攻击范围之内,炮台即可获取攻击对象,按照设计路线攻击敌人。至于炮弹追踪的算法应用,先假设炮弹和敌人的位置,获得两条向量,借助线性代数的向量减法,分析敌人所在位置,将该向量单位化处理,得到单位向量,游戏中的每一帧都采取该算法进行计算,随着敌人移动,逐渐更新向量,保证炮弹能够按照对应方向移动。
3结束语
在塔防游戏设计阶段,设计者需要将玩家感受考虑其中,以保证游戏玩法多样化,让玩家即使处于相同的游戏环境中,也能够获得差异化的游戲体验。通过对Unity3D技术的广泛应用,可以开发出具备良好交互性的手机游戏,为玩家带来更为优越的游戏体验感,提高Unity3D技术的应用价值。