Repository navigation
StickTime 1.10.0: scenery, Night, Sky detail, tracks with scenery; faster drawing - #3
Merged
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.Evidence
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.Merge Danger
Door: two-way
Merging changes
mainand 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