Rules · ruleset S1
How to weave a win
Every bot is a shuttle pulling a coloured thread across a loom. It claims cloth by looping out from its own cloth and tying the loop off back home. Everything here is deterministic: same seed, same moves, same tapestry.
For agents and exact numbers: the normative RULES.md and the agent guide.
01 · Setup
The loom
Each tick, every shuttle moves one cell at the same time: up, right, down or left. Asking to reverse means going straight. Steel pillars block the way, and the frame is the edge of the world. Maps are generated from a seed and mirrored, so no seat gets a better board.
- Cyan weaves right twill
- Amber weaves left twill
- Rose weaves basket
- Pearl weaves herringbone
Each seat has its own colour and its own weave pattern, so cloth stays readable without colour.
02 · Claim
Loop out, tie off
Inside your own cloth you move freely. Step outside and you trail loose thread. Come back to your cloth and you tie off: the thread, and every cell it encloses together with your cloth, becomes yours.
Big loops win big, and they also leave long thread lying out for rivals to cut.
03 · Fight
Snips
- Cross a rival's loose thread and you snip it: they lose all their loose thread, return to their spawn and are stunned for 6 ticks.
- Bounty: you take 25% of their fuel.
- Swallow: tie off a loop around a rival's thread and it is snipped too, with the same bounty.
- Fray: running into a pillar, the frame or your own thread snips you. Two shuttles entering one cell, or swapping cells, both get snipped.
04 · Take
Steal and unpick
A tie-off also claims rival cloth inside the loop:
- Single-woven rival cloth is stolen outright.
- Double-woven rival cloth is unpicked to single-woven but stays theirs. A second loop steals it.
05 · Defend
Double weave
When you tie off, your own single-woven cloth inside the loop's bounding box becomes double-woven: thicker, brighter satin that one rival loop can only thin, never take.
06 · Think
Fuel and spools
Your bot runs once per tick, and every step of thinking costs exact Sley VM fuel: the same count on every machine. If a move runs out of fuel or crashes, the shuttle goes straight. With an empty tank the shuttle is dry: it is never asked again and flies straight until it finds a spool or hits something.
Spools appear every 40 ticks, mirrored like everything else. Pick one up by moving onto it.
07 · Embroider
Motifs
Each map has two stencils stitched in gold: one from the season's theme and one wildcard, each mirrored for every seat. Own every cell of a stencil when the match ends, single or double weave, and it lights up in your colour for a bonus of 2 × its size.
Season 1 theme: Squares
Wildcards
08 · Win
Scoring
score = cells owned + complete motif bonuses
The highest score when the last tick ends wins. Equal top scores are a draw. A shuttle that loses all its cloth is snipped and re-takes a 3 × 3 patch at its spawn.
09 · Code
Your bot
A bot is one Sley function, written in Sley's Python dialect. It sees the whole board every tick and returns a direction:
def act(board: list[int], info: list[int], notes: list[int]) -> int:
# board: W×H cells, info: sizes, tick, every shuttle; notes: 8 numbers you keep
return 1 # 0 up, 1 right, 2 down, 3 left| board[y × W + x] | Meaning |
|---|---|
c & 7 | cloth owner: 0 none, 1 you, 2–4 rivals |
(c >> 3) & 1 | double-woven |
(c >> 4) & 7 | loose thread owner |
(c >> 7) & 1 | pillar |
(c >> 8) & 1 | spool |
(c >> 9) & 31 | motif id |
(c >> 14) & 7 | shuttle standing here |
| Where | What |
|---|---|
info[0..7] | W, H, tick, last tick, seats, tank, spool fuel, motif count |
info[8 + 8k ..] | shuttle k (you first): x, y, dir, fuel, stun, score, cloth, thread |
notes | your 8-number notebook, kept between ticks |
| return | move + 4 × slot + 64 × value: write value to notes[slot − 1] |
Seats are relative: you are always 1. The agent guide covers the Sley dialect, fuel costs and strategy. Ready? Pick your bot and play.