The Mixer: live round-robin generator

Launching the mixer with URL parameters

Pre-load a roster and settings into the mixer with URL query parameters: what each one does, how to encode it, and what happens when players already exist.

URL query parameters let you pre-populate the mixer's roster and mixing settings on load, which is handy for a bookmark or a setup link you build yourself. (Launching from the dashboard doesn't need any of this: it hands your saved group's players straight to the mixer.)

After the parameters are applied, the mixer strips them from the address bar, so a later refresh won't re-trigger the import.

Player data parameters

These four parameters work as parallel arrays: the Nth value in each list applies to the Nth player in players.

Parameter Type What it sets
players Comma-delimited names The roster. URL-encode the list; spaces may be + or %20.
ratings Comma-delimited numbers Starting rating for each player. Blank slot or 0 → no rating (null).
gender Comma-delimited flags Gender for each player: m or male, f or female. Blank → unset.
link_names Comma-delimited names Fixed-partner name for each player. Blank slot → no partner link.

A link_names entry names the partner's display name as it appears in players, not a player ID. If the named partner isn't found, the link is skipped with a warning.

Example

/mixer?players=Ali+Johnson,Andre+V,Petra+L,Sam+W
       &ratings=1420,1385,,1501
       &gender=f,m,f,m
       &link_names=,,,

Ali gets rating 1420 (female), Andre 1385 (male), Petra has no rating (female), Sam 1501 (male), and nobody is linked to a fixed partner.

Court count

Parameter Type Range Default
num_courts Integer 1–20 3

How many courts are active when the mixer opens.

Mixing weight parameters

All weight parameters accept integers 0–99, except mix_quality, which is a quality setting and accepts 1–40, and max_algorithmic_sitters, which accepts 0–4. They map to the same sliders found in Mixer settings.

Parameter What it controls Default
sitting_out_weight Priority for rotating sit-outs fairly 98
played_with_weight Avoid repeating partners 4
played_vs_weight Avoid repeating opponents 1
crossover_weight Avoid role flips (a past partner becoming an opponent, or vice versa). 0 = off, 1 = tie-breaker, higher = fewer past partners turn up as opponents, at the cost of more repeats elsewhere 1
mixed_weight Preference for mixed-doubles courts 0
court_rating_weight Similar ratings on court: group players of similar rating onto the same court. Accepts tenths below 1 (e.g. 0.1) 0
rating_weight Evenly matched teams: balance the two teams on a court by rating (see Highest Rated Partner Responsibility). Accepts tenths below 1 0
partner_rating_weight Similar ratings in partnerships: pair partners of similar rating. Accepts tenths below 1 0
highest_rated_partner_weight How much of a team's strength is credited to its stronger partner when judging Evenly matched teams (%) 30 (or your group's Highest Player Responsibility setting)
court_number_weight Spread players across court numbers 0
court_side_weight Balance which net side players occupy 0
max_algorithmic_sitters How many extra players the Mixer may bench out of turn for a better round (0–4) 0
mix_quality Mix quality, 1–40 (higher = fresher mix, slower) 15

Boolean flag parameters

Use 1 for on, 0 for off.

Parameter What it controls Default
duplicate_dissuasion Avoid repeating the exact same four-player court 1 (on)
participant_diversity Deprecated, replaced by the crossover_weight slider above. Still accepted for old links: 0 becomes crossover_weight=0, 1 becomes crossover_weight=1. An explicit crossover_weight wins. 1 (on)
mixed_doubles_courts Allow mixed-gender courts 1 (on)
all_men_women_courts Allow same-gender courts 1 (on)
sort_courts_by_rating Sort court cards by average rating 0 (off)

Bad court

Parameter Type What it sets
bad_court_number Integer 0–10 The court number to treat as the "bad court" (e.g. a cracked surface). 0 clears the setting.

What happens when the mixer already has players

If your current session has players in the roster, a dialog appears before any new players are added:

Existing Players Found

You are bringing in N new player(s): … BUT you already have M player(s) in your roster: … You can either combine them all into one session OR start a brand new session using only the new players you just launched with.

Combine adds the URL players to the existing roster. Duplicate names are skipped with a warning. If you have existing game history, a second prompt titled Existing Games Found asks whether to Keep Games or Clear Games before adding the new players.

Start New clears the current roster and game history automatically (no second prompt), then loads the URL players fresh.

Closing the dialog cancels the import; nothing changes.

Settings (court count and mixing weights) are applied before the player dialog fires, regardless of which option you pick.

On a free account, or with no account, the names in a players URL aren't added to the roster automatically. They arrive in the "These players need to be added manually" list above the roster, each with a Copy button, and you add the ones you want. The list says why (player links don't auto-load on a free account), so a link that looks like it did nothing is explained on screen. Court count and the mixing weights still apply exactly as described above, and the roster you build from the list mixes like any other; mixing is never capped. Lite and above load the whole list straight into the roster.

Launching the mixer from the dashboard is capped on a free account as well: up to the free limit of your saved players launch at once, and the rest appear in the same list. Lite and above launch everyone.

Building a launch URL

Append a query string to /mixer:

https://picklefriend.net/mixer
  ?players=Name+One,Name+Two,Name+Three,Name+Four
  &num_courts=2
  &ratings=1500,1480,1510,1460
  &sitting_out_weight=98
  &played_with_weight=20

Spaces in names encode as + or %20. The comma between players is a literal delimiter; only encode it as %2C when a comma appears inside a name itself.

Ratings of 0, null, or a blank slot (e.g. 1500,,1510) are treated as "no rating", so the player lands on the roster unrated.

What's next