> ## Documentation Index
> Fetch the complete documentation index at: https://docs.uplifter-curling.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How do I generate the draw schedule?

> Build a season's worth of games — league nights, times, sheets and matchups, up to an end date if you want one — from the Draws tab, in the new view or the classic Generate Games screen.

<Note>
  **Must know**

  * You need at least two teams (and at least two per division pool) before generating. Times are entered and shown on the club's clock.
  * The generator skips your club's enabled holidays (**Registrations → Holidays**) as if you had typed them into **Exclude dates (comma-separated, optional)**. Other closures you still type in yourself.
  * Tick every weekday the league plays under **League nights** (Tuesday and Thursday, say). With none ticked, draws are weekly from the **First league night**.
  * A **Last league night (optional)** keeps adding round robins until every league night up to that date has games, and schedules nothing after it.
  * CCM's two sheet options are here too: **Balance playing sheets** (on by default) and **Show a game against "Nobody" for a bye**.
  * Regenerating deletes every unlocked game and its results and schedules new ones around any locked games.
  * With **Bye Requests** enabled for your club (a superadmin switches it on), the generator also gives teams the league nights they asked off — see [How do I handle bye requests?](/club/leagues-and-draws/how-do-i-handle-bye-requests).
</Note>

<Steps>
  <Step title="Open the Draws tab">
    Open the league and click **Draws**, then **Generate schedule** (or **Regenerate** once a schedule exists).
  </Step>

  <Step title="Choose sheets, cycles and times">
    Leave **Source** on **Generate fresh (engine)** unless you have a saved template. Tick the **Sheets** to use (all in-service sheets start ticked — "N of M sheets in play — the others stay idle in every draw"). Set **Round-robin cycles**, a **First league night (optional)** and the **Game times (comma-separated)**, for example "18:00, 20:00". Tick the days the league plays under **League nights** — until you change them they follow the first league night's weekday. Add a **Last league night (optional)** if the season must end on a date (see below). List closures in **Exclude dates (comma-separated, optional)**.
  </Step>

  <Step title="Divisions, round and session">
    Tick **Round robin within each division** if divisions play separately, and use each **\{time} draw — division** select to reserve a draw time for one division. Optionally stamp every game with a **Stage (optional)** (round) and **Session (optional)**. Choose **Time allocation** (Alternating / Random / Weighted early / Weighted late) and whether to **Shuffle teams**. Leave **Balance playing sheets** ticked to spread each team across the sheets; untick it to keep each draw's games on the ticked sheets in listed order (a one-game draw then always lands on the first sheet). Tick **Show a game against "Nobody" for a bye** to list the team sitting out a night as playing "Nobody". If the league has bye requests, **Honour N bye requests (M teams)** and **Add make-up draws after the last night for games that cannot move** appear here, both ticked.
  </Step>

  <Step title="Preview, then create">
    Click **Preview**. Badges warn about **Matchup repeats**, **Excess games**, **Sheet imbalance** and **Bye imbalance**, the count of games against "Nobody" when you asked for them, and a **Skipped holidays:** line lists any league nights that fell on a holiday, and with bye requests a line reads **N of M bye requests honoured**, listing any it could not meet and the games moved to make-up draws. Then click **Create schedule** (or **Replace schedule** when one exists); the confirmation reads **Created \{n} draws — skipped holidays: …** when any were skipped, and adds **N of M bye requests honoured** when the league had requests.
  </Step>
</Steps>

## End date, "Nobody" games and balanced sheets

* **Last league night.** The generator keeps adding round robins until every league night up to that date has games, then drops every game after it — the date itself is included. League nights are counted from the first league night on the ticked weekdays, minus excluded dates and holidays. Example: 5 teams on 2 sheets play one round robin in 5 Tuesdays; with the last night 6 Tuesdays out you get 6 nights — a second round robin, cut after its first night. A cycle count longer than the end date allows is cut the same way. An end date before the first league night is refused: "The end date is before the start date". Make-up draws for bye requests still go after the last league night, so they can fall after the end date.
* **Games against "Nobody".** On a league night where exactly one team in a pool (a division, or the whole league) has no game, that team gets "\{team} vs Nobody" at the pool's first draw of the night. It has no sheet — the Draws grid lists it in a **No sheet** column — takes no result and never counts in standings. As in CCM, none are added when every pool has an even number of teams, or when the night has only one sheet and one game time.
* **Balanced sheets off.** Each draw's games take the ticked sheets in the order they are listed.

With the Draw Optimizer's **Fill in missing games (keep the schedule)**, these three options do not apply and are hidden.

## In the classic view

The **Generate Games** screen reproduces CCM's form — **Select the Sheets to be Used**, **Select the Weekday for Games**, **Game Times (24 Hour Clock)** each with **Reserved for Division (optional)**, **Start Date for Schedule?**, **End Date for Schedule? (optional)**, **# of Round Robin Cycles?**, **Balanced playing sheets?**, **Show game against "Nobody" when there's a bye?** and **Exclude the Following Dates:** — with **Preview Game Schedule** and **Create Game Schedule** / **Replace Game Schedule** buttons. The three CCM options work as described above; the preview says **Includes N game(s) against "Nobody"**, and the Game Listing shows those games with Sheet **none** and no result select. It skips stored holidays too, and its result line ends with **Skipped holidays: …** when it did. With bye requests enabled it honours the league's requests too and adds **N of M bye requests honoured**. Its pre-flight checks stop you early with messages such as "At least 2 teams are required — assemble or create teams first." and "Pick at least one weekday for games."

Draw times set here stay on the club's clock; a migrated CCM club's draw times do not shift.

**Related:** [What are holidays?](/club/bookings-and-todays-ice/what-are-holidays) · [How do I set up ice sheets?](/club/leagues-and-draws/how-do-i-set-up-ice-sheets) · [How do I clear or regenerate the schedule?](/club/leagues-and-draws/how-do-i-clear-or-regenerate-the-schedule) · [How do I reschedule or edit a game?](/club/leagues-and-draws/how-do-i-reschedule-or-edit-a-game) · [What is the draw optimizer?](/club/leagues-and-draws/what-is-the-draw-optimizer) · [How do I handle bye requests?](/club/leagues-and-draws/how-do-i-handle-bye-requests)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.