## 《极限竞速:地平线》系列 UDP 数据包完整定义 ### 基础信息 | 属性 | 值 | |------|-----| | **协议** | UDP(单向发送,游戏不接收数据) | | **包大小** | **324 字节(FH6)/ 约 311 字节(FH5)** | | **发送频率** | 等于游戏帧率 | | **字节序** | **Little Endian**(小端序) | | **数据起始** | 玩家开始驾驶后发送,菜单/暂停/回放时不发送 | > FH6 和 FH5 的数据包基本兼容,主要差异是 FH6 新增了 `CarGroup`、`SmashableVelDiff`、`SmashableMass` 三个字段。 --- ### 类型符号说明 | 符号 | 含义 | 示例 | |------|------|------| | `S8` / `S32` | 有符号整数(signed) | S8 范围 -128~127 | | `U8` / `U16` / `U32` | 无符号整数(unsigned) | U8 范围 0~255 | | `F32` | 32位浮点数(float) | 小端序 | --- ### 完整数据包结构(按顺序) #### 第 1 部分:状态和时间(8 字节) | 偏移 | 大小 | 类型 | 字段 | 说明 | |------|------|------|------|------| | 0 | 4 | S32 | `IsRaceOn` | 1=比赛中,0=菜单/停止 | | 4 | 4 | U32 | `TimestampMS` | 时间戳(毫秒,会溢出归零) | #### 第 2 部分:引擎数据(12 字节) | 偏移 | 大小 | 类型 | 字段 | 说明 | |------|------|------|------|------| | 8 | 4 | F32 | `EngineMaxRpm` | 引擎最大转速 | | 12 | 4 | F32 | `EngineIdleRpm` | 引擎怠速转速 | | 16 | 4 | F32 | `CurrentEngineRpm` | 当前引擎转速 | #### 第 3 部分:加速度与速度(24 字节,车身坐标系 X=右, Y=上, Z=前) | 偏移 | 大小 | 类型 | 字段 | |------|------|------|------| | 20 | 4 | F32 | `AccelerationX` | | 24 | 4 | F32 | `AccelerationY` | | 28 | 4 | F32 | `AccelerationZ` | | 32 | 4 | F32 | `VelocityX` | | 36 | 4 | F32 | `VelocityY` | | 40 | 4 | F32 | `VelocityZ` | #### 第 4 部分:角速度与方向(24 字节) | 偏移 | 大小 | 类型 | 字段 | 说明 | |------|------|------|------|------| | 44 | 4 | F32 | `AngularVelocityX` | 俯仰(rad/s) | | 48 | 4 | F32 | `AngularVelocityY` | 偏航(rad/s) | | 52 | 4 | F32 | `AngularVelocityZ` | 侧倾(rad/s) | | 56 | 4 | F32 | `Yaw` | 偏航角(弧度) | | 60 | 4 | F32 | `Pitch` | 俯仰角(弧度) | | 64 | 4 | F32 | `Roll` | 侧倾角(弧度) | #### 第 5 部分:悬挂行程(16 字节,归一化 0=最大拉伸, 1=最大压缩) | 偏移 | 大小 | 类型 | 字段 | |------|------|------|------| | 68 | 4 | F32 | `NormalizedSuspensionTravelFrontLeft` | | 72 | 4 | F32 | `NormalizedSuspensionTravelFrontRight` | | 76 | 4 | F32 | `NormalizedSuspensionTravelRearLeft` | | 80 | 4 | F32 | `NormalizedSuspensionTravelRearRight` | #### 第 6 部分:轮胎滑移比(16 字节,0=100%抓地力,|ratio|>1=失去抓地力) | 偏移 | 大小 | 类型 | 字段 | |------|------|------|------| | 84 | 4 | F32 | `TireSlipRatioFrontLeft` | | 88 | 4 | F32 | `TireSlipRatioFrontRight` | | 92 | 4 | F32 | `TireSlipRatioRearLeft` | | 96 | 4 | F32 | `TireSlipRatioRearRight` | #### 第 7 部分:车轮转速(16 字节,弧度/秒) | 偏移 | 大小 | 类型 | 字段 | |------|------|------|------| | 100 | 4 | F32 | `WheelRotationSpeedFrontLeft` | | 104 | 4 | F32 | `WheelRotationSpeedFrontRight` | | 108 | 4 | F32 | `WheelRotationSpeedRearLeft` | | 112 | 4 | F32 | `WheelRotationSpeedRearRight` | #### 第 8 部分:车轮状态(16 字节,0/1布尔值) | 偏移 | 大小 | 类型 | 字段 | |------|------|------|------| | 116 | 4 | S32 | `WheelOnRumbleStripFrontLeft` | | 120 | 4 | S32 | `WheelOnRumbleStripFrontRight` | | 124 | 4 | S32 | `WheelOnRumbleStripRearLeft` | | 128 | 4 | S32 | `WheelOnRumbleStripRearRight` | #### 第 9 部分:涉水深度(16 字节,FH5 为深度值,FH6 为 0/1) | 偏移 | 大小 | 类型 | 字段 | |------|------|------|------| | 132 | 4 | S32/F32 | `WheelInPuddleFrontLeft` | | 136 | 4 | S32/F32 | `WheelInPuddleFrontRight` | | 140 | 4 | S32/F32 | `WheelInPuddleRearLeft` | | 144 | 4 | S32/F32 | `WheelInPuddleRearRight` | > ⚠️ FH5 为 F32(水深值),FH6 为 S32(0/1布尔值) #### 第 10 部分:路面震动反馈(16 字节) | 偏移 | 大小 | 类型 | 字段 | |------|------|------|------| | 148 | 4 | F32 | `SurfaceRumbleFrontLeft` | | 152 | 4 | F32 | `SurfaceRumbleFrontRight` | | 156 | 4 | F32 | `SurfaceRumbleRearLeft` | | 160 | 4 | F32 | `SurfaceRumbleRearRight` | #### 第 11 部分:轮胎滑移角(16 字节) | 偏移 | 大小 | 类型 | 字段 | |------|------|------|------| | 164 | 4 | F32 | `TireSlipAngleFrontLeft` | | 168 | 4 | F32 | `TireSlipAngleFrontRight` | | 172 | 4 | F32 | `TireSlipAngleRearLeft` | | 176 | 4 | F32 | `TireSlipAngleRearRight` | #### 第 12 部分:轮胎复合滑移(16 字节) | 偏移 | 大小 | 类型 | 字段 | |------|------|------|------| | 180 | 4 | F32 | `TireCombinedSlipFrontLeft` | | 184 | 4 | F32 | `TireCombinedSlipFrontRight` | | 188 | 4 | F32 | `TireCombinedSlipRearLeft` | | 192 | 4 | F32 | `TireCombinedSlipRearRight` | #### 第 13 部分:实际悬挂行程(16 字节,单位:米) | 偏移 | 大小 | 类型 | 字段 | |------|------|------|------| | 196 | 4 | F32 | `SuspensionTravelMetersFrontLeft` | | 200 | 4 | F32 | `SuspensionTravelMetersFrontRight` | | 204 | 4 | F32 | `SuspensionTravelMetersRearLeft` | | 208 | 4 | F32 | `SuspensionTravelMetersRearRight` | #### 第 14 部分:车辆信息(20 字节) | 偏移 | 大小 | 类型 | 字段 | 说明 | |------|------|------|------|------| | 212 | 4 | S32 | `CarOrdinal` | 车辆唯一ID | | 216 | 4 | S32 | `CarClass` | 等级 0(D) ~ 7(X) | | 220 | 4 | S32 | `CarPerformanceIndex` | 性能指数 100~999 | | 224 | 4 | S32 | `DrivetrainType` | 0=FWD, 1=RWD, 2=AWD | | 228 | 4 | S32 | `NumCylinders` | 引擎气缸数 | #### 第 15 部分:FH6 新增字段(12 字节)⚠️ | 偏移 | 大小 | 类型 | 字段 | 说明 | |------|------|------|------|------| | 232 | 4 | U32 | `CarGroup` | 车辆组标识(FH6新增) | | 236 | 4 | F32 | `SmashableVelDiff` | 可破坏物体碰撞速度损失(m/s) | | 240 | 4 | F32 | `SmashableMass` | 碰撞物体质量(kg) | > ⚠️ **FH5 没有这三个字段**,此位置为 12 字节的占位数据(`HorizonPlaceholder`) #### 第 16 部分:坐标与速度(16 字节) | 偏移 | 大小 | 类型 | 字段 | 说明 | |------|------|------|------|------| | 244 | 4 | F32 | `PositionX` | 世界坐标 X(米) | | 248 | 4 | F32 | `PositionY` | 世界坐标 Y(米) | | 252 | 4 | F32 | `PositionZ` | 世界坐标 Z(米) | | 256 | 4 | F32 | `Speed` | 速度(m/s) | #### 第 17 部分:动力与温度(24 字节) | 偏移 | 大小 | 类型 | 字段 | 说明 | |------|------|------|------|------| | 260 | 4 | F32 | `Power` | 功率(瓦特) | | 264 | 4 | F32 | `Torque` | 扭矩(牛·米) | | 268 | 4 | F32 | `TireTempFrontLeft` | 轮胎温度 | | 272 | 4 | F32 | `TireTempFrontRight` | 轮胎温度 | | 276 | 4 | F32 | `TireTempRearLeft` | 轮胎温度 | | 280 | 4 | F32 | `TireTempRearRight` | 轮胎温度 | #### 第 18 部分:增压与燃油(8 字节) | 偏移 | 大小 | 类型 | 字段 | 说明 | |------|------|------|------|------| | 284 | 4 | F32 | `Boost` | 涡轮增压值(PSI,高于大气压) | | 288 | 4 | F32 | `Fuel` | 燃油量(0.0~1.0) | #### 第 19 部分:里程与圈时(28 字节) | 偏移 | 大小 | 类型 | 字段 | 说明 | |------|------|------|------|------| | 292 | 4 | F32 | `DistanceTraveled` | 总行驶距离(米) | | 296 | 4 | F32 | `BestLap` | 最佳圈时(秒) | | 300 | 4 | F32 | `LastLap` | 上一圈用时(秒) | | 304 | 4 | F32 | `CurrentLap` | 当前圈用时(秒) | | 308 | 4 | F32 | `CurrentRaceTime` | 总比赛时间(秒) | #### 第 20 部分:比赛信息(6 字节) | 偏移 | 大小 | 类型 | 字段 | 说明 | |------|------|------|------|------| | 312 | 2 | U16 | `LapNumber` | 已完成圈数 | | 314 | 1 | U8 | `RacePosition` | 当前排名位置 | #### 第 21 部分:玩家输入(6 字节,值范围 0~255) | 偏移 | 大小 | 类型 | 字段 | 说明 | |------|------|------|------|------| | 315 | 1 | U8 | `Accel` | 油门(0~255) | | 316 | 1 | U8 | `Brake` | 刹车(0~255) | | 317 | 1 | U8 | `Clutch` | 离合器(0~255) | | 318 | 1 | U8 | `HandBrake` | 手刹(0~255) | | 319 | 1 | U8 | `Gear` | 当前档位 | #### 第 22 部分:转向与AI(3 字节) | 偏移 | 大小 | 类型 | 字段 | 说明 | |------|------|------|------|------| | 320 | 1 | S8 | `Steer` | 转向(-127左 ~ 0中 ~ 127右) | | 321 | 1 | S8 | `NormalizedDrivingLine` | 归一化赛道线(-127~127) | | 322 | 1 | S8 | `NormalizedAIBrakeDifference` | AI刹车差异(-127~127) | --- ### 快速参考:字段总数 - **FH6**:约 77 个字段,总计 **324 字节** - **FH5**:约 74 个字段(比 FH6 少 CarGroup/SmashableVelDiff/SmashableMass),总计 **约 311 字节** - **FH4**:和 FH5 基本一致