Skip to main content

Adaptive Draw

Overview​

An Adaptive draw combines the multi-structure topology of a Compass draw with the flexible sizing of a Lucky Draw. Where Compass requires power-of-2 draw sizes, Adaptive supports any participant count (e.g., 11, 18, 22) across a full direction cascade.

In the factory, this draw type is represented by the constant ADAPTIVE.

How It Works​

Each structure in an Adaptive draw uses lucky draw logic internally. This means:

  • Non-power-of-2 structures have "pre-feed rounds" where one loser is retained as a lucky loser for the next round
  • The remaining losers from each round flow to child structures via LOSER links
  • Child structure sizes are computed from actual round profiles, not simple halving

Structure​

Like Compass, Adaptive generates up to eight structures named after compass directions:

StructureAbbreviationReceives losers from
EastEMain draw (starting structure)
WestWEast Round 1 losers
NorthNEast Round 2 losers
SouthSWest Round 1 losers
NortheastNEEast Round 3 losers
NorthwestNWNorth Round 1 losers
SouthwestSWWest Round 1 losers
SoutheastSESouth Round 1 losers

Child Size Computation​

For a non-power-of-2 draw size, child sizes depend on the round profile:

  • Pre-feed round (odd matchUp count): childSize = matchUpsCount - 1 (one loser stays as lucky loser)
  • Non-pre-feed round: childSize = matchUpsCount (all losers exit)
  • Child structures with fewer than 2 participants are suppressed

Example -- drawSize 11:

The lucky draw round profiles for 11 participants produce rounds with 6, 3, 2, 1 matchUps:

  • Round 1 (6 matchUps, pre-feed): child drawSize = 5 -> West
  • Round 2 (3 matchUps, pre-feed): child drawSize = 2 -> North
  • Round 3 (2 matchUps): child drawSize = 2 -> Northeast
  • Round 4 (final): no child

West (drawSize 5) recursively generates its own children (South, etc.).

Configurable Depth​

The roundOffsetLimit parameter controls how many levels of child structures are generated:

roundOffsetLimitStructuresEquivalent to
12--
2up to 4OLYMPIC-like
3 (default)up to 8COMPASS-like

Adaptive Attributes​

The factory defines adaptive structure attributes in the ADAPTIVE_ATTRIBUTES constant, identical to COMPASS_ATTRIBUTES:

ADAPTIVE_ATTRIBUTES = {
0: { name: 'East', abbreviation: 'E' },
'0-1': { name: 'West', abbreviation: 'W' },
'0-2': { name: 'North', abbreviation: 'N' },
'0-3': { name: 'Northeast', abbreviation: 'NE' },
'0-1-1': { name: 'South', abbreviation: 'S' },
'0-1-2': { name: 'Southwest', abbreviation: 'SW' },
'0-2-1': { name: 'Northwest', abbreviation: 'NW' },
'0-1-1-1': { name: 'Southeast', abbreviation: 'SE' },
};

Custom naming can be provided via playoffAttributes.

Differences from Compass​

FeatureCompassAdaptive
Draw sizePower-of-2 onlyAny size >= 5 (or power-of-2)
Structure internalsStandard eliminationLucky draw elimination
Child size computationdrawSize / 2^NFrom round profiles
Lucky loser mechanismNonePre-feed rounds retain 1

Generation​

const { drawDefinition } = engine.generateDrawDefinition({
drawType: 'ADAPTIVE',
drawSize: 11,
});

// With custom depth (OLYMPIC-like, 4 structures max)
const { drawDefinition } = engine.generateDrawDefinition({
drawType: 'ADAPTIVE',
roundOffsetLimit: 2,
drawSize: 11,
});

Use Cases​

  • Tournaments with non-standard participant counts that want compass-style guaranteed matchUps
  • Any scenario where compass topology is desired but participant count is not a power of 2
  • Flexible club and junior tournaments where exact bracket sizes vary