基于Unity的《占地为营》游戏的设计和实现

2019-03-04 11:05彭伟国皇富强
电脑知识与技术 2019年34期

彭伟国 皇富强

摘要:近几年来,FPS游戏逐年增多,提供给玩家多种不同的射击体验,作为颇受欢迎的射击游戏可以帮助用户释放生活压力,体验射击与打击的快感,娱乐身心。当游戏取得胜利时会带来强烈的满足感,增强自信心。适度地玩游戏,还可以活跃人的思维,锻炼智力。

关键词:Unity;FPS游戏;UGUl

中图分类号:TP37 文献标识码:A

文章编号:1009-3044(2019)34-0196-03

1 背景

现代社会,伴随着工作、生活节奏越来越快,现代人所面临的心理压力也越来越大。由于人们越来越注重业余生活的质量,所以选择一款可玩性高的游戏已经成为一种流行的方式,目前手机游戏热潮席卷全球,FPS游戏更是受到大多玩家的热捧。

《占地为营》游戏是一款FPS类型的游戏,玩家进入游戏时被赋予一种特殊的使命“为了保卫自己家园与侵略者进行一场正义的斗争”。在游戏过程中,玩家进入游戏大厅后,阅读完游戏帮助后即可进行角色匹配,寻找相同匹配模式的游戏房间,从而进入战斗场景,体验射击和团队协作的乐趣。

2 游戏策划

游戏策划就是游戏的设计者对游戏背景和功能界面的设计,主要工作内容包括游戏类型设定、游戏名称命名、游戏故事背景选择、游戏风格确定,游戏所需功能的设计等[1]。

《占地为营》游戏是一款FPS动作角色扮演类游戏,保卫者军团以维护和平的名义守卫国家,防止敌人占领自己的地盘,游戏目标用户是所有以上青年用户,用写实的游戏场景使玩家沉浸其中。

2.1 游戏规则

玩家进入游戏首先进行登录场景,登录成功后玩家进入游戏大厅可以在游戏大厅进行设置音量大小和鼠标灵敏度,并且可以选择匹配模式,分别为单人模式、双人模式、三人模式等。点击匹配后玩家选择房间,等待场景加载完毕后,所有玩家进入游戏主场景。玩家会在自己阵地出生,使用键盘按键WASD进行移动。点击鼠标左键进行射击敌人,点击右键开镜瞄准。点击左上角箭头可以在输入框中输入想要发送的消息,发送出去后会在每个玩家的屏幕右方显示。玩家可以通过小地图可以观察到自己当前处的位置,自己阵营以及对方阵营状况。玩家在战斗过程中通过入侵对方阵地,并在阵地上方停留一定时长就可以占领对方阵地。如果玩家完全占领对方阵地或被对方占领阵地即进入游戏结束画面。

2.2 游戏功能需求

根据《占地为营》游戏设计的故事背景以及玩法制定,该游戏的主要功能包括:登录注册、武器管理、角色组队、角色对话、角色对战、游戏帮助、游戏设置、小地图。

2.3 游戏数值策划

游戏的数值策划对于一款游戏来说非常的关键,众所周知游戏内容是通过数值来表现的,数值渗透在游戏中的各个环节。在每一步的执行都离不开数值的设计,但并不是数值决定游戏,而是游戏决定数值。因此一个好的数值设计在游戏开发过程中更多的是辅助和完善,当然我们也有一定的决策权,但是这些决策权只能停留在策划层面。

游戏玩家的复活时间会影响整个游戏的流程,如果时间设置过长会导致游戏过早结束影响玩家的体验性,设置时间过短会造成导致双方都方无法占领阵地,进入无限循环无法结束游戏的局面。于是参考如今比较成熟的《工者荣耀》的复活时间机制在1-20分钟内保持一定的复活时间20s,第20分钟后每隔一分钟复活时长增加Is。加到60s以后不再增加。具体数值公式如图1所示。

3 游戏美工设计

数据显示一款游戏美工方面设计是否成功,将直接影响其日后的发展。玩家对游戏的第一印象,就是从美T而来的,如果这环节做好做到位就很有可能在市场上快速打开局面。

3.1 游戏角色设计

