View Issue Details

IDProjectCategoryView StatusLast Update
0003990Multi Theft Auto : San AndreasSynchronizationpublic2009-03-01 15:33
ReporterccwAssigned ToIJs 
PrioritynormalSeverityminorReproducibilityN/A
Status resolvedResolutionfixed 
Product Version 
Target Version1.0Fixed in Version1.0 
Summary0003990: Unreliable packets can arrive out of order
Description

Most packets are marked as reliable, and are received at the other end in the order they were sent.
Some packets are marked as unreliable and are are sometimes lost.
However, unreliable packets sometimes turn up either before or after where they would have been (order wise), had they been sent as reliable.
Are these out of order packets the cause of any current issues?

Client to server unreliable packets:
PACKET_ID_PLAYER_VEHICLE_PURESYNC
PACKET_ID_UNOCCUPIED_VEHICLE_SYNC
PACKET_ID_PLAYER_PURESYNC
PACKET_ID_PLAYER_KEYSYNC
PACKET_ID_CAMERA_SYNC
PACKET_ID_RPC
PACKET_ID_PED_SYNC

Server to client unreliable packets:
CVehiclePuresyncPacket
CUnoccupiedVehicleSyncPacket
CReturnSyncPacket
CPlayerPuresyncPacket
CPlayerPingsPacket
CPedSyncPacket
CKeysyncPacket
CCameraSyncPacket
CVoiceDataPacket

TagsNo tags attached.

Activities

IJs

2009-03-01 15:09

administrator   ~~0008435

server->client packets that do NOT have the PACKET_SEQUENCED flag set:

  • PACKET_ID_CAMERA_SYNC
  • PACKET_ID_PLAYER_KEYSYNC (0)
  • PACKET_ID_PED_SYNC
  • PACKET_ID_PLAYER_PINGS (0)
  • PACKET_ID_PLAYER_PURESYNC
  • PACKET_ID_RETURN_SYNC (0)
  • PACKET_ID_UNOCCUPIED_VEHICLE_SYNC
  • PACKET_ID_PLAYER_VEHICLE_PURESYNC

client->server packets that are PACKET_RELIABILITY_UNRELIABLE (not sequenced):

  • PACKET_ID_UNOCCUPIED_VEHICLE_SYNC
  • PACKET_ID_PED_SYNC

As you can see this doesn't match up.

Packets that are going to be changed will have to go from PACKET_RELIABILITY_UNRELIABLE to PACKET_RELIABILITY_UNRELIABLE_SEQUENCED (for MTA10) and need the PACKET_SEQUENCED flag in class::GetFlags (for MTA10_Server).

I reckon all sync packets will have to be changed to unreliable sequenced, as we cannot afford earlier packets to end up late and invalidated (although I believe some time context checking is done in some cases).

IJs

2009-03-01 15:18

administrator   ~~0008436

Packets that have been marked with an "x" have been set to sequence (unreliably) in r370:

server->client:
x PACKET_ID_CAMERA_SYNC
x PACKET_ID_PLAYER_KEYSYNC (0)
x PACKET_ID_PED_SYNC

  • PACKET_ID_PLAYER_PINGS (0)
    x PACKET_ID_PLAYER_PURESYNC
  • PACKET_ID_RETURN_SYNC (0)
    x PACKET_ID_UNOCCUPIED_VEHICLE_SYNC
    x PACKET_ID_PLAYER_VEHICLE_PURESYNC

client->server:
x PACKET_ID_UNOCCUPIED_VEHICLE_SYNC
x PACKET_ID_PED_SYNC

Issue History

Date Modified Username Field Change