32

ADX2在Unreal4中集成以及部分实例-腾讯游戏学院

 5 years ago
source link: http://gad.qq.com/article/detail/288415
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一·引言

上篇文章中我们简介了为何使用音频中间件,以及世界级中间件共有哪些。在本文中我们着重说明如何使用音频中间件,着重于ADX2的使用。

作为最优秀的游戏商业引擎,Unreal4一直被大小游戏公司或工作室使用用来开发游戏,在音频上Unreal4和ADX2有着集成插件,仅仅需要几个简单的步骤便能轻易的将ADX2的工程集成在Unreal4中进行使用。

本文不会涉及任何的代码相关,所有内容全部使用ADX2音频中间件制作以及Unreal4蓝图作为触发型播放,从而介绍ADX2是如何集成在Unreal中并加以使用的。

二·正文

1·ADX2在Unreal4的集成

ADX2在Unreal4的集成极为简便,在ADX2官方下载ADX2和Unreal4相关SDK后找到如下的路径:

(注:CRIWARE的ADX2可在此申请试用https://www.criware.com/cn/get/index.html

Unreal在官网下载https://www.unrealengine.com/zh-CN/download)

5bed5b951adaa.png

在Unreal4中新建一个工程,并找到该工程的路径如下:

5bed5ba33f42a.png

找到上述两个路径后,将ADX2中的UE4/Engine下所有文件夹复制到工程文件目录下,如下图:

5bed5bb478fd6.png

注意:一定要复制到工程目录下,不要复制到Unreal4的安装目录下。

复制完成后从新启动Unreal4工程就会进行自动编译,编译完成后集成部分就完成,可以进行下一步的设定。

注意:如果Unreal4的工程创建为蓝图版本,且中间没有添加过自定义的C++Class,那么此时编译会出现问题,导致工程无法打开。

解决方法是:集成前在Unreal4的工程文件下创建C++Class,创建完毕后重新开始集成步骤,重新打开工程后就会顺利的自动进行编译。

2·ADX2在Unreal4中的初始化设定

ADX2在Unreal4中集成完毕后需要进行初始化相关设定,找到Unreal4编辑器菜单栏中的“编辑”选项,选择“项目设置”如图:

5bed5bc3b39fe.png

找到“插件”下的“CriWare”,点击后进入初始化设定。

5bed5bd21d01c.png

找到上述设置后,在CriWare设置界面,需要设置文件路径,选择对应工程文件的ACF,ACB文件路径,如下图:

5bed5be11e251.png

再向下拉,找到Atom Config设置,选择ADX2工程中的ACF文件,如下图:

5bed5bee36512.png

注意:ACF文件时全局设置相关文件,当不指定文件时,ADX2工程中的Cue可以进行播放,但涉及到全局效果的内容会全部无效,例如REACT等。

指定完成后重启Unreal4编辑器,重启后我们需要导入已经再ADX2中制作完成的Cue以及Cue sheet。

在Unreal4项目内容浏览器中添加文件夹用以存放ADX2工程中的Cue以及Cue Sheet

5bed5bfb84ba4.png

进入文件夹内,选择导入,并导入ACF文件以及相关的ACB文件,导入ACB文件后,Cue sheet下的所有Cue都会自动出现在文件夹中。
如下图所示:

5bed5c093f636.png

完成以上步骤后,ADX2已经完全集成在Unreal4中,ADX2中所制作效果也会完全应用于Cue中,下面将是对Cue的使用,使其能顺利的在Unreal4中进行播放。


3·ADX2实例和Unreal4蓝图使用

ADX2在Unreal4集成中一共有如下的蓝图相关API:

5bed5c16a2638.png5bed5c2a12fac.png

这些蓝图API已经完全集成在Unreal4的蓝图系统中,我们只需要制作时在蓝图中进行调取并给予正确的设置,就能很方便的完成音频内容的播放。

(1)·基本播放

Bgm等相关2D播放是音频的基本播放模式,在ADX2和Unreal4集成中拥有多种办法播放相关内容。

第一种:在场景直接进行播放,此时我们只需要将我们所想要播放的音频Cue拖拽到场景中,那么Cue就会自动根据ADX2的相关设置进行播放,无论他是2D或者3D音频。

5bed5c3761c86.png

在此种播放中,由于音频Cue被当作一个组建放置在其中,因此会在细节中出先音频的相关设置,如图:

5bed5c44c05d4.png

我们可以在其中更改其位置,Sound等相关来改变播放的位置和播放的Cue内容。

这里需要注意:

5bed5c5096dcf.png

只有Auto Activate被勾选后,正式开始游戏后,音频才能初始化播放,否则需要在蓝图中进行触发。

第二种:在蓝图中添加

如图所示,我们打开关卡蓝图:

5bed5c5dee3bd.png

打开后添加事件:“Event Begin”,并将我们所需要播放的Cue直接拖进蓝图中,那么此时就会自创建一个Add Component的蓝图组建,将二者进行连接,并且编译,此时只要开始游戏,那么我们所添加的Cue就会进行播放。

5bed5c6b45d55.png

上述就是简单的在Unreal4蓝图和直接播放ADX2音频Cue的简单例子。

实际上我们没有进行 load ACB文件,因为我们添加了组件或者Add atom Component后,会自动进行load,当需要手动进行控制或者内存需求优化时,需要进行load ACB文件的操作。

5bed5c76b42b6.png


(2)·3D音效

3D音效是根据双声道,5.1或者7.1声道,由于听者和发声体位置相对关系,通过计算改变各个声道音量,LFE等,从听感上能够判断发声体方位的一种音效表现。

在ADX2中,3D音效跟随Track中的声波文件设定

5bed5c99b14a6.png

通过设定为3D Positioning,该音频将会变为3D音效,从而通过位置信息和计算结果决定各个声道效果。

在Unreal4中,可以使用直接将Cue拖入场景播放3D音效,此种方法类似于前面所述的拖拽入场景音效播放方式。同样也可以使用蓝图播放3D音效,主要使用的是“Spawn Sound At Location”

5bed5ca689562.png

笔者自行制作的3D效果如下:

首先建立一个基本蓝图:

5bed5cb67d181.png

在蓝图中添加触发Box

5bed5cc225d0f.png

再在蓝图的事件蓝图中作如下蓝图逻辑

5bed5cd0ef2b5.png

上述蓝图,表示当我们操控的角色和触发盒子重叠时,将会允许我们进行输入,当离开触发盒子时,将会禁止我们进行输入。

当我们按下“F”键输入后,会在Box的世界坐标上播放一个名字叫做Npc01_Talk的Cue。

3D音频播放需要坐标,因此我们必须要指定播放的位置,上述例子中我们通过获取Box的世界坐标,将其传给3D Sound,使得3D Sound在合适的位置播放,从而达到正常播放的目的。

注:3D音频的3D衰变曲线有两种变更方式

第一种:Unreal4通过不沿用ADX2设定而重新设定。

当3D音效被直接放在场景中时,我们可以通过在Unreal4中设定3D音效的衰变范围,从而使用Unreal4的设置,跳过ADX2的设置方式。

5bed5ce3c888e.png

如图,启用不沿用衰变设置。

5bed5cf18a3ed.png

启用不沿用衰变设置后,可以在Unreal4中调节衰减的内部半径,最大衰减范围,以及衰减曲线。

这种方式较为方便,但是他的衰变曲线固定,只有集中选择,不能合理化调制。

第二种:在ADX2中通过参数控制

5bed5cfe21d27.png

在ADX2中我们更改Cue的 Attenuation Distance的Min和Max值,Min表示最小衰变范围,在该范围内音量不会衰减,Max则代表最大衰减范围,超过该范围,音频将会完全听不到。

此外,我们通过Distance AISAC Control控制Min到Max距离的衰变曲线。

5bed5d0b6b4fb.png

在Cue上,我们创建了一个关于Distance和Volume的衰变曲线,可以看到,这条衰变曲线可以分为2段,第一段表示线性衰变,第二段则为曲线衰变,这种设置方式与游戏玩法相关,笔者这里的设置方式是希望玩家能够通过音量和方位找到隐藏的某个位置,所以确保较远的距离可以听见,并且近距离变化较为明显。

以定义AISAC的方式契合衰变的最大最小距离,使得玩法和音频结合更加贴合。


(3)·动画系统音效

Unreal4中,通过导入模型,骨骼以及动画文件,可以在Unreal4的动画蓝图中设定动画播放,蒙太奇动画制作,以及动画切换等。

一个游戏,角色的动作会有很多,比如跳跃,移动等。这些动作在播放的同时,一定需要一个音效给予反馈,方能让角色表现活灵活现。因此在播放动作的时候必要添加一个音效。

此部分分为两个方面介绍,一个是动作与ADX2中的Cue的播放以及蒙太奇动画与“Combo Sequntial”

第一部分:动作与ADX2中的Cue

在正确导入了模型,骨骼和动作后,通过创建动画蓝图,我们可以直接访问动画部分如图:

5bed5d1a8655d.png

在动画播放帧轴上我们可以通过鼠标拖动来让动画处于某一帧,而上方的通知轴则可以让我们在某一帧发送通知,这个通知可以播放音频,粒子特效等。

5bed5d2935360.png

如上图所示,我们在帧数轴上拖动使得walk动作中角色的脚刚好接触地面,此时右键通知轴,选择添加通知,在选择PlayAtomCue,

5bed5d388b5f3.png

再在右侧的详细信息中选择要播放的Cue“FootSteps“

这样当walk动作播放到对应帧数时,将会发送一个播放FootSteps Cue的通知,从而播放音频内容。

第二部分:动画蒙太奇和”Combo Sequential“

动画蒙太奇是Unreal4针对动画循环播放所制作的播放系统,通过创建动画蒙太奇来创造对应动画播放。

5bed5d48cd17b.png

在动画蒙太奇中我们放入了一些基本动画,并且编辑其播放顺序,如下图

下图表示,当调用该蒙太奇动画后,动画从start开始播放,然后一直在Pouch_R中循环,直到调用了PounchEnd后,方能正常播放完毕。

5bed5d5689e80.png

在蒙太奇动画中的循环存在,使得音频在播放如果只是单纯的在一个动作上播放一个声音,则会在循环区间反复出现该声音,使得听感下降。

其次假设我们所制作的一个格斗类游戏,我们使用动画蒙太奇,将2个动作按照1212的方式制作与动画蒙太奇中,此时在1动作上我们添加A音效,2动作上添加B音效,那么结果就是在播放动画蒙太奇动作时,音效反馈为ABAB。

对于格斗类型游戏,音效反馈极其重要,在不断的打击过程中,我们更期望的是音频表现越来越重,使得感受上打击越来强,而上面我们所说的声音播放为ABAB这样的效果定然不会被我们所接受。

因此在ADX2中存在一种非常实用于此场景的序列播放Cue:”Combo Sequential”

对于Combo我们知道一般指连击,而这里的Combo Sequential就是指连击的序列化播放。

5bed5d64b1300.png

在ADX2中通过右键,添加新object,Create Cue“Combo Sequential”创建。

5bed5d706083d.png

上图是笔者自行创建的一个简单的Combo Sequential,一共有四个轨道。

Combo Sequential的作用主要是当在连击时间内,触发该Cue时,此Cue会序列化播放,当超过连击时间后,再次触发该Cue,则会从新开始播放,而这个重新开始播放的Truck是我们可以人为定义的。

该效果类比于格斗游戏连击,当A持续攻击B时,通过蒙太奇动画打出ABA的连击,停顿歇息了很短时间后,再次打击出去,那么这时候打出的是B,而非A,那么此时调用Combo Sequential后,音频播放则是123,4,从3到4有一些停顿歇息,但不会中断连击。

而如果,攻击时,打出了ABA的连击,然后直接中断,较长时间停顿后,又打出了A,那么对应到Combo Sequential,音频播放则是123,1.恰巧完美对应了动作攻击表现。

5bed5d7c0b3d3.png

设定的Combo如上图,连击音频触发的时间不能超过2000ms,当超过2000ms后他将重置,且重置到Truck0的播放位置。

通过动作播放以及ADX2的Cue播放能够完美的契合动作和音频,使得反馈十足。


(4)·React和Sidechain

在动态混音中AutoDucking和SideChain是非常常用的两个手段,在ADX2中二者均存在,下面通过一个简要例子说明React和SIdechain的用法

5bed5d8a5ed49.png

如上图所示,笔者在台子上放置了7个键位,分别对应do、re、mi、fa、sol、la、si,而在这个解密中,玩家需要听过走到对应的键位按下F键播放,使得正确的演奏两只老虎,方能解开谜题。

笔者所作的该场景中存在了BGM和环境音效,当触发按键播放时,由于bgm和环境音效的影响使得播放的内容含糊不清,很难让玩家听出来对错,更难以让玩家沉浸于演奏中。

为了解决这个问题,笔者引入了ADX2中的React功能,也就是AutoDucking,目的是在播放键位音效的时候,通过闪避降低bgm和环境音效的音量,使得键位音效清晰可听。

具体制作如下:

5bed5d99c7023.png5bed5dad9c294.png

AuroduckingCategory中,设置了Base和Trigger两个,分别包含bgm,环境音效以及键位的7个音。

5bed5dbc466da.png5bed5dc92407b.png

在React中,我们使得Changing Category为Base,Trigger Category为Trigger,这样的结果就是,当Trigger中的Cue播放时,Base中的Cue会自动避让音量。

结果就满足了我们之前的需求,使得键位音效清晰可听。

其中的参数要读者自行调节,使得能够达到自己满意的效果即可。

为了让玩家弹奏时能够有较好的反馈,当玩家弹错时需要给予一定的提示,这个提示要告诉玩家,他已经弹错需要重新开始,那么与前面要求相同,弹错的提示应该更加具有优先级,弹错提示音出现时,需要将键位音量压低,此时我们已经有了React的方案,但我们不再选用该方案,我们选择sidechain。

Tips:关于AutoDucking和SideChain的选择,在上述中我们分别选择了AutoDucking和SideChain,为什么要这样选择,为什么不用同样的效果,这个与我们想要达到的效果有关。

AutoDucking是强压效果,当一个声音响起,被压的声音必然会降低到一定的音效,无论触发的音量是大是小。而对于SideChain则是根据触发音量做变化性调整,当触发音频有不同的音量大小时,被压音频就会根据设定好的变化方式动态的改变被压的大小。

在上述内容中,按键音和背景音乐我们选择了Autoducking,因为无论我按键音量大小如何,我都必须较多的压低bgm从而让我能够专心听到按键声音,而弹错提示压低按键使用的时sidechain,因此当弹错提示音量较小时,按键被压的也相对较小,这样玩家依然会收到正确反馈。

此外,当玩家完成曲子的弹奏后,笔者通过设定弹错提示的音量,使得其不再发声,此时sidechain就不会再压低按键音量,也就是说,玩家完成弹奏后,就不会出现错误提示,玩家可以愉快的自行在7个键位中弹奏自己喜欢的乐曲了。

对于sidechain制作方式如下:

5bed5ddb30918.png

我们选择Bus,创建一个名为sidechain,一个名为Trigger_SideChain的bus。

在SideChain上我们插入effect,compressor,在Trigger_SideChain的bus上插入effect,AmplitudeAnalyzer的效果器。

选择Compressor效果器将其SideChainInput更改为Trigger_SideChain

5bed5debbf02d.png

找到我们的键位音频Cue

5bed5df9db9f2.png

设其SideChain通道处于激活,Trigger_Sidechain通道处于非激活。

5bed5e04eaeb4.png

再找到我们的错误提示音频Cue

5bed5e1159730.png

设置其SideChain通道处于非激活,Trigger_SideChain通道处于激活

5bed5e1ccad7e.png

如此一来就完成了我们的相关设置。

尽情享受动态变化音量带来的音频混音魅力吧。


(5)·AISAC控制以及自动化

5bed5e2b14d8a.png

如图所示,该场景为笔者制作的一个小瀑布区域,瀑布下方有一个小湖,角色可以进入湖中,当然因为他比较金属,所以它并不能游泳,只能在水底行走。

当完全进入水中后,为了让玩家感受到进入水中的效果以增强沉浸感,笔者做了两个方面的设置,一个式镜头施加特效,另外一个是所有音频进行低通滤波,使得玩家听起来很多东西都产生了模糊感。

在增加低通滤波,笔者采用了AISAC,并让其在Unreal4中受到控制,进入到水区域后更改AISAC,使得低通生效,离开水区域后再次更改AISAC使得低通效果消失,具体如下。

由于我们需要对很多音频施加低通效果,因此我们创建了一个Category,名字叫做Into_Water

5bed5e39cea3d.png

而后创建了一个名字为Water的AISAC

5bed5e466afd6.png

将需要更改效果的Cue全部拖入到Into_Water的Category中,并在其中创建AISAC。如上图所示,我们创建了和Water相关的AISAC控制,使得Cutoff High在0时候为1,到0的时候为0.15,这就说明当water值为1的时候没有任何的低通效果,当water的值为0时,低通效果很强。

同样为了弥补增加低通效果产生后音量的部分衰减,我们做了关于音量的Water参数变化

5bed5e519e663.png

如此一来,进入水中就会出现低通效果,且音量不会衰减很多。

上述为在ADX2中的制作,回到Unreal中,我们需要制作关于进入水中的AISAC控制,来决定water的值,以表现低通和消去低通效果:

5bed5e6004220.png

如上图所示,被框住的部分为更改Water的值,当进入水后,Water的值被改为1,当出水后,Water的值又变更为0。

由此来表现出低通效果。

各位读者可能注意到了这里还添加了2D音频,这个的作用使用来做入水和出水的反馈,这也引出了我们下一个需要讨论的内容:自动化。

5bed5e6e3545f.png

自动化时ADX2针对素材进行效果处理的方式,起作用可以在不改变素材的基础上,更改素材效果,上面播放的两个2D效果就是同一个素材,通过自动化变成的两个不同效果。

5bed5e7de7095.png5bed5e8d7f9d7.png

对比上面两个图,可以看到,两个Cue中的Track调用的是同一个音频,波形文件一模一样,但是,有两个相同颜色曲线以不同的方式作用在波形文件上,正如图中所示,这个曲线代表的就是高切效果也就是低通。

通过对一个音频文件的两部分处理,自动化使得一个音频文件具有两个效果,且效果表现类似但感受完全不同,上面的表示进入水后,音频低通表现沉闷感,下面的表示出水后,音频从低通恢复,表现释放感。

ADX2具有很多的效果自动化处理,这能方便的为我们创作很多不同的和出彩的效果。

再比如,我们在一个环境音效中加入一个蝙蝠飞过的声音,通过自动化我们对一个素材进行不同Pan3D的设定,并将其放在一个Random Cue,每次播放都会有不同的蝙蝠飞过效果,这样不仅仅优化的音频体验,还减少了素材要求和内存占用,一举三得。

附:这里再加一个小优化,当我们进入水中后,每次攻击为了显示与地上效果的不同,我们决定再水中攻击会添加一个咕咚的冒泡声,用于表现水下效果。

5bed5e9a52646.png5bed5ea64d46e.png5bed5eb20d8e0.png5bed5ebd3ff34.png

如上所示,我们把攻击分成了3个Cue吗,在实际调用中我们指挥调用一个即调用Pounch

在Pounch中分别做了Track Action,使得播放PounchSingle和Pounch_Water。

同样我们对Pounch_Water做了Category,使得入水的时候,此Cue的声音音量正常,出水后音量为0,以表现入水又咕咚,出水没有咕咚效果。

注:这里可以使用Select功能,将空Track和咕咚track做Switch,使得入水调用有咕咚的track,出水调用空Track,此种方法,读者可以自行实验。

AISAC的使用不仅于此,由于参数的变化可以挂勾到游戏内很多动态变化上,因此利用AISAC和游戏参数进行绑定能够有效的跟随游戏参数动态改变游戏音频效果,这也正是互动式音频的表现方式。

例如

5bed5ecac553c.png

在环境音效中,动态的跟随时间变化早晚的环境音效,使得环境音效跟随实际游戏时间不断变化。


(6)·快照设定

快照是ADX2中方便声音设计师涉及Bus效果,并直接给程序控制调取,以动态的更改音频效果的一种方式。

5bed5edb9a8bd.png

如图所致,这里有一个相对较大空间,为了表现空间效果,我们希望玩家进入区域后部分音效会有空间混响效果,这里我们采用快照的方式实现。

在ADX2中我们制作了一个效果器Bus

5bed5ef0858c7.png

并且在bus上创建一个Reverb的效果器,并将其的输出拉直最低,这是为了让未进入区域时,所有音频表现正常。

将所有需要添加混响的音频作如下设置:

5bed5efd9e0d0.png

启用Rev Bus,发送量可根据实际需要进行调整。

然后在进行创建快照:

5bed5f0aaae89.png

右键Bus,选择New Object,选择Create Snapshot。

我们创建两个快照,Room和Normal,其中Room用于进入空间后启用,而Normal则用于离开后让所有音频恢复正常,相关设定如图:

5bed5f196944b.pngRoom设定5bed5f2551310.pngNormal设定

设定完毕后,ADX2中的设置结束,下面进行Unreal4的触发设置

我们在Unreal4中创建一个Box,用于检测玩家有没有进入触发区域,当玩家和触发区域重合时,将会设置快照为Room,当玩家与触发区域脱离重合时,将会设置快照为Normal,以此来完成整个音频效果变化。

蓝图如下:

5bed5f34f2e36.png

对于快照设定非常简单,因为快照效为整体效果,不需要指定任何目标,因此整个蓝图非常简单。

除此之外,我们还可以通过改变Bus Send来动态改变效果的大小,就可以达到空间大小变化。

5bed5f4265bb1.png


(7)·交互式音乐和Action Track

交互式音乐有多种方式制作,最简单就是不同场景播放不同的音乐,并加以淡入和淡出的过渡,形成什么场景,什么状态播放什么样的音乐,以让音乐配合场景和状态使之产生共鸣。

5bed5f4f7ffaa.png

如图所示,有3个门,分别为C,R,I,为了模拟玩家穿过门到达不同场景的音乐效果,笔者特意在门上放置了触发器,使得玩家通过门后会进行音乐的切换,以此来表现出交互音乐效果。

如前面所说,最简单的方式是淡入和淡出,但在这里我们采用更加合理的方式转变音乐,即为在某节拍过渡,通过对音乐进行定义,使得音乐切换时,自动按照节拍节点进行切换。

音乐节拍切换的方式比起淡入淡出效果更加自然,听感更加顺畅。

5bed5f5d8ec51.png

如图所示,在一个Cue中,我们设置播放了3个不同的音乐片段,并添加Block,注意观察Block的分块,针对不同的音乐有不同的分块方式,使得分块刚好和音乐的节拍相契合。

当触发转变后,音乐将会播放到分块的结束点,到达结束点将触发转变,此时的转变会完全切合到节拍上,使得转变非常自然。

回到我们的ADX2上,在一个Cue上创建的Block,从左到右分别为index编号为0,1,2。这个编号将用于转变时的目标上。

在Unreal4中我们使用重叠触发,当触发后,将会改变Music_Normal的Block index编号,从而转变音乐。

5bed5f6c14ad8.png

在Unreal4中,仅仅做转变位置设定,不参与实际转变效果,实际转变效果将有ADX2进行设置,ADX2通过Block的分块进行合理化转变,从而达到高契合度的音乐切换。


Action Track是对Cue进行播放,停止,参数,状态改变的方式,他通过Cue区改变其他Cue的上述效果,例如停止其他Cue,改变其他Cue的AISAC的值等。

交互式音乐同样可以利用Action Track来制作更加丰富的动态音乐转变。

5bed5f7a4a81c.png

如图所示,笔者在此位置建造了一个小型竞技场,当玩家完成条件后,竞技场将可以被开启,当玩家进入竞技场后,音乐会发生转变,通过过渡音乐和Action Track功能,让音乐完全转变到竞技场效果中。

ADX2的制作如下:

5bed5f87de646.png5bed5f9576d9b.png

首先创作了一个竞技场音乐的Cue,第一个Track使用重复的底衬音乐,而后其他Track则使用相关配器,可以通过随机等方式进行多元化播放。

这里笔者使用了Loop Mark,原因是因为作曲家在作曲时,每个曲子都留下了最后的尾巴,为了循环的无缝性质,这些尾巴不必要播放,因此笔者使用了Loop Mark改变播放的范围,使得其完美循环播放。

5bed5fa23b86d.png

我们又创建了一个Into_pvp的Cue,第一个轨道用于播放过渡音乐。

第二个轨道就是Action Track轨道,在我们选定的位置处创建 start,用于播放Music_PVP Cue。

第三个轨道同样是Action Track,这里有两个动作,第一个动作用于淡出Music_Normal第二个动作用于停止该Cue。

这样通过Action Track我们实现了淡出并停止上一个Cue,播放过渡段并衔接下一个Cue的整体播放逻辑。

在Unreal4中我们则仅仅使用播放Into_PVP这一Cue即可完成整个音乐的顺利过渡转变。

5bed5faf0484d.png

实际上在ADX2中Block转变的过程也可以使用过渡音乐,

5bed5fbb5e5b3.png

如图,将转变音乐单独设置为一个track,并且右键track按照上述方式选择track为Playback on the first transition,这样就可以使之转变到该Blokc时播放过渡音乐,之后循环Block时不再播放该过渡音乐。

交互式音乐除此之外还可以联动AISAC进行变化,通过游戏内参数,改变AISAC的值,用于改变各个Track的音量,效果等同样可以达到交互音乐播放的效果。

这些效果拥有较多的学问,想必各位作曲大佬各有自己的见解笔者这里就不再班门弄斧。


(8)·随机和序列化

在游戏中序列化播放和随机播放是一个极其普遍的播放方式,通过随机和序列化我们可以让游戏变得更富以及使得音频按照我们设定好的逻辑进行播放。针对序列化前面已经讲过针对哦蒙太奇动画我们拥有Combo方式的序列化,而随机这里也为大家提供一个无限循环随机效果。

这类随机播放方式主要用于环境效果,比如在一个森林中,我们为了表现森林的生机,需要用到鸟叫虫鸣来凸显效果,一般的效果是通过制作,制作出一段较为长的素材文件,然后循环播放,但是这种播放方式,播放的结果非常固定,只有音频足够长,才能解决玩家听到的记忆点问题。

而在ADX2中,我们可以利用随机播放,进行参数调整和设置,达到每次触发播放不同素材,并可以随机化音量,音高,在通过Cue的播放数量限制,以达到可控范围内随机化鸟鸣效果。

在这种做法中,每次播放的鸟叫虫鸣随机,音高,音量随机,数量可控性随机,距离随机,那么效果自然会比固定的播放一条音频好很多。

5bed5fcbb2c18.png

如图所示,我们创建了一个常规的Cue,但在该Cue下我们创建了一个子Cue

5bed5fd7d104a.png

子Cue为随机播放,这里是Random No Repeat。

当每次调用到子Cue时都会不重复的从其中选择一个轨道进行播放。

5bed5fe64f8ad.png

在主Cue中我们选择子Cue,注意右方的红框,我们调整了 PlayBack Timing Rnd,Auto Repeat Interval,PreDelay Time ,通过调整这些参数,使得在主Cue中无限调取子Cue,每次调取子Cue都会播放子Cue中的一条轨道。

5bed5ff1e0825.png

继续观察上图,我们限制了Cue的播放数量限制,这里主要是为了防止触发多次后,多个声音全部混合在一起使得音频变得混乱而制作。

在主Cue的轨道上,按照时间线播放子Cue,每次进入子Cue都会触发一次播放,每次播放都会遵循CueLimits,使得超过播放数量上限的Track不再播放,从而达到了我们的目的。

在Unreal4中我们通过上述的方式设定播放,不用再写逻辑进行如此复杂的播放规则,使得游戏制作变得容易且效果更好。

在Unreal4中仅仅使用播放Cue就完成工作。

三·结语

以上就是针对Unreal4和ADX2作为游戏引擎和游戏中间件所作的集成和效果简介,笔者自行使用这两个引擎,完成了一个较为简单的小场景解密demo,虽然并不能称之为游戏或者玩法的一部分,但是两个引擎强大的功能,和使用的便利程度为我个人开发提供了诸多方便。

选择中间件会极大的提升工作效率和结果,使得我们可以更专注于游戏和品质。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK