Multiplayer matchmaking database schema

How a competitive game backend matches players: skill ratings with uncertainty and full rating history, parties, regional queues, accept-or-decline proposals, server allocation, match rosters with backfill and abandonment penalties.

Matchmaking ER diagram

Multiplayer matchmaking database schema n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 11 n1 n1 n1 n1 n1 n1 n1 n1 n1 players idBIGINT external_idVARCHAR display_nameVARCHAR home_region_codeVARCHAR platformVARCHAR created_atTIMESTAMPTZ last_match_atTIMESTAMPTZ playlists idBIGINT codeVARCHAR nameVARCHAR team_countSMALLINT team_sizeSMALLINT max_party_sizeSMALLINT is_rankedBOOLEAN rating_systemVARCHAR initial_muNUMERIC initial_sigmaNUMERIC is_enabledBOOLEAN skill_ratings player_idBIGINT playlist_idBIGINT muNUMERIC sigmaNUMERIC volatilityNUMERIC display_ratingINTEGER matches_playedINTEGER is_placedBOOLEAN last_match_atTIMESTAMPTZ updated_atTIMESTAMPTZ rating_history idBIGINT player_idBIGINT playlist_idBIGINT match_idBIGINT reasonVARCHAR mu_beforeNUMERIC sigma_beforeNUMERIC mu_afterNUMERIC sigma_afterNUMERIC expected_scoreNUMERIC occurred_atTIMESTAMPTZ parties idBIGINT leader_player_idBIGINT playlist_idBIGINT region_codeVARCHAR stateVARCHAR created_atTIMESTAMPTZ disbanded_atTIMESTAMPTZ party_members party_idBIGINT player_idBIGINT is_readyBOOLEAN joined_atTIMESTAMPTZ queue_tickets idBIGINT party_idBIGINT playlist_idBIGINT region_codeVARCHAR party_sizeSMALLINT search_muNUMERIC search_radiusNUMERIC stateVARCHAR enqueued_atTIMESTAMPTZ last_widened_atTIMESTAMPTZ state_changed_atTIMESTAMPTZ game_servers idBIGINT region_codeVARCHAR providerVARCHAR hostVARCHAR portINTEGER build_versionVARCHAR capacitySMALLINT active_matchesSMALLINT stateVARCHAR heartbeat_atTIMESTAMPTZ match_proposals idBIGINT playlist_idBIGINT region_codeVARCHAR server_idBIGINT stateVARCHAR required_acceptsSMALLINT accept_countSMALLINT quality_scoreNUMERIC expires_atTIMESTAMPTZ created_atTIMESTAMPTZ proposal_responses idBIGINT proposal_idBIGINT ticket_idBIGINT player_idBIGINT team_indexSMALLINT responseVARCHAR responded_atTIMESTAMPTZ matches idBIGINT proposal_idBIGINT playlist_idBIGINT region_codeVARCHAR server_idBIGINT stateVARCHAR is_rankedBOOLEAN backfill_openBOOLEAN winning_team_indexSMALLINT started_atTIMESTAMPTZ ended_atTIMESTAMPTZ created_atTIMESTAMPTZ match_slots idBIGINT match_idBIGINT team_indexSMALLINT slot_indexSMALLINT player_idBIGINT party_idBIGINT ticket_idBIGINT is_backfillBOOLEAN rating_mu_at_startNUMERIC joined_atTIMESTAMPTZ left_atTIMESTAMPTZ abandonedBOOLEAN placementSMALLINT scoreINTEGER player_penalties idBIGINT player_idBIGINT playlist_idBIGINT match_idBIGINT reasonVARCHAR severity_levelSMALLINT starts_atTIMESTAMPTZ ends_atTIMESTAMPTZ waived_atTIMESTAMPTZ

Related database schemas