Skip to content

Messages MatchingGame

rebaserHEAD edited this page Oct 25, 2026 · 90 revisions

reference, committed verified 2026-10-24 dev dd9b230

Every message in the MatchingGame area: its opcode, direction, how far it is verified, and its fields.

Note

Generated from the message declarations at dev dd9b230 by Tools/NexusTomorrow.ProtocolReference. Don't edit it by hand: change the declaration's documentation and regenerate.

Server to client

0x0436 GroupMemberMatchingPenalties

Sets a group member's queue penalties, one per match type; the client raises MatchingPenaltyUpdated.

Opcode Direction Verified to Mark
0x0436 to client fields
Field Bits Encoding Meaning
GroupId 64 unsigned The group, by group id.
Unknown1 32 unsigned The client gives this value no meaning.
MemberId the fields below The member, by realm-scoped character id.
MemberId.RealmId 14 unsigned The realm the id belongs to.
MemberId.Id 64 unsigned The id within its realm. What it identifies, a character or a residence, depends on the member that holds it.
Penalties[0] 32 unsigned The member's queue penalty for each match type, indexed by MatchType: a duration in milliseconds, 0 for none.
Penalties[1] 32 unsigned
Penalties[2] 32 unsigned
Penalties[3] 32 unsigned
Penalties[4] 32 unsigned
Penalties[5] 32 unsigned
Penalties[6] 32 unsigned
Penalties[7] 32 unsigned
Penalties[8] 32 unsigned
Penalties[9] 32 unsigned
Penalties[10] 32 unsigned
Penalties[11] 32 unsigned
Penalties[12] 32 unsigned
Penalties[13] 32 unsigned
Penalties[14] 32 unsigned
Penalties[15] 32 unsigned

0x05B0 MatchingPartialGroupAllowedChanged

Sets whether the player may queue for the prime-level dungeon and adventure without a full group.

Opcode Direction Verified to Mark
0x05B0 to client fields
Field Bits Encoding Meaning
PartialGroupAllowed 1 unsigned Whether the player may queue for PrimeLevelDungeon and PrimeLevelAdventure without a full group. While it is false the client refuses a solo queue for them with NotInGroup, and a group short of the map's size with RequiresFullGroup.

0x05B8 MatchingEligibilityChanged

Sets the player's matching privileges, which decide the maps the player may queue for.

Opcode Direction Verified to Mark
0x05B8 to client fields
Field Bits Encoding Meaning
Privileges 32 unsigned The player's matching privileges, a mask. The client offers and queues a map only when the map requires none of these bits or the player holds one of those it requires, and otherwise refuses with PrivilegeRestricted; a group queue tests each member's privileges the same way, refusing with GroupMemberPrivilegeRestricted.

0x05BC MatchPendingCancelled

Cancels the pending match; the client raises MatchingCancelPendingGame.

Opcode Direction Verified to Mark
0x05BC to client fields
Field Bits Encoding Meaning
(none) 0

0x05BE MatchFinished

Marks the match finished; the client raises MatchFinished.

Opcode Direction Verified to Mark
0x05BE to client fields
Field Bits Encoding Meaning
(none) 0

0x05BF MatchEntered

Tells the client the player is in the match's instance; the client raises MatchEntered.

Opcode Direction Verified to Mark
0x05BF to client fields
Field Bits Encoding Meaning
GameMapId 32 unsigned The match's map, as a MatchingGameMap id, which the client keeps as the current match's.

0x05C0 MatchExited

Tells the client the player is out of the match's instance; the client raises MatchExited.

Opcode Direction Verified to Mark
0x05C0 to client fields
Field Bits Encoding Meaning
(none) 0

0x05C4 MatchReadyInProgress

Offers the player a place in a match already under way, with the allies' answers so far.

Opcode Direction Verified to Mark
0x05C4 to client fields
Field Bits Encoding Meaning
MatchType 5 unsigned The match's match type.
PendingAllies 32 unsigned How many allies have yet to accept.
AcceptedAllies 32 unsigned How many allies have accepted.

