nordic-skating / commit
docs: islets, turning round, and choosing a fork by a touch; screenshots retaken
PLAN.md | 48 +++++++++++++++++++++++++------------- README.md | 42 ++++++++++++++++++++++----------- docs/screenshots/about.png | Bin 204991 -> 220741 bytes docs/screenshots/aurora-phone.png | Bin 254161 -> 257058 bytes docs/screenshots/aurora.png | Bin 306257 -> 308826 bytes docs/screenshots/autopilot.png | Bin 230188 -> 224400 bytes docs/screenshots/dusk.png | Bin 256975 -> 256346 bytes docs/screenshots/far.png | Bin 246816 -> 263103 bytes docs/screenshots/fork.png | Bin 347891 -> 339255 bytes docs/screenshots/islets-dusk.png | Bin 0 -> 199445 bytes docs/screenshots/islets.png | Bin 0 -> 300858 bytes docs/screenshots/landscape.png | Bin 285369 -> 280324 bytes docs/screenshots/night.png | Bin 261463 -> 262214 bytes docs/screenshots/pass.png | Bin 252723 -> 223768 bytes docs/screenshots/sea.png | Bin 231337 -> 232429 bytes docs/screenshots/settings.png | Bin 213619 -> 218822 bytes docs/screenshots/steering.png | Bin 199063 -> 178461 bytes docs/screenshots/thin-ice.png | Bin 279129 -> 284279 bytes tools/screenshots.mjs | 3 +++ 19 files changed, 63 insertions(+), 30 deletions(-) diff --git a/PLAN.md b/PLAN.md index 5648cc2..13286ed 100644 --- a/PLAN.md +++ b/PLAN.md @@ -111,24 +111,40 @@ it, pale on the colour of black ice. **Open.** It opens in whichever orientation the phone is held. Should it lock to one? -### 4. An obstacle to loop around: the patch of grass +### 4. Islets to skate round, and turning right round — built, waiting to be tried **Pavel's idea.** In the film the skater does a loop around a patch of grass and then -carries on. Add that, as a kind of fork or obstacle. More complex forks are also welcome. - -**Sketch.** A small island of reeds or grass standing in the ice in the middle of a -channel, a few metres across. It is the fork that already exists made very short: the -channel parts round it and joins again 20 to 40 m later. The autopilot goes round one -side; the skater may choose the other, or circle it. - -**Open questions.** -- Circling it means turning back. The skater can now do that in principle (item 1, - "Kept open on purpose"); the lake's forks and the shore kept behind the skater cannot - yet. -- The film has not been looked at for this: find the scene and see what the skater - actually does, and how big the patch is. -- Channels that fork and later rejoin, and three-way forks, would both come from the - same work. Worth doing together? +carries on. Add that, as a kind of fork or obstacle. More complex paths are welcome. + +**What the film shows** (looked at 2026-10-09): from 2:12 to 2:35, a skater weaving +among small tufted islets of reeds standing in the ice, several to a cluster. Also a +bare rock in the lake at 1:52, and at 0:35 ice covered in looping white skate tracks. +And at 1:17 the ice is measured on camera: 45 mm. The sound alone gives 41 mm. + +**What was built.** +- **Islets**: reeds on humps of frozen ground, 5 to 15 m across, in beds. The autopilot + steers round them; a skater steering at one is turned aside at the last moment, and + nobody can get onto one. +- **Turning right round.** The limit on how far off the lake's line the skater could + point is gone from open water. Held over, the skater circles, 16 m in radius, and can + skate back up the lake; let go and the autopilot turns them down it again. The land, + the ice's thickness and the view all follow whichever way the skater faces. +- **A touch chooses at a fork.** With steering now turning, holding it over until the + fork would be a circle, so a touch one way within 200 m of a fork is taken as asking + for that side. + +**Still to judge, by feel.** +- Is circling an islet with a finger possible, and pleasant? The circle is 16 m in + radius whatever the islet's size. +- Is it too easy to turn round by accident? Holding a steer for seven seconds does it. +- Are there too many islets, or too few? Do the reeds look like reeds? + +**Not done, and wanted or possible.** +- Forks of three, and channels that part and join again. +- A bare rock, as in the film. A drawing of the skater's own tracks on the ice, as in + the film: with loops now possible, they would show them. +- Forks cannot be gone back through: a skater who turns back above a fork stays in the + channel they chose, which is the right water but would matter if tracks were drawn. ### 5. Check the chirps against the film — tried, and the film cannot say diff --git a/README.md b/README.md index d1b1903..c03f78e 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,9 @@ in which Mårten Ajne skates a small lake outside Stockholm. ## Status -**Step 5 of 6: forks, passes and open sea.** The lake runs on for ever between snowy, -wooded shores, forking every few kilometres, pinching to narrow passes and opening out -until no shore can be seen. The skater skates it, and the ice sings under every stride at +**Step 5 of 6, and a good deal since.** The lake runs on for ever between snowy, wooded +shores, forking every few kilometres, pinching to narrow passes, opening out until no +shore can be seen, and dotted in places with islets of reeds to weave between. The skater skates it, and the ice sings under every stride at a pitch set by how thick it is there. Thin ice is black, sings high and cracks under you. Nobody falls through: how thick the ice is decides only how it sounds. @@ -47,7 +47,8 @@ one side of every fork, for as long as you leave it. | To | Touch or mouse | Keyboard | |---|---|---| | Steer left or right | Drag sideways from wherever you touch | ← → or A D | -| Choose a way at a fork | Steer towards it before the island begins | the same | +| Turn right round, or circle an islet | Hold the steer over | the same | +| Choose a way at a fork | A touch towards it on the way up to the fork | the same | | Sound on or off | The button at the top right | M | | Go to another lake | Randomize, at the top left | R | @@ -113,8 +114,10 @@ address asks for a time whatever the settings say. <img src="docs/screenshots/night.png" alt="The lake at night, the Milky Way overhead" width="640" /> Steering turns the skater: the harder the steer, the tighter the curve, up to a circle -16 m in radius, with a moment to lean into it. A shore cannot be reached; near one the -skater is turned to run along it. Let go and the skater straightens up where they are, +16 m in radius, with a moment to lean into it. Held over, the skater turns right round +and can skate back up the lake, or round and round; that needs open water, about 24 m +of it on the side being turned towards. A shore cannot be reached; near one the skater +is turned to run along it. Let go and the skater straightens up where they are, keeps that line for a second and a half, and then eases back to the autopilot's own. The autopilot does not skate a straight line. It carves long, slow S-curves down the @@ -126,9 +129,11 @@ and no two are the same, so neither are the speeds. The screen is kept awake while the page is open, where the browser allows it. -At a fork the lake parts round an island. Until the island begins, a little over 200 m -after the fork, you are in whichever of the two channels you are nearer the middle of, -so steering across takes the other one. After that there is land between. +At a fork the lake parts round an island. A touch of steering one way, from 200 m +before the fork, is taken as asking for that side, and the autopilot does the rest; with +no touch it takes the side the fork prefers. Until the island begins, a little over +200 m after the fork, you can still change, by steering the other way. After that there +is land between, though a skater who turns back can go round its tip. ## The ice @@ -178,19 +183,28 @@ its path. or more: a stretch of sea. Near a fork it is always ordinary, so that a fork reads as one. +- **It has islets.** Tufts of reeds on humps of frozen ground, 5 to 15 m across, + standing in the ice as they do in the film, where the skater weaves between them. + They come in beds: about a quarter of the lake's half-kilometres have some, one every + 50 m or so, and the rest have none. Each has at least 9 m of ice between it and a + shore, and there are none in a narrow pass or near a fork. The autopilot goes round + them; a skater steering straight at one is turned aside at the last moment. + <img src="docs/screenshots/fork.png" alt="The lake parting round a wooded island ahead" width="640" /> +<img src="docs/screenshots/islets.png" alt="An islet of reeds standing in the ice, with more beyond it" width="640" /> + <img src="docs/screenshots/sea.png" alt="Ice to a hazy horizon with no shore in sight" width="640" /> - **The skater has a place, a direction and a speed** (`src/skater.ts`), and steering is turning. The autopilot steers by the same means and within the same limits, aiming at a point 18 m ahead on its wandering line, so every path on the lake is an arc. The - skater may point up to 50° off the line of the channel; that is a rule of its own, - and lifting it would let them turn right round. + skater may point any way at all, back up the lake included; left alone, the autopilot + turns them down it again. - **The skater is kept on the ice.** They have the width of the channel less 2 m at each - shore. Within 8 m of the edge of that they may point less and less towards it. Where - the lake narrows faster than a skater could steer clear, their room starts closing - 200 m early. Out at sea they may go no further than 150 m from the middle. + shore. Within 24 m of the edge of that they may point less and less towards it, down + to not at all at the edge. Where the lake narrows faster than a skater could steer + clear, their room starts closing 200 m early, whichever way they are going. Out at sea they may go no further than 150 m from the middle. - **Thickness is a function too**, and is painted on the ice from a small map of the 768 m around the skater that is redrawn every 32 m (`src/render/ice.ts`). - **The skater never leaves the origin of what is drawn.** The shores and islands are diff --git a/docs/screenshots/about.png b/docs/screenshots/about.png index cc0f809..e9cbaea 100644 Binary files a/docs/screenshots/about.png and b/docs/screenshots/about.png differ diff --git a/docs/screenshots/aurora-phone.png b/docs/screenshots/aurora-phone.png index e215bb4..1fa491a 100644 Binary files a/docs/screenshots/aurora-phone.png and b/docs/screenshots/aurora-phone.png differ diff --git a/docs/screenshots/aurora.png b/docs/screenshots/aurora.png index 53fc82b..79db5b4 100644 Binary files a/docs/screenshots/aurora.png and b/docs/screenshots/aurora.png differ diff --git a/docs/screenshots/autopilot.png b/docs/screenshots/autopilot.png index b7e12f2..1d6ef0f 100644 Binary files a/docs/screenshots/autopilot.png and b/docs/screenshots/autopilot.png differ diff --git a/docs/screenshots/dusk.png b/docs/screenshots/dusk.png index c1daa25..7e693f3 100644 Binary files a/docs/screenshots/dusk.png and b/docs/screenshots/dusk.png differ diff --git a/docs/screenshots/far.png b/docs/screenshots/far.png index fc32422..f7bae61 100644 Binary files a/docs/screenshots/far.png and b/docs/screenshots/far.png differ diff --git a/docs/screenshots/fork.png b/docs/screenshots/fork.png index 7f7ed79..bdab069 100644 Binary files a/docs/screenshots/fork.png and b/docs/screenshots/fork.png differ diff --git a/docs/screenshots/islets-dusk.png b/docs/screenshots/islets-dusk.png new file mode 100644 index 0000000..79aa6f3 Binary files /dev/null and b/docs/screenshots/islets-dusk.png differ diff --git a/docs/screenshots/islets.png b/docs/screenshots/islets.png new file mode 100644 index 0000000..fc10a32 Binary files /dev/null and b/docs/screenshots/islets.png differ diff --git a/docs/screenshots/landscape.png b/docs/screenshots/landscape.png index 9bdd234..b77e627 100644 Binary files a/docs/screenshots/landscape.png and b/docs/screenshots/landscape.png differ diff --git a/docs/screenshots/night.png b/docs/screenshots/night.png index 82784ad..d9f889b 100644 Binary files a/docs/screenshots/night.png and b/docs/screenshots/night.png differ diff --git a/docs/screenshots/pass.png b/docs/screenshots/pass.png index baeb115..ec45f7a 100644 Binary files a/docs/screenshots/pass.png and b/docs/screenshots/pass.png differ diff --git a/docs/screenshots/sea.png b/docs/screenshots/sea.png index 24ae971..03c47a9 100644 Binary files a/docs/screenshots/sea.png and b/docs/screenshots/sea.png differ diff --git a/docs/screenshots/settings.png b/docs/screenshots/settings.png index 0519cae..5dde400 100644 Binary files a/docs/screenshots/settings.png and b/docs/screenshots/settings.png differ diff --git a/docs/screenshots/steering.png b/docs/screenshots/steering.png index 03742ee..4ffadf9 100644 Binary files a/docs/screenshots/steering.png and b/docs/screenshots/steering.png differ diff --git a/docs/screenshots/thin-ice.png b/docs/screenshots/thin-ice.png index c13dc6b..af2adce 100644 Binary files a/docs/screenshots/thin-ice.png and b/docs/screenshots/thin-ice.png differ diff --git a/tools/screenshots.mjs b/tools/screenshots.mjs index dbb8785..a696c72 100644 --- a/tools/screenshots.mjs +++ b/tools/screenshots.mjs @@ -32,6 +32,9 @@ const SHOTS = [ // Impossibly thin ice lies to the left of the middle here, faintly lit from within. { name: 'thin-ice', query: '?seed=1&time=day&s=2795', viewport: { width: 844, height: 390 }, act: async () => {} }, { name: 'about', query: '?seed=1&time=day&s=400', act: async (page) => { await page.click('#about') } }, + // A bed of reed islets, just down the lake from where it starts. + { name: 'islets', query: '?seed=1&time=day&s=150', viewport: { width: 844, height: 390 }, act: async () => {} }, + { name: 'islets-dusk', query: '?seed=1&time=dusk&s=7040', act: async () => {} }, // The same water at the other times of day. { name: 'dusk', query: '?seed=1&time=dusk&s=5200', viewport: { width: 844, height: 390 }, act: async () => {} }, { name: 'night', query: '?seed=1&time=night&s=5200', viewport: { width: 844, height: 390 }, act: async () => {} },