Messages Matrix - themeldingwars/Documentation GitHub Wiki
Client
Login
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.
This message contains a Flags byte, the value is set based on the cvars login.connectAsReferee, login.connectAsSpectator or login.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 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.
DEV_ExecuteCommand
Sent by the client if you are logged in as a dev character (System.SetupCharacter called with is_dev set to true ), 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
Referee_ExecuteCommand
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.
RequestPause
Sent by the client when the UI function Player.RequestPause is executed.
Contains the entity id of the character that sent the message.
RequestResume
Sent by the client when the UI function Player.RequestUnpause is executed.
Contains the entity id of the character that sent the message.
ClientStatus
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.
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.
StressTestMasterObject
UNKNOWN
There are no known cases in which this message is sent.
ServerProfiler_RequestNames
UNKNOWN
We don't know exactly when the client sends this message.
Sent by the client early in the session with the type Event and action usersettings, 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 is UI and the UIComponent field is automatically filled in. The 3 args for the function are Action, Message and Data.
RequestSigscan
UNKNOWN
We don't know exactly when the client sends this message.
Related to RedHanded.
SendEmergencyChat
Triggered via UI function Chat.SendChannelText but only in certain conditions. One of the conditions might be Zone chat.
A message that can be sent by the server, with two params: type and data.
The type and data is logged to the console on GAME.
When the type is sysmsg, the client appears to generate a chat message UI event. As a result, the data is printed as a chat message on the Broadcast chat channel.
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.
UpdateZoneTimeSync
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.
HotfixLevelChanged
A message that can be sent by the server to change the hotfix level.
The HotfixLevel is also included in the EnterZone message.
ExitZone
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.
MatrixStatus
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.
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.
MatchQueueUpdate
UNKNOWN
FoundMatchUpdate
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.
ChallengeJoinResponse
TODO
ChallengeInvitation
TODO
ChallengeInvitationSquadInfoAck
TODO
ChallengeInvitationCancel
TODO
ChallengeInvitationResponse
TODO
ChallengeKicked
TODO
ChallengeLeave
TODO
ChallengeRosterUpdate
TODO
ChallengeReadyCheck
TODO
ChallengeMatchParametersUpdate
TODO
ChallengeMatchStarting
TODO
ForceUnqueue
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.
SynchronizationRequest
A message sent by the server early in the session.
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: