Skip to content

StickTime 1.10.0: scenery, Night, Sky detail, tracks with scenery; faster drawing - #3

Merged
juricabi merged 16 commits into
mainfrom
content-1.10
Oct 26, 2026
Merged

juricabi merged 16 commits into
mainfrom
content-1.10

Conversation

@juricabi

Copy link
Copy Markdown
Owner

Summary

The 1.10.0 release: scenery on color radios, your own tracks with scenery, Night and Sky detail, a farther ground grid on every edition, and an output-identical speed pass. Notes: docs/releases/v1.10.0.md.

 StickTime.lua (color)
+  scenery: props, rails (fences, nets, tape, power lines, banners), decals; hits, SPLASH, UNDER
+  the eight tracks' scenery, a pilots' area (tent, windsock) on every track
+  Colors: Night; Settings: Sky detail (clouds, sun, moon, stars)
+  ground grid: farther when high, over painted ground in its shades
 StickTimeBW / StickTimeLite (B&W)
+  start pad, windsock, BW's ridge; format 3 tracks' gates and structures (BW)
+  grid out to 60 m and farther when high; trees with crowns out to 90 m
 track files
+  format 3 (24 gates, 16 structures + scenery) and format 4 (bigger, color only)
 web emulator / editor
+  scenery editing (props, rails, decals), Check, formats 3/4; gallery: five new tracks

Evidence

  • Tests: test/run_all.sh: exit 0, every harness size and Lua 5.2, Pi AV, Night, draw order, Lite, bwcolor, loaders, memory on EdgeTX main / 2.11.4 / 2.10.7 (MEM OK, MSG OK). The 17 gallery tracks flown on color and B&W, editor and gallery page tests pass.
  • Speed pass, output-identical: 102 emulator screenshots of all editions pixel for pixel before → after, physics traces byte for byte on the radio's 32-bit Lua. Frame estimate before → after: TX16S class 27.3 → 24.7 ms, TX15/MK3 16.3 → 15.2 ms, B&W 6.50 → 5.72 ms.
  • Memory: StickTime BW needs a heap of about 110.5 KB (113.6 KB on an STM32F4 B&W radio), the Lite runs down to 61.6 KB (63.3 KB on an X9D+).

Merge Danger

Door: two-way

Merging changes main and the hosted emulator (Pages); the release is published separately. Older track files keep working; formats 3 and 4 are new and earlier versions don't list them.

Blast Radius: wide

Every radio edition and the web emulator. B&W memory margins are tight (about 3 KB for BW, 1.7 KB for the Lite). StickTime Pi needs 0.2.11 for its Tracks page and track guard to know the new formats (it runs 1.10.0 either way).

🤖 Generated with Claude Code

https://claude.ai/code/session_01MkNLxux5r6KXfp5KgkMDHL

juricabi and others added 16 commits October 26, 2026 07:55
The color and B&W games (src/sticktime.lua):

- track formats 3 and 4: formats 1 and 2 with structure kinds 1-9 (wood, brick, dark
  steel, white, yellow, green containers) and the scenery after the structures: props
  (conifer, leafy tree, bush, hay bale, tyre stack, traffic cone, light mast, tent,
  windsock, post) as pillars, rails between two points (fence, safety net, race tape,
  power line with pylons, banner) and decals on the ground (dirt road, tarmac, gravel,
  painted line, pond, sand); format 3 for both editions, format 4 for color only;
  earlier versions don't list them
- the pilots' area on every track: a tent and a windsock beside the start pad, where
  they keep clear of the racing line (placed after the trees: those stay where they were)
- rails collide (walls for fences, nets and banners, wires for tape and power lines),
  a pond landing is a SPLASH, Freestyle's UNDER trick (beneath a power line or banner),
  rails count for PROXY
