Skip to content

Networking

widberg edited this page Oct 21, 2024 · 15 revisions

XLive is used for matchmaking and facilitating peer-to-peer communication. Since the online functionality is peer-to-peer, the "server" is included in the game binary. FUEL uses port 1000 over UDP, Games for Windows Live uses separate ports listed on the portforward.com GFWL page. When using the official GFWL version, if available, UPnP is used and port forwarding is unnecessary. The string "RaceNetV0.041" can be found in the game and is transmitted.

A Wireshark dissector for FUEL's protocol can be found in the widberg/racenet-dissector repository.

Packet Format

Name Offset Type
size 0 u16
index 2 u8
hash 3 u16
decompressedSize 5 u16
data 7 u8[size - 5]

size is the total size of all fields after it. index is incremented for every unique packet sent, retransmissions are not counted. hash is the lower u16 of the RaceNet CRC-32 of all the data following it. If the decompressedSize is 24 or greater, the data is compressed; otherwise, the data is not compressed and can be read as is.

Including the size and hash fields seems unnecessary considering the UDP header already contains a length and checksum.

The compression algorithm used comes from Using PPMD for compression which itself is adapted from, but incompatible with, Dmitry Shkarin's PPMdE. There is no additional header beyond the fields already listed above. The nOrder is 5 and nSub is 0x10000 bytes (NOT MBytes).

Home
FAQ

For FMTK Users and Mod Developers

Read the Docs

For FMTK Developers

Asobo BigFile Format Specification
Asobo Classes
      Animation_Z
      Binary_Z
      Bitmap_Z
      Camera_Z
      CollisionVol_Z
      Fonts_Z
      GameObj_Z
      GenWorld_Z
      GwRoad_Z
      Keyframer*_Z
      Light_Z
      LightData_Z
      Lod_Z
      LodData_Z
      Material_Z
      MaterialAnim_Z
      MaterialObj_Z
      Mesh_Z
      MeshData_Z
      Node_Z
      Omni_Z
      Particles_Z
      ParticlesData_Z
      RotShape_Z
      RotShapeData_Z
      Rtc_Z
      Skel_Z
      Skin_Z
      Sound_Z
      Spline_Z
      SplineGraph_Z
      Surface_Z
      SurfaceDatas_Z
      UserDefine_Z
      Warp_Z
      World_Z
      WorldRef_Z
Asobo File Format Idioms
Asobo CRC32
Asobo LZ Compression
Asobo Arithmetic Coding Compression
Asobo Save Game File Format Specification
Asobo Audio Formats
TotemTech/ToonTech/Zouna/ACE/BSSTech/Opal Timeline
Zouna Modding Resources
Miscellaneous

Clone this wiki locally