基于UE4 的第三人称闯关游戏的设计与实现

2021-07-16 10:07崔景鑫杨明梅吴啸宇
科学技术创新 2021年19期
关键词:关卡蓝图障碍物

崔景鑫 吴 昊 杨明梅 吴啸宇 薛 韡*

(防灾科技学院信息工程学院,河北 三河 065201)

随着计算机产业的兴起,计算机逐渐走进大众家庭,不可避免的,电子游戏也逐渐走入了我们的生活,电子游戏有利有弊,它可以培养解决问题的能力,丰富我们的精神文化生活,提高视觉空间技能和开发想象力,并且现如今电子游戏已经是年轻人社交内容中重要的一环,为青少年的社交提供了很大的便利。虽然电子游戏有使人沉迷地风险,但无论如何,电子游戏都已经在文化产业和日常生活中扮演了重要的角色,并且可以预见的是,电子游戏的前景无比广大,未来将会迅速发展,也许有一天,电子游戏真的可以成为人们的第二世界。我们的闯关游戏关卡设计主要有两种,射击关卡和跑酷关卡,射击关卡是战斗关卡,玩家操纵角色与AI 战斗,消灭AI 怪物取得胜利,跑酷关卡中玩家需要操纵角色躲避障碍在规定时间内到达终点。我们使用的主要开发工具是虚幻引擎,EPIC旗下的UE(Unreal Engine)系列引擎是目前世界上顶尖的游戏设计引擎,是整个游戏界运用范围最广,整体运用程度最高,次世代画面标准最高的一款游戏引擎,占有全球商用游戏引擎80%的市场份额。虚幻引擎是全球最开放最先进的实时3D创作平台。经过持续的改进,它已经不仅仅是一款殿堂级的游戏引擎,还能为各行各业的专业人生带去无限的创作自由和空前的掌控力。UE 系列最新作UE5 更是一公布就火爆全球, 其中两大核心技术纷纷迎来了很多行业工作者的研究与探讨,被称为“次世代引擎”。我们使用的UE4 引擎可以完美对接UE5 引擎,这为我们将来的持续开发带来便利。本文立足于当前新兴的单机联机游戏市场,以蓝图(Blueprint)编程为主体,说明游戏在PC端需要实现的逻辑。在充分展示并运用UE4 完备的功能特性的前提下,设计游戏的UI 界面、关卡规则逻辑、AI 和障碍物逻辑及角色动画播放逻辑,从而实现一个较为完整的游戏软件。

1 系统的需求分析

游戏需要实现的功能大体可分为两大部分,数据逻辑层和表现层。数据逻辑层是游戏的基础部分,包括关卡逻辑、玩家控制逻辑、AI 和障碍物逻辑、UI 交互逻辑等。数据逻辑层需要通过蓝图逐个实现功能模块,再通过模块之间的调用、蓝图之间的通信从小到大构建完整的游戏框架并实现。数据逻辑层主要在虚幻引擎提供的Gameplay 框架中Gamemode、Playercontroller、Pawn、Acter 等蓝图中实现,部分功能还需要在自定义的蓝图类中实现。表现层在很多情况下都决定了一款游戏的上限,是玩家能够最直观分辨游戏好坏的评价标准。表现层包括人物模型、场景建模、UI 界面、光影声音、游戏剧情等。人物模型和场景建模需要在建模软件中制作并且使用规定的格式导入UE4 引擎中,我们使用的建模软件主要是3DMAX 和Maya,3DMAX 是Discreet 公司开发的基于PC 系统的三维动画渲染和制作软件,Maya 件是Autodesk 旗下的著名三维建模和动画软件,两者都是常见的实用建模软件。将场景和模型导入引擎后,需要使用地形工具和草地工具对场景进行调整,为场景调整光影效果,增强表现力。合适美观的UI 也是表现层的重要部分,UI 主要通过Photoshop 软件制作。表现层主要由HUD、UserWidget和地形工具等引擎功能实现。

