Boomtown draws each plot's family at its rank, and main's 159 looks leave #144
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "task/3788-boomtown-draws-each-plot-s-family-at-its"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Tracker: #3788
Step 2 of plan #3561 (a growing building keeps its style and grows taller in place). Boomtown now draws every city building as its plot's family (D4), so a plot keeps its family and palette through every rank 1–20. Main's 159-look catalogue (
RANKS) and its keys are gone, with no alias. Growth in place comes in step 3; a rank-up still re-models and rises from its base, as on main.What it delivers
lookOf(rank, x, y)returns{ rank, family, palette }, withfamily = hash(x, y, 11) % FAMILIES.lengthandpalette = hash(x, y, 29) % 3.looksOf(rank)lists each family's version at that rank in family order, so a look's index at a rank is its family.RANKSleaves, and so do the helpers and tones only main's looks used (ring4,facade,pyramid,gableZ, the animals, buses, umbrellas, barrels, columns, pediments, HAY, RED and the private tones).CityLookkeeps thesailandflagpivots;rotoranddishleave, since no family carries them (D2).lookKey(rank, family, palette),lookHeight(rank, family),lookExtent(rank, family)andlookFootprint(rank, family)name and measure a family version.familyKey,familyHeight,familyExtentandfamilyFootprintleave.bodyColortakes the model's largest body part as step 1's materials test measures it: the non-roof part of any shape at least BODY_WIDTH wide on x and z with the largest rest-box volume, cached per model. So a Round version's rubble falls back to its drum's tone, where the old largest-box rule took some other box.layandfall, src/mock/wrecks.ts and src/bench/towns.ts readlook.family.Tests
bodyColorin a whole-tree copy, it fails on all 60 Round versions and palettes; the control copy passes.lookHeight,lookExtent,lookFootprintandlookKey.{ looks: 160, streets: 36, life: 8, monuments: 18, wide: 1 }in every finish and tier, with no WebGL or shader error.Draw checks: the Map Yard bench
src/bench/map.ts, 8 arms in one
map.ts 7 …call per session, 5 sessions, 840 pages, 18:14–19:21 on s32. Basee483667(the plan branch, drawing main's looks) and head16f393a, each agit archivetree built with vite and served bypreview(). The final headd0b7087adds only a test to looks.test.ts, so it builds the same yard. Every arm draws the default finish, Toybox, with motion.D10, head against base (paired medians of the same session, run and view; phone estimate 7.5 ×):
Step 1's figures for the families against these counts: step 1's copy, loaded with motion in Toybox, drew 343,124 / 336,400 (0.980), 420,840 / 415,516 (0.987) and 524,624 / 518,984 (0.989) at default growth, and 479,879 / 463,939 (0.967), 521,787 / 526,887 (1.010) and 658,607 / 668,691 (1.015) at full growth, with the same calls. The bench's own counts are the same numbers; its 1× full values include step 1's.
The doom peaks on the head, against their spare arms (paired medians):
Other runs started on s32 during the bench: 611 (18:25), 615 (18:37) and 616 (18:39), whose
fullgates ran 18:42–18:43 and 18:57–18:58. Each session's paired deltas stayed within the ranges above.Renders for the Reviewer
The Map Yard overview and 1× in the four finishes, base against head, at default growth and with
grown=full(32 loads, Playwright WebKit, iPhone 15 landscape, reduced motion), with no page or console error. Classic draws as on the base. Die-cast, Toybox and Micro-voxel draw the families: pagodas under team-coloured hips, round drums under team-coloured cones, glass curtains, stepped terraces, art-deco spires, brick gables and wind towers, where the base drew main's mixed looks. Viewed in this run: the Toybox overview at default growth, Toybox 1× at default and full growth, and native-resolution crops of the 1× view's city at full growth in all four finishes. The other pairs were saved but not viewed.Towns bench
npm run towns -- --part monument --jsonon the base (whose rows equal main d3604f1's, as step 1 showed) and on the head, 5 rows, 5.4–5.7 s each. p5 / median / p95 over 120 harness towns:The families stand at the target height for their rank, so the median building moves by at most 0.09 and the median tower by one step (0.25) either way. At founding every town's tower is now exactly 4.00× its median building, where main's rank-1 looks stood 4.17–4.76×.
Play
The esbuild bundles of src/ai/sim.ts (a3c510e5…) and src/bench/net.ts (4ffd0007…) built from the base and from the head are byte-identical, so the 14 AI matches and
npm run benchare not run.Gates
sak-gate fast#1 (tracker gate run 337) on16f393a: passed,npm test985/985 in 29.7 s.sak-gate full#2 (tracker gate run 345) ond0b7087, the final head: passed,npm test986/986 in 58.8 s andnpm run test:phone180/180 in 200.7 s.