The client stores it as the pending match and raises MatchingGameReady for a match in progress, or MatchingGamePendingUpdate when the player is in the match's instance.

0x05C6 MatchJoined

Tells the client the player joined a match; the client clears the role check and the pending match and raises MatchJoined.

Opcode Direction Verified to Mark
0x05C6 to client fields
Field Bits Encoding Meaning
GameMapId 14 unsigned The match's map, as a MatchingGameMap id, which the client keeps as the current match's.

0x05CA MatchReady

Tells the player a match is ready for them to accept.

Opcode Direction Verified to Mark
0x05CA to client fields
Field Bits Encoding Meaning
MatchType 5 unsigned The match's match type.
PendingAllies 32 unsigned How many allies have yet to accept.
PendingEnemies 32 unsigned How many enemies have yet to accept.

The client stores it as the pending match, starts the time the player has to answer and raises MatchingGameReady for a new match.

0x05CC MatchPendingAccepted

Counts one more player of the pending match as accepted; the client raises MatchingGamePendingUpdate.

Opcode Direction Verified to Mark
0x05CC to client fields
Field Bits Encoding Meaning
Ally 1 unsigned Whether the player who accepted is an ally (true) or an enemy (false); the client moves one of that side from yet to answer to accepted.

0x05D9 MatchingPenalties

Sets the player's queue penalties, one per match type; the client raises MatchingPenaltyUpdated.

Opcode Direction Verified to Mark
0x05D9 to client fields
Field Bits Encoding Meaning
Penalties[0] 32 unsigned The player's queue penalty for each match type, indexed by MatchType: a duration in milliseconds, 0 for none.
Penalties[1] 32 unsigned
Penalties[2] 32 unsigned
Penalties[3] 32 unsigned
Penalties[4] 32 unsigned
Penalties[5] 32 unsigned
Penalties[6] 32 unsigned
Penalties[7] 32 unsigned
Penalties[8] 32 unsigned
Penalties[9] 32 unsigned
Penalties[10] 32 unsigned
Penalties[11] 32 unsigned
Penalties[12] 32 unsigned
Penalties[13] 32 unsigned
Penalties[14] 32 unsigned
Penalties[15] 32 unsigned

0x05DC MatchLeft

Tells the client the player left the match; the client resets its match state and raises MatchLeft.

Opcode Direction Verified to Mark
0x05DC to client fields
Field Bits Encoding Meaning
Unknown0 5 unsigned The client gives this value no meaning.

0x05DF MatchingQueueJoined

Adds a matching queue entry, filed under MatchType.

Opcode Direction Verified to Mark
0x05DF to client purpose
Field Bits Encoding
Request the fields below
Request.MatchType 5 unsigned
Request.GameMapIds count 32 unsigned
Request.GameMapIds array, counted by Request.GameMapIds count
Request.GameMapIds[] 32 unsigned
Request.GameTypeId 14 unsigned
Request.Flags 32 unsigned
Entry the fields below
Entry.MatchType 5 unsigned
Entry.AsGroup 1 unsigned
Entry.TimeInQueueMs 32 unsigned
Entry.AverageWaitTimeMs 32 unsigned
Unknown2 32 unsigned

For an entry already in its match the client stores the fields and does nothing else. Otherwise it also prints the joined text, raises MatchingJoinQueue, ends any role check, and stops the player's cast of one spell a GameFormula row names.

0x05E1 MatchingQueueOperationResult

Reports the result of a matching queue operation.

Opcode Direction Verified to Mark
0x05E1 to client purpose
Field Bits Encoding
Result 6 unsigned
Unknown1 4 unsigned

The client prints the result's text. On RemovedByServer it raises MatchLeft, on NotConfirmingRole MatchingRoleCheckCanceled, and on NotWaitingToAccept MatchingCancelPendingGame.

0x05E3 MatchingQueueStatusChanged

Sets which matching queues the player is in and the match type of the match they are in.

