基于UE4的SLG植物养成手机游戏设计与实现
2018-07-23王宇李丹丹
王宇 李丹丹
摘要:本文针对有养殖需求但没有时间养殖的上班族,设计开发一款植物养成类游戏来满足他们需求,使他们可以随时体验养成类游戏乐趣,是本游戏设计开发初衷。“植物养成记”手机单机养成类游戏使用UnrealEngine4引擎,可以快速实现游戏的设计与开发,构建多平台部署。为其他有创意的游戏设计开发者快速高效的实现游戏创意提供了一种思路。
关键词:手机游戏;养成类游戏;游戏引擎UE4
中图分类号:TP317 文献标识码:A 文章编号:1005-5312(2018)18-0162-02
一、引言
快节奏的生活让上班族很难有时间养植物,但对植物的喜爱又使人们希望在空余时间养殖植物,于是植物养成游戏顺应着人们的需求而诞生。截止2017年6月,根据互联网络信息中心统计,中国手机游戏用户已超过3.8亿。
由此可见,针对上班族制作的手机游戏有着潜在的巨大市场与经济效益。本游戏是基于UnrealEngine4(以下简称UE4)软件平台,结合运用SpeedTree以及Maya软件制作的安卓端的单机植物养成类游戏。
二、核心技术简介
UnrealEngine4是一款用于三维场景构建的虚拟现实软件。其强大的渲染功能、可视化系统、全新的工作流程、深入的工具集以及完全的C++源码使得该引擎迅速成为3D游戏制作的首选软件。开发者使用游戏引擎进行游戏开发能够降低开发成本、缩短开发周期、提高游戏品质并降低风险,从而高效的实现开发者的创意。
SpeedTree的树木类建模功能和大量的模型库,为游戏提供了数百种植物品种。通过SpeedTree制作出植物的生长动画可以使玩家能够感受植株变化的乐趣。Maya主要制作场景天空盒以及盆栽等基本模型,UE4强大的可视化蓝图实现游戏所需的所有的交互功能。
三、系统设计分析
(一)游戏机制
养成游戏作为一种“造梦”的游戏类型,可玩性是由游戏机制产生的,游戏机制涵盖物理机制、内部经济、渐进机制、战术机动和社会互动。
本文主要涉及游戏的物理机制与内部经济来产生与增强游戏的可玩性。本游戏的物理机制是指玩家可对盆摘进行移动、缩小与放大等改变物体位置的操作;内部经济则由植物的健康值体现:玩家对植株进行浇水、除草等操作来积累植物的健康值,当植株的健康值达到一定数值时,植株便会成长。
(二)系统模块设计
根据上班族群体的特点,本游戏设计分5个模块:
1.游戏模块
每周登陆一次,浇水使植物保持存活状态;每天登陆,查看植物每天的变化并铲除每日出现的杂草,增加植物的健康值。
2.杂草随机生成模块
负责生成一定数量的杂草,随机排列在电子花盆中。
3.数据存储模塊
用于游戏用户登陆的数据保存,获得系统时间差,实现用户再次登入时记录前一天的数据。
4.交互模块
负责游戏界面旋转,负责洒水动画、除草动画。
5.音效模板
负责管理游戏的各种音效,如:游戏背景音效、洒水音效、除草音效等。设计模块,如图1所示。
玩家主要可进行浇水、除草操作,享受陪伴植物生长以及收获成果的过程。游戏场景为一矩形界面,屏幕中央放置着电子盆栽。操作方法为点击游戏图标进行对应播种、除草、洒水操作。
在进行游戏操作时,玩家每点击一个物体,系统都需要判断此物体是玩家所种植的植物还是为增加游戏真实性随机生成的杂草。若物体判定为植物,玩家可进行的操作便是给其浇水;若为杂草,玩家所进行的操作便是清除杂草。
(三)界面设计
游戏启动后首先呈现在玩家面前的是欢迎界面,欢迎界面最基本、也最主要的元素是游戏的标识、进入游戏以及退出游戏按钮。这些元素能让玩家明白游戏名称以及是否进行游戏,如图2所示。
游戏界面为矩形,屏幕中央放置着电子盆栽。玩家在游戏过程中有暂停的需求,暂停时可进行游戏音效管理、刷新游戏、退出游戏等动作。使用Triggers触发事件从操作界面弹到暂定界面,进行相应动作。
四、系统实现
(一)植物变化实现
在“植物养成记”游戏中,玩家登陆游戏达到一定时长时会发现植物的微小变化,直至达到设定的植物周期后,玩家便可收获植物并获得奖励。本文以SpeedTree(Trunk生长)实现了APP效果。导出10帧的生长动画,导入MAYA,再进行模型导出,将对应的模式导入UE4利用蓝图实现变化交互,制作出demo可以快速高效实现植物变化实现。
(二)交互实现
交互实现即本游戏设计界面在UE4中使用C++代码实现自动旋转花盆、获得时间差,再次登陆时会呈现植物不同与上一次登陆的成长状态。
1.自动旋转物体
函数在Tick()生成类中运行,开头需引入头文件:#include"Engine/World.h"
核心代码如下:
voidUBoxComponent::TickComponent (float DeltaTime,ELevelTickTickType,FAc torComponentTic kFunc tion*ThisTickFunction)
{
Super::TickComponent
(DeltaTime, TickType, ThisTickFunction):
2.获得登陆与退出的时间差
本游戏在UE4中创建SaveGame对象的实例或者副本存储时间差数据,玩家点击开始按钮通过SaveGameToSlot将SaveGame对象保存到磁盘驱动器中的文件里,点击退出按钮时亦是如此。玩家登入达到一定时间,植物会产生生长细微的变化。为实现这种变化可以使用了选择结构算法。
(三)随机生成实现
区域内实现随机生成一定数目的杂草功能,使用了UE4提供的蓝图可视化脚本。
除草交互设计由以下两个部分组成:
1.生成杂草
每日在游戏界面花盆区域内指定区域随机生成随机大小一定数量的杂草。通过这种随机逻辑设计,即可以实现游戏中杂草的随机排列,也为植株留下生存空间,避免在植株种植的位置生成杂草。
2.清除杂草
在界面中,选中杂草触发出现相应的操作图标,点击图标便可进行相应操作。
在蓝图中RandomStream(随机流)能重复生成随机数并应用随机数。根据函数功能的不同,输出不同类型的随机值。本文采取随机输出(Min,Max)范围内的一个浮点型。利用MakeVector容器保存随机流函数Random Float in Range from Stream所构成的平面区域信息,使得SpawnActor即本文中的杂草,能在特定区域内随机生成一定数量的杂草。
(四)操作实现
本游戏的操作主要是对植物进行洒水、对盆栽中的杂草进行清除,使用了UE4中可视化脚本系统蓝图,以实现清除杂草和洒水动作(以除草为例),需要在UMG中制作按钮控件,添加Triggers事件,通过DestroyActor节点摧毁已生成的杂草。
(五)游戏输出
游戏demo制作完成后,需对游戏进行打包,使其能够独立于软件而运行。进行测试,运行效果良好,初步达成实验目的。
五、结语
本文详细叙述“植物养成记”游戏基于UE4游戏引擎的设计思路与技术实现细节。
本游戏的逻辑设计清晰,提供玩家浇水、除草两种主要操作,让上班族在零散时间内享受闲适舒服的游戏环境,并使玩家体验到植物养成的喜悦,为实现植物养成游戏提供了高效快捷的方法,这种使用UE4设计与开发的方法,能为游戏开发者实现创意提供借鉴与参考意义。