- color: the props drawn from their foot and top on the screen (the tent in 3D), the
  rails in pieces of 12 m in the draw order, the decals under everything, the minimap
  shows rails and ponds; Night in Colors (stars, moon, LED gates); Sky detail (clouds,
  a tree line, sun and moon): about 3.5 ms a frame on a TX16S, Off in Settings
- B&W: the props, rails and decals in lines, the start pad, a ridge on the horizon

StickTimeBW/game.luac isn't rebuilt yet (no .tools/ on this machine).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The windsock (lines only: no pillar, so no new table slots) points downwind from the same
gusts as the physics, limp without wind; the ridge is computed at infinity around the
camera's heading, so it needs no table. About 1.1 KB more bytecode; the memory test (needs
.tools/etxhost) still has to confirm the X9D+ keeps its margin. StickTimeLite/game.luac isn't
rebuilt yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… inside it

DECO: Meadow's hay bales, farm track, pond and fence; Figure 8 as a car park with light
masts and cones; Dive Tower's gravel, power line and masts; Slalom's tyre stacks, banners and
worn lanes; Hoop Forest's pond in the clearing, leafy trees and bushes; the Grand Prix's
tarmac start straight with its lines, tents, banners, tyres and masts; the Bando's tyres,
posts, gravel, mud and a power line; the Pro Track's nets, tents, banners and masts. Every
prop and rail keeps 4 m or more from the racing line and the straight lines between the
gates (the gates, ids and bests are as they were); the autopilot races all eight with no hit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Formats 3 and 4 read (4 left out by StickTime BW), a section with an unknown kind left out on
its own, the fence, a power line's wire and a banner stop the quad while over and under pass,
a pond landing is a SPLASH, Freestyle's UNDER, every Colors look with Sky detail on and off,
and on all eight tracks a windsock, a tent and no tree on a rail or decal. The settings walk
counts the new Sky detail row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
README: Scenery, UNDER, Night and Sky detail, the editions' table, the editor's formats 3
and 4, and the frame times measured in the emulator along every track's racing line (TX16S
about 24 ms on average with Sky detail, 21 ms without, at most 37.5 ms at the Bando; the Lite
5-13 ms on an STM32F2). The Bando's scenery loses its big gravel decal to stay under 38 ms.
tracks/README.md and StickTimeTracks/README.txt: formats 3 and 4.

The B&W memory figures in the README are still 1.9.0's: test/memtest.lua needs .tools/etxhost.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tools/gallery.py checks a track with scenery the way the game and the editor read it:
formats 3 and 4 with their five sections (gates / structures / props / rails / decals), the
limits (24 gates, 16 structures, 32 props, 12 rails, 8 decals, 1599 bytes; 48, 64, 128, 32,
32, 9999), structure kinds 1 to 9, the props', rails' and decals' kinds and ranges, a rail of
some length, and the smallest format that fits (no scenery: 1 or 2). tools/bundle_web.py
gives the editor each built-in track's scenery (buildTrack's DECO) and the props' heights and
radii and the rails' heights (PH, PR, RH). test/gallery_test.py: format 9 is the format the
checker doesn't know; format 3 and 4 tracks it takes and refuses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s 3 and 4

The editor places, edits and checks the scenery the game builds: props (conifer, leafy tree,
bush, hay bale, tyre stack, traffic cone, light mast, tent, windsock, post), rails dragged by
either end (fence, safety net, race tape, power line, banner) and decals on the ground (dirt
road, tarmac, gravel, painted line, pond, sand), and the new structure kinds (wood, brick, dark
steel, white, yellow and green containers). Add prop, Add rail, Add decal and three sets: the
pilots' area, a taped lane, a fence around the track. The items are five kinds behind one
table (selection, groups, moving, turning, copies, the map, the thumbnails).