从完整的游戏流程来看,需要完成的功能大致有:进入游戏生成UI 界面,与UI 交互实现开始游戏、设置等功能,选择关卡(手动选择和随机选择),读取关卡逻辑和加载生成关卡,例如胜利条件、AI 和障碍物的刷新位置、数量等,生成玩家人物模型并且可以控制(玩家相关内容是项目中重要的部分,由许多部分组成,例如模型、骨骼、动画逻辑、攻击和技能逻辑、生命值和死亡逻辑等,主要在Gameplay 框架中的PlayerController 和Character实现),生成AI 和障碍物,AI 可以攻击玩家,障碍物通过碰撞触发,玩家胜利或者失败后有相应的UI 界面显示和逻辑处理。

2 系统设计和实现

本游戏软件的设计由场景关卡、游戏模式、玩家角色、用户界面和AI 障碍物五部分组成。针对上述内容进行具体分析,需要完成设计的对象有:场景、关卡设计、角色和技能、AI 和障碍物、用户界面等。

2.1 场景

将场景导入引擎中后,需要进行适当的配置,为接下来的开发设计打下基础。由于游戏设计的关卡有很多,而且后续可能还会增加关卡,所以场景要有独特的风格,最好不要有过多的重复元素。场景导入后,需要将人物模型放入场景中来调整场景的大小,避免人物和场景中的物体等比例失常给玩家的游戏体验带来负面影响。场景中的光照、阴影、树木草地、建筑地形等都需要进行调整,场景美观是表现层的重要因素。此外,把场景的规模控制在一定范围内也非常重要,场景太大可能会导致玩家通关的时间变长,为后续关卡设计带来负面影响。(图1)

图1 部分场景展示

2.2 关卡设计

关卡设计主要分为两部分,第一部分是对一个关卡中的游戏元素进行设计,需要设计的内容有关卡的类型、玩家起点、记录点、终点、AI 和障碍物的刷新位置、AI 刷新的时间、关卡限定时间的长短等,总体来说,设计的原则是保证游戏性的同时控制游戏难度和时间适中,避免各个关卡重复过多但通关时间差距不要太大。这部分属于策划内容,文章中不再赘述。

第二部分是对关卡设计的具体实现,这一部分我们基本使用蓝图进行制作,主要使用了Gameplay 框架中的Gamemode 蓝图以及部分自定义蓝图类,如玩家的起点、记录点、终点使用了相同的蓝图父类,父类实现了触碰时记录玩家位置Location 的功能,之后在由不同的子类蓝图继承并添加不同的功能,比如终点需要触发UI 界面的切换。(图2)

图2 记录点蓝图类及其在场景中的实例

2.3 角色和技能

玩家角色(Character)是整个游戏中最重要的部分之一,每个角色的设计都包含了许多内容,但大体都是由同一个父类蓝图继承而来。父类蓝图要实现的功能有基础的操作动作逻辑、角色模型替换逻辑(每个角色的模型都不同,并且在不同类型关卡中模型也可能不同)、生命值和体力等数值逻辑、死亡和伤害逻辑等。(图3)

图3 角色父类蓝图“BP_Character”

动画蓝图是角色的重要基础,角色的动作基本是由动画蓝图控制播放,动画蓝图会逐帧检测玩家的状态,并通过状态机来检测需要播放的动画,一般来说,玩家的移动(Walk、Run)、跳跃(Jump)、闲置(Idle)动画都是由状态机设置好播放的,攻击和释放技能的动画则大多单独制作动画蒙太奇并在动画蓝图中混合插入插槽由逻辑触发播放。(图4)

图4 部分动画蓝图逻辑

每个角色的蓝图自父类继承而来后,还需要添加其他功能,例如二段跳、加速、攻击、释放技能等,动作功能需要制作动画蒙太奇与逻辑匹配播放,攻击和技能还需要设计制作相应的粒子特效等,增强表现力。由于同一人物在不同类型的关卡中模型技能等都可能有所不同,我们的解决方案是一个任务设计多个角色蓝图,一般有跑酷和战斗两个角色蓝图。

2.4 AI