游戏的角色是根据电影《特种部队》中的美国大兵原型,结合游戏的故事背景和风格进行设计的。由于本游戏风格是现代写实风格的,建筑风格是西方建筑风格,所以角色设计为写实类战士风格,写实类战争人物更能贴切游戏主题吸引玩家眼球。角色头上带有钢盔用来防护头部,手上拿有枪支用来战斗,身上还有一些简单的装备。角色的帽子以电影《特种部队》中的特种兵的钢盔为原型设计。角色在实现时,使用Ma-ya2013软件制作,主要使用NURBS曲线建模和多边形建模等方法设计角色模型,然后打开Maya绑定骨骼插件制作骨骼动画,最后进行蒙皮制作,最终效果如图2所示。

3.2 游戏UI设计

游戏界面UI主要采用Photoshop设计,搭建游戏UI界面时使用UGUI插件进行制作,包含登录注册界面、游戏大厅界面。下面以注册登录界面为例进行介绍。

在Unity引擎中创建两个UI text用来设置输入账户密码。创建两个为Sprite,为其添加图片,然后给两个按钮添加Button按钮,注册按钮命名为Register,登录按钮命名为Land,命名之后在组件内设置正常、按下、松开的三个状态。在Canvas的上添加脚本LandView把登录的名称和密码文本拖到脚本之下,用来加载名称和密码。把注册界面拖出视野,把制作好的界面设为预设,添加脚本PopupView。具体实现如图3所示。

3.3 游戏场景设计

游戏场景设计以现代化战争题材为风格进行设计。主场景中有房子,马路,油箱,车辆,树等物品,本游戏的房屋风格为现代风格,建筑的结构与色彩与现代建筑类似。使用MAYA T具建模,房子的贴图在Photoshop里进行设计后整体贴图,多次复制形成建筑群。房子的作用只为了装饰场景。游戏的场景中马路、油箱以及轮胎采用简单的现代风格。马路旁边为建筑群,主角在马路和非建筑群中进行穿梭寻找敌人。油桶和轮胎是战争中不可缺少的元素,使用这些素材可以增添战争的氛围。这种元素使玩家更能身临其境。

4 游戏功能设计与实现

本游戲采用模块化的设计思想对功能进行拆分。下面仅以武器管理功能设计与实现为例进行介绍。

该游戏有四种武器,分别为M16、Skorpion、M416、AWM四种武器。武器动画主要有开镜、射击、替换枪支动画组成。首先设计PeoplePlayerMain类,在PeoplePlayerMain下面设计Get-Gunlndex0函数,在函数中实现鼠标按下的相应事件,通过按下不同的按键获取不同的枪支名称。

具体功能如下。

1)开镜:当玩家点击鼠标右键进行瞄准射击时武器播放开镜动画。

2)射击:当玩家点击鼠标左键进行射击时武器播放射击动画。

3)替换枪支:当玩家按下数字1、2、3、4时进行切换相对应的枪支并播放替换枪支动画,如图4。

首先创建PeoplePlayerMain类把他挂载主角上面,并把所需要切换的枪支放在角色下面并设置非激活状态,在People-PlayerMain下面创建GetGunlndex0函数,在函数中实现鼠标按下的相应事件,通过按下不同的按键获取不同的枪支名称。获取到枪支名称后通过创建SwitchGun0传人所切换的名称,调用var gun =transform.Find(Gunindex)查找子物体所切换的枪支。获取到切换枪支的物体后通过transform.GetChild(l).gameOb-ject.SetActive(false)设置第一个子节点激活状态为非激活并把刚刚查找的结果gun对象设置激活状态和子节点索引为1。如果此时处于开镜状态通过this.anm.Play(”OpenMirrorBasics”)切换到非开镜状态武器管理具体核心代码如下:

5 游戏测试

游戏的功能测试属于黑盒测试,它是用来检测每一个功能是否能够正常运行,黑盒测试是从用户的角度出发,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,主要针对软件功能进行测试[2]。表l列举了网络对战功能测试信息。

6 结束语

该游戏借助Unity3D引擎自身带有的UGUI创建优美的界面效果,借助借助MAYA工具搭建游戏场景,PS工具设计界面的UI图片,使用Unitv3D引擎自身带有的编译器结合C#脚本实现代码的从而实现界面的动画以及人物与场景的交互。最终实现了游戏当中的登录注册,角色控制、小地图等功能。

参考文献:

[1]李心蕊.独立游戏的设计艺术和文化特性研究[D].齐齐哈尔:齐齐哈尔大学,2016.

[2]张海藩,软件工程导论[M].6版.北京:清华大学出版社,2016.

【通联编辑:谢媛媛】

收稿日期:2019-10-08

作者简介:彭伟国(1983-)男,河南宜阳人,講师,硕士,研究方向为数字媒体技术应用。