Match Generation

Learn how to create balanced matches using PickleSync's intelligent algorithms.

Match Generation Basics

PickleSync's match generation engine is designed to create the most balanced and enjoyable playing experience possible. The system considers multiple factors including skill levels, playing history, court availability, and player preferences to generate optimal matchups.

Quick Match Generation

For immediate match creation, use the Generate Matches button on your program dashboard:

  1. Select the date and time for your session
  2. Choose how many courts will be available
  3. Specify the number of rounds you want to play
  4. Click Generate and PickleSync handles the rest

The system will automatically select available players, balance skill levels across courts, and ensure players don't repeat partners too frequently. Generated matches appear instantly in your schedule.

Advanced Match Settings

For more control over match generation, access the advanced settings panel:

{
  "algorithm": "balanced_skill",
  "rounds": 4,
  "courts": 6,
  "skill_variance": 0.3,
  "avoid_recent_partners": true,
  "partner_rotation_frequency": "high",
  "gender_balance": "preferred"
}

These settings allow you to fine-tune how matches are created. For example, setting skill_variance to 0.3 ensures that the combined skill of teams on the same court don't differ by more than 0.3 rating points.

Match Algorithms

PickleSync offers several match generation algorithms optimized for different program types:

Balanced Skill Algorithm

The default algorithm prioritizes creating matches where all four players on a court have similar skill levels. This is ideal for competitive play where close games are desired.

function generateBalancedMatch(players) {
  // Sort players by skill rating
  const sorted = players.sort((a, b) => a.skill - b.skill);

  // Create matches with minimal skill variance
  return createMatchPairs(sorted, { maxVariance: 0.3 });
}

This algorithm examines all possible player combinations and selects arrangements that minimize skill differences while maximizing partner variety.

Social Play Algorithm

For casual programs focused on social interaction, this algorithm prioritizes partner rotation and ensuring everyone plays with new people:

function generateSocialMatch(players, history) {
  // Prioritize players who haven't partnered recently
  const partnerships = analyzePartnershipHistory(history);

  // Generate matches favoring new combinations
  return createMatchPairs(players, {
    prioritizeNewPartnerships: true,
    skillBalance: "relaxed"
  });
}

Round Robin Algorithm

For league play where everyone should eventually play with everyone else, the round robin algorithm systematically rotates players through all possible partnerships:

function generateRoundRobin(players, round) {
  const schedule = createRoundRobinSchedule(players);
  return schedule[round];
}

Match Constraints

Define specific rules and constraints that the match generation system must follow:

  • Skill Caps: Maximum skill difference allowed between players on the same court
  • Partner Restrictions: Players who should not be paired together
  • Court Assignments: Reserve specific courts for certain skill levels
  • Gender Balance: Ensure mixed doubles ratios when applicable
  • Time Restrictions: Account for players with limited time availability

Configure constraints in the program settings to ensure matches meet your specific requirements:

{
  "constraints": {
    "max_skill_difference": 0.5,
    "reserved_courts": {
      "court_1": "skill_level >= 4.0",
      "court_6": "skill_level <= 3.0"
    },
    "partner_restrictions": [
      ["player_123", "player_456"]
    ]
  }
}
Start with the default balanced skill algorithm and adjust settings based on player feedback. Most programs find that a skill variance of 0.3-0.5 creates the best playing experience.

Manual Adjustments

While PickleSync's algorithms are sophisticated, you can always make manual adjustments:

  • Drag and Drop: Rearrange players between courts visually
  • Lock Matches: Prevent specific matchups from being changed in regeneration
  • Swap Players: Quickly exchange individual players between courts
  • Add/Remove: Adjust the number of courts or players in a session

Manual adjustments are preserved when regenerating remaining matches, giving you full control over the final schedule.