SLG类游戏的研究与设计

    魏菊霞 黄涛

    

    

    

    摘要:SLG类游戏(SLG:策略游戏)一直不是一个特别火爆的类型,但这种游戏类型总是精品不断,而且时不时地就会出现。该文结合“捍卫海洋”元素,运用Unity3D游戏引擎,设计了一款寓教于乐的策略类游戏。该文重点介绍了人机交互模块、敌人智能AI和游戏场景模型的创建等,旨在抛砖引玉,为策略类游戏的设计提出一种新的解决方案。

    关键词:SLG;策略;Unity3D;游戏;AI

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

    文章编号:1009-3044(2021)17-0079-03

    开放科学(资源服务)标识码(OSID):

    1 研究背景与意义

    随着世界电子游戏市场需求的极速提升,现有不胜枚举的电子游戏开发引擎腾空出世,由旧时年代的Wolfenstein3D、Doom到现时的Unity3D、Unreal,电子游戏开发引擎的急速迭代使游戏开发者及研究人员的开发设计便利性与专业性也在逐步增加。相较于过去还需OpenGL、Flash及Photoshop等多方位制作软件相结合的复杂开发方式来说,如今的商业化引擎如Unity3D将原本多方位的组件功能相结合,让电子游戏开发者得以专注于所开发的游戏自身[1]。并且在Unity3D游戏开发引擎中独有的Asset Store——开发者商城拥有大量的游戏制作辅助插件,这让原本复杂烦琐的电子游戏开发制作变得简单快捷并且更具有专业性。

    国内外的电子游戏开发领域对策略类游戏相关的研究基本可分为如下三个大方向:第一人称3D能力型、上帝视角2.5D以及2D普通型。第一人称3D是现代电子游戏的主流形式,以超强的代入感吸引游戏玩家,拥有较高的战斗美学,但盡管代入感十足,三维眩晕及方向无法准确判定的劣势也因此无从解决。而上帝视角2.5D以及2D普通型游戏都太过于中庸,虽不会让游戏玩家产生三维眩晕的坏象,但缺乏真实代入感、爽快感,使它们得不到大多数游戏爱好者的青睐[2]。本文结合当今所有大方向趋势,取其精华去其糟粕,力求建立一个新型的游戏模式。

    2 SLG类游戏的需求分析和总体结构设计

    2.1 需求分析

    SLG类游戏的(Simulation Game:简称SLG,策略类游戏)核心是策略,这项功能需要玩家运用一定的策略与电脑或其他玩家进行较量或共同合作以达到某一目标,大大地增添了游戏的可玩性,其形式越多样,游戏的可玩性也就越高,玩家的游戏体验感也就相应会得到提升,这便是需要在游戏中玩家的能力以及游戏通关的方式需要尽量做到多样化,且敌人的智能AI模式也需要做到搜寻准确又难度适中,这样才能达到游戏所预期的效果。

    在游戏中,如果长时间游玩,则会增加玩家对游戏形式产生厌恶感,可适当性地加入一些解密交互元素,提升游戏的多样性、可玩性。同时,解密交互与游戏策略相辅相成的路线也会让广大玩家在解决了一项事件之后,得到一定的自豪感及愉悦感。

    本文探讨研发的游戏包含如下特点。

    1)人机交互:玩家可通过鼠标、键盘等外部输入设备对游戏内的UI、主角及事件等发生交互,创造本游戏的可玩性,并且需要其交互方式简单方便,交互反馈突出明显,提高玩家对游戏的游玩乐趣。

    2)能力多样化:由玩家所控制的主角所持有的能力必须多样,以此达到玩家通关游戏的方式也同时多样化的目的,这能够提升玩家对游戏的体验效果。

    3)场景标志化:场景必须做到真实、绚丽,场景内的动植物必须做到富有动感,活泼可爱。以此提高玩家的游戏体验感。

    4)玩法多元化:在游戏过程中适当加入解密交互的元素,提升游戏的多样性及可玩性。

    2.2 总体结构设计

    考虑到各式玩家与各类游戏接触的时间不尽相同,为了使玩家们都能够对本文游戏快速上手,游戏的大体结构不能太过于复杂。结合Unity3D游戏开发引擎,各个模块的实现方法分析如下。

    1)人机交互模块:开始界面、设置界面以及能力选择界面这三大界面式开发将使用Unity3D游戏开发引擎中自带的UGUI设计模块与C#脚本编辑模块联合进行研发。使用C#脚本编辑模块监听玩家的键盘输入事件,并且使用对应的UI变化来告知、提醒玩家自己所输入的键盘事件将对游戏产生怎样的变化,以此来选择对应游戏界面。而在游戏交互与交互反馈方面,将使用C#脚本编辑模块监听玩家的键盘、鼠标等外置输入设备的输入,然后在游戏画面中给予相对应的Aminator动画反馈、Transform变化反馈及isActive、isEnabled的更替反馈等。

    2)游戏场景模块:在场景搭建过程中,运用Unity3D电子游戏开发引擎Plane平面组件加上特殊的Shader着色器以及对应的材质球,使创建的Plane平面组件产生波躁、滚动等海面独有效果以制成。而在海洋内部场景中,将为作品Camera编写、添加一个独特的海底Shader着色器,增加海底雾、动态模糊、水波躁动等一系列Camera视觉效果,使其变得真实而又不失相应的美感。

    3)敌人AI模块:关于对敌人智能巡逻模块的制作,将使用Tag标记检测触发的做法来监测事件是否发生,在事件发生后将改变敌人AI的转向及其移动速度,以此来完成智能巡逻的效果。而在自动搜索模块方面,将使用锥型射线来效仿敌人的眼球视角,当射线直接触碰到玩家所操纵的主角时,将根据双方之间的距离来计算判定敌人发现主角的概率,当概率为100%时视为发现,敌人将会进行瞄准攻击。而瞄准攻击这一块将先采用LookAt()函数方法进行瞄准,后使用Instantiate()方法来生成武器进行攻击。最后在销毁方面则是先将其用于显示敌人形状样貌的MeshRenderer组件取消使用,再使用Instantiate()方法生成爆炸效果,最后使用Destroy()方法来将其销毁。

    3 游戏设计与实现

    3.1 人机交互

    本游戏交互形式与一般SLG游戏的交互形式大同小异,以键盘、鼠标为输入装置来对游戏事件进行触发及改变[3]。而与一般SLG游戏有差异的一点,便是本游戏的游戏场景大多处于海底,与陆地相比较,主角在海洋之中的移动自由度会相应高出许多,所以传统电子游戏WSAD控制前后左右的移动方式必然将不适合本游戏。为了解决此项问题,本文研讨出一种专门用于海底策略游戏的操纵方式来适配本游戏。以下为本游戏的按键方式。

    主角交互的具体实现如下:

    1)主角的旋转:首先,考虑到逻辑性的缘故,我们需要设置两个布尔值判断主角的状态,第一个布尔值为isMove,用于判断主角是否正在移动;第二个布尔值为CanMove,用于判断主角是否能够移动。使用if语句进行判断,当isMove字段与CanMove字段都为true时,主角即可旋转。使用if语句以及Input.GetKey()函数方法检测玩家是否按下了键盘上所对应的按键,当确定玩家在满足了所有条件的状态下按下了旋转的按键时,将调用transform.Rotate()函数方法对主角进行相应轴方向的旋转,以此来达到旋转的目的。

    2)主角的移动:主角的移动也需要一个布尔值CanMove来判断其是否能够移动,并且还需定义一个名为Speed的浮点型字段并将其初始值设置为0f,用于控制主角移动的速度。在Update中使用if语句加CanMove字段判断主角是否可以移动,当CanMove字段为true时,调用transform.Translate()结合时间差值与速度的乘积——Time.deltaTime * Speed来达成主角移动的效果,由此可得,主角移动的速度将由Speed的大小控制,这时我们便可以结合if语句来改变Speed的大小实现惯性、缓动以及摩擦力的效果。用这种方法实现的主角移动既有较高的可控性,不受外力的影响,又能实现惯性、缓动以及摩擦力,为主角的移动增添了较为真实的物理效果。

    3)主角能力使用、选择:在此之前,需先建立一个布尔值isGot来判断主角是否已经获得了该能力,再使用if语句配合isGot以及Input.GetMouseButton(2)来判断主角是否打开了能力选择界面,如果符合事件触发条件,则使用SetActive()函数方法打开能力选择的GUI,再通过修改Time.timeScale的参数值来对本游戏的FixedUpdate的运行时间做修改,以此达到暂停游戏的操作,并且由于字段Time.timeScale只是对FixedUpdate的运行时间做出修改,而不对Update进行任何操作,固然Update中不受Time.deltaTime控制的方法也同样不受影响,所以方案依旧可行,若GUI动画也希望不受其影响的话,只需将其Animator的UpdateMode属性设置为UnscaledTime即可。

    交互的伪代码如下:

    3.2 游戏场景

    根据需求分析,本文场景中的建模模型类型将以Low Poly低面建模风格为主基调进行制作。但由于国内Low Poly风格试建模尚未普及,这导致其素材非常难以在网络中寻找到,必要时需要自行制作,Low Poly风格模型的制作方案有许多,这里选择了一种简单方便的做法——减面法。

    减面法:先将一个普通模型转换为可编辑多边形,将其平滑属性去除后即可使用减面变形器对其进行减面操作,最终变成Low Poly低面模型。

    使用Low Poly低面建模风格能够及其有效地减少模型与材质球对游戏性能的影响,同时也能保证画面的美观性,一举两得[4]。

    动植物动态效果将舍弃平常的骨骼动画制作方式,选用另外一种全新的方式——着色器静态网格位置修正来进行研发。要完成鱼儿游动的循环动画,就需要用到鱼类的材质中的顶点动画来制成,使用顶点动画能够让鱼儿做出左右摇摆、偏航旋转以及沿着脊椎水平旋转等效果,将这些顶点动画效果进行合成,既能得到一只不需要用到骨骼动画就能够灵活游动的小鱼了。场景效果如图1。

    3.3 敌人AI

    本文的游戏类型为“策略”,所以固然有巡逻的对象存在于游戏场景中,而这些对象在游戏中则被称之为敌人,面对这种非人为操作、控制但带有一定智能性的物体,必须为其研发一套完整的AI逻辑才能满足其在本作中的功能需求[5],如图2为控制敌人AI的智能巡逻框架图。

    一款策略类的游戏,敌人AI除了会巡逻寻路之外,自动搜寻猎物也是一必不可少的功能要素,而自动搜寻,在Unity3D游戏开发引擎之中运用的较多的是射线Ray系统了,在敌人的眼睛前方布置一条指向前方并且长度为搜寻长度的射线,由此来实现自动搜寻的效果。本游戏采用就是射线旋转移动的方式增加了敌人的搜寻范围,即:使用多射线铺成一个大小自定的平面锥型,并且使其能够上下进行旋转移动,形成一个伪锥型。此方式能极好地解决多射线形式的性能消耗过大的问题,并且搜寻范围也有得到相应的保证。

    4 总结与展望

    游戏设计了一套全新的交互按键方式,以及多种明确、美观的交互反馈形式。通过对硬件输入的检测,在荧屏上输出相对应的交互反馈,提高了游戏的整体可玩性。游戏场景中,海洋平面则使用了UV平移制作了海洋波浪运动效果,同时也使用了摄像机Bloom辉光特效为海面添加了晶莹剔透的闪光。敌人的重要AI部分提出了一种不需借助Navigation自动寻路控件即可智能巡逻的检测触发器方法,使用了多射线旋转移动的方法模拟锥型射线的制作。

    策略游戏不仅满足了玩家、功能以及性能上的重要需求,且符合游戏在游玩时所给予玩家的流畅体验,策略与护卫海洋相结合,寓教于乐,游戏方式更容易让人接受。

    参考文献:

    [1] 刘桂元,曾志远,杨书新.基于Unity3d引擎的教育类游戏设计与实现[J].软件导刊,2017(1):50-53.

    [2] 郗锐.浅谈电子游戏运营模式与机制设计[J].电脑知识与技术,2017(3):220-221.

    [3] 刘小慧,马驯.现代电子游戏中的角色动作设计与研究[J].大众标准化,2021(1):131-132.

    [4] 晉铮,章立.游戏设计中的极简主义风格研究[J].包装工程,2016(14):161-164.

    [5] 沈宇,韩金朋,李灵犀,等.游戏智能中的AI——从多角色博弈到平行博弈[J].智能科学与技术学报,2020,2(3):205-213.

    【通联编辑:谢媛媛】