APP下载

基于UE4的动作游戏受击反馈系统研究与设计

2021-12-14王昊翔丁海洋

电子制作 2021年23期
关键词:虚幻引擎部位

王昊翔,丁海洋

(西京学院信息工程学院,陕西西安,710123)

0 引言

近年来,国内的主机游戏市场不断的发展壮大。随着技术的不断成熟,越来越多的厂商和工作室也开始投入到单机游戏的研发中。许多优秀的单机游戏产品,如雨后春笋萌芽。像《黑神话悟空》、《失落之魂》、《暗影火炬城》这些动作游戏都是由虚幻引擎开发,并以爽快的即时战斗作为卖点。国内著名的三剑IP,《仙剑奇侠传》、《轩辕剑》和《古剑奇谭》的最新作品也由传统的回合制战斗转向了即时战斗的动作类游戏,其中前两者的最新作品皆由虚幻引擎开发。

本文使用虚幻引擎对时下流行的即时战斗的动作类游戏产品的重要系统之一的受击反馈系统进行了研究,结合虚幻各个模块功能,设计了一套受击反馈系统,通过该系统的设计来探索动作类游戏的核心体验。

1 虚幻引擎 Unreal Engine

虚幻引擎是由著名游戏公司EPIC开发的开源的通用引擎,面向企业、工作室、个人等不同程度的开发者提供游戏开发所需要的核心技术、数据生成工具和技术支持。

作为全球最开放、最先进的商用引擎,基于C++开发的虚幻引擎在底层拥有很强的拓展性,同时对于上层开发,虚幻引擎也提供了蓝图这样的解决方案,减轻了非从业者和业余开发人员的上手门槛。拥有完整的开发流程和渲染管线的虚幻引擎是一套非常优秀的开发工具,不仅可以应用于独立作品,也同适用于各类3A级大作的开发。能够提供多种解决方案的虚幻引擎被用于游戏行业,同时在建筑、汽车、影视、实况活动、以及训练与模拟等行业,虚幻引擎也同样大放光彩。在它20多年的历史里,虚幻引擎久经考验,赢得无数开发者的认可,产出无数优秀的作品。

2 受击反馈系统需求分析

目前主流的动作游戏中,打击感的体现主要来源于打击动作发生时产生的一系列反馈,这种反馈包括打击时产生的打击特效、音效、击中瞬间卡帧、挥舞动作之间帧速率的加减速、UI特效、屏幕震动、手柄震动、受击角色对应的受击动画和受击部位的膨胀和抖动、镜头角度变化等效果。因此打击感是综合了视觉效果、听觉效果、触觉效果等多方面得来的,如图1所示。根据具体游戏的不同,或者是一款游戏不同类型的受击目标,这些反馈效果的细节的处理也是大有不同。

图1 受击反馈的体现

虚幻引擎在开发游戏的时候通常有两种动画方案,一种是原地动画、另一种是根骨骼动画。原地动画不包含根位移,在虚幻引擎中可以通过播放原地动画的同时,可以通过移动角色的胶囊体来使角色产生相应的位移效果,这种方式可以让一种动画适应多种场景,但是通过代码调试出来的效果往往也会缺失真实感和流畅感。在动作游戏的制作,想要达到比较真实的效果的时候,通常可以将位移信息存储在动画中做出根骨骼动画,这种动画虽然少了一些使用的灵活性,在适应多种情况的时候也增大动画的工作量,但是确能换来较为真实的动画表现。因此本文所设计的受击反馈系统,在受击动画的表现上均采用根骨骼动画来混入、混出,表现一种较为真实的受击效果。

受击状态的发生通常在攻击检测完成后,或者受击角色与场景内的物体产生了互动,例如有巨石滚下与受击角色发生了碰撞。在虚幻引擎中,后者可以通过在角色和物体产生碰撞时,借助引擎自身的物理引擎效果,开启角色物理模拟来实现布娃娃效果。本文的受击反馈系统同样也借助引擎自身的物理模拟效果着重考虑在攻击检测完成后,受击角色通过受击的方向、受击的部位以及受击时的冲量使受击的部位产生一定程度的抖动,通过这种抖动来反应一种比较真实的部位受击效果。

3 受击反馈系统设计

3.1 受击反馈系统总体设计

所有具有受击反馈需求的角色模型在导入引擎中时需要具备较为完整的骨骼信息,根据角色骨骼信息建立物理资产。在虚幻引擎中,可以通过其自带的物理模拟系统,使角色产生比较真实的物理反馈,其中角色的物理模拟效果,很大程度上取决于物理资产的设定。在物理资产建立的时候,我们不需要为每一个骨骼建立相应的物理资产,重点为那些带有驱动其它部位运动的部位添加物理资产,并通过实际模拟出来的效果调整各个关联部位之间的物理资产的偏移限制如图2所示。

图2 角色物理资产设置

