Match Generation
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:
- Select the date and time for your session
- Choose how many courts will be available
- Specify the number of rounds you want to play
- 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"]
]
}
}
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.