-
Notifications
You must be signed in to change notification settings - Fork 5
Messages Matrix
Xsear edited this page Jun 12, 2023
·
5 revisions
- Sent by the client as the first message after connecting.
- It communicates whether we are a dev, which game client version we have, which character we want to log in as, our networking socket preferences, locale. It also includes the matrix ticket received through oracle, which likely serves to authenticate us.
- The message is also sent during
matrix_connectionTest
. In this scenario, most values are 0. - The canonical response is assumed to be WelcomeToTheMatrix.
- Sent by the client in response to EnterZone.
- This message contains a Flags byte, the value is set based on the cvars
login.connectAsReferee
,login.connectAsSpectator
orlogin.conectAsSuperSpectator
. The server can then act upon these flags. - The game client has some alternative modes which allow to specify a target to spectate, one example is the autologin that can be configured via command line or firefall.ini. If the related values including a spectator target are set, the target is also communicated in this message.
- Sent by the client in response to ExitZone.
- No data
- Sent by the client in order to request information about specific game entity network views.
- Client refers to entities with the full entity id when it knows about them, in which case it includes its calculated checksum value.
- Client refers to entities by RefId if it doesn't know about them.
- For the entities where it communicated the full entity id, the server should validate the checksum. If it matches, the server can respond with said checksum. This will please the client and it will not request it again for a bit. Alternatively, if the checksum did not match, the server should send down the keyframe so that the client gets back in sync. The server should probably also validate the ref id and send down the correct one if it doesn't match.
- For the entities where it communicated only the ref id, the server should send down the keyframes and the ref ids.
- Sent by the client if you are logged in as a dev character (
System.SetupCharacter
called withis_dev
set totrue
), when certain console commands are executed or cvars are changed. - Whilst the message itself is flexible, the usage of it is hardcoded. Only very old clients (1189) have the
gscmd
console command available that allows freeform typing of the arguments to send, this is presumed to have been locked away to developer only clients. - Known commands / cvars that trigger this message to be sent:
ChatTraceRoute
debuglag.raiaDev
debuglag.gssSchedDev
debuglag.matrixDev
- UNKNOWN
- There are no known cases in which this message is sent.
- Presumably for referee accounts used for esports pvp matches back in the days. A guess is that it uses the same format as DEV_ExecuteCommand with an added match guid.
- Sent by the client when the UI function
Player.RequestPause
is executed. - Contains the entity id of the character that sent the message.
- Sent by the client when the UI function
Player.RequestUnpause
is executed. - Contains the entity id of the character that sent the message.
- Sent by the client periodically during the session.
- Contains client networking stats such as RTT, bytes sent and received, quality of service. Much of this information is displayed in the window title, and it is also periodically logged to the console.
- MatrixStatus is the server equivalent.
- Sent by the client when certain network settings are changed, e.g:
- When executing
debuglag.matrixDev 1
in the console. - When executing
network.minBatchDelay.wireless.max
in the console.
- When executing
- Contains information about client network settings.
- The message contents are also included in Login.
- Sent by the client in response to SynchronizationRequest
- Related to RedHanded.
- Sent repeatedly by the client when
debuglag.networkSuperPing
is set to 1. - The message contains an array of microsecond epoch timestamps, but the client will only send 1 (its local time as it receives it through TimeSync)
- The server responds with SuperPong.
- An unknown value at the end. If the server sends back the matching value in the SuperPong then the client displays the results in the onscreen graph. Otherwise, the client logs the outcome to the console.
- UNKNOWN
- There are no known cases in which this message is sent.
- UNKNOWN
- We don't know exactly when the client sends this message.
- Presumably related to ServerProfiler_SendNames.
- Sent by the client early in the session with the type
Event
and actionusersettings
, includes information about the clients network / video quality settings. - Sent when the UI function
System.LogInstrumentation
is called (but this function can only be used in certain UI components. One example is Loading Screen.) In this case, the type isUI
and the UIComponent field is automatically filled in. The 3 args for the function are Action, Message and Data.
- UNKNOWN
- We don't know exactly when the client sends this message.
- Related to RedHanded.
- Triggered via UI function
Chat.SendChannelText
but only in certain conditions. One of the conditions might be Zone chat. - The server equivalent is likely ReceiveEmergencyChat.
- One way to trigger these is to send ExitZone to the client, reload the UI and send a chat message.
- Presumably related to RequestSigscan and RedHanded.
- Sent by the server in response to Login
- Includes a PlayerGUID and some unknown bytes.
- A message that can be sent by the server, with two params:
type
anddata
. - The type and data is logged to the console on GAME.
- When the
type
issysmsg
, the client appears to generate a chat message UI event. As a result, thedata
is printed as a chat message on theBroadcast
chat channel.
- A message sent by the server after WelcomeToTheMatrix.
- Contains ZoneInfo, ZoneTimeSyncInfo, GameClockInfo and SpectatorModeFlag.
- In ZoneInfo, the zoneId specifices the zone that the client will then load. The .zone file timestamp is included and the client will validate that they match.
- The client responds with EnterZoneAck, or terminates the connection if the zone timestamp did not match.
- A message sent by the server early in the session.
- The message contains values that affect the ingame day and night cycle.
- The message contents are also included in EnterZone.
- A message that can be sent by the server to change the hotfix level.
- The HotfixLevel is also included in the EnterZone message.
- No data.
- When the client receives this message, it clears all net views, triggers the on_exit_zone UI event, but stays connected to the server.
- Sent by the server periodically during the session.
- Contains server networking stats such as RTT, bytes sent and received, quality of service. Much of this information is displayed in the window title, and it is also periodically logged to the console.
- ClientStatus is the client equivalent.
- Presumably the response to clients GSS Character Command MatchQueue
- The matchmaker value must match what the client sent in MatchQueue or the message
Server client data doesn't match what we are expecting (server %u, ours %u). Ignoring, server should be receiving our most recent request now
will be logged. - Triggers the client to display a queue timer on the bottom left.
- UNKNOWN
- Can be sent by the server to present the client with the option of choosing to accept or decline a queued 'match'.
- The client response is GSS Character MatchAccept, trigered by the UI function
Game.AcceptPvpMatch
when the player selects Accept or Decline in the generated HUD note.
- TODO
- TODO
- TODO
- TODO
- TODO
- TODO
- TODO
- TODO
- TODO
- TODO
- TODO
- Can be sent by the server to inform the player of a reason why they could not queue.
- The message allows specifying one of 20 predefined errors to display as the reason for the client. The client displays a message in response. The information is also logged in detail in the console under GAME at INFO level.
- The causing characters array can be populated to indicate that certain players caused the error. The client displays these in the console log and additional tries to display the relation to that player.
- A message sent by the server early in the session.
- The client responds with SynchronizationResponse.
- The client seems to run the data through RedHanded.
- A message that can be sent by the server to pause/unpause time.
- Clients will see a pause message on screen and can still use the UI and send chat messages, etc.
- (TODO) Figure out the other params of the message, and how to properly recover the session when unpausing.
- Sent by the server in response to SuperPing.
- The server is expected to append four microsecond epoch timestamps, sending back a total of five with the clients original timestamp. The four serverside timestamps are interprented by the client as:
- matrix_upstream
- gss_received
- gss_object_processed
- matrix_downstream
- UNKNOWN
- Presumably related to ServerProfiler_RequestNames
- UNKNOWN
- Triggers the
on_zone_queue_update
UI event which is used by the loading screen component to display information about a zone queue.
- Graph sample data for
debuglag.matrixDev
(which sends DEV_ExecuteCommand Matrix[ 'debuglag', '1' ]
).
- Graph sample data for
debuglag.matrixDev
(which sends DEV_ExecuteCommand Matrix[ 'debuglag', '1' ]
).
- UNKNOWN
- UNKNOWN
- A message that triggers the game client to send chat messages on the Zone channel.
- Can specify the desired display name, entity id and chat icons.
- Presumably the server response for SendEmergencyChat.
- Updates the
devPorts
anddevPids
info. These are displayed in the output of thematrix_printInstanceInfo
message. - The message contents are also included in EnterZone.