版本
menu_open

Managing dynamic dialogue

当今许多游戏(包括即使战略、体育和冒险游戏)都具有动态的或由游戏中发生的动作驱动的音频组件。对于游戏中可存在的所有不同变量和结果,此类音频的确成为脚本作者和音频设计者的严峻挑战。要涵盖每种条件或结果的所有不同对话组合,您可能需成千上万的素材和复杂的切换容器层级结构。这可能导致内存使用成本非常高昂。In an effort to streamline the development process and reduce the overall memory consumption, Wwise introduces the dynamic dialogue system.

The dynamic dialogue system is a lightweight and efficient method for building and managing dynamic audio in Wwise. 它使用决策树结构内的一套规则来确定要在游戏的任何特定时刻播放哪段对话。

这个系统已经很强大了,而 Wwise SDK 中还有其它功能使您能够在此基础上更进一步,创建运行时的动态序列,这非常适合体育游戏中的现场解说评论。在 Wwise 中,您可以将对话分解为个别单词或小短语,然后将这些对话指派给决策树结构内的特定路径。当游戏播放时,特定单词会提交给声音引擎,这些单词会在该引擎中动态连接在一起以形成流畅而精确到样本点的句子。因为单词和小短语是单独存在的,所以它们还可以多种方式进行组合并复用。有关将动态序列集成到游戏中的详细信息,请参阅 Wwise SDK 文档

[备注]备注

虽然创建对白事件的初衷是处理游戏对话,但对白事件不只可以用于对白,在游戏中还可以有多种用途,包括处理各种地表类型上的脚步声。

Understanding the dynamic dialogue system

At the center of Wwise's dynamic dialogue system is the Dialogue Event, which is basically a set of rules or conditions that determines which piece of dialogue to play. Dialogue Event 可用于表现游戏中存在的各种场景、条件或结果。为了确保涵盖所有情形,Wwise 还可以创建默认或后备条件。

所有这些条件是通过使用一系列状态组和状态来定义的。这些状态组和状态可进行组合以创建路径,这些路径可定义游戏中的特定条件或结果。各条路径于是可以与 Wwise 中的特定声音对象进行关联。在游戏进行过程中,随着各个对白事件被调用,游戏会用对白事件中定义的路径来验证当前的条件。与游戏中当前情况以及各条路径的模式、概率和权重匹配的路径可确定播放哪段对话(如果有的话)。

例如,以下对白事件包含与体育游戏中各个玩家名称相关的状态组。各个状态组里的各个值可组合起来以创建可能存在的不同路径或条件。在本例中,解说员可使用玩家的姓氏或全名。

当没有状态与游戏中的当前情形相匹配时,用户可以创建一条由默认或后备状态构成的路径。这些“后备”路径包含若干个状态组而非状态,并且通常与一个更一般化的声音对象相关联。在前面例子中,后备路径被关联到了声音对象 Them 而非某位选手的姓名。

在 Dialogue Event 中重现了所有条件后,即可将其集成到游戏引擎。在游戏调用 Dialogue Event 时,声音引擎会返回与匹配路径对应的音频对象,以此解析 Dialogue Event。接着,声音引擎便可决定是否将音频对象插入到动态序列中以供播放。“返回音频对象”和“将其插入到动态序列中”之间并非一对一的关系。也就是说,对于解析的每个 Dialogue Event,都可根据需要将返回的音频对象多次添加到动态序列中。

[备注]备注

在创建动态对话时,您与音频程序员紧密合作至关重要,因为许多功能都仅在 Wwise SDK 中可用,包括将单词或短语连接在一起形成句子的能力。

由于游戏引擎使用的是对白事件的名称,因此用户可以先创建事件并把它们整合到游戏中,然后再对各个事件的内容进行构建和精雕细琢,此时就无需再把它们重新整合到游戏中了。这给了您极大的灵活性,您可以添加或移除状态,并且能够对不同的声音进行试验,所有这些都无需额外的编程。

[注意]注意

添加、删除和移动对白事件内的状态组将自动修改路径。虽然此类更改可在 Wwise 中轻松完成,但还是需要程序员介入,因为代码将需要相应更新。

为了帮助您轻松识别界面中的对白事件,对白事件由以下图标来代表。

图标

代表

对白事件

Using Dialogue Events - example

假定您正在创建一款有现场解说评论的冰球游戏。在玩家射门得分时,您希望现场解说对应游戏中的此动作。

为了设置 Wwise 中不同的可能性和结果,您将需要为玩家、动作、过渡等创建对白事件。每个事件都包含一组您已创建好的相应状态组和状态。您必须为每个条件和结果创建一条路径,然后将适当的语音对象指派给各条路径。玩游戏期间,游戏将依据您在 Wwise 中定义的路径匹配当前状态,以确定要播放哪个语音对象。

下图说明了在 Wwise 中创建的对白事件如何能够生成现场解说“克劳斯(Cross,人名)射门,球进了”。

上图经过简化,以说明状态组和对白事件如何能够用于您的游戏。但是,在大多数情况下,游戏将需要更多包含多种不同状态组和状态的复杂对白事件。Wwise 使您能够建立各种更复杂的情景,可使游戏中的动态对话更真实。

下面展示玩家对白事件的一个复杂一点的例子。注意这个对白事件是如何包含多个状态组的。在您有多个状态组时,选中的状态会创建该路径。您可以为状态组和状态的每个组合创建一条路径,然后为每条路径指派一个对象。在游戏中符合特定路径内的每个状态时,指派给该路径的语音对象将会播放。


此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