Skip to content

Add per-guild matchmaking disable flag + user feedback when matchmaking is unavailable #331

Description

@thesprockee

Summary

Two related UX/configuration improvements for matchmaking:

1. Per-guild disable_matchmaking flag in GroupMetadata

Add a DisableMatchmaking bool field to GroupMetadata (in server/evr_group_metadata.go), analogous to the existing DisableCreateCommand flag. This allows specific guilds — particularly those without game servers or matchmaking infrastructure — to opt out of receiving matchmaking tickets entirely.

Why it matters: Guilds that don't support matchmaking are still accepting tickets today, filling up the per-group ticket limit (MaxMatchmakingTickets = 24) and silently blocking real players. There's currently no way for guild admins to disable matchmaking for their guild without server-side changes.

Reference pattern:

// server/evr_group_metadata.go
DisableCreateCommand      bool `json:"disable_create_command"`       // Disables /create
// Proposed addition:
DisableMatchmaking        bool `json:"disable_matchmaking"`          // Disables matchmaking for this guild

Enforcement should happen at ticket submission time in server/evr_lobby_matchmake.go, mirroring how DisableCreateCommand is checked before allowing /create.


2. User-facing feedback in two matchmaking failure scenarios

Currently, when matchmaking silently fails or is unavailable, users receive no feedback and are left waiting indefinitely.

Scenario A — Lobby/group changes during matchmaking:
If a player's party or lobby parameters change after a matchmaking ticket is submitted (e.g. party composition changes, lobby mode changes), the player should receive a Discord message or in-game notification explaining that matchmaking has been reset/cancelled and why.

Scenario B — Matchmaking attempted into a guild with matchmaking disabled:
If DisableMatchmaking is set for the guild associated with the player's matchmaking request, the player should receive immediate feedback (e.g. a Discord DM or ephemeral message) explaining that matchmaking is not available for their current guild, rather than waiting the full MatchmakingTimeoutSecs (currently 360s) with no result.


Relevant files

  • server/evr_group_metadata.go — add DisableMatchmaking field
  • server/evr_lobby_matchmake.go — enforce flag at ticket submission; send user feedback
  • server/evr_lobby_group.go — detect lobby/group changes; trigger feedback
  • server/evr_discord_appbot.go — send Discord DM/ephemeral feedback to user

Related

This was surfaced while investigating why the Vibinators bot gets stuck matchmaking. One likely contributing factor is that guilds without matchmaking infrastructure are silently consuming ticket capacity.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions