nordic-skating / commit
docs: how the ice cracks; and what a figure and a view from behind would take
PLAN.md | 52 +++++++++++++++++++++++++++------- README.md | 16 ++++++++--- docs/screenshots/about.png | Bin 228324 -> 226914 bytes docs/screenshots/aeroplane.png | Bin 373494 -> 345858 bytes docs/screenshots/aurora-phone.png | Bin 244606 -> 236951 bytes docs/screenshots/aurora.png | Bin 309866 -> 289040 bytes docs/screenshots/autopilot.png | Bin 203312 -> 189181 bytes docs/screenshots/blizzard.png | Bin 224810 -> 181606 bytes docs/screenshots/comet.png | Bin 264360 -> 277652 bytes docs/screenshots/dusk.png | Bin 258024 -> 233670 bytes docs/screenshots/far.png | Bin 277082 -> 254036 bytes docs/screenshots/fork.png | Bin 337280 -> 327506 bytes docs/screenshots/island-alongside.png | Bin 187937 -> 210011 bytes docs/screenshots/island.png | Bin 311364 -> 328058 bytes docs/screenshots/islets-dusk.png | Bin 197038 -> 199652 bytes docs/screenshots/islets.png | Bin 298472 -> 294338 bytes docs/screenshots/landscape.png | Bin 281658 -> 253280 bytes docs/screenshots/night.png | Bin 265652 -> 241177 bytes docs/screenshots/pass.png | Bin 229983 -> 237300 bytes docs/screenshots/sea.png | Bin 235244 -> 224383 bytes docs/screenshots/settings.png | Bin 236119 -> 235018 bytes docs/screenshots/snow.png | Bin 318141 -> 281763 bytes docs/screenshots/steering.png | Bin 269382 -> 219260 bytes docs/screenshots/thin-ice.png | Bin 287613 -> 279066 bytes docs/screenshots/tracks.png | Bin 278012 -> 247850 bytes 25 files changed, 53 insertions(+), 15 deletions(-) diff --git a/PLAN.md b/PLAN.md index dfbd980..641e27d 100644 --- a/PLAN.md +++ b/PLAN.md @@ -124,17 +124,16 @@ silent; should it be? itself, only the tracks. - **A long island in the middle of the lake**: see "Channels that part and join again". -**To improve, from Pavel's look at them** (2026-10-10). -- **The cracks the skater makes are too thick and look pixelated as they appear.** They - are drawn a pixel and a half wide on a picture with ten pixels to the metre, so a - crack is 15 cm across and its steps show. A crack wants to be a hairline: either a - finer picture over a smaller square, or cracks drawn as thin lines of their own - instead of into a picture, and coming in over a moment instead of all at once. -- **The cracks the ice already has are not very realistic.** They are a picture 32 m - square, repeated: thirty jagged lines scattered at random. Real black ice cracks in - long straight runs that meet at angles and stop at one another, in networks, with - the wet-looking white of a healed crack and a different look for a fresh one. To be - taken care of eventually, and with the item above: the two should look like one thing. +**Improved on Pavel's look at them** (2026-10-10), waiting to be looked at again. +- **The cracks the skater makes were too thick and pixelated.** They were drawn into a + picture with ten pixels to the metre. They are now lines of their own, a pixel wide at + any distance, and a crack runs out from its middle at 28 m/s instead of appearing whole. + Tracks and push scratches are drawn the same way. +- **The cracks the ice already has were not realistic**: thirty jagged lines at random. + They are now a network made the way ice cracks: a few long, nearly straight runs, and + later cracks that leave an earlier one at a wide angle and stop at the next. +- Still not done: the picture of the ice's own cracks repeats every 32 m, and they are + painted, so close to they are softer than the hairlines the skater makes. **Still to judge.** Are the tracks too faint against the ice's own cracks, which are the same colour? Should they fade with time? @@ -281,6 +280,37 @@ falls through and nothing is scored. Falling is written and switched off (`RULES one is a maybe, as an option beside the relaxed one and never instead of it. Ideas: time spent on singing ice, distance without falling, a set course against the clock. +### A figure, and a view from behind them + +Asked about by Pavel on 2026-10-10: what would it take to add a figure and make this a +third-person game? Not started. In short: the lake needs nothing, the skater already +knows everything a figure would act out, and the work is the figure itself. + +**What is there already.** The skater has a place, a direction, a speed, a rate of turn, +and a stride with the moment of each push in it (`src/skater.ts`): everything a figure's +pose is made from. The world is drawn round the skater and would be drawn round a camera +a few metres behind them without change. + +**What it needs.** +1. **A camera that follows**: some metres behind and above, easing after the skater + rather than bolted to them, and kept out of the banks, trees and islets, which in a + pass 5 m to a side is most of the problem. And a way to choose the view. +2. **The figure.** There are no models in this project and no way of loading any. Either + one is made here of simple shapes, in keeping with trees that are cones, and moved by + rule from the stride (push leg out and back, the other gliding, arms swinging, a lean + into turns); or a made model with made animations is brought in, which means a loader, + a megabyte or more to download and keep offline, a licence to honour, and finding a + skating animation, which are rare. The first is the recommendation. +3. **What a figure shows up.** A shadow under it, or it floats. Tracks from each skate in + turn, not one line down the middle. Something to see it by at night. A faint + reflection in black ice would be cheap and would look like the film. + +**The risk** is the figure's movement: an awkward skater is worse than none. The view +from the eyes should stay, as a choice. + +**It is also most of multiplayer.** Other players have to be drawn as something, and +this is the something. + ### Game controller — built, not tried with one Either stick or the direction buttons steer; Y or triangle goes to another lake; X or diff --git a/README.md b/README.md index ff7ea3e..d5351b3 100644 --- a/README.md +++ b/README.md @@ -272,12 +272,20 @@ its path. would have been, so the lake swells where an island is. A touch of steering on the way up to one chooses the side; with none, the island has a side it prefers. About one every 5 km, and none near a fork or in a pass. +- **Its ice is cracked the way ice cracks** (`src/ice/cracks.ts`). A few long cracks + run nearly straight for tens of metres; later ones start from the side of an earlier + one, leave it at a wide angle, and stop where they meet another, since a crack cannot + cross a crack. So the cracks are a network of long runs joined at T's, with finer ones + between, and each is painted as it looks in clear ice: a bright edge at the surface + and its face going down into the ice beside it. - **It keeps the marks made on it** (`src/render/marks.ts`). The skates leave a line, and each push a scratch to one side and then the other; on ice thin enough to crack, - the cracks that are heard are also seen, where they were heard from, and a push on - such ice starts more from under the skate. The marks lie on the hundred metres square - of ice round the skater, so a skater who turns back or circles an islet comes on their - own tracks, as in the film; further off than that the lake forgets. + a crack opens where each near one is heard from, and a push on such ice starts more + from under the skate. A crack is a star of a few arms that fork, and it runs out from + its middle over a moment. Every mark is a hairline, a pixel wide however near. They + stay where they were made, so a skater who turns back or circles an islet comes on + their own tracks, as in the film; the lake remembers the last few thousand stretches + of line and forgets the ones before. <img src="docs/screenshots/fork.png" alt="The lake parting round a wooded island ahead" width="640" /> diff --git a/docs/screenshots/about.png b/docs/screenshots/about.png index 54dcac9..4c33171 100644 Binary files a/docs/screenshots/about.png and b/docs/screenshots/about.png differ diff --git a/docs/screenshots/aeroplane.png b/docs/screenshots/aeroplane.png index 577d0a0..0fbd401 100644 Binary files a/docs/screenshots/aeroplane.png and b/docs/screenshots/aeroplane.png differ diff --git a/docs/screenshots/aurora-phone.png b/docs/screenshots/aurora-phone.png index 9e83080..2ce9fcf 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 5fec0d6..29e16a8 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 c19482c..8054d1a 100644 Binary files a/docs/screenshots/autopilot.png and b/docs/screenshots/autopilot.png differ diff --git a/docs/screenshots/blizzard.png b/docs/screenshots/blizzard.png index ee9dc87..86caca0 100644 Binary files a/docs/screenshots/blizzard.png and b/docs/screenshots/blizzard.png differ diff --git a/docs/screenshots/comet.png b/docs/screenshots/comet.png index 0e06435..b2fa7c0 100644 Binary files a/docs/screenshots/comet.png and b/docs/screenshots/comet.png differ diff --git a/docs/screenshots/dusk.png b/docs/screenshots/dusk.png index 5eb966a..39585e8 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 d8bcfea..d597044 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 1d1fa99..babcab9 100644 Binary files a/docs/screenshots/fork.png and b/docs/screenshots/fork.png differ diff --git a/docs/screenshots/island-alongside.png b/docs/screenshots/island-alongside.png index 00afef9..7b3f029 100644 Binary files a/docs/screenshots/island-alongside.png and b/docs/screenshots/island-alongside.png differ diff --git a/docs/screenshots/island.png b/docs/screenshots/island.png index 48c35a4..0c9e71c 100644 Binary files a/docs/screenshots/island.png and b/docs/screenshots/island.png differ diff --git a/docs/screenshots/islets-dusk.png b/docs/screenshots/islets-dusk.png index c794a8b..69a625e 100644 Binary files a/docs/screenshots/islets-dusk.png and b/docs/screenshots/islets-dusk.png differ diff --git a/docs/screenshots/islets.png b/docs/screenshots/islets.png index 00fd2f0..8a157d8 100644 Binary files a/docs/screenshots/islets.png and b/docs/screenshots/islets.png differ diff --git a/docs/screenshots/landscape.png b/docs/screenshots/landscape.png index 7802681..fb17f56 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 468f9df..4fe22bf 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 133b779..c9fe818 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 1da40a5..cbd21fc 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 bba5cb9..af3d2b0 100644 Binary files a/docs/screenshots/settings.png and b/docs/screenshots/settings.png differ diff --git a/docs/screenshots/snow.png b/docs/screenshots/snow.png index 426d67c..faea993 100644 Binary files a/docs/screenshots/snow.png and b/docs/screenshots/snow.png differ diff --git a/docs/screenshots/steering.png b/docs/screenshots/steering.png index 33dda4e..f3ff21a 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 2cf7050..d670f30 100644 Binary files a/docs/screenshots/thin-ice.png and b/docs/screenshots/thin-ice.png differ diff --git a/docs/screenshots/tracks.png b/docs/screenshots/tracks.png index c8a32c9..483a533 100644 Binary files a/docs/screenshots/tracks.png and b/docs/screenshots/tracks.png differ