Opcode Direction Verified to Mark
0x05E3 to client purpose
Field Bits Encoding
Unknown0 4 unsigned
ActiveMatchType 5 unsigned
Unknown2 5 unsigned
QueuedTypes[0] 1 unsigned
QueuedTypes[1] 1 unsigned
QueuedTypes[2] 1 unsigned
QueuedTypes[3] 1 unsigned
QueuedTypes[4] 1 unsigned
QueuedTypes[5] 1 unsigned
QueuedTypes[6] 1 unsigned
QueuedTypes[7] 1 unsigned
QueuedTypes[8] 1 unsigned
QueuedTypes[9] 1 unsigned
QueuedTypes[10] 1 unsigned
QueuedTypes[11] 1 unsigned
QueuedTypes[12] 1 unsigned
QueuedTypes[13] 1 unsigned
QueuedTypes[14] 1 unsigned
QueuedTypes[15] 1 unsigned

The client applies Unknown0 and QueuedTypes first, then stores ActiveMatchType and Unknown2. It raises MatchLeft first only when the stored active match type is not None and differs from the new one.

0x05E6 MatchPvpInactivityAlert

Warns the player of their inactivity in a PvP match; the client raises MatchingPvpInactivityAlert.

Opcode Direction Verified to Mark
0x05E6 to client fields
Field Bits Encoding Meaning
RemainingTimeMs 32 unsigned The time remaining, in milliseconds.

0x05E7 PvpKillNotification

Reports a kill in PvP; the client raises PvpKillNotification with the victim's and the killer's names, the reason, the killer's class and the victim's team.

Opcode Direction Verified to Mark
0x05E7 to client fields
Field Bits Encoding Meaning
KillerType 2 unsigned; selects Killer The kind of Killer, which picks its record: 0 a player, 1 a creature, 2 one the client has no name for.
Killer union, selected by KillerType The killer.
Killer(0) when KillerType is 0 A killer or a victim who is a player.
Killer(0).PlayerId the fields below The player, by realm-scoped character id; the client asks the server for the name when it does not have it.
Killer(0).PlayerId.RealmId 14 unsigned The realm the id belongs to.
Killer(0).PlayerId.Id 64 unsigned The id within its realm. What it identifies, a character or a residence, depends on the member that holds it.
Killer(0).Class 5 unsigned The player's class; the kill board uses it for the killer only.
Killer(1) when KillerType is 1 A killer or a victim that is a creature.
Killer(1).UnitId 32 unsigned The creature, by unit id; the client takes the name from the unit when it has it.
Killer(1).CreatureId 18 unsigned The creature, as a Creature2 id; the client takes the name from that record when it does not know the unit.
Killer(2) when KillerType is 2 A killer or a victim the client has no name for.
Killer(2).Unknown0 1 unsigned The client gives this value no meaning.
VictimType 2 unsigned; selects Victim The kind of Victim, which picks its record: 0 a player, 1 a creature, 2 one the client has no name for.
Victim union, selected by VictimType The victim, in the same records as Killer.
Victim(0) when VictimType is 0 A killer or a victim who is a player.
Victim(0).PlayerId the fields below The player, by realm-scoped character id; the client asks the server for the name when it does not have it.
Victim(0).PlayerId.RealmId 14 unsigned The realm the id belongs to.
Victim(0).PlayerId.Id 64 unsigned The id within its realm. What it identifies, a character or a residence, depends on the member that holds it.
Victim(0).Class 5 unsigned The player's class; the kill board uses it for the killer only.
Victim(1) when VictimType is 1 A killer or a victim that is a creature.
Victim(1).UnitId 32 unsigned The creature, by unit id; the client takes the name from the unit when it has it.
Victim(1).CreatureId 18 unsigned The creature, as a Creature2 id; the client takes the name from that record when it does not know the unit.
Victim(2) when VictimType is 2 A killer or a victim the client has no name for.
Victim(2).Unknown0 1 unsigned The client gives this value no meaning.
VictimTeam 2 unsigned The victim's team.
DeathReason 3 unsigned How the victim died.

