Control Messages
Similar to DML protocols, there is a category for control messages which Imlight identifies with a protocol id of 0
.
These messages are used to establish a proper session between the game client and a server through a handshake process.
Session Offer
OpCode: 0
Name | Type | Description |
---|---|---|
SessionId | USHRT | The session ID allocated by the server |
Timestamp Upper | INT | The upper 4 bytes of a timestamp. |
Timestamp Lower | INT | The lower 4 bytes of a timestamp. |
Milliseconds | UINT | The number of milliseconds into the current second. |
Figure A.I -- The SessionOffer
message structure.
WARNING
There are additional fields in this message that are not understood by us yet. They relate to the packet encryption introduced in 2021. However in the absence of these fields, a game/client session can still be initiated without encryption.
Keep Alive
OpCode: 3
Name | Type | Description |
---|---|---|
SessionId | USHRT | The agreed upon session ID. |
Milliseconds | UINT | The number of milliseconds into the current second. |
ElapsedSessionTime | USHRT | The amount of time elapsed on the current session |
Figure A.II -- The KeepAlive
message structure.
Keep Alive (Server)
OpCode: 3
Name | Type | Description |
---|---|---|
SessionId | USHRT | The agreed upon session ID. |
Milliseconds | UINT | The number of milliseconds into the current second. |
Figure A.III -- The KeepAlive
(server) message structure.
This packet is sent from the server to the client, and will always have a SessionId
field of 0
.
Keep Alive Response
OpCode: 4
Name | Type | Description |
---|---|---|
SessionId | USHRT | The agreed upon session ID. |
Milliseconds | UINT | The number of milliseconds into the current second. |
ElapsedSessionTime | USHRT | The amount of time elapsed on the current session |
Figure A.I -- The KeepAliveResponse
message structure.
Session Accept
OpCode: 5
Name | Type | Description |
---|---|---|
Reserved | USHRT | ... |
Timestamp Upper | INT | The upper 4 bytes of a timestamp. |
Timestamp Lower | INT | The lower 4 bytes of a timestamp. |
Milliseconds | UINT | The number of milliseconds into the current second. |
SessionId | USHRT | The agreed upon session ID. |
Figure A.IV -- The SessionAccept
message structure.
WARNING
There are additional fields in this message that are not understood by us yet. They relate to the packet encryption introduced in 2021. However in the absence of these fields, a game/client session can still be initiated without encryption.