在受击情况发生后,角色会从现有的动画状态跳转到受击动画中去,为了实现动画效果比较流畅的过度,本文采用虚幻引擎自带的动画蒙太奇功能来进行受击动画的混入和混出。通过将准备好的带有受击位移信息的受击根骨骼动画以片段的形式被动画蒙太奇调用,在接收到受击信息的时候,根据相应的受击方向信息来触发运用动画蒙太奇方式播放相应的受击动画片段。例如,当角色受到来自自身右侧方向的攻击时,蒙太奇会调用标记有右侧受击的根骨骼动画片段进行混入播放,如图3所示。

图3 蒙太奇动画设置

当攻击角色做出攻击动作后,根据获取预先设置在攻击角色武器上的插槽位置,可以打出符合武器挥动轨迹的射线检测,射线检测在与有效的受击角色发生重叠后会通过一系列的逻辑向受击角色发送武器的攻击方向,击中点的部位、所产生的攻击类型和依据攻击类型所产生的冲量数据,并在受击点位播放对应的打击特效和声效,应用UI特效和屏幕震动。受击角色会根据传递过来的数据计算出攻击相对于自身的方向来源,并将该数据和击中部位、受到的攻击类型和攻击时产生的冲量发送给处理角色动画的模块中去,动画模块根据角色受击的方向、和受到的攻击类型通知动画状态机来混入对应的受击动画,再通过开启击中部位的物理模拟和冲量数据来反应受击部位的物理抖动效果。如果游戏设计上有些视觉冲击效果的需求,也可判断冲量超过一定部位承受阈值后,做一些受击部位产生破碎或者断裂的效果。受击反馈系统的整体流程设计如图4所示。

图4 受击反馈系统的流程图

3.2 受击反馈系统各模块设计

(1)攻击检测模块,该模块采用虚幻引擎的actor组件类型,在虚幻引擎中actor组件可以附加在所有actor类的派生类,因此采用该类型组件可以让攻击检测功能复用在所有具有攻击需求的角色类上,如图5所示。模块中需要初始化角色类上绑定的武器,在所依附的角色播放攻击动画时触发攻击检测逻辑,并在有效击中产生后,通过武器上插槽前一帧的位置和当前帧的位置计算出当前帧的攻击方向,并收集击中点的部位、攻击类型的数据并通过攻击类型和武器数据在利用结构体创建的FAttackData数据表如表1中查找对应攻击的冲量数据,再将攻击方向,击中点的部位、攻击类型和攻击类型所产生的冲量数据传递给被击中角色的数据接收接口,同时调用播放打击特效、受击声音特效、UI特效和屏幕震动的接口。该模块同样提供接口用以改变不同打击特效、声音特效、UI特效和屏幕震动来应对不同的角色和不同的攻击环境。

图5 角色类自身组件图

表1 FAttackData数据表

(2)可被攻击接口,该类接口应用与所有可被攻击的角色类上,如图6所示。接收攻击对象身上攻击检测组件所发送的攻击方向,击中点的部位、攻击类型和攻击类型所产生的冲量数据,通过当前获得的攻击方向数据和当前受击角色在场景中的位置和旋转信息计算出角色受击的方向,再将角色受击的方向、击中点的部位、攻击类型和攻击类型所产生的冲量信息传递给角色的动画模块。

图6 角色类自身接口实现图

(3)动画模块,动画模块是依附于角色身上的动画管理组件,同样继承于虚幻引擎的actor组件类,负责接收数据改变角色当前的状态来通知角色的动画状态机播放对应的动画状态和调动拥有者的mesh来播放对应的蒙太奇动画。动画管理组件自身带有触发多种角色动作情况时需要采用的处理逻辑,受击情况也作为其中一种情况被处理。当角色的动画组件在接收到受击数据后,通过可被攻击接口传递过来的受击方向、攻击类型来调动拥有者的mesh组件通过蒙太奇播放对应的受击动画片段,并通过获得和使用蒙太奇上预先设定好的混合权重曲线来觉得受击部位物理模拟的时间和模拟权重大小,再通过击中点的部位、冲量数据来决定受击角色受击部位的物理抖动效果。

各模块类关系图如图7所示。

图7 受击反馈系统类图

4 结论

本课题研究的受击反馈系统对当前主流的动作游戏的打击感问题提出了解决方案,希望以流程化的方式完成人物受击效果的实现。通过一个整体的框架完成主要受击过程,再通过更改动画数据、特效和音效资源来适应每一个受击个体。希望通过该系统的设计可以减少整体的代码逻辑工作量,增加动作游戏受击反馈的真实感,增强游戏代入感和整体的体验质量。

猜你喜欢

虚幻引擎部位
雨中(外二首)
点燃企业发展的“引擎”
每个女孩都有不允许别人触碰的隐私部位
打造信息化建设的“党建引擎”
流年似水
春天越来越虚幻
车坛往事4:引擎进化之屡次失败的蒸汽机车
五个部位冬天尤其要保暖
喜欢什么
文艺范