0x05F1 MatchingRoleCheckStarted

Starts a role check; the client marks a role check active and raises MatchingRoleCheckStarted.

Opcode Direction Verified to Mark
0x05F1 to client fields
Field Bits Encoding Meaning
RolesRequired 1 unsigned Whether the player must choose roles to answer the check.

0x05F2 MatchLookingForReplacements

Tells the client the match is looking for replacements; the client marks it so and raises MatchLookingForReplacements.

Opcode Direction Verified to Mark
0x05F2 to client fields
Field Bits Encoding Meaning
(none) 0

0x0604 MatchStoppedLookingForReplacements

Tells the client the match stopped looking for replacements; the client raises MatchStoppedLookingForReplacements.

Opcode Direction Verified to Mark
0x0604 to client fields
Field Bits Encoding Meaning
(none) 0

0x060A MatchingQueuedPlayers

Lists queued players; the client prints the list in chat.

Opcode Direction Verified to Mark
0x060A to client purpose
Field Bits Encoding
Unknown0 32 unsigned
Unknown1 count 32 unsigned
Unknown1 array, counted by Unknown1 count
Unknown1[].Unknown0 the fields below
Unknown1[].Unknown0.RealmId 14 unsigned
Unknown1[].Unknown0.Id 64 unsigned
Unknown1[].Unknown1 varies wide string
Unknown1[].Unknown2 14 unsigned
Unknown1[].Unknown3 14 unsigned
Unknown1[].Unknown4 14 unsigned
Unknown1[].Unknown5 2 unsigned
Unknown1[].Unknown6 32 unsigned
Unknown1[].Unknown7 3 unsigned
Unknown1[].Unknown8 32 unsigned
Unknown1[].Unknown9 1 unsigned
Unknown1[].Unknown10 32 unsigned
Unknown1[].Unknown11 32 float
Unknown1[].Unknown12[0] the fields below
Unknown1[].Unknown12[0].Unknown0 16 unsigned
Unknown1[].Unknown12[0].Unknown1 8 unsigned
Unknown1[].Unknown12[1] the fields below
Unknown1[].Unknown12[1].Unknown0 16 unsigned
Unknown1[].Unknown12[1].Unknown1 8 unsigned
Unknown1[].Unknown12[2] the fields below
Unknown1[].Unknown12[2].Unknown0 16 unsigned
Unknown1[].Unknown12[2].Unknown1 8 unsigned
Unknown1[].Unknown12[3] the fields below
Unknown1[].Unknown12[3].Unknown0 16 unsigned
Unknown1[].Unknown12[3].Unknown1 8 unsigned
Unknown1[].Unknown12[4] the fields below
Unknown1[].Unknown12[4].Unknown0 16 unsigned
Unknown1[].Unknown12[4].Unknown1 8 unsigned
Unknown1[].Unknown13 count 32 unsigned
Unknown1[].Unknown13 array, counted by Unknown1[].Unknown13 count
Unknown1[].Unknown13[].Unknown0 15 unsigned
Unknown1[].Unknown13[].Unknown1 16 unsigned

0x060D MatchVoteKickCancelled

Ends the vote to kick as cancelled; the client clears the vote's target and raises MatchVoteKickEnd.

Opcode Direction Verified to Mark
0x060D to client fields
Field Bits Encoding Meaning
(none) 0

0x0612 MatchVoteKickFailed

Ends the vote to kick as failed; the client clears the vote's target and raises MatchVoteKickEnd.

Opcode Direction Verified to Mark
0x0612 to client fields
Field Bits Encoding Meaning
(none) 0

0x0614 MatchVoteKickBegin

Starts a vote to kick a player from the match; unless Unknown0 is the player's own realm-scoped id, the client keeps the target and raises MatchVoteKickBegin with it.

Opcode Direction Verified to Mark
0x0614 to client purpose
Field Bits Encoding
Unknown0 the fields below
Unknown0.RealmId 14 unsigned
Unknown0.Id 64 unsigned
TargetId the fields below
TargetId.RealmId 14 unsigned
TargetId.Id 64 unsigned