AI 怪物的设计和实现也是比较重要的部分,我们的设想中,战斗关卡中的AI 分为三种类型,近战AI,远程AI 和BOSS,近战AI和远程AI 在没有进入战斗的时候会执行巡逻的逻辑,在地图中规定的范围内寻找玩家角色,BOSS 则在固定位置刷新并原地驻守,当玩家角色进入视野内时,近战AI 和BOSS追击玩家角色,远程AI 则会在远处攻击玩家,并和玩家角色保持距离,在玩家角色靠近时试图躲避玩家并反击,每种类型的AI 又可以具体分为几种类型,比如远程AI 有弹道慢但是具备大范围(AOE)的攻击类型的法师AI,和单体攻击但是弹道快的弓箭手AI。

为了实现上述设计,我们使用了UE4 引擎较为成熟的行为树体系。虚幻4AI 行为控制采用事件驱动模式,需由行为树和黑板(Blackboard)配合使用的,行为树执行AI 逻辑,黑板通过变量来存储数据。每个AI 都有自己的控制器(AIController),就像玩家通过PlayerController 控制Character 一样,AI 通过AIController 来控制Character。虽然AIController 对相应的pawn 进行控制,但是AI 的主要逻辑是在行为树中实现的,行为树利用节点来控制逻辑并调用相应的功能。行为树的节点分为Root、Composite、Task、Decorator、Service 五种,Root 是根节点,是一个行为树的起点,一般来说,一个行为树有且只有一个Root 节点,但其本身并没有功能。Task 节点是任务节点,是行为树的基础节点。Task 节点就像一个个封装好的函数,可以通过蓝图或代码进行自定义,也有引擎封装好的节点,一般一个Task 对应执行一个简单AI 行为动作,比如AI 的移动等。Composite 节点对Task 进行简单的逻辑顺序控制,Composite 节点有三种节点分别是Selector、Sequence、Simple Parallel。Selector 是选择器,它会对子节点进行选择,当子节点有任一个返回成功时则返回成功,其他情况则返回失败。Sequence 会按顺序执行子节点,直到某一个节点返回失败或者执行完毕,当有任一子节点返回失败则返回失败,顺利执行完则返回成功。Simple Parallel 会同时执行两个任务。Decorator 节点是装饰器,可以附加在其他节点上,为附加的节点提供执行条件。

2.5 障碍物

障碍物是跑酷关卡的核心内容之一。障碍物会在玩家角色与其碰撞时调用功能对玩家进行惩罚性的互动,一般来说,这种互动有减少生命值或者将玩家传送到规定的地点等类型。为了实现障碍物的功能,我们需要为障碍物的蓝图类中添加一个碰撞盒子,当碰撞盒子与其他碰撞体重叠时,会用逻辑判断这一碰撞体是否与玩家有关,从而判断是不是玩家碰撞到了障碍物,并相应的执行后面的逻辑。(图5)

图5 障碍物的碰撞盒子

3 测试

测试是软件开发中必不可少的一个环节,我们在Windows10 系统上进行了多次测试,针对用户界面、关卡、玩家角色、AI 障碍物、参数计算等多个方面进行调试和检查。总体来说,游戏没有明显的bug,用户界面交互效果正常,UI 之间的跳转也没有问题;关卡跳转逻辑正常,场景的光照等设置正常;玩家操控流畅,动画播放正常,AI 和障碍物逻辑功能基本实现,攻击和技能的粒子特效和子弹逻辑功能都没有问题;游戏中参数计算正确,没有数值越界的不合理现象。

4 结论

经过对相应功能模块和界面的反复测试和调试,实现的这款基于PC 端的第三人称闯关游戏,能够满足一般玩家的日常游戏体验。软件安装简单,运行流畅,界面的跳转和输入响应迅速,动画播放正常,游戏参数显示正确。游戏中还有一些地方值得优化:游戏目前还是一款单机游戏,后续可以添加联机内容,增加游戏竞技性和趣味性,可以扩大受众,提高玩家的黏性;相关场景设计过于单调,后续可以适当添加更多的关卡并对关卡场景进行优化;游戏角色较少,后续还需设计开发更多角色。

猜你喜欢
关卡蓝图障碍物
本期主题
——五月,是诗的样子!
蓝图
五年蓝图
疯狂冒险岛
高低翻越
赶飞机
月亮为什么会有圆缺
时空穿梭