10 个版本

0.2.3 2022 年 11 月 17 日
0.2.2 2022 年 11 月 13 日
0.2.0 2022 年 4 月 26 日
0.1.8 2022 年 4 月 23 日

#1123 in 游戏开发

36 每月下载量
bevy-rrise 中使用

自定义许可证

1.5MB
2.5K SLoC

包含 (WOFF 字体,400KB) NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2,(WOFF 字体,135KB) FiraSans-Medium-8f9a781e4970d388.woff2,(WOFF 字体,130KB) FiraSans-Regular-018c141bf0843ffd.woff2,(WOFF 字体,82KB) SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2,(WOFF 字体,77KB) SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2,(WOFF 字体,45KB) SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2 和更多

Rrise

Crates.io MIT/Apache 2.0 Crates.io

什么是 Rrise?

Rrise 是 Wwise 的 Rust 绑定。它不是,也不希望成为一个完整的游戏引擎集成,而是一个利用此绑定的其他包的起点。

最终目标是提供给用 Rust 编写的游戏引擎(如 Bevy)一个安全的 Wwise API,而无需在 FFI 世界中翻腾。

关于您的期望...

这个包计划成为一个相当高级的包,为在成熟的 Rust 游戏引擎中实现令人兴奋的声音引擎工作铺平道路。话虽如此,我绝对不是 Rust 最擅长的人。如果您注意到一些可疑的实现或架构选择,请与我联系以改进这个包。Pull requests 欢迎接收:它们是被鼓励的

为了使用这个包,您应该检查下面的系统要求

功能

  • 在 Windows 10+ 上构建和运行
  • 在 WSL[^0]/Linux(在支持 Wwise 的发行版上)上构建和运行
  • (AD)PCM、Vorbis & Opus 播放
  • 初始化/更新/终止声音和音乐引擎
  • 发布简单事件(支持回调作为函数指针或闭包)
  • 设置源位置
  • RTPCs、开关、状态和触发器
  • 默认流式传输管理器利用 Wwise 的样本流式传输管理器
  • 从 Wwise 编写工具进行性能分析
  • 通过 cargo 特性动态和静态链接 Wwise 插件

[^0]: 要运行 bevy_music_visualizer 示例,需要在 Windows 11 上使用 WSL2

日志记录

Rrise 使用 log 包来满足其所有日志需求。有关如何使用它的信息,请参阅 log 的文档。

Wwise 项目标识符

检查 rrise-headers 包以自动生成您的 Wwise 项目结构作为命名空间化的 Rust 常量!

示例

  • 最小示例展示了如何初始化声音引擎、启动移动源并终止它
  • 展示RTPCs的多普勒效应示例
  • 具有频率可视化器和事件回调的音乐引擎示例

Bevy visualizer in video (click to play)

配置

配置标志

您可以通过在构建之前在 RUSTFLAGS 环境变量中设置以下 cfg 标志来选择要链接的Wwise配置

标志 AK_OPTIMIZED 通讯 描述
调试 --cfg wwdebug 对与AudioKinetic支持人员进行调试很有用
性能分析
(默认)
--cfg wwprofile
(或无)
在开发期间应使用此选项
发布 --cfg wwrelease 针对最终零售构建进行优化

如果 通讯 被禁用,则表示您无法从Wwise Authoring应用连接到正在运行的游戏。

有关更多信息,请参阅AudioKinetic文档

Wwise插件

您可以选择将Wwise插件链接为静态或动态

请注意,一些插件(如 AkMeterAkVorbisDecoderAkOpusDecoder)只能静态链接,并且不可用于动态链接。

有关每个平台支持的插件列表,请参阅此页面

动态链接

这是默认行为。Wwise插件(如 AkRoomVerbAkParametricEQMotion 等)将根据需要从各自的共享库中加载。

依赖于某些插件动态链接的项目需要部署各自的 授权 共享库到最终的可执行文件中(例如,您可以使用 构建脚本)。

您可以在 $WWISESDK/[platform]/[config]/bin 中找到这些共享库。

静态链接

您可能希望将某些Wwise插件静态链接,而不是在运行时从共享库中加载。在这种情况下,您可以使用Rrise的cargo功能启用此类插件的静态链接。

例如,如果您想静态链接 AkRoomVerb 插件,只需启用 AkRoomVerbFX 功能进行构建。当您的项目运行时,您可以在调试日志中检查插件是否已加载为静态版本

AkRoomVerbFX has been statically loaded successfully

注意:如果您已经构建了项目一次,您需要让Rrise的构建脚本重新运行以启用功能的静态链接。在构建之前,您可以通过更改 RRISE_RERUN_BUILD 环境变量的值来强制重新运行Rrise的构建脚本。您还可以使用 cargo clean & cargo build --features=The,Plugin,List 强制进行完整重建。

已知问题与限制

  • 如果您动态链接Wwise效果插件(默认行为),则在Windows上存在一个问题:如果 AkInitSettings::with_plugin_dll_path 提供的路径包含空格,则该文件夹中的DLL将无法被Wwise发现。
  • 在Linux上,当连接性能分析器时,您将在控制台看到这些消息(它们似乎完全无害)
.../SDK/Linux_x64/Profile/bin/libDefaultConversions.so: cannot open shared object file: No such file or directory
.../SDK/Linux_x64/Profile/bin/libAkSoundEngineDLL.so: cannot open shared object file: No such file or directory

要求

  • Rust nightly 1.61+(以支持 -wholearchive
    • 还测试了nightly 1.65.0,1.67.0
  • bindgen crate 要求
  • 已安装Wwise授权(免费、试用、商业等)版本
    • 已测试的Wwise版本
      • 2021.1.7
      • 2021.1.9
      • 2021.1.10
    • Wwise SDK(C++)
  • 在Windows上: MSVC[^1]
    • Windows 10 SDK
    • 构建工具(与Rust相同,用于cc包)
    • 支持Visual Studio 2015(14.0)、2017(15.0)、2019(16.0)、2022(17.0)[^2]部署平台
    • 确保将WWISESDK环境变量设置为Wwise安装的SDK文件夹
  • 在Linux上: clang
    • g++(用于libstdc++
    • 将SDK文件夹从Windows[^3]上的Wwise安装复制到您的Linux工作站(例如在/opt/wwise)
      • 确保将WWISESDK环境变量设置为该文件夹

[^1]:未在其他编译器(如MinGW或Clang)上测试

[^2]:只有Wwise 2021.1.10+支持VS2022。使用VS2022和比2021.1.10更旧的Wwise版本编译此crate将失败。

[^3]:Audiokinetic不提供其SDK的直接下载:您只能通过其启动器安装它。然而,这个启动器仅在Windows和MacOS上可用,因此您需要在虚拟机或类似环境中安装它,才能在Linux上使用此crate。

短期路线图

  • 空间模块基本API和示例
  • 审查/改进架构

Wwise和Wwise标志是Audiokinetic Inc.的商标,在美国和其他国家注册。

本项目与Audiokinetic无关。

您仍需要安装授权的Wwise版本才能编译和运行此项目。您需要有效的Wwise许可证才能分发基于此crate的任何项目。

依赖项

~3–25MB
~340K SLoC