Mhytee/Trueforce-For-All

GitHub: Mhytee/Trueforce-For-All

通过逆向罗技 Trueforce 线路协议,使受支持的罗技方向盘在任何 SimHub 游戏中获得引擎震动、路面颠簸、碰撞冲击等多源触觉反馈的 SimHub 插件。

Stars: 21 | Forks: 4

# Trueforce For All **兼容罗技 Trueforce 的触觉反馈,适用于任何受 SimHub 支持的游戏。** 罗技仅为少数几款官方支持的游戏提供 Trueforce 功能。这款插件可使其在所有支持 SimHub 的游戏中生效。它基于 [mescon Linux 驱动项目][mescon] 逆向工程的线路协议构建。 关于本项目的性质说明:原版 Windows 代码基于 [mescon Linux 驱动项目][mescon] 从 USB 流量中逆向工程的线路协议构建。本项目未使用或分发任何罗技的源代码、固件或专有资产。采用 GPL-2.0 许可证,与 mescon 的工作相同。罗技的商标已在下文部分中致谢;本项目与其无关。 ## 支持的方向盘 | 方向盘 | USB ID | |---|---| | Logitech G PRO Racing Wheel (Xbox/PC) | `046D:C272` | | Logitech G PRO Racing Wheel (PS/PC) | `046D:C268` | | Logitech RS50 | `046D:C276` | G PRO 和 RS50 使用字节完全相同的 Trueforce 数据包。未来可能会增加对 G923 的支持。 ## 功能说明 该插件在 SimHub 内部运行,并实时驱动方向盘的 Trueforce 触觉马达,混合了多种信号源: - **遥测数据派生效果**:从实时游戏数据合成。 - **引擎脉冲**:根据引擎点火模式产生的震动,源自 RPM 和气缸数(在可能的情况下按赛车自动检测)。怠速时提供轻柔的嗡嗡声;更高的 RPM 会同时提升音调和强度。 - **换挡**:每当换挡时产生短促的低频撞击感。 - **ABS 点击**:ABS 启动时可配置的触觉反馈。 - **维修区限速器**:限速器启动时发出可配置的脉冲蜂鸣声。 - **DRS**:尾翼打开时在上升沿发出短促的啁啾声,并在 DRS 保持激活期间提供可选的持续颤振。在不公开该标志的游戏中保持静音。 - **路面颠簸**:由垂直加速度触发,因此路肩和崎岖地形产生的震动会传递到方向盘。在 Forza 中,直接读取每个轮胎的表面震动和路肩震动带字段,在起伏通道之上提供更丰富、更准确的连续路面感觉。 - **牵引力损失**:在抓地力突破时(车轮打滑、抱死、漂移)产生轮胎尖啸触觉反馈。在提供该数据的游戏(AC)中直接从每个车轮的滑移率读取;在 SimHub 通用路径中,通过车轮对地速度加上横摆率/横向 G 值偏差检查进行推断。 - **碰撞**:撞击时产生振幅成比例的撞击感,采用软拐点曲线使更剧烈的碰撞感觉更强烈而不至于产生危险,外加一个不应期窗口以防止多帧碰撞造成的卡顿。 - **音频派生效果**:WASAPI loopback 捕获游戏的音频输出(引擎、轮胎、撞击声)并将其作为低延迟触觉反馈输入到方向盘中。让您能感受到遥测数据未公开的细节,并且由于直接针对游戏进程进行捕获,即使在不输出遥测数据的游戏中也能正常工作。 - **FFB 直通。**当游戏已经通过标准 HID++ 力反馈驱动方向盘时(例如 Assetto Corsa),插件会透明地截取 USB 总线上的该信号,并将其镜像到 Trueforce 流中,从而使得转向负载能够与上述触觉效果共存。 所有这些都可以通过 SimHub 的设置 UI 针对每个游戏、每辆车进行配置:主增益、单个效果调整、连续和瞬态效果之间的侧链躲避,以及可保存的预设库。 ## FFB 尖峰抑制 某些游戏(Assetto Corsa 是我们见过的最严重的情况)会输出与安全或舒适度极不成比例的路肩和碰撞 FFB 尖峰。在强力基座上,它们可能会毁掉你的赛车线或在一场比赛中导致真正的手腕劳损。iRacing 具有内置的柔化器;大多数其他游戏则没有。该插件在 USB 总线上截取游戏传出的 FFB,并仅衰减尖峰,因此路肩带来的感觉是自信的推力而不是猛拽,同时持续的转向负载和重量转移则原封不动地通过。适用于任何 FFB 通过标准 HID++ 传输的游戏。需要上述支持的 Trueforce 方向盘之一(衰减后的信号通过 Trueforce 端点到达方向盘)。即使关闭我们所有其他效果,它本身也非常实用。 ## 安装 最简单的方法是使用捆绑的安装程序: 1. 从 [最新版本][releases] 下载 `TrueforceForAll-Setup.exe`。 2. 如果 SimHub 正在运行,请将其关闭。 3. 运行安装程序。它会自动检测 SimHub,将插件文件复制到 SimHub 安装文件夹中,并且(如果尚未安装 USBPcap)会自动运行捆绑的 USBPcap 安装程序。 4. 关闭 Logitech G HUB(它会占用方向盘的 HID 接口)。 5. 启动 SimHub。该插件会在首次运行时自动启用。 安装程序在卸载时非常保守:它只移除我们的文件,而保留 SimHub、USBPcap 和共享依赖项(HidSharp、NAudio),因此依赖它们的其他插件能继续正常工作。 ## 系统要求 - Windows 10 / 11 - [SimHub](https://www.simhubdash.com/) - 受支持的罗技方向盘(见上表) - [USBPcap](https://github.com/desowin/usbpcap),如果您之前没有安装,安装程序会将其捆绑。用于将游戏现有的 FFB 信号镜像到 Trueforce 流中,使两者共存。 - 游戏期间**关闭** Logitech G HUB(它会占用 HID 接口并阻止我们与方向盘通信) ## 针对特定游戏的增强 默认情况下,该插件运行在 SimHub 的通用 60 Hz 遥测数据流上,该数据流包含了所有核心效果所需的标准字段。 SimHub 本身是免费的,但 60 Hz 数据流需要 SimHub 的授权副本,这需要支付一笔小额的一次性费用。 部分游戏会直接从游戏的遥测数据中读取,绕过了 SimHub 的限制以及对授权副本的需求(如 Assetto Corsa、Forza Horizon 4 和 5)。 **Assetto Corsa** 拥有专用路径:直接以 AC 原生的 333 Hz 物理速率读取共享内存(以 1 kHz 频率轮询,因此事件在写入后 1 毫秒内即可被捕获)。这种更高的刷新率使得路肩碰撞、路面颠簸、牵引力损失和其他触觉效果明显比 SimHub 的 60 Hz 数据流更加清晰和响应迅速。 **Forza Horizon 4 和 5** 也有一个直接的 UDP Data Out 读取器,可获取用于表面纹理、震动带和路肩碰撞效果的各轮胎字段。这些额外的表面信息以 60 Hz 的频率更新,但能够比其他某些游戏提供更具深度的表面细节效果。我们提供了一种向前兼容的常驻监听模式,可在 SimHub 为 FH6 添加游戏名称检测之前的发售首日直接使用。 未来将随时间推移添加更多针对特定游戏的增强/绕过机制。 ## 自动发现 在启动时,插件会: 1. 枚举已连接的 HID 设备,找到方向盘的 Trueforce 接口(`MI_02`,供应商使用页 `0xFFFD`)。 2. 枚举 USBPcap 接口并解析注入的设备描述符,找出方向盘连接的根集线器以及本次启动时操作系统为其分配的 USB 地址。 3. 自动启动 FFB 截取和 Trueforce 数据流。 如果未检测到方向盘(G HUB 仍在运行、未安装 USBPcap、方向盘未插入),插件会记录一条清晰的状态消息并优雅地自行禁用。 ## 已知限制 - **Logitech G HUB 必须在插件使用的整个期间保持关闭**,而不仅仅是在启动时。G HUB 会占用方向盘的 HID 接口并阻止我们与其通信。如果在会话中途打开了 G HUB,请将其关闭并重新加载 SimHub 插件以重新连接。 - **方向盘上的 Trueforce 级别拨盘不起作用**,当该插件正在驱动 Trueforce 时。一旦我们接管了 ep3 数据流,方向盘自身的 Trueforce 强度缩放将不再响应拨盘操作。请改用插件内的主增益和各效果增益控制来设置强度。 - **目前仅在 G PRO + AC + Wreckfest 2 + FH5 上进行了验证**。其他受支持的方向盘(RS50)和其他受 SimHub 支持的游戏应该可以工作,但尚未经过我们的测试。欢迎提供反馈。 ## 工作原理 线路协议(初始化序列和 ep3 流传输格式)由 [mescon Linux 驱动项目][mescon] 逆向工程得出。本代码库是基于此的 Windows 端黏合剂:一个 SimHub 插件,负责打开方向盘、合成遥测/音频派生的效果、处理针对不同游戏的调整,并运行基于 USBPcap 的 FFB 截取程序,将游戏的 HID++ 输出镜像到 Trueforce ep3 数据流的 6-9 字节中。 ## 许可证 GPL-2.0-only。参见 [LICENSE](LICENSE)。 线路协议和初始化序列源自 [mescon Linux 驱动项目][mescon],同样采用 GPL-2.0 许可证。 ## 致谢 - **[mescon/logitech-rs50-linux-driver][mescon]**:对方向盘的驱动程序和线路协议进行了逆向工程。如果没有他们的工作,这个项目就不会存在。 - 由 Tomasz Mon 开发的 **[USBPcap][usbpcap]**:内核模式的 USB 过滤器,使我们能够截取方向盘的总线流量以实现 FFB 直通。 - **[mdjarv/assettocorsasharedmemory][acshmem]**:AC 共享内存布局的社区参考,用于验证我们的 SPageFilePhysics 字段偏移量。 - **[HidSharp][hidsharp]**:用于方向盘通信控制端的跨平台 HID 库。 - **[NAudio][naudio]**:用于每个进程的 loopback 捕获管道的音频 I/O 库。 - **[SimHub][simhub]**:宿主应用程序。本插件为非官方性质,与 SimHub 项目无关。 Logitech、Trueforce、G PRO 和 RS50 是 Logitech 的商标。本项目与 Logitech 没有关联、未受其认可,也未经其赞助。
标签:GPL-2.0, G PRO Racing Wheel, RS50, SimHub, Trueforce, USB通信, 云资产清单, 力反馈, 实时处理, 实时遥测, 开源, 方向盘, 游戏外设, 游戏插件, 硬件协议, 罗技, 触觉反馈, 赛车模拟, 赛车游戏, 逆向工程