#telemetry #udp #protocols #codemasters #friends #f1 #dirt

cm-telemetry

为 Codemasters(及其好友)游戏实现遥测 UDP 协议

11 个版本 (稳定)

2.3.1 2023 年 2 月 20 日
2.2.0 2020 年 7 月 30 日
1.0.2 2020 年 7 月 14 日
0.2.1 2020 年 7 月 12 日
0.1.1 2020 年 7 月 12 日

网络编程 中排名 #1257

每月下载量 32

MIT 许可证

105KB
3K SLoC

cm-telemetry

实现 Codemasters(及其好友)UDP 遥测协议并提供与之交互的抽象。

支持的游戏

  • F1 2020
  • F1 2022
  • Dirt Rally 2.0

示例

use cm_telemetry::f1::f1_2020::F1_2020;
use cm_telemetry::TelemetryServer;

fn main() {
    let server =
        TelemetryServer::<F1_2020>::new("127.0.0.1:20777").expect("failed to bind to address");

    loop {
        let event = server.next();

        if let Err(e) = event {
            println!("error: {:?}", e);
            continue;
        }

        match event.unwrap() {
            F1_2020::FinalClassification(_data) => println!("Received FinalClassification packet"),
            F1_2020::LobbyInfo(_data) => println!("Received LobbyInfo packet"),
            _ => ()
        }

使用外部定义的游戏

你可以通过在一个类型上实现 Event 特性,然后使用 cm_telemetry::Server::<T>::new(addr) 来初始化它,以支持(库外部)的新游戏。

欢迎 PR :)

进一步阅读

https://forums.codemasters.com/topic/50942-f1-2020-udp-specification/ https://answers.ea.com/t5/General-Discussion/F1-22-UDP-Specification/td-p/11551274

依赖

~2.5MB
~53K SLoC