0x0616 MatchVoteKickCooldown

Has the client print a time in the matching text, which it does only for two values of Unknown0.

Opcode Direction Verified to Mark
0x0616 to client purpose
Field Bits Encoding
Unknown0 6 unsigned
Unknown1 32 unsigned

0x061A MatchVoteKickSucceeded

Ends the vote to kick as passed; the client clears the vote's target and raises MatchVoteKickEnd.

Opcode Direction Verified to Mark
0x061A to client fields
Field Bits Encoding Meaning
(none) 0

0x061F MatchVoteSurrenderFailed

Ends the vote to surrender as failed; the client marks no surrender vote running and raises MatchVoteSurrenderEnd.

Opcode Direction Verified to Mark
0x061F to client fields
Field Bits Encoding Meaning
(none) 0

0x0621 MatchVoteSurrenderBegin

Starts a vote to surrender the match; the client marks a surrender vote running and raises MatchVoteSurrenderBegin.

Opcode Direction Verified to Mark
0x0621 to client fields
Field Bits Encoding Meaning
(none) 0

0x0623 MatchOperationResult

Reports the result of a match operation.

Opcode Direction Verified to Mark
0x0623 to client fields
Field Bits Encoding Meaning
Result 6 unsigned The result.
CooldownMs 32 unsigned With a surrender cooldown result, the cooldown in milliseconds, which the client counts from the message's arrival.

On PersonalSurrenderCooldown or GlobalSurrenderCooldown the client keeps the result and the cooldown, and holds back MatchVoteSurrenderInitiate until the cooldown has run out; on any other result it prints that result's text.

0x0628 MatchingAverageWaitTime

Sets the average wait of one matching queue; for an entry not in its match the client also raises MatchingAverageWaitTimeUpdated.

Opcode Direction Verified to Mark
0x0628 to client fields
Field Bits Encoding Meaning
MatchType 5 unsigned The match type of the queue, the one its entry is filed under.
AverageWaitTimeMs 32 unsigned The queue's average wait, in milliseconds.

Client to server

0x05B2 MatchingRoleCheckResponse

The player's answer to a role check: the roles chosen, or a refusal.

Opcode Direction Verified to Mark
0x05B2 to server purpose
Field Bits Encoding
Unknown0 5 unsigned
Roles 32 unsigned
Accepted 1 unsigned

0x05B4 MatchingQueueLeaveAll

Leaves every matching queue the player is in.

Opcode Direction Verified to Mark
0x05B4 to server fields
Field Bits Encoding Meaning
(none) 0

0x05B5 MatchingQueueLeave

Leaves one matching queue.

Opcode Direction Verified to Mark
0x05B5 to server fields
Field Bits Encoding Meaning
MatchType 5 unsigned The match type of the queue to leave, the one its entry is filed under.

0x05B6 MatchingQueueLeaveAsGroup

Leaves one matching queue the player joined as a group.

Opcode Direction Verified to Mark
0x05B6 to server fields
Field Bits Encoding Meaning
MatchType 5 unsigned The match type of the queue to leave, the one its entry is filed under.

0x05C8 MatchReadyResponse

The player's answer to a ready match.

Opcode Direction Verified to Mark
0x05C8 to server fields
Field Bits Encoding Meaning
Accepted 1 unsigned Whether the player accepts the match (true) or declines it (false); on a refusal the client raises MatchingCancelPendingGame.

0x05D1 MatchVoteKickInitiate

Starts a vote to kick a player from the match; MatchingGameLib.InitiateVoteToKick sends it.

Opcode Direction Verified to Mark
0x05D1 to server fields
Field Bits Encoding Meaning
TargetId the fields below The group member to kick, by realm-scoped character id; the client chooses the target among the group's members and never names the player themself.
TargetId.RealmId 14 unsigned The realm the id belongs to.
TargetId.Id 64 unsigned The id within its realm. What it identifies, a character or a residence, depends on the member that holds it.

