Skip to content

Ping / Echo / Ack / KeepAlive

These are connection health and setup messages. Unlike sensor input, they are not sent on a recurring basis during gameplay.

Ping

A latency probe sent between peers.

  • Class ID: 11
  • Channel: 0 (Broadcast)
  • Packet Type: Ping (1)

Wire Format

After the object envelope, a Ping contains:

# Field Type Description
1 deviceId UTF The sender's device identifier.
2 address object A BMAddress (class ID 1) with the sender's network address.

When the receiver gets a Ping, it changes the packet type to Echo (3) and sends it back. The original timestamp in the BMPacket envelope is preserved, allowing RTT calculation.

AckPacket

A connection acknowledgment sent by the game host to the controller after a deviceConnectRequested relay. Not to be confused with a TCP ACK.

  • Class ID: 9
  • Packet Type: Ack (2)

Wire Format

After the object envelope, an AckPacket contains:

# Field Type Description
1 device object The game host's Device identity (class ID varies by platform).
2 deviceAddress object A BMAddress (class ID 1) with the game host's connection address and ports.

Upon receiving an Ack, the controller registers the game host and establishes a direct connection using the provided address.

KeepAlive

A heartbeat signal sent to maintain the connection. KeepAlive packets use packet type 5 and carry no message payload (hasMessage is false). No response is expected.