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.
  • The canonical response is assumed to be WelcomeToTheMatrix.

EnterZoneAck

  • 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 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.

ExitZoneAck

  • Sent by the client in response to ExitZone.
  • No data

KeyframeRequest

  • 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.
  • MatrixStatus is the server equivalent.

ClientPreferences

  • 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.
  • Contains information about client network settings.
  • The message contents are also included in Login.

SynchronizationResponse

SuperPing

  • 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.

StressTestMasterObject

  • UNKNOWN
  • There are no known cases in which this message is sent.

ServerProfiler_RequestNames

LogInstrumentation

  • 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.
  • 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.

Server

SigscanData

WelcomeToTheMatrix

  • Sent by the server in response to Login
  • Includes a PlayerGUID and some unknown bytes.

Announce

  • 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.

EnterZone

  • 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.

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.
  • ClientStatus is the client equivalent.

MatchQueueResponse

  • 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 client responds with SynchronizationResponse.
  • The client seems to run the data through RedHanded.

GamePaused

  • 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.

SuperPong

  • 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

ServerProfiler_SendNames

ServerProfiler_SendFrame

  • UNKNOWN

ZoneQueueUpdate

  • Triggers the on_zone_queue_update UI event which is used by the loading screen component to display information about a zone queue.

DebugLagSampleSim

  • Graph sample data for debuglag.matrixDev (which sends DEV_ExecuteCommand Matrix [ 'debuglag', '1' ]).

DebugLagSampleClient

  • Graph sample data for debuglag.matrixDev (which sends DEV_ExecuteCommand Matrix [ 'debuglag', '1' ]).

LFGMatchFound

  • UNKNOWN

LFGLeaderChange

  • UNKNOWN

ReceiveEmergencyChat

  • 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.

UpdateDevZoneInfo

  • Updates the devPorts and devPids info. These are displayed in the output of the matrix_printInstanceInfo message.
  • The message contents are also included in EnterZone.