It writes the smallest format a track fits (1, 2; with scenery 3 for both editions, 4 for
color radios), its numbers and id unchanged for a track without scenery, and reads 1 to 4.
Check: the new limits, props in a gate, a structure or on the pad, rails over 200 m (the
Bando's power line is 184), a pond under the start, a prop within 3 m of the racing line and
a rail across it where the line is within 1.5 m of its solid part's height (a power line high
over it is fine). The trees keep clear of the scenery as buildTrack's clearOf has it, and the
map shows faintly the tent and windsock the game adds beside the start. StickTime BW flies
formats 1 and 3; Send to radio says when the radio's StickTime is older than 1.10.0. A copy of
a built-in track brings its scenery (format 3).

test/editor_test.py: every kind read and written back, the format chosen, the sets, the
checks, flown in both editions, an earlier work in progress; the templates' new format.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er Yard

Five tracks made of the new scenery, saved by the editor (Check OK): a farm round its barn
and silo, bales, the farm track and a pond; a freestyle field under two power lines with a
water tower and banners; a car park's containers between light masts and cones (for Night);
a lake in the woods with a jetty; and a container yard with gaps through two container walls
(format 4, color radios). The autopilot flies each two laps without a hit, color and B&W
(format 3); the busiest views stay under 38 ms on a TX16S in the emulator.

README: three new screenshots (Night on the Pro Track, Farm Field, Power Line) and the others
taken again with the scenery.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d bushes

The tree line on the horizon cost 1.6 ms a frame on a TX16S (the most of anything new) for
little: it's gone. Sky detail keeps the clouds, the sun, and the moon and stars at Night, at
1.4 ms; the eight tracks' views average 22.7 ms with it, 21.3 without, the busiest Bando view
35.6 ms (about 40 in the natural looks, 37.8 in 1.9.0). The lit side of a near leafy tree's
crown is round like the crown (it was a hexagon), and a bush's is a lighter green (it was
drawn in the bush's own color).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n the minimap

Measured in the emulator at every gate of the eight tracks (TX16S): half the clouds and the
rails' draw-order pieces by kind (banners 12 m, fences, nets and tape 16 m, a power line's
wires 36 m: it was 16 pieces of 12 m behind the Bando, 5 ms in that view, now 2.4) take the
average from 22.7 to 21.7 ms (20.9 with Sky detail off) and the busiest view from 35.6 to
34.3 ms. Sky detail now costs under 1 ms. The minimap draws a pond as its ellipse (it was its
bounding box), kept within the map.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The memory test (test/memtest.lua on EdgeTX 2.11.4's Lua with the radios' allocator, built with
a portable 32-bit GCC: the same tools make main's game.luac byte for byte) found StickTime BW
didn't load on an STM32F4 B&W radio (113.6 KB heap + 34 KB CCM): its bytecode had grown by 12.9 KB
and it needed 121 KB. The scenery is now the color edition's (SCN, DECO, place, the props, rails
and decals, their physics); StickTime BW lists format 3 and flies its gates and structures (kinds
4-9 too), and keeps the start pad, a windsock drawn in lines (as the Lite's) and the ridge. It
peaks at 104.8 KB, 107.6 KB with the biggest format 3 track (1599 bytes, now in the memory test as
track 10); 1.9.0 peaked at 101.3. game.luac rebuilt for both B&W editions; the Lite fits (60.3 KB
of 63.3). The harness checks StickTime BW's format 3 track, the editor and the docs say what
B&W radios fly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A fence, net or banner is as thin as a wire, and a substep at 35-40 m/s is 0.35-0.5 m: where one
ended just past the rail, the old push-out sent the quad on through (about half the hits at
40 m/s, the review measured). railStep works in the plane across the rail, where a sheet is a
vertical segment and tape and wires are points: the first moment of the substep's move that the
quad's ball touches one, the quad is stopped there and hits it (a sheet's face straight back).
A power line's sag is at most a quarter of its height, so low lines' wires stay off the ground.
The harness flies at the fence, a banner and a wire at 35 m/s from 8 start points (the old code
let 2, 3 and 4 through).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tor Check, tests, docs

From a five-reviewer pass over the branch, each finding checked by a second agent:

- the game: a hand-made file's scenery kept to the editor's ranges (positions within 999 m,
  rails up to 200 m, decals 0.05-200 m: a huge or infinite rail hung makeObjects); posts and
  light masts drawn as thick as they collide (the Power Line water tower's legs); the tent's
  size follows its height as its collision does, its legs in front of the canopy seen from below;
  a cloud cut at the near plane instead of dropped whole at a wide Field of view; a SPLASH in
  Freestyle respawns at the start pad, not over the water again; a banner's end pieces reach the
  ground in the draw order, and its outline stays dark at Night; no table a fence wire every
  frame; a pond wholly off the minimap isn't drawn on its edge; the B&W ridge covers 80 deg either
  side (Field of view 130); the format comment says what each edition reads
- the editor: Check takes in the climb from the start pad to gate 1 and rails over the pad, the
  power line's sag as the game's, skips rails far from a piece of the line (drags stay quick);
  hit areas as drawn (a leafy crown, the tent's square, the windsock's sock); the tent drawn at
  its height's size
- tests: the harness checks firmware-rejected lines after the scenery and Night too, and that
  StickTime BW leaves format 4 out (now the last slot); run_all.sh flies Night on an MK3's
  screen; gallery_test.py refuses format 3 without scenery for that reason
- docs: every rail stops the quad like a wall; where tracks are introduced, a track with scenery
  needs 1.10.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The memory test's heap sweep on EdgeTX 2.11.4's Lua: 1.9.0's Lite runs down to a 61.0 KB heap,
this one with the start pad, the windsock and the ridge to 62.0 KB (1.3 KB of an X9D+ free).
Without the ridge it runs down to 61.5 KB (1.8 KB free, the plan's limit 61.8), peaking at 59.8 KB
on the X9D+'s 63.3 KB; the pad and the windsock stay. README: the memory figures and why the Lite
has no ridge and StickTime BW no scenery.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pylons, fence fix

Performance (output-identical): an independent pass over the color 3D background and raster helpers,
the 3D objects and draw order, physics/HUD/minimap/menus, and the B&W renderer, UI and the Lite,
each patch checked pixel for pixel on 102 emulator screenshots of all editions and byte for byte on
physics traces from the radio's 32-bit Lua, and reviewed independently. Frame estimate: TX16S class
27.3 -> 24.7 ms (-9.7%), TX15/MK3 class -6.8%, B&W -12% (Lua instructions -17%, -17%, -16%). Among
the changes: off-screen triangles skipped, the haze bands' common case inline, the grid's line ends
turned once a frame, the camera in locals where it is read most, the minimap's still parts made once
a track, screen rectangles for the draw order only when a structure is in view, B&W lines on screen
drawn straight, the hoops' points turned once.

The ground grid:
- color: higher up, a coarser 30 m grid beyond the 10 m one, out to 16 times the height (300 m at
  most), so its edge stays near the horizon; it runs on over tarmac, dirt, gravel, sand and ponds in
  their own shades, each line drawn once in pieces (where a line crosses a decal is worked out once a
  track and kept with the scenery).
- B&W and Lite: the 10 m grid out to 60 m as on color, and the coarse grid too (180 m at most).
  B&W trees keep their crowns out to 90 m. StickTime BW now needs a heap of about 110.5 KB (113.6 on
  the radio), the Lite runs down to 61.6 KB.

Also: power line pylons drawn solid (legs as thick as they are when near, bracing, a filled arm, a
darker steel); the quad no longer sticks half over a fence's top wire (only a move into a rail or
wire counts as a hit; harness test); the Grand Prix's side lines inside the tarmac. Release notes and
the README's Lite figure updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkNLxux5r6KXfp5KgkMDHL
@juricabi
juricabi merged commit 14c77a2 into main Oct 26, 2026
1 check passed
@juricabi
juricabi deleted the content-1.10 branch October 26, 2026 22:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant