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
什么是 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的多普勒效应示例
- 具有频率可视化器和事件回调的音乐引擎示例
配置
配置标志
您可以通过在构建之前在 RUSTFLAGS
环境变量中设置以下 cfg
标志来选择要链接的Wwise配置
标志 | AK_OPTIMIZED |
通讯 | 描述 | |
---|---|---|---|---|
调试 | --cfg wwdebug |
✕ | ✔ | 对与AudioKinetic支持人员进行调试很有用 |
性能分析 (默认) |
--cfg wwprofile (或无) |
✕ | ✔ | 在开发期间应使用此选项 |
发布 | --cfg wwrelease |
✔ | ✕ | 针对最终零售构建进行优化 |
如果 通讯 被禁用,则表示您无法从Wwise Authoring应用连接到正在运行的游戏。
有关更多信息,请参阅AudioKinetic文档。
Wwise插件
您可以选择将Wwise插件链接为静态或动态。
请注意,一些插件(如 AkMeter、AkVorbisDecoder 和 AkOpusDecoder)只能静态链接,并且不可用于动态链接。
有关每个平台支持的插件列表,请参阅此页面。
动态链接
这是默认行为。Wwise插件(如 AkRoomVerb、AkParametricEQ、Motion 等)将根据需要从各自的共享库中加载。
依赖于某些插件动态链接的项目需要部署各自的 授权 共享库到最终的可执行文件中(例如,您可以使用 构建脚本)。
您可以在 $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++)
- 已测试的Wwise版本
- 在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