向远程学员教授游戏音频并不容易,对于失明的远程学员来说就更难了。Full Sail University 音频制作和录音艺术学士学位课程的游戏音频讲师便面临着这样的挑战。最近,我们成功向首位完全失明的远程学生教授了如何在 Mac 上使用 Wwise。这要感谢几位讲师的共同努力以及相关人员创建的一些定制辅助工具。下面就来听听我们到底是怎么做到的吧。
现实挑战
就读于 Full Sail University 音频制作远程学士学位课程的学生要学习各种音频相关课程。其中有四门课涉及到为游戏设计声音并使用 Wwise 整合音频。在音频制作学科主任布莱恩•史密瑟斯 (Brian Smithers) 最初告诉我们要招收完全失明的学生安德烈•伍兹 (Andre Woods) 时,我们这些教授游戏音频课程的人多少有些担心。总的来说,教安德烈如何对音乐实施混音还算比较简单。然而,教他为游戏设计声音并使用 Wwise 整合音频完全是另一码事。
更难办的是安德烈要在 Mac 上学习,而 Wwise 的大部分界面都无法通过 Mac 的 VoiceOver 无障碍工具来诵读。这样的话,像安德烈这样的学生根本没法进行操作。为此,我们花了几周时间试图构建一套对应的解决方案。当时大家提出了各种想法,包括调整课程学习方式、直接在引擎中整合、利用 MIDI 控制器进行交互模拟、通过脚本整合音频等等。似乎每种想法都有无法克服的难题,但有时最好的解决方案就摆在面前。
解决方案
最后,我们发现安德烈装了一款名为 Flo Tools 的无障碍工具来协助其学习 Pro Tools 课程。Flo Tools 包含一套用 Keyboard Maestro Mac 自动化工具创建的自定义无障碍功能宏。我们琢磨着,既然能用 Keyboard Maestro 为 Pro Tools 增添无障碍功能,那是不是也可以把同样的做法用到 Wwise 上呢?于是,我们就开始为 Wwise 构建类似于 Flo Tools 的专用工具(内部暂定名称为 Wweyes)。
为此,我们专门在日常教学之余花了大约 2 个月的时间进行开发和测试。当时大家因为疫情转成了居家办公,无法在各自电脑之外对宏展开测试。这当中最大的挑战是让视力正常的讲师设想真正适用于盲人的工作流程。比方说,安德烈会如何在软件内进行导航?他要怎样获取听觉反馈来获知何时成功完成了处理?完成每项学习任务都需要哪些关键的功能?我们要在有限的时间内把这些全都搞清楚。要知道这个方案是在一月下旬才制定的,四月安德烈就要学习第一门游戏音频课程。
宏
导航
首先,我们要弄清楚安德烈会如何在 Wwise 中进行导航。遗憾的是,VoiceOver 只能诵读 Wwise 中的主窗口标题。不过,我们知道他会把大部分时间花在 Audio 或 Events 选项卡中。对此,教授录音艺术在校学位游戏音频作品集课程的系主任托马斯•欧文 (Thomas Owen) 建议我们以这两个区域为主要参照点来绑定简单的命令。比如,按下 CMD+1 来打开 Audio 选项卡,按下 CMD+2 来打开 Events 选项卡。
而且,我们知道安德烈主要会在 Actor-Mixer Hierarchy 下的 Default Work Unit 中执行操作。为此,我们创建了第一个宏来自动选中 Audio 选项卡,之后依次选中 Actor-Mixer Hierarchy 和 Default Work Unit。该宏还要自动展开所有下级对象来揭示层级结构中的隐藏元素。对此,会先扫描屏幕来识别 Audio 选项卡的目标图像。若识别成功,将执行附加功能并要求安德烈进行确认。在这个过程中,会通过系统音效和语音合成来提供听觉反馈。
图 1 - Audio Tab/Actor-Mixer Hierarchy/Default Work Unit 宏
(国内观赏视频通道)
容器
在进入 Actor-Mixer Hierarchy 后,安德烈需要创建文件夹、容器和对象。虽然 Wwise 中存在与这些功能对应的内置键盘快捷方式,但其并不能提供听觉反馈。我们的解决方案是创建自定义快捷方式来点击相应的工具栏图标,然后在完成时通过语音合成提供听觉反馈。
图 2 - Random Container 宏
现在,容器创建的问题解决了。接下来,要想办法诵读按键操作以及容器的名称和类型。
要想把每项按键操作都诵读出来,必须为每个字母和数字按键创建单独的语音合成宏。这样的话,安德烈才能在键入时收到反馈,以确保容器的正确命名和拼写。
图 3 - 数字和字母宏
为了识别所选容器的名称,安德烈需要将名称作为文本复制到剪贴板。之后,便可通过 Keyboard Meastro 中的语音合成功能来诵读剪贴板内容。
图 4 - 诵读系统剪贴板
为了区分容器类型,系统会扫描屏幕来确定活跃选区的左端,然后利用一系列条件语句来识别与容器对应的图标。在识别图标后,会将其名称复诵给安德烈。这样的话,他就能利用 OPTION+COMMAND+I 命令来识别所选容器类型了。
图 5 - 容器类型条件语句
(国内观赏视频通道)
导入音频文件
我们保留了用于导入音频文件的内置快捷方式 SHIFT+I,同时借助 VoiceOver 来诵读 Audio File Importer 窗口标题。据此,我们为安德烈制定了相应的工作流程:首先创建容器,然后将音频文件作为子对象导入。在这种情况下,先选中层级结构中的一组 Sound SFX 对象再创建父容器并不现实。
在 Audio File Importer 窗口中,我们使用了字符串命令来添加并导入文件。鉴于总共需要的命令数量有很多,不可能只靠修饰符热键进行操作。在层级结构之外,我们使用了以“W W”为开头的字符串命令。在本例中,按下“W W A D D”来添加文件,按下“W W I M P”来导入文件。在选择添加文件后,安德烈可使用 VoiceOver 打开 Finder 来浏览并选择所需文件。在导入后,会自动展开所有下级对象以将其显示在层级结构中。
图 6 - Add Files 宏
(国内观赏视频通道)
配置容器
要想配置容器设置,必须创建额外的宏。对此,学生需要针对工程来调整 Play Mode 和 Transitions 设置。在选中 Random Container 后,安德烈可按下 OPTION+COMMAND+C 来将 Play Mode 设为 Continuous,按下 OPTION+COMMAND+L 来切换 Loop 模式,按下 SHIFT+COMMAND+D 来将 Transitions 的 Type 设为 Delay。随后,系统会通过听觉反馈来提示输入 Duration(以秒为单位)。
图 7 - Delay Transitions 宏
要想配置 Sequence Container,安德烈需先按下 COMMAND+E 来转到 Contents Editor。该宏会自动选择 Contents Editor 中的第一个条目。随后,他需要按下 COMMAND+C 来诵读当前所选条目的名称。这样不仅可以识别所选条目,还会将其复制到剪贴板以便粘贴到播放列表中。若接着按下 OPTION+COMMAND+P,会自动单击播放列表区域,并按照纵向降序顺序粘贴复制的条目。在此之后,安德烈必须返回 Contents Editor,然后针对添加到播放列表的每个条目重复该流程。
图 8 - Add to Playlist 宏
(国内观赏视频通道)
创建 Event 并为其设定目标
要想创建新的 Event,安德烈需先按下 COMMAND+2 来转到 Events 选项卡。该宏会自动选中 Events 选项卡中的 Default Work Unit。若接着按下 OPTION+COMMAND+E,会单击工具栏中的 Create New Event 按钮,同时提供听觉反馈。
在创建 Event 之后,需要为其设定目标。若按下 SHIFT+COMMAND+P,会单击 Add 按钮并选择 Play 动作。若键入字符串“W W B F T”,可选择 Events Editor 中的动作,然后单击 Browse 按钮。在 Project Explorer 窗口打开后,VoiceOver 会诵读窗口标题。为了确保展开层级结构下的内容,宏会自动右键单击最上面的箭头并选择 Expand All。之后,安德烈可使用向上键和向下键来浏览层级结构,按下 COMMAND+C 来诵读当前选定项的名称,并在找到正确的目标后键入“W W O K”。
图 9 - Browse For Target 宏
(国内观赏视频通道)
SoundCaster
在创建并配置容器、导入音频文件、创建 Event 并为其设定目标后,安德烈需要将 Event 添加到 SoundCaster Session 中。虽然已经存在用于打开 SoundCaster 的内置快捷方式 SHIFT+S,但我们还是选择了使用字符串“W W O S C”,因为该宏的作用并不只是打开 SoundCaster。它还会调整窗口大小并重新定位到屏幕左上角部分以便精准设定目标。
在窗口打开后,必须创建新的 SoundCaster Session。通过键入字符串“W W N S C”,可执行宏来单击并创建新的 SoundCaster Session。之后,安德烈需要输入 SoundCaster Session 的名称。然后,可通过键入“W W E S C”来将 Event 移到 SoundCaster 中。该宏会在 Event Viewer 中单击并选中所有 Event,然后单击分组并将其拖到目标 SoundCaster 窗口中。
图 10 - Events to Soundcaster 宏
(国内观赏视频通道)
若要播放 SoundCaster Event,可键入字符串“W W P S C”。该宏会针对 SoundCaster 中当前高亮显示的 Event 单击“播放”按钮。若要停止播放,可键入字符串“W W S S C”。该宏会单击 SoundCaster 的全局停止按钮。
SoundBank
要想操作 SoundBank,安德烈需先在 Wwise 中更改布局。为此,可键入字符串“W W 2”(按下“W W 1”会恢复到 Designer 布局)。此字符串会执行相应的操作并提供听觉反馈。在进入 SoundBank 布局后,可通过按下 COMMAND+3 来转到 SoundBanks 选项卡(按下 COMMAND+2 转到 Events 选项卡,按下 COMMAND+1 转到 Audio 选项卡)。该宏会自动选中 SoundBanks 选项卡中的 Default Work Unit。之后,可按下 CONTROL+B 来创建新的 SoundBank。该宏会自动单击 Create New SoundBank 工具栏条目。
在创建 SoundBank 后,还需将其设为启用状态。为此,可键入字符串“W W E S B”。该宏会自动选中给定 SoundBank、Mac 平台和 English 语言。
图 11 - Enable SoundBank 宏
之后,需要将 Event 添加到 SoundBank 中。为此,可键入字符串“W W E T S”。该宏会在 Event Viewer 中单击选中所有 Event,然后将其拖到目标 SoundBank Editor 区域。
图 12 - Events to SoundBank 宏
安德烈可以键入“W W G E N”来生成 SoundBank。该宏会单击 Generate All 按钮来完成工程。
(国内观赏视频通道)
学生反映
“尽管很有挑战性,但我认为学习如何使用 Wwise 还是非常值得的。而且,我觉得这将给盲人和存在视力障碍的音频专业人员打开方便之门。要知道,这在创建这些宏之前是无法做到的。宏的设计非常巧妙,使用起来毫无障碍。我对 Wwise 和 Audiokinetic 产品很有信心,希望今后能学会使用它们完成更多操作。”– 安德烈•伍兹
工程示例
以下截图展示了安德烈在前两门游戏音频课程中完成的 Wwise 工程。
这个是 Sound Design for Games 课程当中的第二个工程。学生要为在 Unreal 中制作的科幻堡垒工程设计并整合各种循环和一次性音频素材。在学习中,安德烈成功地展示了自己对 Actor-Mixer、Blend Container、Random Container 和 Sequence Container 的正确使用。
图 13 - 科幻堡垒工程
这个是 Sound Design for Games 课程当中的最后一个工程。在学习中,安德烈成功创建了 Virtual Folder、循环 Sound SFX、Random Container,创建 "Play" 和 "Stop" Event 并为其设定了目标,还将其添加到了 SoundCaster Session 中。
图 14 - 平台游戏工程
这个是 Project and Portfolio II: Audio Production 课程当中的闹鬼墓地工程。为了构建这个 Unity 工程,安德烈需要创建并配置 Event 以及 Random Container 和 Blend Container。
图 15 - 闹鬼墓地工程
这个是 Project and Portfolio II: Audio Production 课程当中的科幻设施工程。为了构建这个 Unity 工程,安德烈需要创建并配置 Sequence Container、Blend Container 和 Random Container,然后创建 Event 并为其设定目标。
图 16 - 科幻设施工程
结语
最终,我们的无障碍实践成功了。借助 Wwise 宏,安德烈成功完成了前两门游戏音频课程。为此,我们总共创建了将近 200 个宏。不过,最后证实只有大概一半是完成课程所必需的。我们希望将来使用这一系统来教授更多存在视力障碍的学生,同时也会继续对其进行完善和改进。
这些宏是根据特定课程要求创建的,所以未必对所有 Wwise 用户都适用。不过,我们会继续研究如何将这种系统应用到课程之外。虽然近年来大家对游戏可访问性的关注越来越多,但对游戏开发者的无障碍操作的讨论却比较少。希望我们的实践能够促进进一步的交流,确保所有想打造游戏的人都能如愿以偿。
致谢
感谢安德烈•伍兹在第一次使用宏时表现出的耐心和细心。即便事情没有完全按照预期进行也从未灰心,而且在整个过程中还会设法提供有用的反馈。感谢实验室专员卡洛斯•马克斯 (Carlos Marquez) 教安德烈如何使用宏工具。感谢课程主任戴尔•斯坦普 (Dale Stump) 和马克•平斯基 (Marc Pinsky) 在课堂上给安德烈的指导和讲解。同时,也感谢系主任托马斯•欧文的建议、指点和反馈。另外,还要感谢学科主任布莱恩•史密瑟斯。如果没有他,也就不会有今天的成果。
评论