基于Unity3D引擎的游戏设计与开发
引言
近年来随着计算机物理硬件的提升以及社会经济的进步,游戏技术也得到了空前的发展。无论是游戏引擎还是玩法,都得到了长足的进步。Unity是一款由Unity科技公司所设计的可跨平台的2D与3D游戏引擎,其支持开发Windows等电脑平台、任天堂Switch等主机平台以及 Android等移动设备的各种游戏,以及基于WebGL技术的网页平台以及TVOS等多媒体平台。塔防是指通过在地图上建造各种各样的炮塔来阻止游戏中的敌人抵达指定位置的实时战略计算机游戏,此类游戏的目标是生存若干时间或尽可能生存下去。玩家一般有生命值,生命值以敌人数量为基准,如果敌人在到达指定地点之前没有被消灭,玩家就会减少生命。随着怪物波次的增加和炮塔属性的逐渐提升,怪物的数量、属性以及各种特殊能力也会提升。
目前国内外许多专家在Unity平台研发了多种游戏,如伍传敏等人基于Unity3D完成了第一人称射击游戏的设计与开发。张典华等人基于Unity3D实现了多平台兼容的三维空战游戏。刘晋钢等人则研究了Unity3D与Kinect整合数据技术在体感游戏中的应用价值。
本文通过C++设计并实现了一款基于Unity3D引擎的TowerDefence游戏,实现了怪物AI设置,攻击检测算法的设计以及游戏特效和渲染管道等关键技术。游戏运行流畅,画面精良,操作简单,体验丰富,上线后收获大量好评。
1 游戏设计
1.1 塔防游戏设计策略
本文的塔防游戏玩法设计遵循以下原则:(1)玩家放置的障碍物可以在障碍物摧毁基地之前伤害或杀死敌方攻击者。(2)修复障碍物的能力。(3)升级障碍物的能力。(4)能够修复障碍物的升级。(5)用于购买升级和维修的某种货币(可以是时间,游戏内货币或经验值,例如通过击败攻击单位而获得的货币)。(6)能够一次穿越多条路径的敌人。(7)每波通常有固定数量和类型的敌人。(8)许多现代的塔防游戏都从实时游戏发展到回合游戏,其中存在不同的阶段,例如构建,防御,修复和庆祝。许多游戏(例如Flash Element Tower Defence)的敌人都经过“迷宫”,使玩家能够战略性地放置“塔”以获得最佳效果。但是,某些类型的游戏类型迫使用户从自己的“塔”中创建“迷宫”,例如Desktop Tower Defense。该类型的某些版本是这两种类型的混合形式,其预设路径可以通过放置塔
来进行某种程度的修改,或者可以通过放置路径来进行修改,或者可以通过放置路径来进行更改。通常,一项必不可少的策略是“惊人”,这是创建长而曲折的塔楼(或“迷宫”)以延长敌人经过防御所必须经过的距离的策略。有时可以通过在一侧设置出口然后在另一侧设置出口以使敌人来回移动直到被击败之间交替进行“杂耍”。一些游戏还允许玩家修改塔楼使用的攻击策略,以便以更诱人的合理价格进行防御。
本游戏的开发环境是基于Unity 2017.1.0f3 (64-bit)版本,使用LitJSON技术处理JSON字符串之间的转换,结合DOTween技术进行实现。
1.2 系统设计
本游戏系统设计如图1所示,主要包含五个模块:工厂管理模块、游戏管理模块、UI模块、场景管理模块、游戏逻辑模块。
工厂管理模块:用于管理各种资源工厂以及游戏物体工厂。
游戏管理模块:用于管理各种管理者。
UI模块:用于控制所有UI相关组件,包括UI面板、UI按钮、UI滑动等。
游戏逻辑模块:用于处理各种游戏逻辑如塔的攻击等。
场景管理模块:用于管理各种场景的转换、加载以及退出。
图1 系统模块图
2 关键技术实现
特效资源网2.1 对象资源池化管理
以物体工厂为例,本游戏系统的资源管控方法基于游戏物体工厂管理UI、UI面板与游戏物体的激活与失活。游戏物体工厂拥有一个工厂基类BaseFactory,实现接口IBaseFactory并在该基类中使用对象池技术,使子弹、怪物、塔在生成时不必反复创建和销毁对象,只需要从对象池中取出与放回对象便可节省系统资源。对象池流程如图2所示。
图2 对象池技术流程图
游戏物体工厂拥有一个枚举类型FactoryType,用于区分不同种类的游戏物体工厂。游戏物体工厂拥有三个工厂类GameFactory、UIFactory和UIPanelFactory继承至工厂基类,它们之间的区别是修改了在对象池获取资源时的资源路径。
2.2 怪物AI设置
怪物生成:由于怪物的种类、属性都不完全一致,因此怪物的生成采用责任链模式与建造者模式。该责任链模式有两个节点:Level与Round,其中Level控制Round。
责任链模式中由每一个对象对其下家的引用而连接起来形成一条链,请求在这个链上传递,直到链上的某一个对象决定处理此请求,发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。责任链模式设计如图3所示。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。