0x05D3 MatchVoteSurrenderInitiate

Starts a vote to surrender the match.

Opcode Direction Verified to Mark
0x05D3 to server fields
Field Bits Encoding Meaning
(none) 0

The client sends it while no surrender vote runs and the active match type is a dungeon, an adventure, a warplot or a shiphand, unless a surrender cooldown MatchOperationResult set is still running.

0x05D5 MatchLookForReplacements

Asks the match to look for players to fill the places it has open.

Opcode Direction Verified to Mark
0x05D5 to server fields
Field Bits Encoding Meaning
Roles 32 unsigned The roles to look for, as a mask of Role.

0x05DA MatchLeave

Leaves the match; MatchingGameLib.LeaveGame sends it while the player is in one.

Opcode Direction Verified to Mark
0x05DA to server fields
Field Bits Encoding Meaning
(none) 0

0x05EF MatchingQueueJoin

Joins a matching queue; MatchMakingLib.Queue sends it.

Opcode Direction Verified to Mark
0x05EF to server purpose
Field Bits Encoding
Request the fields below
Request.MatchType 5 unsigned
Request.GameMapIds count 32 unsigned
Request.GameMapIds array, counted by Request.GameMapIds count
Request.GameMapIds[] 32 unsigned
Request.GameTypeId 14 unsigned
Request.Flags 32 unsigned
Roles 32 unsigned
PrimeLevel 32 unsigned

0x05F3 MatchingQueueJoinAsGroup

Joins a matching queue as a group; MatchMakingLib.QueueAsGroup sends it.

Opcode Direction Verified to Mark
0x05F3 to server purpose
Field Bits Encoding
Request the fields below
Request.MatchType 5 unsigned
Request.GameMapIds count 32 unsigned
Request.GameMapIds array, counted by Request.GameMapIds count
Request.GameMapIds[] 32 unsigned
Request.GameTypeId 14 unsigned
Request.Flags 32 unsigned
Roles 32 unsigned
PrimeLevel 32 unsigned

0x05F8 MatchingQueueRandom

Joins the random matching queue of a match type.

Opcode Direction Verified to Mark
0x05F8 to server purpose
Field Bits Encoding
MatchType 5 unsigned
Flags 32 unsigned
Roles 32 unsigned

0x05F9 MatchingQueueRandomAsGroup

Joins the random matching queue of a match type as a group.

Opcode Direction Verified to Mark
0x05F9 to server purpose
Field Bits Encoding
MatchType 5 unsigned
Flags 32 unsigned
Roles 32 unsigned

0x0602 MatchStopLookingForReplacements

Asks the match to stop looking for replacements; the client sends it from the group leader while the match is looking.

Opcode Direction Verified to Mark
0x0602 to server fields
Field Bits Encoding Meaning
(none) 0

0x0606 MatchTransferIn

Asks to be moved into the current match; the client sends it only when the match's type allows it.

Opcode Direction Verified to Mark
0x0606 to server fields
Field Bits Encoding Meaning
(none) 0

0x0617 MatchVoteKickCast

The player's vote on a vote to kick; the client clears the vote's target once it sends it.

Opcode Direction Verified to Mark
0x0617 to server fields
Field Bits Encoding Meaning
TargetId the fields below The player the vote would kick, as TargetId gave it.
TargetId.RealmId 14 unsigned The realm the id belongs to.
TargetId.Id 64 unsigned The id within its realm. What it identifies, a character or a residence, depends on the member that holds it.
Vote 1 unsigned The player's vote on the kick.

0x0624 MatchVoteSurrenderCast

The player's vote on a vote to surrender; the client sends it while a surrender vote runs.

Opcode Direction Verified to Mark
0x0624 to server fields
Field Bits Encoding Meaning
Vote 1 unsigned The player's vote on the surrender.

Where the code lives

Piece Path
Message declarations Source/NexusTomorrow.Network.World/Message/Model/MatchingGame/
This page's generator Tools/NexusTomorrow.ProtocolReference/

Clone this wiki locally